All functions:
  Elements:
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_init
      Src: /src/unbound/fuzz_4.c:31,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/fuzz_4.c:34,1
    - Dst: sldns_buffer_new_frm_data
      Src: /src/unbound/fuzz_4.c:35,1
    - Dst: regional_create
      Src: /src/unbound/fuzz_4.c:37,1
    - Dst: memset
      Src: /src/unbound/fuzz_4.c:41,1
    - Dst: memset
      Src: /src/unbound/fuzz_4.c:42,1
    - Dst: memset
      Src: /src/unbound/fuzz_4.c:45,1
    - Dst: memset
      Src: /src/unbound/fuzz_4.c:49,1
    - Dst: memset
      Src: /src/unbound/fuzz_4.c:51,1
    - Dst: comm_base_create
      Src: /src/unbound/fuzz_4.c:58,1
    - Dst: comm_base_timept
      Src: /src/unbound/fuzz_4.c:59,1
    - Dst: malloc
      Src: /src/unbound/fuzz_4.c:61,1
    - Dst: alloc_init
      Src: /src/unbound/fuzz_4.c:62,1
    - Dst: rrset_cache_create
      Src: /src/unbound/fuzz_4.c:64,1
    - Dst: memset
      Src: /src/unbound/fuzz_4.c:68,1
    - Dst: memset
      Src: /src/unbound/fuzz_4.c:71,1
    - Dst: memset
      Src: /src/unbound/fuzz_4.c:75,1
    - Dst: parse_packet
      Src: /src/unbound/fuzz_4.c:79,1
    - Dst: parse_extract_edns_from_response_msg
      Src: /src/unbound/fuzz_4.c:82,1
    - Dst: scrub_message
      Src: /src/unbound/fuzz_4.c:87,1
    - Dst: rrset_cache_delete
      Src: /src/unbound/fuzz_4.c:90,1
    - Dst: alloc_clear
      Src: /src/unbound/fuzz_4.c:91,1
    - Dst: free
      Src: /src/unbound/fuzz_4.c:92,1
    - Dst: comm_base_delete
      Src: /src/unbound/fuzz_4.c:93,1
    - Dst: regional_destroy
      Src: /src/unbound/fuzz_4.c:94,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/fuzz_4.c:95,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 42
    argCount: 2
    argNames:
    - buf
    - nr
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 30
    functionDepth: 1
    functionLinenumber: 30
    functionLinenumberEnd: 97
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/unbound/fuzz_4.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_new
    - regional_create
    - parse_extract_edns_from_response_msg
    - log_init
    - sldns_buffer_free
    - memset
    - scrub_message
    - rrset_cache_delete
    - regional_destroy
    - alloc_init
    - malloc
    - free
    - parse_packet
    - comm_base_timept
    - comm_base_create
    - alloc_clear
    - sldns_buffer_new_frm_data
    - rrset_cache_create
    - comm_base_delete
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *buf, size_t nr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/fuzz_3.c:12,1
    - Dst: memset
      Src: /src/unbound/fuzz_3.c:16,1
    - Dst: memcpy
      Src: /src/unbound/fuzz_3.c:17,1
    - Dst: malloc
      Src: /src/unbound/fuzz_3.c:22,1
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/fuzz_3.c:27,1
    - Dst: sldns_str2wire_int8_buf
      Src: /src/unbound/fuzz_3.c:28,1
    - Dst: sldns_str2wire_int16_buf
      Src: /src/unbound/fuzz_3.c:29,1
    - Dst: sldns_str2wire_int32_buf
      Src: /src/unbound/fuzz_3.c:30,1
    - Dst: sldns_str2wire_a_buf
      Src: /src/unbound/fuzz_3.c:31,1
    - Dst: sldns_str2wire_aaaa_buf
      Src: /src/unbound/fuzz_3.c:32,1
    - Dst: sldns_str2wire_str_buf
      Src: /src/unbound/fuzz_3.c:33,1
    - Dst: sldns_str2wire_apl_buf
      Src: /src/unbound/fuzz_3.c:34,1
    - Dst: sldns_str2wire_b64_buf
      Src: /src/unbound/fuzz_3.c:35,1
    - Dst: sldns_str2wire_b32_ext_buf
      Src: /src/unbound/fuzz_3.c:36,1
    - Dst: sldns_str2wire_hex_buf
      Src: /src/unbound/fuzz_3.c:37,1
    - Dst: sldns_str2wire_nsec_buf
      Src: /src/unbound/fuzz_3.c:38,1
    - Dst: sldns_str2wire_type_buf
      Src: /src/unbound/fuzz_3.c:39,1
    - Dst: sldns_str2wire_class_buf
      Src: /src/unbound/fuzz_3.c:40,1
    - Dst: sldns_str2wire_cert_alg_buf
      Src: /src/unbound/fuzz_3.c:41,1
    - Dst: sldns_str2wire_alg_buf
      Src: /src/unbound/fuzz_3.c:42,1
    - Dst: sldns_str2wire_tsigerror_buf
      Src: /src/unbound/fuzz_3.c:43,1
    - Dst: sldns_str2wire_time_buf
      Src: /src/unbound/fuzz_3.c:44,1
    - Dst: sldns_str2wire_tsigtime_buf
      Src: /src/unbound/fuzz_3.c:45,1
    - Dst: sldns_str2wire_period_buf
      Src: /src/unbound/fuzz_3.c:46,1
    - Dst: sldns_str2wire_loc_buf
      Src: /src/unbound/fuzz_3.c:47,1
    - Dst: sldns_str2wire_wks_buf
      Src: /src/unbound/fuzz_3.c:48,1
    - Dst: sldns_str2wire_nsap_buf
      Src: /src/unbound/fuzz_3.c:49,1
    - Dst: sldns_str2wire_atma_buf
      Src: /src/unbound/fuzz_3.c:50,1
    - Dst: sldns_str2wire_ipseckey_buf
      Src: /src/unbound/fuzz_3.c:51,1
    - Dst: sldns_str2wire_nsec3_salt_buf
      Src: /src/unbound/fuzz_3.c:52,1
    - Dst: sldns_str2wire_ilnp64_buf
      Src: /src/unbound/fuzz_3.c:53,1
    - Dst: sldns_str2wire_eui48_buf
      Src: /src/unbound/fuzz_3.c:54,1
    - Dst: sldns_str2wire_eui64_buf
      Src: /src/unbound/fuzz_3.c:55,1
    - Dst: sldns_str2wire_tag_buf
      Src: /src/unbound/fuzz_3.c:56,1
    - Dst: sldns_str2wire_long_str_buf
      Src: /src/unbound/fuzz_3.c:57,1
    - Dst: sldns_str2wire_hip_buf
      Src: /src/unbound/fuzz_3.c:58,1
    - Dst: sldns_str2wire_int16_data_buf
      Src: /src/unbound/fuzz_3.c:59,1
    - Dst: free
      Src: /src/unbound/fuzz_3.c:62,1
    - Dst: free
      Src: /src/unbound/fuzz_3.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 81
    argCount: 2
    argNames:
    - buf
    - nr
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 11
    functionDepth: 1
    functionLinenumber: 11
    functionLinenumberEnd: 67
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/unbound/fuzz_3.c
    functionUses: 0
    functionsReached:
    - sldns_str2wire_nsap_buf
    - sldns_str2wire_hex_buf
    - sldns_str2wire_atma_buf
    - sldns_str2wire_wks_buf
    - sldns_str2wire_alg_buf
    - sldns_str2wire_b64_buf
    - sldns_str2wire_hip_buf
    - sldns_str2wire_str_buf
    - sldns_str2wire_eui48_buf
    - sldns_str2wire_type_buf
    - memset
    - sldns_str2wire_tsigerror_buf
    - sldns_str2wire_int8_buf
    - sldns_str2wire_ipseckey_buf
    - sldns_str2wire_nsec_buf
    - sldns_str2wire_long_str_buf
    - sldns_str2wire_tsigtime_buf
    - sldns_str2wire_cert_alg_buf
    - sldns_str2wire_int16_buf
    - sldns_str2wire_b32_ext_buf
    - sldns_str2wire_int32_buf
    - sldns_str2wire_loc_buf
    - memcpy
    - sldns_str2wire_time_buf
    - sldns_str2wire_period_buf
    - sldns_str2wire_nsec3_salt_buf
    - sldns_str2wire_eui64_buf
    - malloc
    - free
    - sldns_str2wire_class_buf
    - sldns_str2wire_ilnp64_buf
    - sldns_str2wire_a_buf
    - sldns_str2wire_tag_buf
    - sldns_str2wire_int16_data_buf
    - sldns_str2wire_apl_buf
    - sldns_str2wire_dname_buf
    - sldns_str2wire_aaaa_buf
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *buf, size_t nr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/fuzz_2.c:16,1
    - Dst: sldns_wire2str_edns_subnet_print
      Src: /src/unbound/fuzz_2.c:19,1
    - Dst: sldns_wire2str_edns_n3u_print
      Src: /src/unbound/fuzz_2.c:20,1
    - Dst: sldns_wire2str_edns_dhu_print
      Src: /src/unbound/fuzz_2.c:21,1
    - Dst: sldns_wire2str_edns_dau_print
      Src: /src/unbound/fuzz_2.c:22,1
    - Dst: sldns_wire2str_edns_nsid_print
      Src: /src/unbound/fuzz_2.c:23,1
    - Dst: sldns_wire2str_edns_ul_print
      Src: /src/unbound/fuzz_2.c:24,1
    - Dst: sldns_wire2str_edns_llq_print
      Src: /src/unbound/fuzz_2.c:25,1
    - Dst: sldns_wire2str_tsigerror_scan
      Src: /src/unbound/fuzz_2.c:27,1
    - Dst: sldns_wire2str_long_str_scan
      Src: /src/unbound/fuzz_2.c:28,1
    - Dst: sldns_wire2str_tag_scan
      Src: /src/unbound/fuzz_2.c:29,1
    - Dst: sldns_wire2str_eui64_scan
      Src: /src/unbound/fuzz_2.c:30,1
    - Dst: sldns_wire2str_int16_data_scan
      Src: /src/unbound/fuzz_2.c:31,1
    - Dst: sldns_wire2str_hip_scan
      Src: /src/unbound/fuzz_2.c:32,1
    - Dst: sldns_wire2str_wks_scan
      Src: /src/unbound/fuzz_2.c:33,1
    - Dst: sldns_wire2str_loc_scan
      Src: /src/unbound/fuzz_2.c:34,1
    - Dst: sldns_wire2str_cert_alg_scan
      Src: /src/unbound/fuzz_2.c:35,1
    - Dst: sldns_wire2str_nsec3_salt_scan
      Src: /src/unbound/fuzz_2.c:36,1
    - Dst: sldns_wire2str_nsec_scan
      Src: /src/unbound/fuzz_2.c:37,1
    - Dst: sldns_wire2str_b32_ext_scan
      Src: /src/unbound/fuzz_2.c:38,1
    - Dst: sldns_wire2str_apl_scan
      Src: /src/unbound/fuzz_2.c:39,1
    - Dst: sldns_wire2str_str_scan
      Src: /src/unbound/fuzz_2.c:40,1
    - Dst: sldns_wire2str_rdata_unknown_scan
      Src: /src/unbound/fuzz_2.c:41,1
    - Dst: sldns_wire2str_header_scan
      Src: /src/unbound/fuzz_2.c:42,1
    - Dst: sldns_wire2str_pkt_scan
      Src: /src/unbound/fuzz_2.c:43,1
    - Dst: free
      Src: /src/unbound/fuzz_2.c:46,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 118
    argCount: 2
    argNames:
    - bin
    - nr
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 6
    functionDepth: 1
    functionLinenumber: 6
    functionLinenumberEnd: 51
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/unbound/fuzz_2.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_edns_n3u_print
    - sldns_wire2str_tag_scan
    - sldns_wire2str_edns_ul_print
    - sldns_wire2str_tsigerror_scan
    - sldns_wire2str_loc_scan
    - sldns_wire2str_edns_dau_print
    - sldns_wire2str_long_str_scan
    - sldns_wire2str_edns_nsid_print
    - sldns_wire2str_apl_scan
    - sldns_wire2str_str_scan
    - sldns_wire2str_header_scan
    - sldns_wire2str_pkt_scan
    - sldns_wire2str_int16_data_scan
    - sldns_wire2str_nsec_scan
    - sldns_wire2str_b32_ext_scan
    - malloc
    - free
    - sldns_wire2str_edns_llq_print
    - sldns_wire2str_edns_subnet_print
    - sldns_wire2str_cert_alg_scan
    - sldns_wire2str_eui64_scan
    - sldns_wire2str_rdata_unknown_scan
    - sldns_wire2str_edns_dhu_print
    - sldns_wire2str_nsec3_salt_scan
    - sldns_wire2str_wks_scan
    - sldns_wire2str_hip_scan
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *bin, size_t nr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_init
      Src: /src/unbound/fuzz_1.c:28,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/fuzz_1.c:32,1
    - Dst: sldns_buffer_new_frm_data
      Src: /src/unbound/fuzz_1.c:33,1
    - Dst: regional_create
      Src: /src/unbound/fuzz_1.c:35,1
    - Dst: memset
      Src: /src/unbound/fuzz_1.c:39,1
    - Dst: memset
      Src: /src/unbound/fuzz_1.c:40,1
    - Dst: parse_packet
      Src: /src/unbound/fuzz_1.c:41,1
    - Dst: parse_extract_edns_from_response_msg
      Src: /src/unbound/fuzz_1.c:44,1
    - Dst: memset
      Src: /src/unbound/fuzz_1.c:50,1
    - Dst: memset
      Src: /src/unbound/fuzz_1.c:54,1
    - Dst: memset
      Src: /src/unbound/fuzz_1.c:56,1
    - Dst: memset
      Src: /src/unbound/fuzz_1.c:61,1
    - Dst: memset
      Src: /src/unbound/fuzz_1.c:64,1
    - Dst: memset
      Src: /src/unbound/fuzz_1.c:68,1
    - Dst: scrub_message
      Src: /src/unbound/fuzz_1.c:72,1
    - Dst: regional_destroy
      Src: /src/unbound/fuzz_1.c:74,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/fuzz_1.c:75,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 27
    functionDepth: 1
    functionLinenumber: 27
    functionLinenumberEnd: 77
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/unbound/fuzz_1.c
    functionUses: 0
    functionsReached:
    - scrub_message
    - sldns_buffer_new
    - regional_create
    - parse_extract_edns_from_response_msg
    - log_init
    - parse_packet
    - sldns_buffer_free
    - memset
    - sldns_buffer_new_frm_data
    - regional_destroy
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *buf, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_create
      Src: /src/unbound/parse_packet_fuzzer.c:23,1
    - Dst: abort
      Src: /src/unbound/parse_packet_fuzzer.c:25,1
    - Dst: sldns_buffer_init_frm_data
      Src: /src/unbound/parse_packet_fuzzer.c:29,1
    - Dst: memset
      Src: /src/unbound/parse_packet_fuzzer.c:32,1
    - Dst: parse_packet
      Src: /src/unbound/parse_packet_fuzzer.c:33,1
    - Dst: regional_free_all
      Src: /src/unbound/parse_packet_fuzzer.c:34,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 20
    functionDepth: 1
    functionLinenumber: 20
    functionLinenumberEnd: 36
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/unbound/parse_packet_fuzzer.c
    functionUses: 0
    functionsReached:
    - regional_create
    - parse_packet
    - abort
    - memset
    - regional_free_all
    - sldns_buffer_init_frm_data
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *buf, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - d_sec
    - d_usec
    - add_sec
    - add_usec
    argTypes:
    - long long*
    - long long*
    - long long
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 88
    functionName: stats_timeval_add
    functionSourceFile: /src/unbound/daemon/stats.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void stats_timeval_add(long long* d_sec, long long* d_usec, long long
      add_sec, long long add_usec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/daemon/stats.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - stats
    - cfg
    argTypes:
    - struct ub_server_stats*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 94
    functionName: server_stats_init
    functionSourceFile: /src/unbound/daemon/stats.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void server_stats_init(struct ub_server_stats* stats, struct config_file*
      cfg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stats
    - worker
    argTypes:
    - struct ub_server_stats*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 96
    functionDepth: 0
    functionLinenumber: 96
    functionLinenumberEnd: 102
    functionName: server_stats_querymiss
    functionSourceFile: /src/unbound/daemon/stats.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void server_stats_querymiss(struct ub_server_stats* stats, struct worker*
      worker)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stats
    - worker
    argTypes:
    - struct ub_server_stats*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 111
    functionName: server_stats_prefetch
    functionSourceFile: /src/unbound/daemon/stats.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void server_stats_prefetch(struct ub_server_stats* stats, struct worker*
      worker)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/daemon/stats.c:116,1
    - Dst: log_info
      Src: /src/unbound/daemon/stats.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - stats
    - worker
    - threadnum
    argTypes:
    - struct ub_server_stats*
    - struct worker*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 134
    functionName: server_stats_log
    functionSourceFile: /src/unbound/daemon/stats.c
    functionUses: 0
    functionsReached:
    - log_info
    linkageType: ''
    returnType: void
    signature: "void server_stats_log(struct ub_server_stats* stats, struct worker*
      worker,\n\tint threadnum)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: modstack_find
      Src: /src/unbound/daemon/stats.c:143,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/stats.c:149,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/stats.c:151,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/stats.c:159,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - worker
    - svr
    - reset
    argTypes:
    - struct worker*
    - struct ub_server_stats*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 139
    functionDepth: 1
    functionLinenumber: 139
    functionLinenumberEnd: 160
    functionName: set_subnet_stats
    functionSourceFile: /src/unbound/daemon/stats.c
    functionUses: 0
    functionsReached:
    - modstack_find
    - lock_rw_wrlock
    - lock_rw_rdlock
    - lock_rw_unlock
    linkageType: ''
    returnType: void
    signature: "void set_subnet_stats(struct worker* worker, struct ub_server_stats*
      svr,\n\tint reset)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: modstack_find
      Src: /src/unbound/daemon/stats.c:168,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/stats.c:177,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/stats.c:184,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - worker
    - svr
    - reset
    argTypes:
    - struct worker*
    - struct ub_server_stats*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 185
    functionName: set_neg_cache_stats
    functionSourceFile: /src/unbound/daemon/stats.c
    functionUses: 0
    functionsReached:
    - modstack_find
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: "void set_neg_cache_stats(struct worker* worker, struct ub_server_stats*
      svr,\n\tint reset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: modstack_find
      Src: /src/unbound/daemon/stats.c:191,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/stats.c:197,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/stats.c:201,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - worker
    - reset
    argTypes:
    - struct worker*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 203
    functionName: get_rrset_bogus
    functionSourceFile: /src/unbound/daemon/stats.c
    functionUses: 0
    functionsReached:
    - modstack_find
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: size_t
    signature: size_t get_rrset_bogus(struct worker* worker, int reset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: modstack_find
      Src: /src/unbound/daemon/stats.c:209,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/stats.c:215,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/stats.c:219,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - worker
    - reset
    argTypes:
    - struct worker*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 221
    functionName: get_queries_ratelimit
    functionSourceFile: /src/unbound/daemon/stats.c
    functionUses: 0
    functionsReached:
    - modstack_find
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: size_t
    signature: size_t get_queries_ratelimit(struct worker* worker, int reset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/stats.c:232,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/stats.c:236,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - worker
    - reset
    argTypes:
    - struct worker*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 238
    functionName: get_dnscrypt_cache_miss
    functionSourceFile: /src/unbound/daemon/stats.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: size_t
    signature: size_t get_dnscrypt_cache_miss(struct worker* worker, int reset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/stats.c:247,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/stats.c:251,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - worker
    - reset
    argTypes:
    - struct worker*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 253
    functionName: get_dnscrypt_replay
    functionSourceFile: /src/unbound/daemon/stats.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: size_t
    signature: size_t get_dnscrypt_replay(struct worker* worker, int reset)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: timehist_quartile
      Src: /src/unbound/daemon/stats.c:271,1
    - Dst: timehist_export
      Src: /src/unbound/daemon/stats.c:284,1
    - Dst: get_rrset_bogus
      Src: /src/unbound/daemon/stats.c:300,1
    - Dst: get_queries_ratelimit
      Src: /src/unbound/daemon/stats.c:303,1
    - Dst: get_slabhash_stats
      Src: /src/unbound/daemon/stats.c:306,1
    - Dst: get_slabhash_stats
      Src: /src/unbound/daemon/stats.c:308,1
    - Dst: count_slabhash_entries
      Src: /src/unbound/daemon/stats.c:310,1
    - Dst: count_slabhash_entries
      Src: /src/unbound/daemon/stats.c:312,1
    - Dst: get_dnscrypt_cache_miss
      Src: /src/unbound/daemon/stats.c:318,1
    - Dst: count_slabhash_entries
      Src: /src/unbound/daemon/stats.c:319,1
    - Dst: count_slabhash_entries
      Src: /src/unbound/daemon/stats.c:321,1
    - Dst: get_dnscrypt_replay
      Src: /src/unbound/daemon/stats.c:324,1
    - Dst: tcp_req_info_get_stream_buffer_size
      Src: /src/unbound/daemon/stats.c:342,1
    - Dst: http2_get_query_buffer_size
      Src: /src/unbound/daemon/stats.c:344,1
    - Dst: http2_get_response_buffer_size
      Src: /src/unbound/daemon/stats.c:346,1
    - Dst: doq_table_quic_size_get
      Src: /src/unbound/daemon/stats.c:348,1
    - Dst: set_neg_cache_stats
      Src: /src/unbound/daemon/stats.c:355,1
    - Dst: set_subnet_stats
      Src: /src/unbound/daemon/stats.c:358,1
    - Dst: worker_stats_clear
      Src: /src/unbound/daemon/stats.c:377,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 74
    argCount: 3
    argNames:
    - worker
    - s
    - reset
    argTypes:
    - struct worker*
    - struct ub_stats_info*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 256
    functionDepth: 2
    functionLinenumber: 256
    functionLinenumberEnd: 379
    functionName: server_stats_compile
    functionSourceFile: /src/unbound/daemon/stats.c
    functionUses: 0
    functionsReached:
    - count_slabhash_entries
    - set_subnet_stats
    - get_dnscrypt_cache_miss
    - get_slabhash_stats
    - tcp_req_info_get_stream_buffer_size
    - get_rrset_bogus
    - worker_stats_clear
    - get_dnscrypt_replay
    - timehist_quartile
    - get_queries_ratelimit
    - set_neg_cache_stats
    - http2_get_query_buffer_size
    - http2_get_response_buffer_size
    - timehist_export
    - doq_table_quic_size_get
    linkageType: ''
    returnType: void
    signature: void server_stats_compile(struct worker* worker, struct ub_stats_info*
      s, int reset)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: server_stats_compile
      Src: /src/unbound/daemon/stats.c:388,1
    - Dst: verbose
      Src: /src/unbound/daemon/stats.c:392,1
    - Dst: worker_send_cmd
      Src: /src/unbound/daemon/stats.c:394,1
    - Dst: worker_send_cmd
      Src: /src/unbound/daemon/stats.c:395,1
    - Dst: verbose
      Src: /src/unbound/daemon/stats.c:396,1
    - Dst: tube_wait_timeout
      Src: /src/unbound/daemon/stats.c:397,1
    - Dst: memcpy
      Src: /src/unbound/daemon/stats.c:402,1
    - Dst: verbose
      Src: /src/unbound/daemon/stats.c:405,1
    - Dst: defined
      Src: /src/unbound/daemon/stats.c:409,1
    - Dst: defined
      Src: /src/unbound/daemon/stats.c:409,1
    - Dst: log_err
      Src: /src/unbound/daemon/stats.c:425,1
    - Dst: memset
      Src: /src/unbound/daemon/stats.c:431,1
    - Dst: tube_read_msg
      Src: /src/unbound/daemon/stats.c:434,1
    - Dst: log_err
      Src: /src/unbound/daemon/stats.c:435,1
    - Dst: memset
      Src: /src/unbound/daemon/stats.c:437,1
    - Dst: log_err
      Src: /src/unbound/daemon/stats.c:441,1
    - Dst: free
      Src: /src/unbound/daemon/stats.c:443,1
    - Dst: memset
      Src: /src/unbound/daemon/stats.c:444,1
    - Dst: memcpy
      Src: /src/unbound/daemon/stats.c:447,1
    - Dst: free
      Src: /src/unbound/daemon/stats.c:448,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 34
    argCount: 4
    argNames:
    - worker
    - who
    - s
    - reset
    argTypes:
    - struct worker*
    - struct worker*
    - struct ub_stats_info*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 381
    functionDepth: 3
    functionLinenumber: 381
    functionLinenumberEnd: 449
    functionName: server_stats_obtain
    functionSourceFile: /src/unbound/daemon/stats.c
    functionUses: 0
    functionsReached:
    - log_err
    - memcpy
    - server_stats_compile
    - verbose
    - defined
    - free
    - tube_read_msg
    - tube_wait_timeout
    - memset
    - worker_send_cmd
    linkageType: ''
    returnType: void
    signature: "void server_stats_obtain(struct worker* worker, struct worker* who,\n\tstruct
      ub_stats_info* s, int reset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: server_stats_compile
      Src: /src/unbound/daemon/stats.c:454,1
    - Dst: verbose
      Src: /src/unbound/daemon/stats.c:455,1
    - Dst: tube_write_msg
      Src: /src/unbound/daemon/stats.c:456,1
    - Dst: log_err
      Src: /src/unbound/daemon/stats.c:458,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - worker
    - reset
    argTypes:
    - struct worker*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 451
    functionDepth: 3
    functionLinenumber: 451
    functionLinenumberEnd: 459
    functionName: server_stats_reply
    functionSourceFile: /src/unbound/daemon/stats.c
    functionUses: 0
    functionsReached:
    - server_stats_compile
    - verbose
    - tube_write_msg
    - log_err
    linkageType: ''
    returnType: void
    signature: void server_stats_reply(struct worker* worker, int reset)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stats_timeval_add
      Src: /src/unbound/daemon/stats.c:547,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 75
    argCount: 2
    argNames:
    - total
    - a
    argTypes:
    - struct ub_stats_info*
    - struct ub_stats_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 552
    functionName: server_stats_add
    functionSourceFile: /src/unbound/daemon/stats.c
    functionUses: 0
    functionsReached:
    - stats_timeval_add
    linkageType: ''
    returnType: void
    signature: void server_stats_add(struct ub_stats_info* total, struct ub_stats_info*
      a)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/daemon/stats.c:558,1
    - Dst: LDNS_OPCODE_WIRE
      Src: /src/unbound/daemon/stats.c:565,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/stats.c:565,1
    - Dst: SSL_session_reused
      Src: /src/unbound/daemon/stats.c:572,1
    - Dst: addr_is_ip6
      Src: /src/unbound/daemon/stats.c:583,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 43
    argCount: 6
    argNames:
    - stats
    - c
    - qtype
    - qclass
    - edns
    - repinfo
    argTypes:
    - struct ub_server_stats*
    - struct comm_point*
    - uint16_t
    - uint16_t
    - struct edns_data*
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 606
    functionName: server_stats_insquery
    functionSourceFile: /src/unbound/daemon/stats.c
    functionUses: 0
    functionsReached:
    - addr_is_ip6
    - sldns_buffer_begin
    - sldns_buffer_read_u16_at
    - LDNS_OPCODE_WIRE
    - SSL_session_reused
    linkageType: ''
    returnType: void
    signature: "void server_stats_insquery(struct ub_server_stats* stats, struct comm_point*
      c,\n\tuint16_t qtype, uint16_t qclass, struct edns_data* edns,\n\tstruct comm_reply*
      repinfo)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/daemon/stats.c:610,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/daemon/stats.c:611,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/stats.c:611,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/daemon/stats.c:613,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/stats.c:613,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - stats
    - buf
    argTypes:
    - struct ub_server_stats*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 608
    functionDepth: 1
    functionLinenumber: 608
    functionLinenumberEnd: 616
    functionName: server_stats_insrcode
    functionSourceFile: /src/unbound/daemon/stats.c
    functionUses: 0
    functionsReached:
    - LDNS_RCODE_WIRE
    - LDNS_ANCOUNT
    - sldns_buffer_limit
    - sldns_buffer_begin
    linkageType: ''
    returnType: void
    signature: void server_stats_insrcode(struct ub_server_stats* stats, sldns_buffer*
      buf)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - stats
    - edns
    argTypes:
    - struct ub_server_stats*
    - struct edns_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 618
    functionDepth: 0
    functionLinenumber: 618
    functionLinenumberEnd: 629
    functionName: server_stats_downstream_cookie
    functionSourceFile: /src/unbound/daemon/stats.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void server_stats_downstream_cookie(struct ub_server_stats* stats,\n\tstruct
      edns_data* edns)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:108,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:109,1
    - Dst: ub_default_event_base
      Src: /src/unbound/daemon/unbound.c:110,1
    - Dst: ub_get_event_sys
      Src: /src/unbound/daemon/unbound.c:111,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:112,1
    - Dst: SSLeay_version
      Src: /src/unbound/daemon/unbound.c:116,1
    - Dst: OpenSSL_version
      Src: /src/unbound/daemon/unbound.c:118,1
    - Dst: NSS_GetVersion
      Src: /src/unbound/daemon/unbound.c:121,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:126,1
    - Dst: module_list_avail
      Src: /src/unbound/daemon/unbound.c:127,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:128,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:129,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:131,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:134,1
    - Dst: ub_event_base_free
      Src: /src/unbound/daemon/unbound.c:136,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:137,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 139
    functionName: print_build_options
    functionSourceFile: /src/unbound/daemon/unbound.c
    functionUses: 0
    functionsReached:
    - module_list_avail
    - SSLeay_version
    - OpenSSL_version
    - ub_event_base_free
    - ub_get_event_sys
    - printf
    - NSS_GetVersion
    - ub_default_event_base
    linkageType: ''
    returnType: void
    signature: void print_build_options(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:145,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:146,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:147,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:148,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:149,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:150,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:151,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:152,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:153,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:155,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:156,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:157,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:159,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:160,1
    - Dst: printf
      Src: /src/unbound/daemon/unbound.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 162
    functionName: usage
    functionSourceFile: /src/unbound/daemon/unbound.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/unbound.c:167,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED(a)
    - ATTR_UNUSED(b)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 169
    functionName: replay_var_compare
    functionSourceFile: /src/unbound/daemon/unbound.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int replay_var_compare(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b))
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/daemon/unbound.c:308,1
    - Dst: daemon_apply_cfg
      Src: /src/unbound/daemon/unbound.c:311,1
    - Dst: checkrlimits
      Src: /src/unbound/daemon/unbound.c:312,1
    - Dst: log_warn
      Src: /src/unbound/daemon/unbound.c:315,1
    - Dst: log_ident_set_or_default
      Src: /src/unbound/daemon/unbound.c:318,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - daemon
    - cfg
    - cmdline_verbose
    - debug_mode
    argTypes:
    - struct daemon*
    - struct config_file*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 319
    functionName: apply_settings
    functionSourceFile: /src/unbound/daemon/unbound.c
    functionUses: 0
    functionsReached:
    - daemon_apply_cfg
    - log_ident_set_or_default
    - free
    - log_warn
    - checkrlimits
    linkageType: ''
    returnType: void
    signature: "void apply_settings(struct daemon* daemon, struct config_file* cfg,\n\tint
      cmdline_verbose, int debug_mode)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/unbound/daemon/unbound.c:335,1
    - Dst: log_err
      Src: /src/unbound/daemon/unbound.c:337,1
    - Dst: strerror
      Src: /src/unbound/daemon/unbound.c:338,1
    - Dst: read
      Src: /src/unbound/daemon/unbound.c:342,1
    - Dst: log_err
      Src: /src/unbound/daemon/unbound.c:344,1
    - Dst: strerror
      Src: /src/unbound/daemon/unbound.c:345,1
    - Dst: close
      Src: /src/unbound/daemon/unbound.c:346,1
    - Dst: close
      Src: /src/unbound/daemon/unbound.c:350,1
    - Dst: strtol
      Src: /src/unbound/daemon/unbound.c:358,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 364
    functionName: readpid
    functionSourceFile: /src/unbound/daemon/unbound.c
    functionUses: 0
    functionsReached:
    - log_err
    - read
    - open
    - close
    - strerror
    - strtol
    linkageType: ''
    returnType: pid_t
    signature: pid_t readpid (const char* file)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/daemon/unbound.c:376,1
    - Dst: open
      Src: /src/unbound/daemon/unbound.c:378,1
    - Dst: log_err
      Src: /src/unbound/daemon/unbound.c:383,1
    - Dst: strerror
      Src: /src/unbound/daemon/unbound.c:384,1
    - Dst: strlen
      Src: /src/unbound/daemon/unbound.c:387,1
    - Dst: write
      Src: /src/unbound/daemon/unbound.c:388,1
    - Dst: strlen
      Src: /src/unbound/daemon/unbound.c:388,1
    - Dst: log_err
      Src: /src/unbound/daemon/unbound.c:392,1
    - Dst: strerror
      Src: /src/unbound/daemon/unbound.c:393,1
    - Dst: close
      Src: /src/unbound/daemon/unbound.c:394,1
    - Dst: log_err
      Src: /src/unbound/daemon/unbound.c:397,1
    - Dst: close
      Src: /src/unbound/daemon/unbound.c:399,1
    - Dst: close
      Src: /src/unbound/daemon/unbound.c:404,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - pidfile
    - pid
    argTypes:
    - char*
    - pid_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 405
    functionName: writepid
    functionSourceFile: /src/unbound/daemon/unbound.c
    functionUses: 0
    functionsReached:
    - log_err
    - snprintf
    - open
    - write
    - strerror
    - strlen
    - close
    linkageType: ''
    returnType: void
    signature: void writepid (const char* pidfile, pid_t pid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: readpid
      Src: /src/unbound/daemon/unbound.c:417,1
    - Dst: kill
      Src: /src/unbound/daemon/unbound.c:419,1
    - Dst: log_warn
      Src: /src/unbound/daemon/unbound.c:420,1
    - Dst: log_warn
      Src: /src/unbound/daemon/unbound.c:423,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - pidfile
    - inchroot
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 413
    functionDepth: 2
    functionLinenumber: 413
    functionLinenumberEnd: 426
    functionName: checkoldpid
    functionSourceFile: /src/unbound/daemon/unbound.c
    functionUses: 0
    functionsReached:
    - readpid
    - kill
    - log_warn
    linkageType: ''
    returnType: void
    signature: void checkoldpid(char* pidfile, int inchroot)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: daemon
      Src: /src/unbound/daemon/unbound.c:435,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:436,1
    - Dst: strerror
      Src: /src/unbound/daemon/unbound.c:436,1
    - Dst: fork
      Src: /src/unbound/daemon/unbound.c:441,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:445,1
    - Dst: strerror
      Src: /src/unbound/daemon/unbound.c:445,1
    - Dst: exit
      Src: /src/unbound/daemon/unbound.c:448,1
    - Dst: setsid
      Src: /src/unbound/daemon/unbound.c:452,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:453,1
    - Dst: strerror
      Src: /src/unbound/daemon/unbound.c:453,1
    - Dst: open
      Src: /src/unbound/daemon/unbound.c:455,1
    - Dst: dup2
      Src: /src/unbound/daemon/unbound.c:456,1
    - Dst: dup2
      Src: /src/unbound/daemon/unbound.c:457,1
    - Dst: dup2
      Src: /src/unbound/daemon/unbound.c:458,1
    - Dst: close
      Src: /src/unbound/daemon/unbound.c:460,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 464
    functionName: detach
    functionSourceFile: /src/unbound/daemon/unbound.c
    functionUses: 0
    functionsReached:
    - exit
    - setsid
    - open
    - fatal_exit
    - strerror
    - fork
    - close
    - dup2
    - daemon
    linkageType: ''
    returnType: void
    signature: void detach(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: daemon_remote_create
      Src: /src/unbound/daemon/unbound.c:471,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:472,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - daemon
    - cfg
    argTypes:
    - struct daemon*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 476
    functionName: setup_sslctx_remote
    functionSourceFile: /src/unbound/daemon/unbound.c
    functionUses: 0
    functionsReached:
    - daemon_remote_create
    - fatal_exit
    linkageType: ''
    returnType: void
    signature: void setup_sslctx_remote(struct daemon* daemon, struct config_file*
      cfg)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: daemon_privileged
      Src: /src/unbound/daemon/unbound.c:490,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:491,1
    - Dst: getpwnam
      Src: /src/unbound/daemon/unbound.c:494,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:495,1
    - Dst: w_config_adjust_directory
      Src: /src/unbound/daemon/unbound.c:500,1
    - Dst: setup_sslctx_remote
      Src: /src/unbound/daemon/unbound.c:504,1
    - Dst: daemon_setup_sslctxs
      Src: /src/unbound/daemon/unbound.c:505,1
    - Dst: log_init
      Src: /src/unbound/daemon/unbound.c:510,1
    - Dst: strncmp
      Src: /src/unbound/daemon/unbound.c:522,1
    - Dst: strlen
      Src: /src/unbound/daemon/unbound.c:523,1
    - Dst: strdup
      Src: /src/unbound/daemon/unbound.c:529,1
    - Dst: fname_after_chroot
      Src: /src/unbound/daemon/unbound.c:530,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:533,1
    - Dst: checkoldpid
      Src: /src/unbound/daemon/unbound.c:542,1
    - Dst: detach
      Src: /src/unbound/daemon/unbound.c:548,1
    - Dst: writepid
      Src: /src/unbound/daemon/unbound.c:554,1
    - Dst: getpid
      Src: /src/unbound/daemon/unbound.c:554,1
    - Dst: setusercontext
      Src: /src/unbound/daemon/unbound.c:568,1
    - Dst: log_warn
      Src: /src/unbound/daemon/unbound.c:570,1
    - Dst: strerror
      Src: /src/unbound/daemon/unbound.c:571,1
    - Dst: chdir
      Src: /src/unbound/daemon/unbound.c:581,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:582,1
    - Dst: strerror
      Src: /src/unbound/daemon/unbound.c:583,1
    - Dst: verbose
      Src: /src/unbound/daemon/unbound.c:585,1
    - Dst: chroot
      Src: /src/unbound/daemon/unbound.c:586,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:587,1
    - Dst: strerror
      Src: /src/unbound/daemon/unbound.c:588,1
    - Dst: chdir
      Src: /src/unbound/daemon/unbound.c:589,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:590,1
    - Dst: strerror
      Src: /src/unbound/daemon/unbound.c:591,1
    - Dst: verbose
      Src: /src/unbound/daemon/unbound.c:592,1
    - Dst: strncmp
      Src: /src/unbound/daemon/unbound.c:593,1
    - Dst: strlen
      Src: /src/unbound/daemon/unbound.c:594,1
    - Dst: strlen
      Src: /src/unbound/daemon/unbound.c:595,1
    - Dst: strncmp
      Src: /src/unbound/daemon/unbound.c:599,1
    - Dst: strlen
      Src: /src/unbound/daemon/unbound.c:600,1
    - Dst: strdup
      Src: /src/unbound/daemon/unbound.c:602,1
    - Dst: strlen
      Src: /src/unbound/daemon/unbound.c:602,1
    - Dst: free
      Src: /src/unbound/daemon/unbound.c:603,1
    - Dst: log_err
      Src: /src/unbound/daemon/unbound.c:605,1
    - Dst: strdup
      Src: /src/unbound/daemon/unbound.c:607,1
    - Dst: log_err
      Src: /src/unbound/daemon/unbound.c:609,1
    - Dst: strncmp
      Src: /src/unbound/daemon/unbound.c:618,1
    - Dst: strlen
      Src: /src/unbound/daemon/unbound.c:619,1
    - Dst: strlen
      Src: /src/unbound/daemon/unbound.c:620,1
    - Dst: chdir
      Src: /src/unbound/daemon/unbound.c:622,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:623,1
    - Dst: strerror
      Src: /src/unbound/daemon/unbound.c:624,1
    - Dst: verbose
      Src: /src/unbound/daemon/unbound.c:626,1
    - Dst: initgroups
      Src: /src/unbound/daemon/unbound.c:634,1
    - Dst: log_warn
      Src: /src/unbound/daemon/unbound.c:635,1
    - Dst: strerror
      Src: /src/unbound/daemon/unbound.c:636,1
    - Dst: endpwent
      Src: /src/unbound/daemon/unbound.c:639,1
    - Dst: setresgid
      Src: /src/unbound/daemon/unbound.c:643,1
    - Dst: setregid
      Src: /src/unbound/daemon/unbound.c:645,1
    - Dst: setgid
      Src: /src/unbound/daemon/unbound.c:647,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:649,1
    - Dst: strerror
      Src: /src/unbound/daemon/unbound.c:650,1
    - Dst: setresuid
      Src: /src/unbound/daemon/unbound.c:652,1
    - Dst: setreuid
      Src: /src/unbound/daemon/unbound.c:654,1
    - Dst: setuid
      Src: /src/unbound/daemon/unbound.c:656,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:658,1
    - Dst: strerror
      Src: /src/unbound/daemon/unbound.c:659,1
    - Dst: verbose
      Src: /src/unbound/daemon/unbound.c:660,1
    - Dst: log_init
      Src: /src/unbound/daemon/unbound.c:667,1
    - Dst: strdup
      Src: /src/unbound/daemon/unbound.c:668,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:670,1
    CyclomaticComplexity: 58
    EdgeCount: 58
    ICount: 92
    argCount: 5
    argNames:
    - daemon
    - cfg
    - debug_mode
    - cfgfile
    - need_pidfile
    argTypes:
    - struct daemon*
    - struct config_file*
    - int
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 479
    functionDepth: 3
    functionLinenumber: 479
    functionLinenumberEnd: 671
    functionName: perform_setup
    functionSourceFile: /src/unbound/daemon/unbound.c
    functionUses: 0
    functionsReached:
    - setresgid
    - log_init
    - setregid
    - setgid
    - endpwent
    - getpid
    - setuid
    - log_err
    - daemon_privileged
    - setresuid
    - setup_sslctx_remote
    - w_config_adjust_directory
    - strlen
    - strncmp
    - verbose
    - free
    - writepid
    - log_warn
    - getpwnam
    - strerror
    - strdup
    - setreuid
    - fname_after_chroot
    - daemon_setup_sslctxs
    - fatal_exit
    - chroot
    - checkoldpid
    - setusercontext
    - detach
    - chdir
    - initgroups
    linkageType: ''
    returnType: void
    signature: "void perform_setup(struct daemon* daemon, struct config_file* cfg,
      int debug_mode,\n\tconst char** cfgfile, int need_pidfile)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: daemon_init
      Src: /src/unbound/daemon/unbound.c:688,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:689,1
    - Dst: verbose
      Src: /src/unbound/daemon/unbound.c:692,1
    - Dst: verbose
      Src: /src/unbound/daemon/unbound.c:693,1
    - Dst: config_create
      Src: /src/unbound/daemon/unbound.c:696,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:697,1
    - Dst: config_read
      Src: /src/unbound/daemon/unbound.c:698,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:700,1
    - Dst: log_warn
      Src: /src/unbound/daemon/unbound.c:704,1
    - Dst: config_auto_slab_values
      Src: /src/unbound/daemon/unbound.c:705,1
    - Dst: apply_settings
      Src: /src/unbound/daemon/unbound.c:707,1
    - Dst: config_lookup_uid
      Src: /src/unbound/daemon/unbound.c:709,1
    - Dst: daemon_open_shared_ports
      Src: /src/unbound/daemon/unbound.c:712,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:713,1
    - Dst: perform_setup
      Src: /src/unbound/daemon/unbound.c:715,1
    - Dst: log_init
      Src: /src/unbound/daemon/unbound.c:720,1
    - Dst: daemon_fork
      Src: /src/unbound/daemon/unbound.c:723,1
    - Dst: verbose
      Src: /src/unbound/daemon/unbound.c:726,1
    - Dst: daemon_cleanup
      Src: /src/unbound/daemon/unbound.c:727,1
    - Dst: config_delete
      Src: /src/unbound/daemon/unbound.c:728,1
    - Dst: verbose
      Src: /src/unbound/daemon/unbound.c:730,1
    - Dst: open
      Src: /src/unbound/daemon/unbound.c:736,1
    - Dst: close
      Src: /src/unbound/daemon/unbound.c:742,1
    - Dst: unlink
      Src: /src/unbound/daemon/unbound.c:744,1
    - Dst: daemon_delete
      Src: /src/unbound/daemon/unbound.c:746,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 4
    argNames:
    - cfgfile
    - cmdline_verbose
    - debug_mode
    - need_pidfile
    argTypes:
    - char*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 681
    functionDepth: 4
    functionLinenumber: 681
    functionLinenumberEnd: 747
    functionName: run_daemon
    functionSourceFile: /src/unbound/daemon/unbound.c
    functionUses: 0
    functionsReached:
    - apply_settings
    - daemon_fork
    - daemon_cleanup
    - log_init
    - config_auto_slab_values
    - perform_setup
    - config_create
    - daemon_open_shared_ports
    - verbose
    - open
    - close
    - log_warn
    - config_lookup_uid
    - config_delete
    - unlink
    - daemon_delete
    - daemon_init
    - fatal_exit
    - config_read
    linkageType: ''
    returnType: void
    signature: void run_daemon(const char* cfgfile, int cmdline_verbose, int debug_mode,
      int need_pidfile)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: checklock_start
      Src: /src/unbound/daemon/unbound.c:775,1
    - Dst: log_init
      Src: /src/unbound/daemon/unbound.c:776,1
    - Dst: strrchr
      Src: /src/unbound/daemon/unbound.c:777,1
    - Dst: strrchr
      Src: /src/unbound/daemon/unbound.c:777,1
    - Dst: log_ident_set_default
      Src: /src/unbound/daemon/unbound.c:778,1
    - Dst: log_ident_set
      Src: /src/unbound/daemon/unbound.c:779,1
    - Dst: getopt
      Src: /src/unbound/daemon/unbound.c:781,1
    - Dst: print_build_options
      Src: /src/unbound/daemon/unbound.c:803,1
    - Dst: usage
      Src: /src/unbound/daemon/unbound.c:808,1
    - Dst: wsvc_command_option
      Src: /src/unbound/daemon/unbound.c:817,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/unbound.c:820,1
    - Dst: usage
      Src: /src/unbound/daemon/unbound.c:825,1
    - Dst: run_daemon
      Src: /src/unbound/daemon/unbound.c:829,1
    - Dst: log_init
      Src: /src/unbound/daemon/unbound.c:830,1
    - Dst: log_get_lock
      Src: /src/unbound/daemon/unbound.c:832,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/daemon/unbound.c:833,1
    - Dst: log_get_lock
      Src: /src/unbound/daemon/unbound.c:833,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 50
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 760
    functionDepth: 5
    functionLinenumber: 760
    functionLinenumberEnd: 837
    functionName: main
    functionSourceFile: /src/unbound/daemon/unbound.c
    functionUses: 0
    functionsReached:
    - getopt
    - wsvc_command_option
    - strrchr
    - print_build_options
    - checklock_start
    - fatal_exit
    - log_init
    - run_daemon
    - log_get_lock
    - lock_basic_destroy
    - usage
    - log_ident_set
    - log_ident_set_default
    linkageType: ''
    returnType: int
    signature: int main(int argc, char* argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/daemon/acl_list.c:55,1
    - Dst: regional_create
      Src: /src/unbound/daemon/acl_list.c:59,1
    - Dst: acl_list_delete
      Src: /src/unbound/daemon/acl_list.c:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 65
    functionName: acl_list_create
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - regional_create
    - calloc
    - acl_list_delete
    linkageType: ''
    returnType: struct acl_list
    signature: 'struct acl_list *

      acl_list_create(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_destroy
      Src: /src/unbound/daemon/acl_list.c:72,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - acl
    argTypes:
    - struct acl_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 74
    functionName: acl_list_delete
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 1
    functionsReached:
    - free
    - regional_destroy
    linkageType: ''
    returnType: void
    signature: void acl_list_delete(struct acl_list* acl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_zero
      Src: /src/unbound/daemon/acl_list.c:82,1
    - Dst: addr_tree_insert
      Src: /src/unbound/daemon/acl_list.c:87,1
    - Dst: verbose
      Src: /src/unbound/daemon/acl_list.c:89,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 6
    argNames:
    - acl
    - addr
    - addrlen
    - net
    - control
    - complain_duplicates
    argTypes:
    - struct acl_list*
    - struct sockaddr_storage*
    - socklen_t
    - int
    - enum acl_access
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 92
    functionName: acl_list_insert
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - verbose
    - addr_tree_insert
    linkageType: ''
    returnType: struct acl_addr
    signature: "struct acl_addr *\nacl_list_insert(struct acl_list* acl, struct sockaddr_storage*
      addr,\n\tsocklen_t addrlen, int net, enum acl_access control,\n\tint complain_duplicates)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/daemon/acl_list.c:98,1
    - Dst: strcmp
      Src: /src/unbound/daemon/acl_list.c:100,1
    - Dst: strcmp
      Src: /src/unbound/daemon/acl_list.c:102,1
    - Dst: strcmp
      Src: /src/unbound/daemon/acl_list.c:104,1
    - Dst: strcmp
      Src: /src/unbound/daemon/acl_list.c:106,1
    - Dst: strcmp
      Src: /src/unbound/daemon/acl_list.c:108,1
    - Dst: strcmp
      Src: /src/unbound/daemon/acl_list.c:110,1
    - Dst: strcmp
      Src: /src/unbound/daemon/acl_list.c:112,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:115,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - str
    - control
    argTypes:
    - char*
    - enum acl_access*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 119
    functionName: parse_acl_access
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - log_err
    - strcmp
    linkageType: ''
    returnType: int
    signature: int parse_acl_access(const char* str, enum acl_access* control)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: parse_acl_access
      Src: /src/unbound/daemon/acl_list.c:130,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/daemon/acl_list.c:133,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:134,1
    - Dst: acl_list_insert
      Src: /src/unbound/daemon/acl_list.c:137,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:139,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - acl
    - str
    - s2
    - complain_duplicates
    argTypes:
    - struct acl_list*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 143
    functionName: acl_list_str_cfg
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - netblockstrtoaddr
    - acl_list_insert
    - parse_acl_access
    - log_err
    linkageType: ''
    returnType: int
    signature: "int acl_list_str_cfg(struct acl_list* acl, const char* str, const
      char* s2,\n\tint complain_duplicates)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_is_ip6
      Src: /src/unbound/daemon/acl_list.c:153,1
    - Dst: extstrtoaddr
      Src: /src/unbound/daemon/acl_list.c:155,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:156,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/daemon/acl_list.c:160,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:161,1
    - Dst: addr_tree_find
      Src: /src/unbound/daemon/acl_list.c:166,1
    - Dst: acl_list_insert
      Src: /src/unbound/daemon/acl_list.c:170,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:172,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 4
    argNames:
    - acl
    - str
    - is_interface
    - port
    argTypes:
    - struct acl_list*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 177
    functionName: acl_find_or_create_str2addr
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - log_err
    - netblockstrtoaddr
    - extstrtoaddr
    - addr_tree_find
    - acl_list_insert
    - str_is_ip6
    linkageType: ''
    returnType: struct acl_addr
    signature: "struct acl_addr *\nacl_find_or_create_str2addr(struct acl_list* acl,
      const char* str,\n\tint is_interface, int port)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: addr_is_ip6
      Src: /src/unbound/daemon/acl_list.c:185,1
    - Dst: addr_tree_find
      Src: /src/unbound/daemon/acl_list.c:187,1
    - Dst: acl_list_insert
      Src: /src/unbound/daemon/acl_list.c:191,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:193,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - acl
    - addr
    - addrlen
    - control
    argTypes:
    - struct acl_list*
    - struct sockaddr_storage*
    - socklen_t
    - enum acl_access
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 180
    functionDepth: 2
    functionLinenumber: 180
    functionLinenumberEnd: 198
    functionName: acl_find_or_create
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - addr_tree_find
    - log_err
    - addr_is_ip6
    - acl_list_insert
    linkageType: ''
    returnType: struct acl_addr
    signature: "struct acl_addr *\nacl_find_or_create(struct acl_list* acl, struct
      sockaddr_storage* addr,\n\tsocklen_t addrlen, enum acl_access control)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_acl_access
      Src: /src/unbound/daemon/acl_list.c:207,1
    - Dst: acl_find_or_create_str2addr
      Src: /src/unbound/daemon/acl_list.c:210,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:211,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - acl_interface
    - iface
    - s2
    - port
    argTypes:
    - struct acl_list*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 201
    functionDepth: 3
    functionLinenumber: 201
    functionLinenumberEnd: 217
    functionName: acl_interface_str_cfg
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - log_err
    - acl_find_or_create_str2addr
    - parse_acl_access
    linkageType: ''
    returnType: int
    signature: "int acl_interface_str_cfg(struct acl_list* acl_interface, const char*
      iface,\n\tconst char* s2, int port)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: acl_find_or_create
      Src: /src/unbound/daemon/acl_list.c:224,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - acl_interface
    - addr
    - addrlen
    - control
    argTypes:
    - struct acl_list*
    - struct sockaddr_storage*
    - socklen_t
    - enum acl_access
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 219
    functionDepth: 3
    functionLinenumber: 219
    functionLinenumberEnd: 227
    functionName: acl_interface_insert
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - acl_find_or_create
    linkageType: ''
    returnType: struct acl_addr
    signature: "struct acl_addr *\nacl_interface_insert(struct acl_list* acl_interface,\n\tstruct
      sockaddr_storage* addr, socklen_t addrlen,\n\tenum acl_access control)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_find_or_create_str2addr
      Src: /src/unbound/daemon/acl_list.c:235,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:237,1
    - Dst: regional_alloc_init
      Src: /src/unbound/daemon/acl_list.c:241,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:243,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 6
    argNames:
    - acl
    - str
    - bitmap
    - bitmaplen
    - is_interface
    - port
    argTypes:
    - struct acl_list*
    - char*
    - uint8_t*
    - size_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 230
    functionDepth: 3
    functionLinenumber: 230
    functionLinenumberEnd: 247
    functionName: acl_list_tags_cfg
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - log_err
    - acl_find_or_create_str2addr
    - regional_alloc_init
    linkageType: ''
    returnType: int
    signature: "int acl_list_tags_cfg(struct acl_list* acl, const char* str, uint8_t*
      bitmap,\n\tsize_t bitmaplen, int is_interface, int port)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_find_or_create_str2addr
      Src: /src/unbound/daemon/acl_list.c:255,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:257,1
    - Dst: views_find_view
      Src: /src/unbound/daemon/acl_list.c:260,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:262,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/acl_list.c:265,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 6
    argNames:
    - acl
    - str
    - str2
    - vs
    - is_interface
    - port
    argTypes:
    - struct acl_list*
    - char*
    - char*
    - struct views*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 250
    functionDepth: 3
    functionLinenumber: 250
    functionLinenumberEnd: 267
    functionName: acl_list_view_cfg
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - log_err
    - lock_rw_unlock
    - views_find_view
    - acl_find_or_create_str2addr
    linkageType: ''
    returnType: int
    signature: "int acl_list_view_cfg(struct acl_list* acl, const char* str, const
      char* str2,\n\tstruct views* vs, int is_interface, int port)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: acl_find_or_create_str2addr
      Src: /src/unbound/daemon/acl_list.c:278,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:280,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/daemon/acl_list.c:285,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:288,1
    - Dst: find_tag_id
      Src: /src/unbound/daemon/acl_list.c:294,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:295,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:299,1
    - Dst: local_zone_str2type
      Src: /src/unbound/daemon/acl_list.c:302,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:303,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 7
    argNames:
    - acl
    - cfg
    - str
    - tag
    - action
    - is_interface
    - port
    argTypes:
    - struct acl_list*
    - struct config_file*
    - char*
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 270
    functionDepth: 3
    functionLinenumber: 270
    functionLinenumberEnd: 309
    functionName: acl_list_tag_action_cfg
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - log_err
    - acl_find_or_create_str2addr
    - find_tag_id
    - local_zone_str2type
    linkageType: ''
    returnType: int
    signature: "int acl_list_tag_action_cfg(struct acl_list* acl, struct config_file*
      cfg,\n\tconst char* str, const char* tag, const char* action,\n\tint is_interface,
      int port)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/daemon/acl_list.c:321,1
    - Dst: sldns_str2wire_rr_buf
      Src: /src/unbound/daemon/acl_list.c:322,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/daemon/acl_list.c:330,1
    - Dst: snprintf
      Src: /src/unbound/daemon/acl_list.c:334,1
    - Dst: sldns_str2wire_rr_buf
      Src: /src/unbound/daemon/acl_list.c:336,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/daemon/acl_list.c:344,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:349,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:356,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/daemon/acl_list.c:357,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/daemon/acl_list.c:358,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - data
    - head
    argTypes:
    - char*
    - struct config_strlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 360
    functionName: check_data
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - log_err
    - sldns_str2wire_rr_buf
    - snprintf
    - LDNS_WIREPARSE_OFFSET
    - sldns_get_errorstr_parse
    - sldns_wirerr_get_type
    linkageType: ''
    returnType: int
    signature: int check_data(const char* data, const struct config_strlist* head)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: acl_find_or_create_str2addr
      Src: /src/unbound/daemon/acl_list.c:371,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:373,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/daemon/acl_list.c:378,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:381,1
    - Dst: find_tag_id
      Src: /src/unbound/daemon/acl_list.c:387,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:388,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:392,1
    - Dst: check_data
      Src: /src/unbound/daemon/acl_list.c:397,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:398,1
    - Dst: regional_strdup
      Src: /src/unbound/daemon/acl_list.c:403,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:405,1
    - Dst: cfg_region_strlist_insert
      Src: /src/unbound/daemon/acl_list.c:408,1
    - Dst: log_err
      Src: /src/unbound/daemon/acl_list.c:410,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 7
    argNames:
    - acl
    - cfg
    - str
    - tag
    - data
    - is_interface
    - port
    argTypes:
    - struct acl_list*
    - struct config_file*
    - char*
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 363
    functionDepth: 3
    functionLinenumber: 363
    functionLinenumberEnd: 414
    functionName: acl_list_tag_data_cfg
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - log_err
    - regional_strdup
    - acl_find_or_create_str2addr
    - cfg_region_strlist_insert
    - check_data
    - find_tag_id
    linkageType: ''
    returnType: int
    signature: "int acl_list_tag_data_cfg(struct acl_list* acl, struct config_file*
      cfg,\n\tconst char* str, const char* tag, const char* data,\n\tint is_interface,
      int port)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/acl_list.c:422,1
    - Dst: acl_list_str_cfg
      Src: /src/unbound/daemon/acl_list.c:423,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - acl
    - acls
    argTypes:
    - struct acl_list*
    - struct config_str2list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 417
    functionDepth: 3
    functionLinenumber: 417
    functionLinenumberEnd: 427
    functionName: read_acl_list
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - log_assert
    - acl_list_str_cfg
    linkageType: ''
    returnType: int
    signature: int read_acl_list(struct acl_list* acl, struct config_str2list* acls)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/acl_list.c:437,1
    - Dst: acl_list_view_cfg
      Src: /src/unbound/daemon/acl_list.c:438,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/daemon/acl_list.c:439,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:444,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:445,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:446,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - acl
    - acl_view
    - v
    argTypes:
    - struct acl_list*
    - struct config_str2list**
    - struct views*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 430
    functionDepth: 4
    functionLinenumber: 430
    functionLinenumberEnd: 450
    functionName: read_acl_view
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - acl_list_view_cfg
    - free
    - log_assert
    - config_deldblstrlist
    linkageType: ''
    returnType: int
    signature: "int read_acl_view(struct acl_list* acl, struct config_str2list** acl_view,\n\tstruct
      views* v)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/acl_list.c:459,1
    - Dst: acl_list_tags_cfg
      Src: /src/unbound/daemon/acl_list.c:460,1
    - Dst: config_del_strbytelist
      Src: /src/unbound/daemon/acl_list.c:461,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:466,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:467,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:468,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - acl
    - acl_tags
    argTypes:
    - struct acl_list*
    - struct config_strbytelist**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 472
      start: 453
    functionDepth: 4
    functionLinenumber: 453
    functionLinenumberEnd: 472
    functionName: read_acl_tags
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - free
    - config_del_strbytelist
    - acl_list_tags_cfg
    - log_assert
    linkageType: ''
    returnType: int
    signature: int read_acl_tags(struct acl_list* acl, struct config_strbytelist**
      acl_tags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/acl_list.c:483,1
    - Dst: acl_list_tag_action_cfg
      Src: /src/unbound/daemon/acl_list.c:484,1
    - Dst: config_deltrplstrlist
      Src: /src/unbound/daemon/acl_list.c:486,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:491,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:492,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:493,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:494,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - acl
    - cfg
    - acl_tag_actions
    argTypes:
    - struct acl_list*
    - struct config_file*
    - struct config_str3list**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 475
    functionDepth: 4
    functionLinenumber: 475
    functionLinenumberEnd: 498
    functionName: read_acl_tag_actions
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - free
    - log_assert
    - acl_list_tag_action_cfg
    - config_deltrplstrlist
    linkageType: ''
    returnType: int
    signature: "int read_acl_tag_actions(struct acl_list* acl, struct config_file*
      cfg,\n\tstruct config_str3list** acl_tag_actions)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/acl_list.c:509,1
    - Dst: acl_list_tag_data_cfg
      Src: /src/unbound/daemon/acl_list.c:510,1
    - Dst: config_deltrplstrlist
      Src: /src/unbound/daemon/acl_list.c:512,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:517,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:518,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:519,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:520,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - acl
    - cfg
    - acl_tag_datas
    argTypes:
    - struct acl_list*
    - struct config_file*
    - struct config_str3list**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 501
    functionDepth: 4
    functionLinenumber: 501
    functionLinenumberEnd: 524
    functionName: read_acl_tag_datas
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - free
    - acl_list_tag_data_cfg
    - log_assert
    - config_deltrplstrlist
    linkageType: ''
    returnType: int
    signature: "int read_acl_tag_datas(struct acl_list* acl, struct config_file* cfg,\n\tstruct
      config_str3list** acl_tag_datas)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: regional_free_all
      Src: /src/unbound/daemon/acl_list.c:530,1
    - Dst: addr_tree_init
      Src: /src/unbound/daemon/acl_list.c:531,1
    - Dst: read_acl_list
      Src: /src/unbound/daemon/acl_list.c:532,1
    - Dst: read_acl_view
      Src: /src/unbound/daemon/acl_list.c:534,1
    - Dst: read_acl_tags
      Src: /src/unbound/daemon/acl_list.c:536,1
    - Dst: read_acl_tag_actions
      Src: /src/unbound/daemon/acl_list.c:538,1
    - Dst: read_acl_tag_datas
      Src: /src/unbound/daemon/acl_list.c:540,1
    - Dst: acl_list_str_cfg
      Src: /src/unbound/daemon/acl_list.c:544,1
    - Dst: acl_list_str_cfg
      Src: /src/unbound/daemon/acl_list.c:547,1
    - Dst: acl_list_str_cfg
      Src: /src/unbound/daemon/acl_list.c:549,1
    - Dst: addr_tree_init_parents
      Src: /src/unbound/daemon/acl_list.c:552,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 3
    argNames:
    - acl
    - cfg
    - v
    argTypes:
    - struct acl_list*
    - struct config_file*
    - struct views*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 526
    functionDepth: 5
    functionLinenumber: 526
    functionLinenumberEnd: 554
    functionName: acl_list_apply_cfg
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - read_acl_view
    - read_acl_tag_actions
    - read_acl_list
    - read_acl_tag_datas
    - read_acl_tags
    - acl_list_str_cfg
    - addr_tree_init_parents
    - addr_tree_init
    - regional_free_all
    linkageType: ''
    returnType: int
    signature: "int acl_list_apply_cfg(struct acl_list* acl, struct config_file* cfg,\n\tstruct
      views* v)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regional_free_all
      Src: /src/unbound/daemon/acl_list.c:559,1
    - Dst: addr_tree_addrport_init
      Src: /src/unbound/daemon/acl_list.c:565,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - acl_interface
    argTypes:
    - struct acl_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 556
    functionDepth: 1
    functionLinenumber: 556
    functionLinenumberEnd: 566
    functionName: acl_interface_init
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - regional_free_all
    - addr_tree_addrport_init
    linkageType: ''
    returnType: void
    signature: void acl_interface_init(struct acl_list* acl_interface)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/acl_list.c:577,1
    - Dst: resolve_interface_names
      Src: /src/unbound/daemon/acl_list.c:578,1
    - Dst: acl_interface_str_cfg
      Src: /src/unbound/daemon/acl_list.c:581,1
    - Dst: config_del_strarray
      Src: /src/unbound/daemon/acl_list.c:582,1
    - Dst: config_del_strarray
      Src: /src/unbound/daemon/acl_list.c:586,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - acl_interface
    - acls
    - port
    argTypes:
    - struct acl_list*
    - struct config_str2list*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 568
    functionDepth: 4
    functionLinenumber: 568
    functionLinenumberEnd: 589
    functionName: read_acl_interface_action
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - config_del_strarray
    - log_assert
    - acl_interface_str_cfg
    - resolve_interface_names
    linkageType: ''
    returnType: int
    signature: "int read_acl_interface_action(struct acl_list* acl_interface,\n\tstruct
      config_str2list* acls, int port)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/acl_list.c:603,1
    - Dst: resolve_interface_names
      Src: /src/unbound/daemon/acl_list.c:604,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/daemon/acl_list.c:605,1
    - Dst: acl_list_view_cfg
      Src: /src/unbound/daemon/acl_list.c:609,1
    - Dst: config_del_strarray
      Src: /src/unbound/daemon/acl_list.c:611,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/daemon/acl_list.c:612,1
    - Dst: config_del_strarray
      Src: /src/unbound/daemon/acl_list.c:616,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:619,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:620,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:621,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 4
    argNames:
    - acl_interface
    - acl_view
    - v
    - port
    argTypes:
    - struct acl_list*
    - struct config_str2list**
    - struct views*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 592
    functionDepth: 4
    functionLinenumber: 592
    functionLinenumberEnd: 625
    functionName: read_acl_interface_view
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - acl_list_view_cfg
    - free
    - log_assert
    - config_del_strarray
    - config_deldblstrlist
    - resolve_interface_names
    linkageType: ''
    returnType: int
    signature: "int read_acl_interface_view(struct acl_list* acl_interface,\n\tstruct
      config_str2list** acl_view,\n\tstruct views* v, int port)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/acl_list.c:638,1
    - Dst: resolve_interface_names
      Src: /src/unbound/daemon/acl_list.c:639,1
    - Dst: config_del_strbytelist
      Src: /src/unbound/daemon/acl_list.c:640,1
    - Dst: acl_list_tags_cfg
      Src: /src/unbound/daemon/acl_list.c:644,1
    - Dst: config_del_strbytelist
      Src: /src/unbound/daemon/acl_list.c:646,1
    - Dst: config_del_strarray
      Src: /src/unbound/daemon/acl_list.c:647,1
    - Dst: config_del_strarray
      Src: /src/unbound/daemon/acl_list.c:651,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:654,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:655,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:656,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 3
    argNames:
    - acl_interface
    - acl_tags
    - port
    argTypes:
    - struct acl_list*
    - struct config_strbytelist**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 628
    functionDepth: 4
    functionLinenumber: 628
    functionLinenumberEnd: 660
    functionName: read_acl_interface_tags
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - acl_list_tags_cfg
    - config_del_strbytelist
    - free
    - log_assert
    - config_del_strarray
    - resolve_interface_names
    linkageType: ''
    returnType: int
    signature: "int read_acl_interface_tags(struct acl_list* acl_interface,\n\tstruct
      config_strbytelist** acl_tags, int port)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/acl_list.c:675,1
    - Dst: resolve_interface_names
      Src: /src/unbound/daemon/acl_list.c:676,1
    - Dst: config_deltrplstrlist
      Src: /src/unbound/daemon/acl_list.c:677,1
    - Dst: acl_list_tag_action_cfg
      Src: /src/unbound/daemon/acl_list.c:681,1
    - Dst: config_deltrplstrlist
      Src: /src/unbound/daemon/acl_list.c:683,1
    - Dst: config_del_strarray
      Src: /src/unbound/daemon/acl_list.c:684,1
    - Dst: config_del_strarray
      Src: /src/unbound/daemon/acl_list.c:688,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:691,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:692,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:693,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:694,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 4
    argNames:
    - acl_interface
    - cfg
    - acl_tag_actions
    - port
    argTypes:
    - struct acl_list*
    - struct config_file*
    - struct config_str3list**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 663
    functionDepth: 4
    functionLinenumber: 663
    functionLinenumberEnd: 698
    functionName: read_acl_interface_tag_actions
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - free
    - log_assert
    - acl_list_tag_action_cfg
    - config_del_strarray
    - config_deltrplstrlist
    - resolve_interface_names
    linkageType: ''
    returnType: int
    signature: "int read_acl_interface_tag_actions(struct acl_list* acl_interface,\n\tstruct
      config_file* cfg,\n\tstruct config_str3list** acl_tag_actions, int port)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/acl_list.c:713,1
    - Dst: resolve_interface_names
      Src: /src/unbound/daemon/acl_list.c:714,1
    - Dst: config_deltrplstrlist
      Src: /src/unbound/daemon/acl_list.c:715,1
    - Dst: acl_list_tag_data_cfg
      Src: /src/unbound/daemon/acl_list.c:719,1
    - Dst: config_deltrplstrlist
      Src: /src/unbound/daemon/acl_list.c:721,1
    - Dst: config_del_strarray
      Src: /src/unbound/daemon/acl_list.c:722,1
    - Dst: config_del_strarray
      Src: /src/unbound/daemon/acl_list.c:726,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:729,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:730,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:731,1
    - Dst: free
      Src: /src/unbound/daemon/acl_list.c:732,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 4
    argNames:
    - acl_interface
    - cfg
    - acl_tag_datas
    - port
    argTypes:
    - struct acl_list*
    - struct config_file*
    - struct config_str3list**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 701
    functionDepth: 4
    functionLinenumber: 701
    functionLinenumberEnd: 736
    functionName: read_acl_interface_tag_datas
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - free
    - log_assert
    - config_del_strarray
    - config_deltrplstrlist
    - acl_list_tag_data_cfg
    - resolve_interface_names
    linkageType: ''
    returnType: int
    signature: "int read_acl_interface_tag_datas(struct acl_list* acl_interface,\n\tstruct
      config_file* cfg,\n\tstruct config_str3list** acl_tag_datas, int port)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: read_acl_interface_action
      Src: /src/unbound/daemon/acl_list.c:742,1
    - Dst: read_acl_interface_view
      Src: /src/unbound/daemon/acl_list.c:745,1
    - Dst: read_acl_interface_tags
      Src: /src/unbound/daemon/acl_list.c:748,1
    - Dst: read_acl_interface_tag_actions
      Src: /src/unbound/daemon/acl_list.c:751,1
    - Dst: read_acl_interface_tag_datas
      Src: /src/unbound/daemon/acl_list.c:754,1
    - Dst: addr_tree_init_parents
      Src: /src/unbound/daemon/acl_list.c:757,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - acl_interface
    - cfg
    - v
    argTypes:
    - struct acl_list*
    - struct config_file*
    - struct views*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 738
    functionDepth: 5
    functionLinenumber: 738
    functionLinenumberEnd: 759
    functionName: acl_interface_apply_cfg
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - read_acl_interface_tags
    - addr_tree_init_parents
    - read_acl_interface_action
    - read_acl_interface_tag_actions
    - read_acl_interface_tag_datas
    - read_acl_interface_view
    linkageType: ''
    returnType: int
    signature: "int acl_interface_apply_cfg(struct acl_list* acl_interface, struct
      config_file* cfg,\n\tstruct views* v)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - acl
    argTypes:
    - struct acl_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 761
    functionDepth: 0
    functionLinenumber: 761
    functionLinenumberEnd: 766
    functionName: acl_get_control
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum acl_access
    signature: enum acl_access acl_get_control(struct acl_addr* acl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addr_tree_lookup
      Src: /src/unbound/daemon/acl_list.c:772,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - acl
    - addr
    - addrlen
    argTypes:
    - struct acl_list*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 768
    functionDepth: 1
    functionLinenumber: 768
    functionLinenumberEnd: 774
    functionName: acl_addr_lookup
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - addr_tree_lookup
    linkageType: ''
    returnType: struct acl_addr
    signature: "struct acl_addr *\nacl_addr_lookup(struct acl_list* acl, struct sockaddr_storage*
      addr,\n        socklen_t addrlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_get_mem
      Src: /src/unbound/daemon/acl_list.c:780,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - acl
    argTypes:
    - struct acl_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 776
    functionDepth: 1
    functionLinenumber: 776
    functionLinenumberEnd: 781
    functionName: acl_list_get_mem
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - regional_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t acl_list_get_mem(struct acl_list* acl)
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 1
    argNames:
    - acl
    argTypes:
    - enum acl_access
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 796
      start: 783
    functionDepth: 0
    functionLinenumber: 783
    functionLinenumberEnd: 796
    functionName: acl_access_to_str
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * acl_access_to_str(enum acl_access acl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: addr_to_str
      Src: /src/unbound/daemon/acl_list.c:804,1
    - Dst: ntohs
      Src: /src/unbound/daemon/acl_list.c:805,1
    - Dst: addr_to_str
      Src: /src/unbound/daemon/acl_list.c:807,1
    - Dst: verbose
      Src: /src/unbound/daemon/acl_list.c:809,1
    - Dst: acl_access_to_str
      Src: /src/unbound/daemon/acl_list.c:813,1
    - Dst: verbose
      Src: /src/unbound/daemon/acl_list.c:815,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 5
    argNames:
    - action
    - addr
    - addrlen
    - acl
    - acladdr
    argTypes:
    - char*
    - struct sockaddr_storage*
    - socklen_t
    - enum acl_access
    - struct acl_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 818
      start: 798
    functionDepth: 1
    functionLinenumber: 798
    functionLinenumberEnd: 818
    functionName: log_acl_action
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached:
    - acl_access_to_str
    - verbose
    - addr_to_str
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void log_acl_action(const char* action, struct sockaddr_storage* addr,\n\tsocklen_t
      addrlen, enum acl_access acl, struct acl_addr* acladdr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - acl
    - data
    argTypes:
    - struct acl_list*
    - struct acl_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 829
      start: 820
    functionDepth: 0
    functionLinenumber: 820
    functionLinenumberEnd: 829
    functionName: acl_list_swap_tree
    functionSourceFile: /src/unbound/daemon/acl_list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void acl_list_swap_tree(struct acl_list* acl, struct acl_list* data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cfg_strlist_append
      Src: /src/unbound/daemon/cachedump.c:72,1
    - Dst: strdup
      Src: /src/unbound/daemon/cachedump.c:72,1
    - Dst: log_err
      Src: /src/unbound/daemon/cachedump.c:73,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - txt
    - str
    argTypes:
    - struct config_strlist_head*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 75
    functionName: spool_txt_string
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - log_err
    - cfg_strlist_append
    - strdup
    linkageType: ''
    returnType: void
    signature: void spool_txt_string(struct config_strlist_head* txt, char* str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vsnprintf
      Src: /src/unbound/daemon/cachedump.c:83,1
    - Dst: spool_txt_string
      Src: /src/unbound/daemon/cachedump.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - txt
    - format
    - args
    argTypes:
    - struct config_strlist_head*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 78
    functionDepth: 2
    functionLinenumber: 78
    functionLinenumberEnd: 85
    functionName: spool_txt_vmsg
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - spool_txt_string
    - vsnprintf
    linkageType: ''
    returnType: void
    signature: "void spool_txt_vmsg(struct config_strlist_head* txt, const char* format,\n\tva_list
      args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/daemon/cachedump.c:92,1
    - Dst: spool_txt_vmsg
      Src: /src/unbound/daemon/cachedump.c:93,1
    - Dst: va_end
      Src: /src/unbound/daemon/cachedump.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - txt
    - format
    argTypes:
    - struct config_strlist_head*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 88
    functionDepth: 3
    functionLinenumber: 88
    functionLinenumberEnd: 95
    functionName: spool_txt_printf
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - spool_txt_vmsg
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: void spool_txt_printf(struct config_strlist_head* txt, const char*
      format, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: packed_rr_to_string
      Src: /src/unbound/daemon/cachedump.c:103,1
    - Dst: spool_txt_string
      Src: /src/unbound/daemon/cachedump.c:104,1
    - Dst: spool_txt_string
      Src: /src/unbound/daemon/cachedump.c:107,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - txt
    - k
    - now
    - i
    argTypes:
    - struct config_strlist_head*
    - struct ub_packed_rrset_key*
    - time_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 108
    functionName: dump_rrset_line
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - spool_txt_string
    - packed_rr_to_string
    linkageType: ''
    returnType: void
    signature: "void dump_rrset_line(struct config_strlist_head* txt, struct ub_packed_rrset_key*
      k,\n\ttime_t now, size_t i)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: spool_txt_printf
      Src: /src/unbound/daemon/cachedump.c:122,1
    - Dst: dump_rrset_line
      Src: /src/unbound/daemon/cachedump.c:129,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 4
    argNames:
    - txt
    - k
    - d
    - now
    argTypes:
    - struct config_strlist_head*
    - struct ub_packed_rrset_key*
    - struct packed_rrset_data*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 111
    functionDepth: 4
    functionLinenumber: 111
    functionLinenumberEnd: 131
    functionName: dump_rrset
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - dump_rrset_line
    - spool_txt_printf
    linkageType: ''
    returnType: void
    signature: "void dump_rrset(struct config_strlist_head* txt, struct ub_packed_rrset_key*
      k,\n\tstruct packed_rrset_data* d, time_t now)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:139,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ssl
    - list
    argTypes:
    - RES*
    - struct config_strlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 143
    functionName: spool_strlist
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - ssl_printf
    linkageType: ''
    returnType: int
    signature: int spool_strlist(RES* ssl, struct config_strlist* list)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/daemon/cachedump.c:157,1
    - Dst: lock_quick_lock
      Src: /src/unbound/daemon/cachedump.c:163,1
    - Dst: lock_quick_lock
      Src: /src/unbound/daemon/cachedump.c:175,1
    - Dst: func
      Src: /src/unbound/daemon/cachedump.c:178,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/daemon/cachedump.c:181,1
    - Dst: lock_quick_lock
      Src: /src/unbound/daemon/cachedump.c:193,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/daemon/cachedump.c:196,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/daemon/cachedump.c:201,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/daemon/cachedump.c:209,1
    - Dst: spool_strlist
      Src: /src/unbound/daemon/cachedump.c:214,1
    - Dst: config_delstrlist
      Src: /src/unbound/daemon/cachedump.c:215,1
    - Dst: config_delstrlist
      Src: /src/unbound/daemon/cachedump.c:218,1
    - Dst: memset
      Src: /src/unbound/daemon/cachedump.c:219,1
    - Dst: spool_strlist
      Src: /src/unbound/daemon/cachedump.c:224,1
    - Dst: config_delstrlist
      Src: /src/unbound/daemon/cachedump.c:225,1
    - Dst: config_delstrlist
      Src: /src/unbound/daemon/cachedump.c:228,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 55
    argCount: 3
    argNames:
    - table
    - ssl
    - arg
    argTypes:
    - struct lruhash*
    - RES*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 146
    functionDepth: 2
    functionLinenumber: 146
    functionLinenumberEnd: 231
    functionName: dump_lruhash
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - spool_strlist
    - func
    - lock_quick_unlock
    - lock_quick_lock
    - memset
    - config_delstrlist
    linkageType: ''
    returnType: int
    signature: "int dump_lruhash(struct lruhash* table,\n\tvoid (*func)(struct lruhash_entry*,
      struct config_strlist_head*, void*),\n\tRES* ssl, void* arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dump_lruhash
      Src: /src/unbound/daemon/cachedump.c:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - sh
    - ssl
    - arg
    argTypes:
    - struct slabhash*
    - RES*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 234
    functionDepth: 3
    functionLinenumber: 234
    functionLinenumberEnd: 250
    functionName: dump_slabhash
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - dump_lruhash
    linkageType: ''
    returnType: int
    signature: "int dump_slabhash(struct slabhash* sh,\n\tvoid (*func)(struct lruhash_entry*,
      struct config_strlist_head*, void*),\n\tRES* ssl, void* arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/cachedump.c:266,1
    - Dst: dump_rrset
      Src: /src/unbound/daemon/cachedump.c:267,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/cachedump.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - e
    - txt
    - arg
    argTypes:
    - struct lruhash_entry*
    - struct config_strlist_head*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 261
    functionDepth: 5
    functionLinenumber: 261
    functionLinenumberEnd: 271
    functionName: dump_rrset_entry
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - dump_rrset
    - lock_rw_unlock
    - lock_rw_rdlock
    linkageType: ''
    returnType: void
    signature: "void dump_rrset_entry(struct lruhash_entry* e, struct config_strlist_head*
      txt,\n\tvoid* arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:281,1
    - Dst: dump_slabhash
      Src: /src/unbound/daemon/cachedump.c:282,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:284,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 274
    functionDepth: 4
    functionLinenumber: 274
    functionLinenumberEnd: 285
    functionName: dump_rrset_cache
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - dump_slabhash
    - ssl_printf
    linkageType: ''
    returnType: int
    signature: int dump_rrset_cache(RES* ssl, struct worker* worker)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_dname
      Src: /src/unbound/daemon/cachedump.c:292,1
    - Dst: sldns_wire2str_type
      Src: /src/unbound/daemon/cachedump.c:293,1
    - Dst: ntohs
      Src: /src/unbound/daemon/cachedump.c:293,1
    - Dst: sldns_wire2str_class
      Src: /src/unbound/daemon/cachedump.c:294,1
    - Dst: ntohs
      Src: /src/unbound/daemon/cachedump.c:294,1
    - Dst: free
      Src: /src/unbound/daemon/cachedump.c:296,1
    - Dst: free
      Src: /src/unbound/daemon/cachedump.c:297,1
    - Dst: free
      Src: /src/unbound/daemon/cachedump.c:298,1
    - Dst: spool_txt_string
      Src: /src/unbound/daemon/cachedump.c:299,1
    - Dst: spool_txt_printf
      Src: /src/unbound/daemon/cachedump.c:302,1
    - Dst: free
      Src: /src/unbound/daemon/cachedump.c:303,1
    - Dst: free
      Src: /src/unbound/daemon/cachedump.c:304,1
    - Dst: free
      Src: /src/unbound/daemon/cachedump.c:305,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - txt
    - k
    argTypes:
    - struct config_strlist_head*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 288
    functionDepth: 4
    functionLinenumber: 288
    functionLinenumberEnd: 306
    functionName: dump_msg_ref
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - spool_txt_printf
    - sldns_wire2str_class
    - free
    - sldns_wire2str_dname
    - sldns_wire2str_type
    - spool_txt_string
    - ntohs
    linkageType: ''
    returnType: void
    signature: void dump_msg_ref(struct config_strlist_head* txt, struct ub_packed_rrset_key*
      k)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_dname
      Src: /src/unbound/daemon/cachedump.c:318,1
    - Dst: sldns_wire2str_type
      Src: /src/unbound/daemon/cachedump.c:319,1
    - Dst: sldns_wire2str_class
      Src: /src/unbound/daemon/cachedump.c:320,1
    - Dst: free
      Src: /src/unbound/daemon/cachedump.c:322,1
    - Dst: free
      Src: /src/unbound/daemon/cachedump.c:323,1
    - Dst: free
      Src: /src/unbound/daemon/cachedump.c:324,1
    - Dst: rrset_array_lock
      Src: /src/unbound/daemon/cachedump.c:327,1
    - Dst: free
      Src: /src/unbound/daemon/cachedump.c:329,1
    - Dst: free
      Src: /src/unbound/daemon/cachedump.c:330,1
    - Dst: free
      Src: /src/unbound/daemon/cachedump.c:331,1
    - Dst: spool_txt_printf
      Src: /src/unbound/daemon/cachedump.c:336,1
    - Dst: free
      Src: /src/unbound/daemon/cachedump.c:346,1
    - Dst: free
      Src: /src/unbound/daemon/cachedump.c:347,1
    - Dst: free
      Src: /src/unbound/daemon/cachedump.c:348,1
    - Dst: dump_msg_ref
      Src: /src/unbound/daemon/cachedump.c:351,1
    - Dst: rrset_array_unlock
      Src: /src/unbound/daemon/cachedump.c:353,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 4
    argNames:
    - txt
    - k
    - d
    - now
    argTypes:
    - struct config_strlist_head*
    - struct query_info*
    - struct reply_info*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 309
    functionDepth: 5
    functionLinenumber: 309
    functionLinenumberEnd: 354
    functionName: dump_msg
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - rrset_array_unlock
    - dump_msg_ref
    - spool_txt_printf
    - sldns_wire2str_class
    - free
    - sldns_wire2str_dname
    - sldns_wire2str_type
    - rrset_array_lock
    linkageType: ''
    returnType: void
    signature: "void dump_msg(struct config_strlist_head* txt, struct query_info*
      k,\n\tstruct reply_info* d, time_t now)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_init
      Src: /src/unbound/daemon/cachedump.c:364,1
    - Dst: regional_alloc_init
      Src: /src/unbound/daemon/cachedump.c:373,1
    - Dst: regional_alloc_init
      Src: /src/unbound/daemon/cachedump.c:377,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - region
    - e
    - k
    - d
    argTypes:
    - struct regional*
    - struct lruhash_entry*
    - struct query_info**
    - struct reply_info**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 380
    functionName: copy_msg
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - regional_alloc_init
    linkageType: ''
    returnType: int
    signature: "int copy_msg(struct regional* region, struct lruhash_entry* e, \n\tstruct
      query_info** k, struct reply_info** d)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_free_all
      Src: /src/unbound/daemon/cachedump.c:391,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/cachedump.c:393,1
    - Dst: copy_msg
      Src: /src/unbound/daemon/cachedump.c:394,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/cachedump.c:395,1
    - Dst: log_err
      Src: /src/unbound/daemon/cachedump.c:396,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/cachedump.c:399,1
    - Dst: dump_msg
      Src: /src/unbound/daemon/cachedump.c:402,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - e
    - txt
    - arg
    argTypes:
    - struct lruhash_entry*
    - struct config_strlist_head*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 383
    functionDepth: 6
    functionLinenumber: 383
    functionLinenumberEnd: 403
    functionName: dump_msg_entry
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - dump_msg
    - log_err
    - lock_rw_unlock
    - regional_free_all
    - copy_msg
    - lock_rw_rdlock
    linkageType: ''
    returnType: void
    signature: "void dump_msg_entry(struct lruhash_entry* e, struct config_strlist_head*
      txt,\n\tvoid* arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:412,1
    - Dst: dump_slabhash
      Src: /src/unbound/daemon/cachedump.c:413,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:416,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 406
    functionDepth: 4
    functionLinenumber: 406
    functionLinenumberEnd: 417
    functionName: dump_msg_cache
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - dump_slabhash
    - ssl_printf
    linkageType: ''
    returnType: int
    signature: int dump_msg_cache(RES* ssl, struct worker* worker)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dump_rrset_cache
      Src: /src/unbound/daemon/cachedump.c:422,1
    - Dst: dump_msg_cache
      Src: /src/unbound/daemon/cachedump.c:424,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:426,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 419
    functionDepth: 5
    functionLinenumber: 419
    functionLinenumberEnd: 427
    functionName: dump_cache
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - dump_msg_cache
    - ssl_printf
    - dump_rrset_cache
    linkageType: ''
    returnType: int
    signature: int dump_cache(RES* ssl, struct worker* worker)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_read_line
      Src: /src/unbound/daemon/cachedump.c:433,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/cachedump.c:433,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/daemon/cachedump.c:434,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ssl
    - buf
    argTypes:
    - RES*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 430
    functionDepth: 1
    functionLinenumber: 430
    functionLinenumberEnd: 435
    functionName: ssl_read_buf
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - ssl_read_line
    - sldns_buffer_capacity
    - sldns_buffer_begin
    linkageType: ''
    returnType: int
    signature: int ssl_read_buf(RES* ssl, sldns_buffer* buf)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ssl_read_buf
      Src: /src/unbound/daemon/cachedump.c:441,1
    - Dst: strcmp
      Src: /src/unbound/daemon/cachedump.c:442,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/cachedump.c:442,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ssl
    - buf
    - str
    argTypes:
    - RES*
    - sldns_buffer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 438
    functionDepth: 2
    functionLinenumber: 438
    functionLinenumberEnd: 443
    functionName: read_fixed
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - strcmp
    - ssl_read_buf
    - sldns_buffer_begin
    linkageType: ''
    returnType: int
    signature: int read_fixed(RES* ssl, sldns_buffer* buf, const char* str)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ssl_read_buf
      Src: /src/unbound/daemon/cachedump.c:456,1
    - Dst: strcmp
      Src: /src/unbound/daemon/cachedump.c:458,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/cachedump.c:458,1
    - Dst: sldns_str2wire_rr_buf
      Src: /src/unbound/daemon/cachedump.c:462,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/cachedump.c:462,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:465,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/daemon/cachedump.c:466,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/cachedump.c:467,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/daemon/cachedump.c:470,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:472,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/cachedump.c:473,1
    - Dst: sldns_wirerr_get_ttl
      Src: /src/unbound/daemon/cachedump.c:478,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/daemon/cachedump.c:479,1
    - Dst: sldns_wirerr_get_rdatalen
      Src: /src/unbound/daemon/cachedump.c:480,1
    - Dst: regional_alloc_init
      Src: /src/unbound/daemon/cachedump.c:481,1
    - Dst: sldns_wirerr_get_rdatawl
      Src: /src/unbound/daemon/cachedump.c:482,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:484,1
    - Dst: htons
      Src: /src/unbound/daemon/cachedump.c:490,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/daemon/cachedump.c:490,1
    - Dst: htons
      Src: /src/unbound/daemon/cachedump.c:491,1
    - Dst: sldns_wirerr_get_class
      Src: /src/unbound/daemon/cachedump.c:491,1
    - Dst: regional_alloc_init
      Src: /src/unbound/daemon/cachedump.c:493,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:495,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 9
    argNames:
    - ssl
    - buf
    - region
    - rk
    - d
    - i
    - is_rrsig
    - go_on
    - now
    argTypes:
    - RES*
    - sldns_buffer*
    - struct regional*
    - struct ub_packed_rrset_key*
    - struct packed_rrset_data*
    - unsigned int
    - int
    - int*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 446
    functionDepth: 2
    functionLinenumber: 446
    functionLinenumberEnd: 501
    functionName: load_rr
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - sldns_wirerr_get_ttl
    - strcmp
    - ssl_read_buf
    - sldns_str2wire_rr_buf
    - sldns_wirerr_get_rdatawl
    - sldns_buffer_clear
    - htons
    - sldns_get_errorstr_parse
    - regional_alloc_init
    - log_warn
    - sldns_buffer_begin
    - sldns_wirerr_get_type
    - sldns_wirerr_get_rdatalen
    - sldns_wirerr_get_class
    linkageType: ''
    returnType: int
    signature: "int load_rr(RES* ssl, sldns_buffer* buf, struct regional* region,\n\tstruct
      ub_packed_rrset_key* rk, struct packed_rrset_data* d,\n\tunsigned int i, int
      is_rrsig, int* go_on, time_t now)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: alloc_special_obtain
      Src: /src/unbound/daemon/cachedump.c:514,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:516,1
    - Dst: rrset_key_hash
      Src: /src/unbound/daemon/cachedump.c:521,1
    - Dst: memdup
      Src: /src/unbound/daemon/cachedump.c:522,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:524,1
    - Dst: ub_packed_rrset_parsedelete
      Src: /src/unbound/daemon/cachedump.c:525,1
    - Dst: malloc
      Src: /src/unbound/daemon/cachedump.c:532,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:534,1
    - Dst: ub_packed_rrset_parsedelete
      Src: /src/unbound/daemon/cachedump.c:535,1
    - Dst: memmove
      Src: /src/unbound/daemon/cachedump.c:539,1
    - Dst: memmove
      Src: /src/unbound/daemon/cachedump.c:541,1
    - Dst: memmove
      Src: /src/unbound/daemon/cachedump.c:543,1
    - Dst: memmove
      Src: /src/unbound/daemon/cachedump.c:545,1
    - Dst: memmove
      Src: /src/unbound/daemon/cachedump.c:548,1
    - Dst: packed_rrset_ptr_fixup
      Src: /src/unbound/daemon/cachedump.c:551,1
    - Dst: rrset_cache_update
      Src: /src/unbound/daemon/cachedump.c:557,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 43
    argCount: 3
    argNames:
    - k
    - d
    - worker
    argTypes:
    - struct ub_packed_rrset_key*
    - struct packed_rrset_data*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 504
    functionDepth: 1
    functionLinenumber: 504
    functionLinenumberEnd: 561
    functionName: move_into_cache
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - ub_packed_rrset_parsedelete
    - memmove
    - rrset_key_hash
    - rrset_cache_update
    - malloc
    - log_warn
    - packed_rrset_ptr_fixup
    - memdup
    - alloc_special_obtain
    linkageType: ''
    returnType: int
    signature: "int move_into_cache(struct ub_packed_rrset_key* k, \n\tstruct packed_rrset_data*
      d, struct worker* worker)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/cachedump.c:567,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/cachedump.c:575,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/daemon/cachedump.c:577,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/daemon/cachedump.c:579,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:581,1
    - Dst: strncmp
      Src: /src/unbound/daemon/cachedump.c:585,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:586,1
    - Dst: strncmp
      Src: /src/unbound/daemon/cachedump.c:590,1
    - Dst: sscanf
      Src: /src/unbound/daemon/cachedump.c:594,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:596,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:600,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:604,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/daemon/cachedump.c:613,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/daemon/cachedump.c:615,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/daemon/cachedump.c:617,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:620,1
    - Dst: load_rr
      Src: /src/unbound/daemon/cachedump.c:626,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:628,1
    - Dst: load_rr
      Src: /src/unbound/daemon/cachedump.c:633,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:635,1
    - Dst: move_into_cache
      Src: /src/unbound/daemon/cachedump.c:644,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 57
    argCount: 3
    argNames:
    - ssl
    - buf
    - worker
    argTypes:
    - RES*
    - sldns_buffer*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 564
    functionDepth: 3
    functionLinenumber: 564
    functionLinenumberEnd: 645
    functionName: load_rrset
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - strncmp
    - load_rr
    - log_warn
    - sldns_buffer_begin
    - move_into_cache
    - sscanf
    - regional_free_all
    linkageType: ''
    returnType: int
    signature: int load_rrset(RES* ssl, sldns_buffer* buf, struct worker* worker)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read_fixed
      Src: /src/unbound/daemon/cachedump.c:652,1
    - Dst: ssl_read_buf
      Src: /src/unbound/daemon/cachedump.c:653,1
    - Dst: strcmp
      Src: /src/unbound/daemon/cachedump.c:654,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/cachedump.c:654,1
    - Dst: load_rrset
      Src: /src/unbound/daemon/cachedump.c:655,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 648
    functionDepth: 4
    functionLinenumber: 648
    functionLinenumberEnd: 659
    functionName: load_rrset_cache
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - strcmp
    - ssl_read_buf
    - read_fixed
    - sldns_buffer_begin
    - load_rrset
    linkageType: ''
    returnType: int
    signature: int load_rrset_cache(RES* ssl, struct worker* worker)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/daemon/cachedump.c:672,1
    - Dst: strchr
      Src: /src/unbound/daemon/cachedump.c:673,1
    - Dst: strchr
      Src: /src/unbound/daemon/cachedump.c:674,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:676,1
    - Dst: sldns_str2wire_rr_question_buf
      Src: /src/unbound/daemon/cachedump.c:683,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:686,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/daemon/cachedump.c:687,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/daemon/cachedump.c:690,1
    - Dst: sldns_wirerr_get_class
      Src: /src/unbound/daemon/cachedump.c:691,1
    - Dst: regional_alloc_init
      Src: /src/unbound/daemon/cachedump.c:693,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:696,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - str
    - qinfo
    - region
    argTypes:
    - char*
    - struct query_info*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 662
    functionDepth: 1
    functionLinenumber: 662
    functionLinenumberEnd: 701
    functionName: load_qinfo
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - sldns_get_errorstr_parse
    - regional_alloc_init
    - sldns_wirerr_get_type
    - log_warn
    - strchr
    - sldns_str2wire_rr_question_buf
    - sldns_wirerr_get_class
    linkageType: ''
    returnType: char
    signature: 'char *

      load_qinfo(char* str, struct query_info* qinfo, struct regional* region)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/cachedump.c:709,1
    - Dst: ssl_read_buf
      Src: /src/unbound/daemon/cachedump.c:715,1
    - Dst: strncmp
      Src: /src/unbound/daemon/cachedump.c:717,1
    - Dst: load_qinfo
      Src: /src/unbound/daemon/cachedump.c:722,1
    - Dst: sscanf
      Src: /src/unbound/daemon/cachedump.c:726,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:727,1
    - Dst: rrset_cache_lookup
      Src: /src/unbound/daemon/cachedump.c:732,1
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/daemon/cachedump.c:742,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/cachedump.c:743,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 6
    argNames:
    - ssl
    - buf
    - worker
    - region
    - rrset
    - go_on
    argTypes:
    - RES*
    - sldns_buffer*
    - struct worker*
    - struct regional*
    - struct ub_packed_rrset_key**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 704
    functionDepth: 2
    functionLinenumber: 704
    functionLinenumberEnd: 746
    functionName: load_ref
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - strncmp
    - ssl_read_buf
    - rrset_cache_lookup
    - lock_rw_unlock
    - sldns_buffer_begin
    - load_qinfo
    - log_warn
    - sscanf
    - packed_rrset_copy_region
    linkageType: ''
    returnType: int
    signature: "int load_ref(RES* ssl, sldns_buffer* buf, struct worker* worker, \n\tstruct
      regional *region, struct ub_packed_rrset_key** rrset, \n\tint* go_on)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/cachedump.c:755,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/cachedump.c:764,1
    - Dst: strncmp
      Src: /src/unbound/daemon/cachedump.c:766,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:767,1
    - Dst: load_qinfo
      Src: /src/unbound/daemon/cachedump.c:771,1
    - Dst: sscanf
      Src: /src/unbound/daemon/cachedump.c:778,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:780,1
    - Dst: strlen
      Src: /src/unbound/daemon/cachedump.c:784,1
    - Dst: memset
      Src: /src/unbound/daemon/cachedump.c:786,1
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/daemon/cachedump.c:790,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:794,1
    - Dst: regional_strdup
      Src: /src/unbound/daemon/cachedump.c:802,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/daemon/cachedump.c:803,1
    - Dst: load_ref
      Src: /src/unbound/daemon/cachedump.c:808,1
    - Dst: dns_cache_store
      Src: /src/unbound/daemon/cachedump.c:817,1
    - Dst: log_warn
      Src: /src/unbound/daemon/cachedump.c:819,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 47
    argCount: 3
    argNames:
    - ssl
    - buf
    - worker
    argTypes:
    - RES*
    - sldns_buffer*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 823
      start: 749
    functionDepth: 3
    functionLinenumber: 749
    functionLinenumberEnd: 823
    functionName: load_msg
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - strncmp
    - regional_strdup
    - PREFETCH_TTL_CALC
    - dns_cache_store
    - load_qinfo
    - log_warn
    - sldns_buffer_begin
    - strlen
    - memset
    - sscanf
    - regional_free_all
    - load_ref
    linkageType: ''
    returnType: int
    signature: int load_msg(RES* ssl, sldns_buffer* buf, struct worker* worker)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read_fixed
      Src: /src/unbound/daemon/cachedump.c:830,1
    - Dst: ssl_read_buf
      Src: /src/unbound/daemon/cachedump.c:831,1
    - Dst: strcmp
      Src: /src/unbound/daemon/cachedump.c:832,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/cachedump.c:832,1
    - Dst: load_msg
      Src: /src/unbound/daemon/cachedump.c:833,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 826
    functionDepth: 4
    functionLinenumber: 826
    functionLinenumberEnd: 837
    functionName: load_msg_cache
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - strcmp
    - ssl_read_buf
    - load_msg
    - read_fixed
    - sldns_buffer_begin
    linkageType: ''
    returnType: int
    signature: int load_msg_cache(RES* ssl, struct worker* worker)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: load_rrset_cache
      Src: /src/unbound/daemon/cachedump.c:842,1
    - Dst: load_msg_cache
      Src: /src/unbound/daemon/cachedump.c:844,1
    - Dst: read_fixed
      Src: /src/unbound/daemon/cachedump.c:846,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 847
      start: 839
    functionDepth: 5
    functionLinenumber: 839
    functionLinenumberEnd: 847
    functionName: load_cache
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - read_fixed
    - load_rrset_cache
    - load_msg_cache
    linkageType: ''
    returnType: int
    signature: int load_cache(RES* ssl, struct worker* worker)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: addr_to_str
      Src: /src/unbound/daemon/cachedump.c:861,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:862,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:865,1
    - Dst: infra_get_host_rto
      Src: /src/unbound/daemon/cachedump.c:870,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:874,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:881,1
    - Dst: infra_get_lame_rtt
      Src: /src/unbound/daemon/cachedump.c:888,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:892,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:896,1
    - Dst: rtt_notimeout
      Src: /src/unbound/daemon/cachedump.c:901,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:905,1
    - Dst: infra_host
      Src: /src/unbound/daemon/cachedump.c:907,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:911,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:915,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:920,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 43
    argCount: 3
    argNames:
    - ssl
    - worker
    - dp
    argTypes:
    - RES*
    - struct worker*
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 850
    functionDepth: 1
    functionLinenumber: 850
    functionLinenumberEnd: 923
    functionName: print_dp_details
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - addr_to_str
    - infra_get_host_rto
    - infra_host
    - ssl_printf
    - rtt_notimeout
    - infra_get_lame_rtt
    linkageType: ''
    returnType: void
    signature: void print_dp_details(RES* ssl, struct worker* worker, struct delegpt*
      dp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/daemon/cachedump.c:938,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:940,1
    - Dst: dump_rrset
      Src: /src/unbound/daemon/cachedump.c:943,1
    - Dst: spool_strlist
      Src: /src/unbound/daemon/cachedump.c:944,1
    - Dst: config_delstrlist
      Src: /src/unbound/daemon/cachedump.c:945,1
    - Dst: config_delstrlist
      Src: /src/unbound/daemon/cachedump.c:948,1
    - Dst: delegpt_count_ns
      Src: /src/unbound/daemon/cachedump.c:950,1
    - Dst: delegpt_count_addr
      Src: /src/unbound/daemon/cachedump.c:951,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:953,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - ssl
    - dp
    - msg
    argTypes:
    - RES*
    - struct delegpt*
    - struct dns_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 926
    functionDepth: 5
    functionLinenumber: 926
    functionLinenumberEnd: 959
    functionName: print_dp_main
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - spool_strlist
    - delegpt_count_addr
    - delegpt_count_ns
    - ssl_printf
    - dump_rrset
    - memset
    - config_delstrlist
    linkageType: ''
    returnType: void
    signature: void print_dp_main(RES* ssl, struct delegpt* dp, struct dns_msg* msg)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: regional_free_all
      Src: /src/unbound/daemon/cachedump.c:972,1
    - Dst: dname_str
      Src: /src/unbound/daemon/cachedump.c:979,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:980,1
    - Dst: forwards_lookup
      Src: /src/unbound/daemon/cachedump.c:984,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:986,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/cachedump.c:987,1
    - Dst: print_dp_main
      Src: /src/unbound/daemon/cachedump.c:990,1
    - Dst: print_dp_details
      Src: /src/unbound/daemon/cachedump.c:991,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/cachedump.c:992,1
    - Dst: dns_cache_find_delegation
      Src: /src/unbound/daemon/cachedump.c:997,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:1001,1
    - Dst: iter_dp_is_useless
      Src: /src/unbound/daemon/cachedump.c:1005,1
    - Dst: print_dp_main
      Src: /src/unbound/daemon/cachedump.c:1009,1
    - Dst: print_dp_details
      Src: /src/unbound/daemon/cachedump.c:1010,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:1011,1
    - Dst: dname_is_root
      Src: /src/unbound/daemon/cachedump.c:1014,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:1016,1
    - Dst: dname_remove_label
      Src: /src/unbound/daemon/cachedump.c:1022,1
    - Dst: dname_str
      Src: /src/unbound/daemon/cachedump.c:1023,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:1024,1
    - Dst: hints_lookup_stub
      Src: /src/unbound/daemon/cachedump.c:1029,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:1033,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/cachedump.c:1035,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/cachedump.c:1039,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/cachedump.c:1041,1
    - Dst: print_dp_main
      Src: /src/unbound/daemon/cachedump.c:1045,1
    - Dst: print_dp_details
      Src: /src/unbound/daemon/cachedump.c:1046,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/cachedump.c:1047,1
    - Dst: print_dp_main
      Src: /src/unbound/daemon/cachedump.c:1049,1
    - Dst: print_dp_details
      Src: /src/unbound/daemon/cachedump.c:1050,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 66
    argCount: 5
    argNames:
    - ssl
    - worker
    - nm
    - nmlen
    - ATTR_UNUSED
    argTypes:
    - RES*
    - struct worker*
    - uint8_t*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 961
    functionDepth: 6
    functionLinenumber: 961
    functionLinenumberEnd: 1056
    functionName: print_deleg_lookup
    functionSourceFile: /src/unbound/daemon/cachedump.c
    functionUses: 0
    functionsReached:
    - forwards_lookup
    - dname_is_root
    - lock_rw_unlock
    - dname_remove_label
    - dname_str
    - iter_dp_is_useless
    - print_dp_main
    - hints_lookup_stub
    - dns_cache_find_delegation
    - ssl_printf
    - regional_free_all
    - print_dp_details
    linkageType: ''
    returnType: int
    signature: "int print_deleg_lookup(RES* ssl, struct worker* worker, uint8_t* nm,\n\tsize_t
      nmlen, int ATTR_UNUSED(nmlabs))"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_new
      Src: /src/unbound/daemon/remote.c:151,1
    - Dst: SSLv23_server_method
      Src: /src/unbound/daemon/remote.c:151,1
    - Dst: log_crypto_err
      Src: /src/unbound/daemon/remote.c:153,1
    - Dst: listen_sslctx_setup
      Src: /src/unbound/daemon/remote.c:156,1
    - Dst: fname_after_chroot
      Src: /src/unbound/daemon/remote.c:160,1
    - Dst: fname_after_chroot
      Src: /src/unbound/daemon/remote.c:161,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:163,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:166,1
    - Dst: SSL_CTX_use_certificate_chain_file
      Src: /src/unbound/daemon/remote.c:167,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:168,1
    - Dst: log_crypto_err
      Src: /src/unbound/daemon/remote.c:169,1
    - Dst: SSL_CTX_use_PrivateKey_file
      Src: /src/unbound/daemon/remote.c:172,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:173,1
    - Dst: log_crypto_err
      Src: /src/unbound/daemon/remote.c:174,1
    - Dst: SSL_CTX_check_private_key
      Src: /src/unbound/daemon/remote.c:177,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:178,1
    - Dst: log_crypto_err
      Src: /src/unbound/daemon/remote.c:179,1
    - Dst: listen_sslctx_setup_2
      Src: /src/unbound/daemon/remote.c:182,1
    - Dst: SSL_CTX_load_verify_locations
      Src: /src/unbound/daemon/remote.c:183,1
    - Dst: log_crypto_err
      Src: /src/unbound/daemon/remote.c:184,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:186,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:187,1
    - Dst: SSL_CTX_set_client_CA_list
      Src: /src/unbound/daemon/remote.c:190,1
    - Dst: SSL_load_client_CA_file
      Src: /src/unbound/daemon/remote.c:190,1
    - Dst: SSL_CTX_set_verify
      Src: /src/unbound/daemon/remote.c:191,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:192,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:193,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    argCount: 2
    argNames:
    - rc
    - cfg
    argTypes:
    - struct daemon_remote*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 195
    functionName: remote_setup_ctx
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - fname_after_chroot
    - log_err
    - SSL_CTX_check_private_key
    - SSL_CTX_use_certificate_chain_file
    - SSL_CTX_load_verify_locations
    - SSL_CTX_new
    - SSL_CTX_use_PrivateKey_file
    - verbose
    - SSLv23_server_method
    - free
    - SSL_CTX_set_client_CA_list
    - log_crypto_err
    - SSL_load_client_CA_file
    - listen_sslctx_setup_2
    - listen_sslctx_setup
    - SSL_CTX_set_verify
    linkageType: ''
    returnType: int
    signature: int remote_setup_ctx(struct daemon_remote* rc, struct config_file*
      cfg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/daemon/remote.c:200,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:203,1
    - Dst: options_remote_is_address
      Src: /src/unbound/daemon/remote.c:212,1
    - Dst: remote_setup_ctx
      Src: /src/unbound/daemon/remote.c:213,1
    - Dst: daemon_remote_delete
      Src: /src/unbound/daemon/remote.c:214,1
    - Dst: options_remote_is_address
      Src: /src/unbound/daemon/remote.c:222,1
    - Dst: log_warn
      Src: /src/unbound/daemon/remote.c:225,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 197
    functionDepth: 2
    functionLinenumber: 197
    functionLinenumberEnd: 229
    functionName: daemon_remote_create
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - log_err
    - options_remote_is_address
    - daemon_remote_delete
    - remote_setup_ctx
    - calloc
    - log_warn
    linkageType: ''
    returnType: struct daemon_remote
    signature: 'struct daemon_remote *

      daemon_remote_create(struct config_file* cfg)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: listen_list_delete
      Src: /src/unbound/daemon/remote.c:236,1
    - Dst: SSL_free
      Src: /src/unbound/daemon/remote.c:243,1
    - Dst: comm_point_delete
      Src: /src/unbound/daemon/remote.c:244,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:245,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - rc
    argTypes:
    - struct daemon_remote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 231
    functionDepth: 1
    functionLinenumber: 231
    functionLinenumberEnd: 251
    functionName: daemon_remote_clear
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - comm_point_delete
    - SSL_free
    - listen_list_delete
    - free
    linkageType: ''
    returnType: void
    signature: void daemon_remote_clear(struct daemon_remote* rc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: daemon_remote_clear
      Src: /src/unbound/daemon/remote.c:256,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/daemon/remote.c:258,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:260,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - rc
    argTypes:
    - struct daemon_remote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 261
    functionName: daemon_remote_delete
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - free
    - daemon_remote_clear
    - SSL_CTX_free
    linkageType: ''
    returnType: void
    signature: void daemon_remote_delete(struct daemon_remote* rc)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:282,1
    - Dst: memset
      Src: /src/unbound/daemon/remote.c:284,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:285,1
    - Dst: create_local_accept_sock
      Src: /src/unbound/daemon/remote.c:289,1
    - Dst: chmod
      Src: /src/unbound/daemon/remote.c:297,1
    - Dst: chown
      Src: /src/unbound/daemon/remote.c:300,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:301,1
    - Dst: strerror
      Src: /src/unbound/daemon/remote.c:303,1
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:310,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:316,1
    - Dst: atoi
      Src: /src/unbound/daemon/remote.c:319,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:321,1
    - Dst: strlcpy
      Src: /src/unbound/daemon/remote.c:324,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:327,1
    - Dst: getaddrinfo
      Src: /src/unbound/daemon/remote.c:332,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:339,1
    - Dst: gai_strerror
      Src: /src/unbound/daemon/remote.c:340,1
    - Dst: strerror
      Src: /src/unbound/daemon/remote.c:342,1
    - Dst: create_tcp_accept_sock
      Src: /src/unbound/daemon/remote.c:351,1
    - Dst: freeaddrinfo
      Src: /src/unbound/daemon/remote.c:354,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:360,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:365,1
    - Dst: calloc
      Src: /src/unbound/daemon/remote.c:370,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:372,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:373,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 64
    argCount: 5
    argNames:
    - ip
    - nr
    - list
    - noproto_is_err
    - cfg
    argTypes:
    - char*
    - int
    - struct listen_port**
    - int
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 380
    functionName: add_open
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - getaddrinfo
    - log_err
    - strlcpy
    - freeaddrinfo
    - chmod
    - sock_close
    - snprintf
    - create_local_accept_sock
    - chown
    - verbose
    - gai_strerror
    - atoi
    - calloc
    - log_assert
    - strerror
    - strchr
    - memset
    - create_tcp_accept_sock
    linkageType: ''
    returnType: int
    signature: "int add_open(const char* ip, int nr, struct listen_port** list, int
      noproto_is_err,\n\tstruct config_file* cfg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:385,1
    - Dst: resolve_interface_names
      Src: /src/unbound/daemon/remote.c:389,1
    - Dst: add_open
      Src: /src/unbound/daemon/remote.c:394,1
    - Dst: listening_ports_free
      Src: /src/unbound/daemon/remote.c:395,1
    - Dst: config_del_strarray
      Src: /src/unbound/daemon/remote.c:396,1
    - Dst: config_del_strarray
      Src: /src/unbound/daemon/remote.c:400,1
    - Dst: add_open
      Src: /src/unbound/daemon/remote.c:404,1
    - Dst: listening_ports_free
      Src: /src/unbound/daemon/remote.c:405,1
    - Dst: add_open
      Src: /src/unbound/daemon/remote.c:409,1
    - Dst: listening_ports_free
      Src: /src/unbound/daemon/remote.c:410,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 415
    functionName: daemon_remote_open_ports
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - listening_ports_free
    - add_open
    - log_assert
    - config_del_strarray
    - resolve_interface_names
    linkageType: ''
    returnType: struct listen_port
    signature: struct listen_port * daemon_remote_open_ports(struct config_file* cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/daemon/remote.c:421,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:423,1
    - Dst: comm_point_create_raw
      Src: /src/unbound/daemon/remote.c:429,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - rc
    - fd
    argTypes:
    - struct daemon_remote*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 418
    functionDepth: 1
    functionLinenumber: 418
    functionLinenumberEnd: 436
    functionName: accept_open
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - malloc
    - log_err
    - comm_point_create_raw
    linkageType: ''
    returnType: int
    signature: int accept_open(struct daemon_remote* rc, int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: accept_open
      Src: /src/unbound/daemon/remote.c:444,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:445,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - rc
    - ports
    - worker
    argTypes:
    - struct daemon_remote*
    - struct listen_port*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 438
    functionDepth: 2
    functionLinenumber: 438
    functionLinenumberEnd: 450
    functionName: daemon_remote_open_accept
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - log_err
    - accept_open
    linkageType: ''
    returnType: int
    signature: "int daemon_remote_open_accept(struct daemon_remote* rc,\n\tstruct
      listen_port* ports, struct worker* worker)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: comm_point_stop_listening
      Src: /src/unbound/daemon/remote.c:456,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rc
    argTypes:
    - struct daemon_remote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 452
    functionDepth: 0
    functionLinenumber: 452
    functionLinenumberEnd: 458
    functionName: daemon_remote_stop_accept
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - comm_point_stop_listening
    linkageType: ''
    returnType: void
    signature: void daemon_remote_stop_accept(struct daemon_remote* rc)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: comm_point_start_listening
      Src: /src/unbound/daemon/remote.c:464,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rc
    argTypes:
    - struct daemon_remote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 460
    functionDepth: 0
    functionLinenumber: 460
    functionLinenumberEnd: 466
    functionName: daemon_remote_start_accept
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - comm_point_start_listening
    linkageType: ''
    returnType: void
    signature: void daemon_remote_start_accept(struct daemon_remote* rc)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:477,1
    - Dst: comm_point_perform_accept
      Src: /src/unbound/daemon/remote.c:481,1
    - Dst: log_warn
      Src: /src/unbound/daemon/remote.c:486,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:488,1
    - Dst: calloc
      Src: /src/unbound/daemon/remote.c:493,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:495,1
    - Dst: comm_point_create_raw
      Src: /src/unbound/daemon/remote.c:500,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:503,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:504,1
    - Dst: log_addr
      Src: /src/unbound/daemon/remote.c:507,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/daemon/remote.c:509,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/daemon/remote.c:510,1
    - Dst: memcpy
      Src: /src/unbound/daemon/remote.c:511,1
    - Dst: SSL_new
      Src: /src/unbound/daemon/remote.c:515,1
    - Dst: log_crypto_err
      Src: /src/unbound/daemon/remote.c:517,1
    - Dst: comm_point_delete
      Src: /src/unbound/daemon/remote.c:518,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:519,1
    - Dst: SSL_set_accept_state
      Src: /src/unbound/daemon/remote.c:522,1
    - Dst: SSL_set_mode
      Src: /src/unbound/daemon/remote.c:523,1
    - Dst: SSL_set_fd
      Src: /src/unbound/daemon/remote.c:524,1
    - Dst: log_crypto_err
      Src: /src/unbound/daemon/remote.c:525,1
    - Dst: SSL_free
      Src: /src/unbound/daemon/remote.c:526,1
    - Dst: comm_point_delete
      Src: /src/unbound/daemon/remote.c:527,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:528,1
    - Dst: remote_control_callback
      Src: /src/unbound/daemon/remote.c:542,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 64
    argCount: 4
    argNames:
    - c
    - arg
    - err
    - ATTR_UNUSED(rep)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 468
    functionDepth: 1
    functionLinenumber: 468
    functionLinenumberEnd: 544
    functionName: remote_accept_callback
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - SSL_set_accept_state
    - comm_point_perform_accept
    - SSL_set_mode
    - log_err
    - comm_point_stop_listening
    - comm_point_start_listening
    - calloc
    - memcpy
    - comm_point_create_raw
    - free
    - log_warn
    - log_crypto_err
    - sock_close
    - SSL_free
    - remote_control_callback
    - log_addr
    - SSL_new
    - SSL_set_fd
    - comm_point_delete
    linkageType: ''
    returnType: int
    signature: "int remote_accept_callback(struct comm_point* c, void* arg, int err,\n\tstruct
      comm_reply* ATTR_UNUSED(rep))"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - list
    - c
    argTypes:
    - struct rc_state**
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 547
    functionDepth: 0
    functionLinenumber: 547
    functionLinenumberEnd: 557
    functionName: state_list_remove_elem
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void state_list_remove_elem(struct rc_state** list, struct comm_point*
      c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/daemon/remote.c:565,1
    - Dst: state_list_remove_elem
      Src: /src/unbound/daemon/remote.c:568,1
    - Dst: SSL_shutdown
      Src: /src/unbound/daemon/remote.c:571,1
    - Dst: SSL_free
      Src: /src/unbound/daemon/remote.c:572,1
    - Dst: comm_point_delete
      Src: /src/unbound/daemon/remote.c:574,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:575,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - rc
    - s
    argTypes:
    - struct daemon_remote*
    - struct rc_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 560
    functionDepth: 1
    functionLinenumber: 560
    functionLinenumberEnd: 576
    functionName: clean_point
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - SSL_free
    - free
    - state_list_remove_elem
    - comm_point_delete
    - SSL_shutdown
    linkageType: ''
    returnType: void
    signature: void clean_point(struct daemon_remote* rc, struct rc_state* s)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ERR_clear_error
      Src: /src/unbound/daemon/remote.c:585,1
    - Dst: SSL_write
      Src: /src/unbound/daemon/remote.c:586,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:586,1
    - Dst: SSL_get_error
      Src: /src/unbound/daemon/remote.c:588,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:589,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/daemon/remote.c:593,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:598,1
    - Dst: send
      Src: /src/unbound/daemon/remote.c:599,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:599,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:603,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:604,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - res
    - text
    argTypes:
    - RES*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 578
    functionDepth: 1
    functionLinenumber: 578
    functionLinenumberEnd: 611
    functionName: ssl_print_text
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - log_err
    - SSL_write
    - log_crypto_err_io
    - verbose
    - sock_strerror
    - strlen
    - ERR_clear_error
    - send
    - SSL_get_error
    linkageType: ''
    returnType: int
    signature: int ssl_print_text(RES* res, const char* text)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vsnprintf
      Src: /src/unbound/daemon/remote.c:618,1
    - Dst: ssl_print_text
      Src: /src/unbound/daemon/remote.c:619,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ssl
    - format
    - args
    argTypes:
    - RES*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 614
    functionDepth: 2
    functionLinenumber: 614
    functionLinenumberEnd: 620
    functionName: ssl_print_vmsg
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - vsnprintf
    - ssl_print_text
    linkageType: ''
    returnType: int
    signature: int ssl_print_vmsg(RES* ssl, const char* format, va_list args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/daemon/remote.c:627,1
    - Dst: ssl_print_vmsg
      Src: /src/unbound/daemon/remote.c:628,1
    - Dst: va_end
      Src: /src/unbound/daemon/remote.c:629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ssl
    - format
    argTypes:
    - RES*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 623
    functionDepth: 3
    functionLinenumber: 623
    functionLinenumberEnd: 631
    functionName: ssl_printf
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 7
    functionsReached:
    - ssl_print_vmsg
    - va_end
    - va_start
    linkageType: ''
    returnType: int
    signature: int ssl_printf(RES* ssl, const char* format, ...)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ERR_clear_error
      Src: /src/unbound/daemon/remote.c:642,1
    - Dst: SSL_read
      Src: /src/unbound/daemon/remote.c:643,1
    - Dst: SSL_get_error
      Src: /src/unbound/daemon/remote.c:645,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/daemon/remote.c:649,1
    - Dst: recv
      Src: /src/unbound/daemon/remote.c:654,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:662,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:663,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:677,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 39
    argCount: 3
    argNames:
    - res
    - buf
    - max
    argTypes:
    - RES*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 633
    functionDepth: 1
    functionLinenumber: 633
    functionLinenumberEnd: 679
    functionName: ssl_read_line
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - log_err
    - log_crypto_err_io
    - SSL_read
    - sock_strerror
    - recv
    - ERR_clear_error
    - SSL_get_error
    linkageType: ''
    returnType: int
    signature: int ssl_read_line(RES* res, char* buf, size_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/daemon/remote.c:686,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 682
    functionDepth: 0
    functionLinenumber: 682
    functionLinenumberEnd: 689
    functionName: skipwhite
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - isspace
    linkageType: ''
    returnType: char
    signature: 'char *

      skipwhite(char* str)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:694,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ssl
    argTypes:
    - RES*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 692
    functionDepth: 4
    functionLinenumber: 692
    functionLinenumberEnd: 695
    functionName: send_ok
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void send_ok(RES* ssl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: worker_send_cmd
      Src: /src/unbound/daemon/remote.c:706,1
    - Dst: tube_write_msg
      Src: /src/unbound/daemon/remote.c:708,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:709,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:710,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - rc
    - ssl
    - cmd
    argTypes:
    - struct daemon_remote*
    - RES*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 698
    functionDepth: 4
    functionLinenumber: 698
    functionLinenumberEnd: 714
    functionName: distribute_cmd
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - worker_send_cmd
    - tube_write_msg
    - strlen
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void distribute_cmd(struct daemon_remote* rc, RES* ssl, char* cmd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: comm_base_exit
      Src: /src/unbound/daemon/remote.c:721,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:722,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 717
    functionDepth: 5
    functionLinenumber: 717
    functionLinenumberEnd: 723
    functionName: do_stop
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - comm_base_exit
    linkageType: ''
    returnType: void
    signature: void do_stop(RES* ssl, struct worker* worker)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: comm_base_exit
      Src: /src/unbound/daemon/remote.c:731,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:732,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ssl
    - worker
    - reuse_cache
    argTypes:
    - RES*
    - struct worker*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 726
    functionDepth: 5
    functionLinenumber: 726
    functionLinenumberEnd: 733
    functionName: do_reload
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - comm_base_exit
    linkageType: ''
    returnType: void
    signature: void do_reload(RES* ssl, struct worker* worker, int reuse_cache)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:752,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:760,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:763,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 5
    argNames:
    - ssl
    - arg
    - fr_verb
    - fr_nopause
    - fr_drop_mesh
    argTypes:
    - RES*
    - char*
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 737
    functionDepth: 4
    functionLinenumber: 737
    functionLinenumberEnd: 768
    functionName: fr_parse_options
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - skipwhite
    - ssl_printf
    linkageType: ''
    returnType: int
    signature: "int fr_parse_options(RES* ssl, char* arg, int* fr_verb, int* fr_nopause,\n\tint*
      fr_drop_mesh)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:776,1
    - Dst: fr_parse_options
      Src: /src/unbound/daemon/remote.c:783,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:786,1
    - Dst: fast_reload_thread_start
      Src: /src/unbound/daemon/remote.c:789,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 4
    argNames:
    - ssl
    - worker
    - s
    - arg
    argTypes:
    - RES*
    - struct worker*
    - struct rc_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 792
      start: 772
    functionDepth: 5
    functionLinenumber: 772
    functionLinenumberEnd: 792
    functionName: do_fast_reload
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - fast_reload_thread_start
    - fr_parse_options
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_fast_reload(RES* ssl, struct worker* worker, struct rc_state*
      s, char* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/unbound/daemon/remote.c:798,1
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:799,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:800,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:804,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ssl
    - str
    argTypes:
    - RES*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 795
    functionDepth: 5
    functionLinenumber: 795
    functionLinenumberEnd: 805
    functionName: do_verbosity
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - atoi
    - strcmp
    - send_ok
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_verbosity(RES* ssl, char* str)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:812,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:814,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:816,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:818,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:820,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:822,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:824,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:826,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:828,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:831,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:833,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:835,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:837,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:839,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:841,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:844,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:846,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:848,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:850,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:853,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:855,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:860,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:862,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:864,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:866,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:868,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:870,1
    - Dst: timeval_divide
      Src: /src/unbound/daemon/remote.c:876,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:877,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:879,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:881,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 65
    argCount: 3
    argNames:
    - ssl
    - nm
    - s
    argTypes:
    - RES*
    - char*
    - struct ub_stats_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 808
    functionDepth: 4
    functionLinenumber: 808
    functionLinenumberEnd: 884
    functionName: print_stats
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - timeval_divide
    - ssl_printf
    linkageType: ''
    returnType: int
    signature: int print_stats(RES* ssl, const char* nm, struct ub_stats_info* s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:891,1
    - Dst: print_stats
      Src: /src/unbound/daemon/remote.c:893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ssl
    - i
    - s
    argTypes:
    - RES*
    - int
    - struct ub_stats_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 887
    functionDepth: 5
    functionLinenumber: 887
    functionLinenumberEnd: 894
    functionName: print_thread_stats
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - snprintf
    - print_stats
    linkageType: ''
    returnType: int
    signature: int print_thread_stats(RES* ssl, int i, struct ub_stats_info* s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:904,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:907,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ssl
    - desc
    - x
    argTypes:
    - RES*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 897
    functionDepth: 4
    functionLinenumber: 897
    functionLinenumberEnd: 909
    functionName: print_longnum
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - ssl_printf
    linkageType: ''
    returnType: int
    signature: int print_longnum(RES* ssl, const char* desc, size_t x)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: slabhash_get_mem
      Src: /src/unbound/daemon/remote.c:930,1
    - Dst: slabhash_get_mem
      Src: /src/unbound/daemon/remote.c:931,1
    - Dst: mod_get_mem
      Src: /src/unbound/daemon/remote.c:932,1
    - Dst: mod_get_mem
      Src: /src/unbound/daemon/remote.c:933,1
    - Dst: mod_get_mem
      Src: /src/unbound/daemon/remote.c:934,1
    - Dst: mod_get_mem
      Src: /src/unbound/daemon/remote.c:936,1
    - Dst: mod_get_mem
      Src: /src/unbound/daemon/remote.c:939,1
    - Dst: slabhash_get_mem
      Src: /src/unbound/daemon/remote.c:943,1
    - Dst: slabhash_get_mem
      Src: /src/unbound/daemon/remote.c:945,1
    - Dst: mod_get_mem
      Src: /src/unbound/daemon/remote.c:949,1
    - Dst: print_longnum
      Src: /src/unbound/daemon/remote.c:952,1
    - Dst: print_longnum
      Src: /src/unbound/daemon/remote.c:954,1
    - Dst: print_longnum
      Src: /src/unbound/daemon/remote.c:956,1
    - Dst: print_longnum
      Src: /src/unbound/daemon/remote.c:958,1
    - Dst: print_longnum
      Src: /src/unbound/daemon/remote.c:960,1
    - Dst: print_longnum
      Src: /src/unbound/daemon/remote.c:963,1
    - Dst: print_longnum
      Src: /src/unbound/daemon/remote.c:967,1
    - Dst: print_longnum
      Src: /src/unbound/daemon/remote.c:971,1
    - Dst: print_longnum
      Src: /src/unbound/daemon/remote.c:974,1
    - Dst: print_longnum
      Src: /src/unbound/daemon/remote.c:979,1
    - Dst: print_longnum
      Src: /src/unbound/daemon/remote.c:982,1
    - Dst: print_longnum
      Src: /src/unbound/daemon/remote.c:985,1
    - Dst: print_longnum
      Src: /src/unbound/daemon/remote.c:988,1
    - Dst: print_longnum
      Src: /src/unbound/daemon/remote.c:992,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 42
    argCount: 4
    argNames:
    - ssl
    - worker
    - daemon
    - s
    argTypes:
    - RES*
    - struct worker*
    - struct daemon*
    - struct ub_stats_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 996
      start: 912
    functionDepth: 5
    functionLinenumber: 912
    functionLinenumberEnd: 996
    functionName: print_mem
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - slabhash_get_mem
    - print_longnum
    - mod_get_mem
    linkageType: ''
    returnType: int
    signature: "int print_mem(RES* ssl, struct worker* worker, struct daemon* daemon,\n\tstruct
      ub_stats_info* s)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: timeval_subtract
      Src: /src/unbound/daemon/remote.c:1004,1
    - Dst: timeval_subtract
      Src: /src/unbound/daemon/remote.c:1005,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1008,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1010,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1012,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - ssl
    - worker
    - reset
    argTypes:
    - RES*
    - struct worker*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1015
      start: 999
    functionDepth: 4
    functionLinenumber: 999
    functionLinenumberEnd: 1015
    functionName: print_uptime
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - ssl_printf
    - timeval_subtract
    linkageType: ''
    returnType: int
    signature: int print_uptime(RES* ssl, struct worker* worker, int reset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timehist_setup
      Src: /src/unbound/daemon/remote.c:1023,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:1025,1
    - Dst: timehist_import
      Src: /src/unbound/daemon/remote.c:1028,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1030,1
    - Dst: timehist_delete
      Src: /src/unbound/daemon/remote.c:1037,1
    - Dst: timehist_delete
      Src: /src/unbound/daemon/remote.c:1041,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - ssl
    - s
    argTypes:
    - RES*
    - struct ub_stats_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 1018
    functionDepth: 4
    functionLinenumber: 1018
    functionLinenumberEnd: 1043
    functionName: print_hist
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - timehist_setup
    - log_err
    - timehist_delete
    - ssl_printf
    - timehist_import
    linkageType: ''
    returnType: int
    signature: int print_hist(RES* ssl, struct ub_stats_info* s)
  - BBCount: 69
    BranchProfiles: []
    Callsites:
    - Dst: sldns_rr_descript
      Src: /src/unbound/daemon/remote.c:1057,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1059,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1061,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1063,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1065,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1067,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1069,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1071,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1073,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1077,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/daemon/remote.c:1084,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1086,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1088,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1090,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1094,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/daemon/remote.c:1101,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1103,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1105,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1107,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1111,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1113,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1115,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1117,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1119,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1121,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1123,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1126,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1130,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1132,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1134,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1136,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1138,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1140,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1142,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1144,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1146,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1148,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/daemon/remote.c:1156,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1158,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1160,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1162,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1166,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1170,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1173,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1175,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1177,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1179,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1181,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1183,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1186,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1188,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1191,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1193,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1195,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1197,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1200,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1202,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1210,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/daemon/remote.c:1211,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1215,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1217,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1219,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1221,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1224,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1226,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1229,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1231,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1235,1
    CyclomaticComplexity: 92
    EdgeCount: 92
    ICount: 169
    argCount: 3
    argNames:
    - ssl
    - s
    - inhibit_zero
    argTypes:
    - RES*
    - struct ub_stats_info*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1239
      start: 1046
    functionDepth: 4
    functionLinenumber: 1046
    functionLinenumberEnd: 1239
    functionName: print_ext
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - sldns_rr_descript
    - snprintf
    - rpz_action_to_string
    - ssl_printf
    - sldns_lookup_by_id
    linkageType: ''
    returnType: int
    signature: int print_ext(RES* ssl, struct ub_stats_info* s, int inhibit_zero)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/daemon/remote.c:1249,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:1250,1
    - Dst: server_stats_obtain
      Src: /src/unbound/daemon/remote.c:1253,1
    - Dst: print_thread_stats
      Src: /src/unbound/daemon/remote.c:1254,1
    - Dst: server_stats_add
      Src: /src/unbound/daemon/remote.c:1258,1
    - Dst: print_stats
      Src: /src/unbound/daemon/remote.c:1262,1
    - Dst: print_uptime
      Src: /src/unbound/daemon/remote.c:1264,1
    - Dst: print_mem
      Src: /src/unbound/daemon/remote.c:1267,1
    - Dst: print_hist
      Src: /src/unbound/daemon/remote.c:1269,1
    - Dst: print_ext
      Src: /src/unbound/daemon/remote.c:1271,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 3
    argNames:
    - ssl
    - worker
    - reset
    argTypes:
    - RES*
    - struct worker*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1274
      start: 1242
    functionDepth: 6
    functionLinenumber: 1242
    functionLinenumberEnd: 1274
    functionName: do_stats
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - print_ext
    - print_uptime
    - print_mem
    - log_assert
    - server_stats_add
    - print_thread_stats
    - print_hist
    - server_stats_obtain
    - memset
    - print_stats
    linkageType: ''
    returnType: void
    signature: void do_stats(RES* ssl, struct worker* worker, int reset)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1287,1
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/daemon/remote.c:1290,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1292,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/daemon/remote.c:1293,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/daemon/remote.c:1294,1
    - Dst: memdup
      Src: /src/unbound/daemon/remote.c:1297,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1299,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/daemon/remote.c:1302,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 5
    argNames:
    - ssl
    - str
    - res
    - len
    - labs
    argTypes:
    - RES*
    - char*
    - uint8_t**
    - size_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1304
      start: 1277
    functionDepth: 4
    functionLinenumber: 1277
    functionLinenumberEnd: 1304
    functionName: parse_arg_name
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - dname_count_size_labels
    - LDNS_WIREPARSE_OFFSET
    - sldns_get_errorstr_parse
    - sldns_str2wire_dname_buf
    - ssl_printf
    - memdup
    linkageType: ''
    returnType: int
    signature: int parse_arg_name(RES* ssl, char* str, uint8_t** res, size_t* len,
      int* labs)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:1310,1
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:1311,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:1316,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:1319,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:1322,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1324,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - ssl
    - arg
    - arg2
    argTypes:
    - RES*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1307
    functionDepth: 4
    functionLinenumber: 1307
    functionLinenumberEnd: 1329
    functionName: find_arg2
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - strchr
    - skipwhite
    - ssl_printf
    linkageType: ''
    returnType: int
    signature: int find_arg2(RES* ssl, char* arg, char** arg2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: find_arg2
      Src: /src/unbound/daemon/remote.c:1341,1
    - Dst: parse_arg_name
      Src: /src/unbound/daemon/remote.c:1343,1
    - Dst: local_zone_str2type
      Src: /src/unbound/daemon/remote.c:1345,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1346,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:1347,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:1350,1
    - Dst: local_zones_find
      Src: /src/unbound/daemon/remote.c:1351,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:1354,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:1356,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:1357,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:1358,1
    - Dst: local_zones_add_zone
      Src: /src/unbound/daemon/remote.c:1361,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:1363,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1364,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:1367,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 3
    argNames:
    - ssl
    - zones
    - arg
    argTypes:
    - RES*
    - struct local_zones*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1369
      start: 1332
    functionDepth: 5
    functionLinenumber: 1332
    functionLinenumberEnd: 1369
    functionName: perform_zone_add
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - find_arg2
    - local_zones_add_zone
    - free
    - local_zones_find
    - ssl_printf
    - parse_arg_name
    - local_zone_str2type
    linkageType: ''
    returnType: int
    signature: int perform_zone_add(RES* ssl, struct local_zones* zones, char* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: perform_zone_add
      Src: /src/unbound/daemon/remote.c:1375,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:1377,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ssl
    - zones
    - arg
    argTypes:
    - RES*
    - struct local_zones*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1372
    functionDepth: 6
    functionLinenumber: 1372
    functionLinenumberEnd: 1378
    functionName: do_zone_add
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - perform_zone_add
    linkageType: ''
    returnType: void
    signature: void do_zone_add(RES* ssl, struct local_zones* zones, char* arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:1386,1
    - Dst: ssl_read_line
      Src: /src/unbound/daemon/remote.c:1387,1
    - Dst: distribute_cmd
      Src: /src/unbound/daemon/remote.c:1393,1
    - Dst: perform_zone_add
      Src: /src/unbound/daemon/remote.c:1397,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1399,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1405,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - rc
    - ssl
    - worker
    argTypes:
    - struct daemon_remote*
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1406
      start: 1381
    functionDepth: 6
    functionLinenumber: 1381
    functionLinenumberEnd: 1406
    functionName: do_zones_add
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - distribute_cmd
    - ssl_read_line
    - perform_zone_add
    - strlen
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_zones_add(struct daemon_remote* rc, RES* ssl, struct worker*
      worker)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_arg_name
      Src: /src/unbound/daemon/remote.c:1416,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:1418,1
    - Dst: local_zones_find
      Src: /src/unbound/daemon/remote.c:1419,1
    - Dst: local_zones_del_zone
      Src: /src/unbound/daemon/remote.c:1422,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:1424,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:1425,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ssl
    - zones
    - arg
    argTypes:
    - RES*
    - struct local_zones*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1427
      start: 1409
    functionDepth: 5
    functionLinenumber: 1409
    functionLinenumberEnd: 1427
    functionName: perform_zone_remove
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - free
    - local_zones_del_zone
    - local_zones_find
    - parse_arg_name
    linkageType: ''
    returnType: int
    signature: int perform_zone_remove(RES* ssl, struct local_zones* zones, char*
      arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: perform_zone_remove
      Src: /src/unbound/daemon/remote.c:1433,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:1435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ssl
    - zones
    - arg
    argTypes:
    - RES*
    - struct local_zones*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1436
      start: 1430
    functionDepth: 6
    functionLinenumber: 1430
    functionLinenumberEnd: 1436
    functionName: do_zone_remove
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - perform_zone_remove
    linkageType: ''
    returnType: void
    signature: void do_zone_remove(RES* ssl, struct local_zones* zones, char* arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:1444,1
    - Dst: ssl_read_line
      Src: /src/unbound/daemon/remote.c:1445,1
    - Dst: distribute_cmd
      Src: /src/unbound/daemon/remote.c:1451,1
    - Dst: perform_zone_remove
      Src: /src/unbound/daemon/remote.c:1455,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1457,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1463,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - rc
    - ssl
    - worker
    argTypes:
    - struct daemon_remote*
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1464
      start: 1439
    functionDepth: 6
    functionLinenumber: 1439
    functionLinenumberEnd: 1464
    functionName: do_zones_remove
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - distribute_cmd
    - ssl_read_line
    - perform_zone_remove
    - strlen
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_zones_remove(struct daemon_remote* rc, RES* ssl, struct worker*
      worker)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_rr_buf
      Src: /src/unbound/daemon/remote.c:1472,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1478,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1479,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/daemon/remote.c:1480,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/daemon/remote.c:1481,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ssl
    - str
    - line
    argTypes:
    - RES*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1486
      start: 1467
    functionDepth: 4
    functionLinenumber: 1467
    functionLinenumberEnd: 1486
    functionName: check_RR_syntax
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - sldns_str2wire_rr_buf
    - snprintf
    - LDNS_WIREPARSE_OFFSET
    - sldns_get_errorstr_parse
    - ssl_printf
    linkageType: ''
    returnType: int
    signature: int check_RR_syntax(RES* ssl, char* str, int line)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_RR_syntax
      Src: /src/unbound/daemon/remote.c:1492,1
    - Dst: local_zones_add_RR
      Src: /src/unbound/daemon/remote.c:1495,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1496,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - ssl
    - zones
    - arg
    - line
    argTypes:
    - RES*
    - struct local_zones*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1500
      start: 1489
    functionDepth: 5
    functionLinenumber: 1489
    functionLinenumberEnd: 1500
    functionName: perform_data_add
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - local_zones_add_RR
    - check_RR_syntax
    - ssl_printf
    linkageType: ''
    returnType: int
    signature: int perform_data_add(RES* ssl, struct local_zones* zones, char* arg,
      int line)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: perform_data_add
      Src: /src/unbound/daemon/remote.c:1506,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:1508,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ssl
    - zones
    - arg
    argTypes:
    - RES*
    - struct local_zones*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1509
      start: 1503
    functionDepth: 6
    functionLinenumber: 1503
    functionLinenumberEnd: 1509
    functionName: do_data_add
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - perform_data_add
    - send_ok
    linkageType: ''
    returnType: void
    signature: void do_data_add(RES* ssl, struct local_zones* zones, char* arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:1517,1
    - Dst: ssl_read_line
      Src: /src/unbound/daemon/remote.c:1518,1
    - Dst: distribute_cmd
      Src: /src/unbound/daemon/remote.c:1524,1
    - Dst: perform_data_add
      Src: /src/unbound/daemon/remote.c:1529,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1533,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 3
    argNames:
    - rc
    - ssl
    - worker
    argTypes:
    - struct daemon_remote*
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1534
      start: 1512
    functionDepth: 6
    functionLinenumber: 1512
    functionLinenumberEnd: 1534
    functionName: do_datas_add
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - distribute_cmd
    - ssl_read_line
    - perform_data_add
    - strlen
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_datas_add(struct daemon_remote* rc, RES* ssl, struct worker*
      worker)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wirerr_get_rdatawl
      Src: /src/unbound/daemon/remote.c:1549,1
    - Dst: sldns_wirerr_get_rdatalen
      Src: /src/unbound/daemon/remote.c:1550,1
    - Dst: dname_count_labels
      Src: /src/unbound/daemon/remote.c:1552,1
    - Dst: sldns_wirerr_get_class
      Src: /src/unbound/daemon/remote.c:1554,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/daemon/remote.c:1555,1
    - Dst: local_zones_lookup
      Src: /src/unbound/daemon/remote.c:1557,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1560,1
    - Dst: local_zone_find_data
      Src: /src/unbound/daemon/remote.c:1564,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1566,1
    - Dst: ntohs
      Src: /src/unbound/daemon/remote.c:1571,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1576,1
    - Dst: packed_rrset_find_rr
      Src: /src/unbound/daemon/remote.c:1581,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1582,1
    - Dst: local_rrset_remove_rr
      Src: /src/unbound/daemon/remote.c:1586,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1587,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 6
    argNames:
    - ssl
    - local_zones
    - rr
    - len
    - dname_len
    - arg
    argTypes:
    - RES*
    - struct local_zones*
    - uint8_t*
    - size_t
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1592
      start: 1536
    functionDepth: 4
    functionLinenumber: 1536
    functionLinenumberEnd: 1592
    functionName: perform_data_remove_rr
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - local_zone_find_data
    - local_rrset_remove_rr
    - sldns_wirerr_get_rdatawl
    - packed_rrset_find_rr
    - local_zones_lookup
    - sldns_wirerr_get_type
    - ssl_printf
    - sldns_wirerr_get_rdatalen
    - dname_count_labels
    - sldns_wirerr_get_class
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int perform_data_remove_rr(RES* ssl, struct local_zones* local_zones,\n\tuint8_t*
      rr, size_t len, size_t dname_len, char *arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_rr_buf
      Src: /src/unbound/daemon/remote.c:1604,1
    - Dst: parse_arg_name
      Src: /src/unbound/daemon/remote.c:1609,1
    - Dst: local_zones_del_data
      Src: /src/unbound/daemon/remote.c:1610,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:1612,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1615,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/daemon/remote.c:1616,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/daemon/remote.c:1617,1
    - Dst: perform_data_remove_rr
      Src: /src/unbound/daemon/remote.c:1622,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - ssl
    - zones
    - arg
    argTypes:
    - RES*
    - struct local_zones*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1626
      start: 1595
    functionDepth: 5
    functionLinenumber: 1595
    functionLinenumberEnd: 1626
    functionName: perform_data_remove
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - sldns_str2wire_rr_buf
    - LDNS_WIREPARSE_OFFSET
    - free
    - sldns_get_errorstr_parse
    - local_zones_del_data
    - ssl_printf
    - parse_arg_name
    - perform_data_remove_rr
    linkageType: ''
    returnType: int
    signature: int perform_data_remove(RES* ssl, struct local_zones* zones, char*
      arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: perform_data_remove
      Src: /src/unbound/daemon/remote.c:1632,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:1634,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - ssl
    - zones
    - arg
    argTypes:
    - RES*
    - struct local_zones*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1635
      start: 1629
    functionDepth: 6
    functionLinenumber: 1629
    functionLinenumberEnd: 1635
    functionName: do_data_remove
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - perform_data_remove
    linkageType: ''
    returnType: void
    signature: void do_data_remove(RES* ssl, struct local_zones* zones, char* arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:1643,1
    - Dst: ssl_read_line
      Src: /src/unbound/daemon/remote.c:1644,1
    - Dst: distribute_cmd
      Src: /src/unbound/daemon/remote.c:1650,1
    - Dst: perform_data_remove
      Src: /src/unbound/daemon/remote.c:1654,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1656,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1662,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - rc
    - ssl
    - worker
    argTypes:
    - struct daemon_remote*
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1663
      start: 1638
    functionDepth: 6
    functionLinenumber: 1638
    functionLinenumberEnd: 1663
    functionName: do_datas_remove
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - distribute_cmd
    - ssl_read_line
    - perform_data_remove
    - strlen
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_datas_remove(struct daemon_remote* rc, RES* ssl, struct worker*
      worker)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: find_arg2
      Src: /src/unbound/daemon/remote.c:1671,1
    - Dst: views_find_view
      Src: /src/unbound/daemon/remote.c:1673,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1675,1
    - Dst: local_zones_create
      Src: /src/unbound/daemon/remote.c:1679,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:1680,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1681,1
    - Dst: memset
      Src: /src/unbound/daemon/remote.c:1689,1
    - Dst: local_zone_enter_defaults
      Src: /src/unbound/daemon/remote.c:1690,1
    - Dst: do_zone_add
      Src: /src/unbound/daemon/remote.c:1693,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:1694,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1695
      start: 1666
    functionDepth: 7
    functionLinenumber: 1666
    functionLinenumberEnd: 1695
    functionName: do_view_zone_add
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - lock_rw_unlock
    - find_arg2
    - local_zones_create
    - views_find_view
    - do_zone_add
    - ssl_printf
    - memset
    - local_zone_enter_defaults
    linkageType: ''
    returnType: void
    signature: void do_view_zone_add(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: find_arg2
      Src: /src/unbound/daemon/remote.c:1703,1
    - Dst: views_find_view
      Src: /src/unbound/daemon/remote.c:1705,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1707,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:1711,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:1712,1
    - Dst: do_zone_remove
      Src: /src/unbound/daemon/remote.c:1715,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:1716,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1717
      start: 1698
    functionDepth: 7
    functionLinenumber: 1698
    functionLinenumberEnd: 1717
    functionName: do_view_zone_remove
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - lock_rw_unlock
    - do_zone_remove
    - find_arg2
    - views_find_view
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_view_zone_remove(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: find_arg2
      Src: /src/unbound/daemon/remote.c:1725,1
    - Dst: views_find_view
      Src: /src/unbound/daemon/remote.c:1727,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1729,1
    - Dst: local_zones_create
      Src: /src/unbound/daemon/remote.c:1733,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:1734,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1735,1
    - Dst: memset
      Src: /src/unbound/daemon/remote.c:1743,1
    - Dst: local_zone_enter_defaults
      Src: /src/unbound/daemon/remote.c:1744,1
    - Dst: do_data_add
      Src: /src/unbound/daemon/remote.c:1747,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:1748,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1720
    functionDepth: 7
    functionLinenumber: 1720
    functionLinenumberEnd: 1749
    functionName: do_view_data_add
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - do_data_add
    - lock_rw_unlock
    - find_arg2
    - local_zones_create
    - views_find_view
    - ssl_printf
    - memset
    - local_zone_enter_defaults
    linkageType: ''
    returnType: void
    signature: void do_view_data_add(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: views_find_view
      Src: /src/unbound/daemon/remote.c:1760,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1762,1
    - Dst: local_zones_create
      Src: /src/unbound/daemon/remote.c:1766,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:1767,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1768,1
    - Dst: memset
      Src: /src/unbound/daemon/remote.c:1776,1
    - Dst: local_zone_enter_defaults
      Src: /src/unbound/daemon/remote.c:1777,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1781,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:1781,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:1781,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:1782,1
    - Dst: ssl_read_line
      Src: /src/unbound/daemon/remote.c:1783,1
    - Dst: distribute_cmd
      Src: /src/unbound/daemon/remote.c:1789,1
    - Dst: perform_data_add
      Src: /src/unbound/daemon/remote.c:1794,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:1797,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1798,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 4
    argNames:
    - rc
    - ssl
    - worker
    - arg
    argTypes:
    - struct daemon_remote*
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1799
      start: 1752
    functionDepth: 6
    functionLinenumber: 1752
    functionLinenumberEnd: 1799
    functionName: do_view_datas_add
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - distribute_cmd
    - ssl_read_line
    - snprintf
    - lock_rw_unlock
    - perform_data_add
    - local_zones_create
    - views_find_view
    - strlen
    - ssl_printf
    - memset
    - local_zone_enter_defaults
    linkageType: ''
    returnType: void
    signature: "void do_view_datas_add(struct daemon_remote* rc, RES* ssl, struct
      worker* worker,\n\tchar* arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: find_arg2
      Src: /src/unbound/daemon/remote.c:1807,1
    - Dst: views_find_view
      Src: /src/unbound/daemon/remote.c:1809,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1811,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:1815,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:1816,1
    - Dst: do_data_remove
      Src: /src/unbound/daemon/remote.c:1819,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:1820,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1821
      start: 1802
    functionDepth: 7
    functionLinenumber: 1802
    functionLinenumberEnd: 1821
    functionName: do_view_data_remove
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - lock_rw_unlock
    - do_data_remove
    - find_arg2
    - views_find_view
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_view_data_remove(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: views_find_view
      Src: /src/unbound/daemon/remote.c:1832,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1834,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:1838,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1839,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1843,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:1843,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:1843,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:1844,1
    - Dst: ssl_read_line
      Src: /src/unbound/daemon/remote.c:1845,1
    - Dst: distribute_cmd
      Src: /src/unbound/daemon/remote.c:1851,1
    - Dst: perform_data_remove
      Src: /src/unbound/daemon/remote.c:1855,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1856,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:1862,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1863,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 4
    argNames:
    - rc
    - ssl
    - worker
    - arg
    argTypes:
    - struct daemon_remote*
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1864
      start: 1824
    functionDepth: 6
    functionLinenumber: 1824
    functionLinenumberEnd: 1864
    functionName: do_view_datas_remove
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - distribute_cmd
    - ssl_read_line
    - snprintf
    - lock_rw_unlock
    - views_find_view
    - perform_data_remove
    - strlen
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: "void do_view_datas_remove(struct daemon_remote* rc, RES* ssl, struct
      worker* worker,\n\tchar* arg)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/unbound/daemon/remote.c:1894,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1896,1
    - Dst: inet_ntop
      Src: /src/unbound/daemon/remote.c:1898,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1900,1
    - Dst: sldns_wire2str_dname_buf
      Src: /src/unbound/daemon/remote.c:1902,1
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/daemon/remote.c:1903,1
    - Dst: sldns_wire2str_class_buf
      Src: /src/unbound/daemon/remote.c:1904,1
    - Dst: sldns_wire2str_rcode_buf
      Src: /src/unbound/daemon/remote.c:1905,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/daemon/remote.c:1905,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:1907,1
    - Dst: rrset_array_lock
      Src: /src/unbound/daemon/remote.c:1916,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1921,1
    - Dst: rrset_array_unlock
      Src: /src/unbound/daemon/remote.c:1924,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1927,1
    - Dst: packed_rr_to_string
      Src: /src/unbound/daemon/remote.c:1943,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1945,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1947,1
    - Dst: rrset_array_unlock
      Src: /src/unbound/daemon/remote.c:1951,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:1952,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 9
    argNames:
    - q
    - d
    - addr
    - addr_size
    - is_ipv6
    - scope
    - only_match_scope_zero
    - ttl
    - arg
    argTypes:
    - struct query_info*
    - struct reply_info*
    - addrkey_t*
    - size_t
    - int
    - addrlen_t
    - int
    - time_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1953
      start: 1885
    functionDepth: 4
    functionLinenumber: 1885
    functionLinenumberEnd: 1953
    functionName: cache_lookup_subnet_addrnode
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - rrset_array_unlock
    - FLAGS_GET_RCODE
    - inet_ntop
    - sldns_wire2str_dname_buf
    - packed_rr_to_string
    - snprintf
    - sldns_wire2str_type_buf
    - sldns_wire2str_rcode_buf
    - sldns_wire2str_class_buf
    - ssl_printf
    - rrset_array_lock
    linkageType: ''
    returnType: void
    signature: "void cache_lookup_subnet_addrnode(struct query_info* q, struct reply_info*
      d,\n\taddrkey_t* addr, size_t addr_size, int is_ipv6, addrlen_t scope,\n\tint
      only_match_scope_zero, time_t ttl, void* arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/daemon/remote.c:1971,1
    - Dst: memcpy
      Src: /src/unbound/daemon/remote.c:1972,1
    - Dst: addrtree_traverse_visit_node
      Src: /src/unbound/daemon/remote.c:1973,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 7
    argNames:
    - edge
    - addr
    - addr_size
    - is_ipv6
    - now
    - q
    - arg
    argTypes:
    - struct addredge*
    - addrkey_t*
    - size_t
    - int
    - time_t
    - struct query_info*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1975
      start: 1956
    functionDepth: 1
    functionLinenumber: 1956
    functionLinenumberEnd: 1975
    functionName: addrtree_traverse_visit_edge
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - memset
    - memcpy
    - addrtree_traverse_visit_node
    linkageType: ''
    returnType: void
    signature: "void addrtree_traverse_visit_edge(struct addredge* edge, addrkey_t*
      addr,\n\tsize_t addr_size, int is_ipv6, time_t now, struct query_info* q,\n\tvoid
      (*func)(struct query_info*, struct reply_info*, addrkey_t*,\n\t\tsize_t, int,
      addrlen_t, int, time_t, void*), void* arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: func
      Src: /src/unbound/daemon/remote.c:1986,1
    - Dst: addrtree_traverse_visit_edge
      Src: /src/unbound/daemon/remote.c:1990,1
    - Dst: addrtree_traverse_visit_edge
      Src: /src/unbound/daemon/remote.c:1992,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 7
    argNames:
    - n
    - addr
    - addr_size
    - is_ipv6
    - now
    - q
    - arg
    argTypes:
    - struct addrnode*
    - addrkey_t*
    - size_t
    - int
    - time_t
    - struct query_info*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1994
      start: 1978
    functionDepth: 2
    functionLinenumber: 1978
    functionLinenumberEnd: 1994
    functionName: addrtree_traverse_visit_node
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - func
    - addrtree_traverse_visit_edge
    linkageType: ''
    returnType: void
    signature: "void addrtree_traverse_visit_node(struct addrnode* n, addrkey_t* addr,\n\tsize_t
      addr_size, int is_ipv6, time_t now, struct query_info* q,\n\tvoid (*func)(struct
      query_info*, struct reply_info*, addrkey_t*,\n\t\tsize_t, int, addrlen_t, int,
      time_t, void*), void* arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/daemon/remote.c:2004,1
    - Dst: addrtree_traverse_visit_node
      Src: /src/unbound/daemon/remote.c:2005,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - tree
    - is_ipv6
    - now
    - q
    - arg
    argTypes:
    - struct addrtree*
    - int
    - time_t
    - struct query_info*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2007
      start: 1997
    functionDepth: 3
    functionLinenumber: 1997
    functionLinenumberEnd: 2007
    functionName: addrtree_traverse
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - memset
    - addrtree_traverse_visit_node
    linkageType: ''
    returnType: void
    signature: "void addrtree_traverse(struct addrtree* tree, int is_ipv6, time_t
      now,\n\tstruct query_info* q,\n\tvoid (*func)(struct query_info*, struct reply_info*,
      addrkey_t*,\n\t\tsize_t, int, addrlen_t, int, time_t, void*), void* arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dname_subdomain_c
      Src: /src/unbound/daemon/remote.c:2017,1
    - Dst: addrtree_traverse
      Src: /src/unbound/daemon/remote.c:2021,1
    - Dst: addrtree_traverse
      Src: /src/unbound/daemon/remote.c:2025,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - e
    - arg
    argTypes:
    - struct lruhash_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2028
      start: 2010
    functionDepth: 4
    functionLinenumber: 2010
    functionLinenumberEnd: 2028
    functionName: cache_lookup_subnet_msg
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    - addrtree_traverse
    linkageType: ''
    returnType: void
    signature: void cache_lookup_subnet_msg(struct lruhash_entry* e, void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_subdomain_c
      Src: /src/unbound/daemon/remote.c:2039,1
    - Dst: packed_rr_to_string
      Src: /src/unbound/daemon/remote.c:2043,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2045,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2048,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2050,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - e
    - arg
    argTypes:
    - struct lruhash_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2052
      start: 2031
    functionDepth: 4
    functionLinenumber: 2031
    functionLinenumberEnd: 2052
    functionName: cache_lookup_rrset
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    - ssl_printf
    - packed_rr_to_string
    linkageType: ''
    returnType: void
    signature: void cache_lookup_rrset(struct lruhash_entry* e, void* arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dname_subdomain_c
      Src: /src/unbound/daemon/remote.c:2061,1
    - Dst: sldns_wire2str_dname_buf
      Src: /src/unbound/daemon/remote.c:2064,1
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/daemon/remote.c:2066,1
    - Dst: sldns_wire2str_class_buf
      Src: /src/unbound/daemon/remote.c:2067,1
    - Dst: sldns_wire2str_rcode_buf
      Src: /src/unbound/daemon/remote.c:2068,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/daemon/remote.c:2068,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:2070,1
    - Dst: rrset_array_lock
      Src: /src/unbound/daemon/remote.c:2079,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2084,1
    - Dst: packed_rr_to_string
      Src: /src/unbound/daemon/remote.c:2100,1
    - Dst: rrset_array_unlock
      Src: /src/unbound/daemon/remote.c:2102,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2103,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2106,1
    - Dst: rrset_array_unlock
      Src: /src/unbound/daemon/remote.c:2109,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2110,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - e
    - arg
    argTypes:
    - struct lruhash_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2112
      start: 2054
    functionDepth: 4
    functionLinenumber: 2054
    functionLinenumberEnd: 2112
    functionName: cache_lookup_msg
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - rrset_array_unlock
    - dname_subdomain_c
    - FLAGS_GET_RCODE
    - sldns_wire2str_dname_buf
    - packed_rr_to_string
    - snprintf
    - sldns_wire2str_type_buf
    - sldns_wire2str_rcode_buf
    - sldns_wire2str_class_buf
    - ssl_printf
    - rrset_array_lock
    linkageType: ''
    returnType: void
    signature: void cache_lookup_msg(struct lruhash_entry* e, void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: modstack_find
      Src: /src/unbound/daemon/remote.c:2130,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:2133,1
    - Dst: slabhash_traverse
      Src: /src/unbound/daemon/remote.c:2134,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:2136,1
    - Dst: slabhash_traverse
      Src: /src/unbound/daemon/remote.c:2140,1
    - Dst: slabhash_traverse
      Src: /src/unbound/daemon/remote.c:2142,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - ssl
    - worker
    - nm
    - nmlen
    argTypes:
    - RES*
    - struct worker*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2143
      start: 2115
    functionDepth: 1
    functionLinenumber: 2115
    functionLinenumberEnd: 2143
    functionName: do_cache_lookup_domain
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - modstack_find
    - slabhash_traverse
    - lock_rw_rdlock
    - lock_rw_unlock
    linkageType: ''
    returnType: void
    signature: "void do_cache_lookup_domain(RES* ssl, struct worker* worker, uint8_t*
      nm,\n\tsize_t nmlen)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:2162,1
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:2165,1
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:2165,1
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:2166,1
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:2167,1
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:2167,1
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:2168,1
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/daemon/remote.c:2176,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2178,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/daemon/remote.c:2179,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/daemon/remote.c:2180,1
    - Dst: dname_count_labels
      Src: /src/unbound/daemon/remote.c:2183,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2184,1
    - Dst: do_cache_lookup_domain
      Src: /src/unbound/daemon/remote.c:2188,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 30
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2192
      start: 2146
    functionDepth: 4
    functionLinenumber: 2146
    functionLinenumberEnd: 2192
    functionName: do_cache_lookup
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - skipwhite
    - do_cache_lookup_domain
    - LDNS_WIREPARSE_OFFSET
    - sldns_get_errorstr_parse
    - sldns_str2wire_dname_buf
    - ssl_printf
    - strchr
    - dname_count_labels
    linkageType: ''
    returnType: void
    signature: void do_cache_lookup(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: parse_arg_name
      Src: /src/unbound/daemon/remote.c:2201,1
    - Dst: print_deleg_lookup
      Src: /src/unbound/daemon/remote.c:2203,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:2204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2205
      start: 2195
    functionDepth: 7
    functionLinenumber: 2195
    functionLinenumberEnd: 2205
    functionName: do_lookup
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - free
    - parse_arg_name
    - print_deleg_lookup
    linkageType: ''
    returnType: void
    signature: void do_lookup(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rrset_cache_remove
      Src: /src/unbound/daemon/remote.c:2214,1
    - Dst: rrset_cache_remove
      Src: /src/unbound/daemon/remote.c:2216,1
    - Dst: query_info_hash
      Src: /src/unbound/daemon/remote.c:2223,1
    - Dst: slabhash_remove
      Src: /src/unbound/daemon/remote.c:2224,1
    - Dst: query_info_hash
      Src: /src/unbound/daemon/remote.c:2227,1
    - Dst: slabhash_remove
      Src: /src/unbound/daemon/remote.c:2228,1
    - Dst: cachedb_msg_remove_qinfo
      Src: /src/unbound/daemon/remote.c:2232,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 6
    argNames:
    - worker
    - nm
    - nmlen
    - t
    - c
    - remcachedb
    argTypes:
    - struct worker*
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2236
      start: 2208
    functionDepth: 1
    functionLinenumber: 2208
    functionLinenumberEnd: 2236
    functionName: do_cache_remove
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - cachedb_msg_remove_qinfo
    - rrset_cache_remove
    - slabhash_remove
    - query_info_hash
    linkageType: ''
    returnType: void
    signature: "void do_cache_remove(struct worker* worker, uint8_t* nm, size_t nmlen,\n\tuint16_t
      t, uint16_t c, int remcachedb)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:2242,1
    - Dst: find_arg2
      Src: /src/unbound/daemon/remote.c:2246,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ssl
    - arg
    - pc
    argTypes:
    - RES*
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2253
      start: 2239
    functionDepth: 5
    functionLinenumber: 2239
    functionLinenumberEnd: 2253
    functionName: parse_remcachedb
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - skipwhite
    - find_arg2
    linkageType: ''
    returnType: int
    signature: int parse_remcachedb(RES* ssl, char** arg, int* pc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: parse_remcachedb
      Src: /src/unbound/daemon/remote.c:2265,1
    - Dst: find_arg2
      Src: /src/unbound/daemon/remote.c:2267,1
    - Dst: parse_arg_name
      Src: /src/unbound/daemon/remote.c:2269,1
    - Dst: sldns_get_rr_type_by_name
      Src: /src/unbound/daemon/remote.c:2271,1
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:2272,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2273,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:2274,1
    - Dst: do_cache_remove
      Src: /src/unbound/daemon/remote.c:2277,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:2279,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:2280,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2281
      start: 2256
    functionDepth: 6
    functionLinenumber: 2256
    functionLinenumberEnd: 2281
    functionName: do_flush_type
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - strcmp
    - ssl_printf
    - free
    - parse_remcachedb
    - find_arg2
    - do_cache_remove
    - parse_arg_name
    - sldns_get_rr_type_by_name
    linkageType: ''
    returnType: void
    signature: void do_flush_type(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: worker_stats_clear
      Src: /src/unbound/daemon/remote.c:2287,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:2288,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2289
      start: 2284
    functionDepth: 5
    functionLinenumber: 2284
    functionLinenumberEnd: 2289
    functionName: do_flush_stats
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - worker_stats_clear
    linkageType: ''
    returnType: void
    signature: void do_flush_stats(RES* ssl, struct worker* worker)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sockaddr_cmp
      Src: /src/unbound/daemon/remote.c:2326,1
    - Dst: rtt_init
      Src: /src/unbound/daemon/remote.c:2332,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - e
    - arg
    argTypes:
    - struct lruhash_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2338
      start: 2320
    functionDepth: 1
    functionLinenumber: 2320
    functionLinenumberEnd: 2338
    functionName: infra_del_host
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - rtt_init
    - sockaddr_cmp
    linkageType: ''
    returnType: void
    signature: void infra_del_host(struct lruhash_entry* e, void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:2347,1
    - Dst: slabhash_clear
      Src: /src/unbound/daemon/remote.c:2348,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:2349,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/daemon/remote.c:2352,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2353,1
    - Dst: memmove
      Src: /src/unbound/daemon/remote.c:2369,1
    - Dst: slabhash_traverse
      Src: /src/unbound/daemon/remote.c:2370,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:2372,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2373
      start: 2341
    functionDepth: 5
    functionLinenumber: 2341
    functionLinenumberEnd: 2373
    functionName: do_flush_infra
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - strcmp
    - memmove
    - ipstrtoaddr
    - slabhash_traverse
    - slabhash_clear
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_flush_infra(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mesh_delete_all
      Src: /src/unbound/daemon/remote.c:2379,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:2380,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2381
      start: 2376
    functionDepth: 5
    functionLinenumber: 2376
    functionLinenumberEnd: 2381
    functionName: do_flush_requestlist
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - mesh_delete_all
    linkageType: ''
    returnType: void
    signature: void do_flush_requestlist(RES* ssl, struct worker* worker)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dname_subdomain_c
      Src: /src/unbound/daemon/remote.c:2390,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - e
    - arg
    argTypes:
    - struct lruhash_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2401
      start: 2384
    functionDepth: 1
    functionLinenumber: 2384
    functionLinenumberEnd: 2401
    functionName: zone_del_rrset
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    linkageType: ''
    returnType: void
    signature: void zone_del_rrset(struct lruhash_entry* e, void* arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dname_subdomain_c
      Src: /src/unbound/daemon/remote.c:2410,1
    - Dst: cachedb_msg_remove_qinfo
      Src: /src/unbound/daemon/remote.c:2420,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - e
    - arg
    argTypes:
    - struct lruhash_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2423
      start: 2404
    functionDepth: 1
    functionLinenumber: 2404
    functionLinenumberEnd: 2423
    functionName: zone_del_msg
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    - cachedb_msg_remove_qinfo
    linkageType: ''
    returnType: void
    signature: void zone_del_msg(struct lruhash_entry* e, void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_subdomain_c
      Src: /src/unbound/daemon/remote.c:2432,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - e
    - arg
    argTypes:
    - struct lruhash_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2439
      start: 2426
    functionDepth: 1
    functionLinenumber: 2426
    functionLinenumberEnd: 2439
    functionName: zone_del_kcache
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    linkageType: ''
    returnType: void
    signature: void zone_del_kcache(struct lruhash_entry* e, void* arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: parse_remcachedb
      Src: /src/unbound/daemon/remote.c:2450,1
    - Dst: parse_arg_name
      Src: /src/unbound/daemon/remote.c:2452,1
    - Dst: slabhash_traverse
      Src: /src/unbound/daemon/remote.c:2466,1
    - Dst: slabhash_traverse
      Src: /src/unbound/daemon/remote.c:2469,1
    - Dst: slabhash_traverse
      Src: /src/unbound/daemon/remote.c:2473,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:2477,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2479,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2482
      start: 2442
    functionDepth: 6
    functionLinenumber: 2442
    functionLinenumberEnd: 2482
    functionName: do_flush_zone
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - free
    - slabhash_traverse
    - parse_remcachedb
    - ssl_printf
    - parse_arg_name
    linkageType: ''
    returnType: void
    signature: void do_flush_zone(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - e
    - arg
    argTypes:
    - struct lruhash_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2495
      start: 2485
    functionDepth: 0
    functionLinenumber: 2485
    functionLinenumberEnd: 2495
    functionName: bogus_del_rrset
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bogus_del_rrset(struct lruhash_entry* e, void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cachedb_msg_remove_qinfo
      Src: /src/unbound/daemon/remote.c:2511,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - e
    - arg
    argTypes:
    - struct lruhash_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2515
      start: 2498
    functionDepth: 1
    functionLinenumber: 2498
    functionLinenumberEnd: 2515
    functionName: bogus_del_msg
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - cachedb_msg_remove_qinfo
    linkageType: ''
    returnType: void
    signature: void bogus_del_msg(struct lruhash_entry* e, void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - e
    - arg
    argTypes:
    - struct lruhash_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2528
      start: 2518
    functionDepth: 0
    functionLinenumber: 2518
    functionLinenumberEnd: 2528
    functionName: bogus_del_kcache
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bogus_del_kcache(struct lruhash_entry* e, void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_remcachedb
      Src: /src/unbound/daemon/remote.c:2536,1
    - Dst: slabhash_traverse
      Src: /src/unbound/daemon/remote.c:2546,1
    - Dst: slabhash_traverse
      Src: /src/unbound/daemon/remote.c:2549,1
    - Dst: slabhash_traverse
      Src: /src/unbound/daemon/remote.c:2553,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2557,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2560
      start: 2531
    functionDepth: 6
    functionLinenumber: 2531
    functionLinenumberEnd: 2560
    functionName: do_flush_bogus
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - slabhash_traverse
    - parse_remcachedb
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_flush_bogus(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 5
    argCount: 2
    argNames:
    - e
    - arg
    argTypes:
    - struct lruhash_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2578
      start: 2563
    functionDepth: 0
    functionLinenumber: 2563
    functionLinenumberEnd: 2578
    functionName: negative_del_rrset
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void negative_del_rrset(struct lruhash_entry* e, void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/daemon/remote.c:2589,1
    - Dst: cachedb_msg_remove_qinfo
      Src: /src/unbound/daemon/remote.c:2597,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - e
    - arg
    argTypes:
    - struct lruhash_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2601
      start: 2581
    functionDepth: 1
    functionLinenumber: 2581
    functionLinenumberEnd: 2601
    functionName: negative_del_msg
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - cachedb_msg_remove_qinfo
    - FLAGS_GET_RCODE
    linkageType: ''
    returnType: void
    signature: void negative_del_msg(struct lruhash_entry* e, void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - e
    - arg
    argTypes:
    - struct lruhash_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2616
      start: 2604
    functionDepth: 0
    functionLinenumber: 2604
    functionLinenumberEnd: 2616
    functionName: negative_del_kcache
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void negative_del_kcache(struct lruhash_entry* e, void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_remcachedb
      Src: /src/unbound/daemon/remote.c:2624,1
    - Dst: slabhash_traverse
      Src: /src/unbound/daemon/remote.c:2634,1
    - Dst: slabhash_traverse
      Src: /src/unbound/daemon/remote.c:2637,1
    - Dst: slabhash_traverse
      Src: /src/unbound/daemon/remote.c:2641,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2645,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2648
      start: 2619
    functionDepth: 6
    functionLinenumber: 2619
    functionLinenumberEnd: 2648
    functionName: do_flush_negative
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - slabhash_traverse
    - parse_remcachedb
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_flush_negative(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_remcachedb
      Src: /src/unbound/daemon/remote.c:2658,1
    - Dst: parse_arg_name
      Src: /src/unbound/daemon/remote.c:2660,1
    - Dst: do_cache_remove
      Src: /src/unbound/daemon/remote.c:2662,1
    - Dst: do_cache_remove
      Src: /src/unbound/daemon/remote.c:2663,1
    - Dst: do_cache_remove
      Src: /src/unbound/daemon/remote.c:2664,1
    - Dst: do_cache_remove
      Src: /src/unbound/daemon/remote.c:2665,1
    - Dst: do_cache_remove
      Src: /src/unbound/daemon/remote.c:2666,1
    - Dst: do_cache_remove
      Src: /src/unbound/daemon/remote.c:2667,1
    - Dst: do_cache_remove
      Src: /src/unbound/daemon/remote.c:2668,1
    - Dst: do_cache_remove
      Src: /src/unbound/daemon/remote.c:2669,1
    - Dst: do_cache_remove
      Src: /src/unbound/daemon/remote.c:2670,1
    - Dst: do_cache_remove
      Src: /src/unbound/daemon/remote.c:2671,1
    - Dst: do_cache_remove
      Src: /src/unbound/daemon/remote.c:2672,1
    - Dst: do_cache_remove
      Src: /src/unbound/daemon/remote.c:2673,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:2675,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:2676,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 3
    argNames:
    - ssl
    - w
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2677
      start: 2651
    functionDepth: 6
    functionLinenumber: 2651
    functionLinenumberEnd: 2677
    functionName: do_flush_name
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - free
    - parse_remcachedb
    - do_cache_remove
    - parse_arg_name
    linkageType: ''
    returnType: void
    signature: void do_flush_name(RES* ssl, struct worker* w, char* arg)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_class
      Src: /src/unbound/daemon/remote.c:2689,1
    - Dst: dname_str
      Src: /src/unbound/daemon/remote.c:2690,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2691,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:2692,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:2695,1
    - Dst: dname_str
      Src: /src/unbound/daemon/remote.c:2698,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:2700,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:2703,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2706,1
    - Dst: ntohs
      Src: /src/unbound/daemon/remote.c:2713,1
    - Dst: ntohs
      Src: /src/unbound/daemon/remote.c:2714,1
    - Dst: addr_to_str
      Src: /src/unbound/daemon/remote.c:2715,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:2717,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:2720,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2723,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2728,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 5
    argNames:
    - ssl
    - str
    - nm
    - dclass
    - dp
    argTypes:
    - RES*
    - char*
    - uint8_t*
    - uint16_t
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2729
      start: 2680
    functionDepth: 4
    functionLinenumber: 2680
    functionLinenumberEnd: 2729
    functionName: ssl_print_name_dp
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - addr_to_str
    - snprintf
    - dname_str
    - sldns_wire2str_class
    - free
    - ssl_printf
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int ssl_print_name_dp(RES* ssl, const char* str, uint8_t* nm, uint16_t
      dclass,\n\tstruct delegpt* dp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: forwards_lookup
      Src: /src/unbound/daemon/remote.c:2738,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2740,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:2743,1
    - Dst: query_dname_compare
      Src: /src/unbound/daemon/remote.c:2743,1
    - Dst: ssl_print_name_dp
      Src: /src/unbound/daemon/remote.c:2744,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:2745,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:2748,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - ssl
    - fwds
    - root
    argTypes:
    - RES*
    - struct iter_forwards*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2750
      start: 2733
    functionDepth: 5
    functionLinenumber: 2733
    functionLinenumberEnd: 2750
    functionName: print_root_fwds
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - forwards_lookup
    - lock_rw_unlock
    - query_dname_compare
    - log_assert
    - ssl_printf
    - ssl_print_name_dp
    linkageType: ''
    returnType: int
    signature: int print_root_fwds(RES* ssl, struct iter_forwards* fwds, uint8_t*
      root)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: delegpt_create_mlc
      Src: /src/unbound/daemon/remote.c:2759,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2764,1
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:2769,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:2772,1
    - Dst: authextstrtoaddr
      Src: /src/unbound/daemon/remote.c:2775,1
    - Dst: authextstrtodname
      Src: /src/unbound/daemon/remote.c:2778,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2780,1
    - Dst: delegpt_free_mlc
      Src: /src/unbound/daemon/remote.c:2782,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:2787,1
    - Dst: delegpt_add_ns_mlc
      Src: /src/unbound/daemon/remote.c:2790,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2791,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:2792,1
    - Dst: delegpt_free_mlc
      Src: /src/unbound/daemon/remote.c:2793,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:2799,1
    - Dst: delegpt_add_addr_mlc
      Src: /src/unbound/daemon/remote.c:2803,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2805,1
    - Dst: delegpt_free_mlc
      Src: /src/unbound/daemon/remote.c:2806,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 3
    argNames:
    - ssl
    - args
    - nm
    argTypes:
    - RES*
    - char*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2813
      start: 2753
    functionDepth: 4
    functionLinenumber: 2753
    functionLinenumberEnd: 2813
    functionName: parse_delegpt
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - log_err
    - skipwhite
    - authextstrtoaddr
    - delegpt_free_mlc
    - free
    - delegpt_add_addr_mlc
    - delegpt_create_mlc
    - ssl_printf
    - strchr
    - delegpt_add_ns_mlc
    - authextstrtodname
    linkageType: ''
    returnType: struct delegpt
    signature: 'struct delegpt *

      parse_delegpt(RES* ssl, char* args, uint8_t* nm)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2823,1
    - Dst: print_root_fwds
      Src: /src/unbound/daemon/remote.c:2827,1
    - Dst: mesh_delete_all
      Src: /src/unbound/daemon/remote.c:2833,1
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:2834,1
    - Dst: forwards_delete_zone
      Src: /src/unbound/daemon/remote.c:2835,1
    - Dst: parse_delegpt
      Src: /src/unbound/daemon/remote.c:2838,1
    - Dst: forwards_add_zone
      Src: /src/unbound/daemon/remote.c:2840,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2841,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:2845,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - ssl
    - worker
    - args
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2846
      start: 2816
    functionDepth: 6
    functionLinenumber: 2816
    functionLinenumberEnd: 2846
    functionName: do_forward
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - mesh_delete_all
    - strcmp
    - parse_delegpt
    - forwards_delete_zone
    - forwards_add_zone
    - print_root_fwds
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_forward(RES* ssl, struct worker* worker, char* args)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: find_arg2
      Src: /src/unbound/daemon/remote.c:2858,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2868,1
    - Dst: find_arg2
      Src: /src/unbound/daemon/remote.c:2876,1
    - Dst: parse_arg_name
      Src: /src/unbound/daemon/remote.c:2881,1
    - Dst: parse_delegpt
      Src: /src/unbound/daemon/remote.c:2886,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:2887,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 7
    argNames:
    - ssl
    - args
    - nm
    - dp
    - insecure
    - prime
    - tls
    argTypes:
    - RES*
    - char*
    - uint8_t**
    - struct delegpt**
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2892
      start: 2848
    functionDepth: 5
    functionLinenumber: 2848
    functionLinenumberEnd: 2892
    functionName: parse_fs_args
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - parse_delegpt
    - find_arg2
    - free
    - ssl_printf
    - parse_arg_name
    linkageType: ''
    returnType: int
    signature: "int parse_fs_args(RES* ssl, char* args, uint8_t** nm, struct delegpt**
      dp,\n\tint* insecure, int* prime, int* tls)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: parse_fs_args
      Src: /src/unbound/daemon/remote.c:2903,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:2908,1
    - Dst: anchors_add_insecure
      Src: /src/unbound/daemon/remote.c:2910,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:2912,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2913,1
    - Dst: delegpt_free_mlc
      Src: /src/unbound/daemon/remote.c:2914,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:2915,1
    - Dst: forwards_add_zone
      Src: /src/unbound/daemon/remote.c:2919,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:2920,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2921,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:2922,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:2925,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:2926,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:2927,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - ssl
    - worker
    - args
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2928
      start: 2895
    functionDepth: 6
    functionLinenumber: 2895
    functionLinenumberEnd: 2928
    functionName: do_forward_add
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - lock_rw_wrlock
    - lock_rw_unlock
    - delegpt_free_mlc
    - forwards_add_zone
    - anchors_add_insecure
    - free
    - parse_fs_args
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_forward_add(RES* ssl, struct worker* worker, char* args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_fs_args
      Src: /src/unbound/daemon/remote.c:2938,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:2941,1
    - Dst: anchors_delete_insecure
      Src: /src/unbound/daemon/remote.c:2943,1
    - Dst: forwards_delete_zone
      Src: /src/unbound/daemon/remote.c:2945,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:2946,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:2947,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:2948,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ssl
    - worker
    - args
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2949
      start: 2931
    functionDepth: 6
    functionLinenumber: 2931
    functionLinenumberEnd: 2949
    functionName: do_forward_remove
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - forwards_delete_zone
    - anchors_delete_insecure
    - lock_rw_wrlock
    - lock_rw_unlock
    - free
    - parse_fs_args
    linkageType: ''
    returnType: void
    signature: void do_forward_remove(RES* ssl, struct worker* worker, char* args)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: parse_fs_args
      Src: /src/unbound/daemon/remote.c:2960,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:2965,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:2966,1
    - Dst: anchors_add_insecure
      Src: /src/unbound/daemon/remote.c:2968,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:2970,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:2971,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2972,1
    - Dst: delegpt_free_mlc
      Src: /src/unbound/daemon/remote.c:2973,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:2974,1
    - Dst: forwards_add_stub_hole
      Src: /src/unbound/daemon/remote.c:2978,1
    - Dst: anchors_delete_insecure
      Src: /src/unbound/daemon/remote.c:2980,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:2982,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:2983,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2984,1
    - Dst: delegpt_free_mlc
      Src: /src/unbound/daemon/remote.c:2985,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:2986,1
    - Dst: hints_add_stub
      Src: /src/unbound/daemon/remote.c:2989,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:2991,1
    - Dst: forwards_delete_stub_hole
      Src: /src/unbound/daemon/remote.c:2992,1
    - Dst: anchors_delete_insecure
      Src: /src/unbound/daemon/remote.c:2994,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:2996,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:2997,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:2998,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3001,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3002,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3003,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:3004,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 3
    argNames:
    - ssl
    - worker
    - args
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3005
      start: 2952
    functionDepth: 6
    functionLinenumber: 2952
    functionLinenumberEnd: 3005
    functionName: do_stub_add
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - forwards_delete_stub_hole
    - anchors_delete_insecure
    - hints_add_stub
    - lock_rw_wrlock
    - lock_rw_unlock
    - forwards_add_stub_hole
    - delegpt_free_mlc
    - anchors_add_insecure
    - free
    - parse_fs_args
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_stub_add(RES* ssl, struct worker* worker, char* args)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_fs_args
      Src: /src/unbound/daemon/remote.c:3015,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:3018,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:3019,1
    - Dst: anchors_delete_insecure
      Src: /src/unbound/daemon/remote.c:3021,1
    - Dst: forwards_delete_stub_hole
      Src: /src/unbound/daemon/remote.c:3023,1
    - Dst: hints_delete_stub
      Src: /src/unbound/daemon/remote.c:3024,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3025,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3026,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3027,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:3028,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - ssl
    - worker
    - args
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3029
      start: 3008
    functionDepth: 6
    functionLinenumber: 3008
    functionLinenumberEnd: 3029
    functionName: do_stub_remove
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - forwards_delete_stub_hole
    - anchors_delete_insecure
    - lock_rw_wrlock
    - lock_rw_unlock
    - free
    - hints_delete_stub
    - parse_fs_args
    linkageType: ''
    returnType: void
    signature: void do_stub_remove(RES* ssl, struct worker* worker, char* args)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: parse_arg_name
      Src: /src/unbound/daemon/remote.c:3038,1
    - Dst: anchors_add_insecure
      Src: /src/unbound/daemon/remote.c:3041,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3043,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3044,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3048,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:3049,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3050
      start: 3032
    functionDepth: 5
    functionLinenumber: 3032
    functionLinenumberEnd: 3050
    functionName: do_insecure_add
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - anchors_add_insecure
    - free
    - ssl_printf
    - parse_arg_name
    linkageType: ''
    returnType: void
    signature: void do_insecure_add(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_arg_name
      Src: /src/unbound/daemon/remote.c:3059,1
    - Dst: anchors_delete_insecure
      Src: /src/unbound/daemon/remote.c:3062,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3064,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:3065,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3066
      start: 3053
    functionDepth: 5
    functionLinenumber: 3053
    functionLinenumberEnd: 3066
    functionName: do_insecure_remove
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - free
    - send_ok
    - parse_arg_name
    - anchors_delete_insecure
    linkageType: ''
    returnType: void
    signature: void do_insecure_remove(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_str
      Src: /src/unbound/daemon/remote.c:3076,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3077,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3081
      start: 3068
    functionDepth: 4
    functionLinenumber: 3068
    functionLinenumberEnd: 3081
    functionName: do_insecure_list
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - dname_str
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_insecure_list(RES* ssl, struct worker* worker)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dname_str
      Src: /src/unbound/daemon/remote.c:3076,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3077,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - tree
    argTypes:
    - worker
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3079
      start: 3074
    functionDepth: 4
    functionLinenumber: 3074
    functionLinenumberEnd: 3079
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - dname_str
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(a, struct trust_anchor*, worker->env.anchors->tree)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3089,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3091,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3093,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3095,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3098,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3101,1
    - Dst: time
      Src: /src/unbound/daemon/remote.c:3103,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3104,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3106,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3113,1
    - Dst: getpid
      Src: /src/unbound/daemon/remote.c:3114,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 22
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3116
      start: 3084
    functionDepth: 4
    functionLinenumber: 3084
    functionLinenumberEnd: 3116
    functionName: do_status
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - time
    - getpid
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_status(RES* ssl, struct worker* worker)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeval_subtract
      Src: /src/unbound/daemon/remote.c:3129,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3130,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - m
    - buf
    - len
    - env
    argTypes:
    - struct mesh_state*
    - char*
    - size_t
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3135
      start: 3119
    functionDepth: 1
    functionLinenumber: 3119
    functionLinenumberEnd: 3135
    functionName: get_mesh_age
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - snprintf
    - timeval_subtract
    linkageType: ''
    returnType: void
    signature: "void get_mesh_age(struct mesh_state* m, char* buf, size_t len,\n\tstruct
      module_env* env)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:3145,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3152,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:3153,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3156,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3158,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:3159,1
    - Dst: addr_to_str
      Src: /src/unbound/daemon/remote.c:3161,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:3163,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3170,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:3171,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3174,1
    - Dst: sldns_wire2str_type
      Src: /src/unbound/daemon/remote.c:3176,1
    - Dst: sldns_wire2str_class
      Src: /src/unbound/daemon/remote.c:3177,1
    - Dst: dname_str
      Src: /src/unbound/daemon/remote.c:3178,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3179,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:3181,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3183,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3184,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3187,1
    - Dst: strextstate
      Src: /src/unbound/daemon/remote.c:3187,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 4
    argNames:
    - mesh
    - m
    - buf
    - len
    argTypes:
    - struct mesh_area*
    - struct mesh_state*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3189
      start: 3138
    functionDepth: 1
    functionLinenumber: 3138
    functionLinenumberEnd: 3189
    functionName: get_mesh_status
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - strcmp
    - addr_to_str
    - strextstate
    - snprintf
    - dname_str
    - sldns_wire2str_class
    - free
    - sldns_wire2str_type
    - strlen
    linkageType: ''
    returnType: void
    signature: "void get_mesh_status(struct mesh_area* mesh, struct mesh_state* m,\n\tchar*
      buf, size_t len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_type
      Src: /src/unbound/daemon/remote.c:3176,1
    - Dst: sldns_wire2str_class
      Src: /src/unbound/daemon/remote.c:3177,1
    - Dst: dname_str
      Src: /src/unbound/daemon/remote.c:3178,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3179,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:3181,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3183,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3184,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - sub_set
    argTypes:
    - m
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3185
      start: 3175
    functionDepth: 1
    functionLinenumber: 3175
    functionLinenumberEnd: 3185
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - snprintf
    - dname_str
    - sldns_wire2str_class
    - free
    - sldns_wire2str_type
    - strlen
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(sub, struct mesh_state_ref*, &m->sub_set)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3201,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3203,1
    - Dst: sldns_wire2str_type
      Src: /src/unbound/daemon/remote.c:3209,1
    - Dst: sldns_wire2str_class
      Src: /src/unbound/daemon/remote.c:3210,1
    - Dst: dname_str
      Src: /src/unbound/daemon/remote.c:3211,1
    - Dst: get_mesh_age
      Src: /src/unbound/daemon/remote.c:3212,1
    - Dst: get_mesh_status
      Src: /src/unbound/daemon/remote.c:3213,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3214,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3217,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3218,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3222,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3223,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3225
      start: 3192
    functionDepth: 4
    functionLinenumber: 3192
    functionLinenumberEnd: 3225
    functionName: do_dump_requestlist
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - get_mesh_status
    - ssl_printf
    - dname_str
    - sldns_wire2str_class
    - free
    - sldns_wire2str_type
    - get_mesh_age
    linkageType: ''
    returnType: void
    signature: void do_dump_requestlist(RES* ssl, struct worker* worker)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_type
      Src: /src/unbound/daemon/remote.c:3209,1
    - Dst: sldns_wire2str_class
      Src: /src/unbound/daemon/remote.c:3210,1
    - Dst: dname_str
      Src: /src/unbound/daemon/remote.c:3211,1
    - Dst: get_mesh_age
      Src: /src/unbound/daemon/remote.c:3212,1
    - Dst: get_mesh_status
      Src: /src/unbound/daemon/remote.c:3213,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3214,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3217,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3218,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3222,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3223,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - all
    argTypes:
    - mesh
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3224
      start: 3208
    functionDepth: 4
    functionLinenumber: 3208
    functionLinenumberEnd: 3224
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - get_mesh_status
    - ssl_printf
    - dname_str
    - sldns_wire2str_class
    - free
    - sldns_wire2str_type
    - get_mesh_age
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(m, struct mesh_state*, &mesh->all)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: addr_to_str
      Src: /src/unbound/daemon/remote.c:3252,1
    - Dst: dname_str
      Src: /src/unbound/daemon/remote.c:3253,1
    - Dst: ntohs
      Src: /src/unbound/daemon/remote.c:3254,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3256,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:3256,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:3256,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3262,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3270,1
    - Dst: rtt_notimeout
      Src: /src/unbound/daemon/remote.c:3274,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - e
    - arg
    argTypes:
    - struct lruhash_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3283
      start: 3241
    functionDepth: 4
    functionLinenumber: 3241
    functionLinenumberEnd: 3283
    functionName: dump_infra_host
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - addr_to_str
    - snprintf
    - dname_str
    - strlen
    - ssl_printf
    - rtt_notimeout
    - ntohs
    linkageType: ''
    returnType: void
    signature: void dump_infra_host(struct lruhash_entry* e, void* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: slabhash_traverse
      Src: /src/unbound/daemon/remote.c:3294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3295
      start: 3286
    functionDepth: 1
    functionLinenumber: 3286
    functionLinenumberEnd: 3295
    functionName: do_dump_infra
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - slabhash_traverse
    linkageType: ''
    returnType: void
    signature: void do_dump_infra(RES* ssl, struct worker* worker)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:3302,1
    - Dst: log_init
      Src: /src/unbound/daemon/remote.c:3303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3304
      start: 3298
    functionDepth: 5
    functionLinenumber: 3298
    functionLinenumberEnd: 3304
    functionName: do_log_reopen
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - log_init
    linkageType: ''
    returnType: void
    signature: void do_log_reopen(RES* ssl, struct worker* worker)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: parse_arg_name
      Src: /src/unbound/daemon/remote.c:3317,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:3320,1
    - Dst: auth_zone_find
      Src: /src/unbound/daemon/remote.c:3321,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:3323,1
    - Dst: auth_xfer_find
      Src: /src/unbound/daemon/remote.c:3325,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:3327,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3329,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3331,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3334,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3336,1
    - Dst: auth_zone_read_zonefile
      Src: /src/unbound/daemon/remote.c:3339,1
    - Dst: auth_zone_clear_data
      Src: /src/unbound/daemon/remote.c:3343,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3344,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3346,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3348,1
    - Dst: xfr_find_soa
      Src: /src/unbound/daemon/remote.c:3356,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3358,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3359,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3360,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3363,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3364,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3365,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3372,1
    - Dst: auth_zone_verify_zonemd
      Src: /src/unbound/daemon/remote.c:3376,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3379,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3380,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3382,1
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:3384,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3386,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3388,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3389,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:3390,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 69
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3391
      start: 3307
    functionDepth: 5
    functionLinenumber: 3307
    functionLinenumberEnd: 3391
    functionName: do_auth_zone_reload
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - strcmp
    - auth_zone_find
    - lock_rw_wrlock
    - lock_rw_unlock
    - lock_basic_unlock
    - auth_zone_read_zonefile
    - free
    - auth_zone_verify_zonemd
    - xfr_find_soa
    - lock_basic_lock
    - ssl_printf
    - parse_arg_name
    - auth_xfer_find
    - lock_rw_rdlock
    - auth_zone_clear_data
    linkageType: ''
    returnType: void
    signature: void do_auth_zone_reload(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_arg_name
      Src: /src/unbound/daemon/remote.c:3401,1
    - Dst: auth_zones_startprobesequence
      Src: /src/unbound/daemon/remote.c:3403,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3405,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3406,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3409,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:3410,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3411
      start: 3394
    functionDepth: 5
    functionLinenumber: 3394
    functionLinenumberEnd: 3411
    functionName: do_auth_zone_transfer
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - auth_zones_startprobesequence
    - free
    - ssl_printf
    - parse_arg_name
    linkageType: ''
    returnType: void
    signature: void do_auth_zone_transfer(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: find_arg2
      Src: /src/unbound/daemon/remote.c:3418,1
    - Dst: config_set_option
      Src: /src/unbound/daemon/remote.c:3420,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3421,1
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:3425,1
    - Dst: modstack_find
      Src: /src/unbound/daemon/remote.c:3426,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:3432,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3433
      start: 3414
    functionDepth: 5
    functionLinenumber: 3414
    functionLinenumberEnd: 3433
    functionName: do_set_option
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - strcmp
    - config_set_option
    - find_arg2
    - ssl_printf
    - modstack_find
    linkageType: ''
    returnType: void
    signature: void do_set_option(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - line
    - arg
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3440
      start: 3436
    functionDepth: 4
    functionLinenumber: 3436
    functionLinenumberEnd: 3440
    functionName: remote_get_opt_ssl
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void remote_get_opt_ssl(char* line, void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_get_option
      Src: /src/unbound/daemon/remote.c:3447,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3449,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3452
      start: 3443
    functionDepth: 4
    functionLinenumber: 3443
    functionLinenumberEnd: 3452
    functionName: do_get_option
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - ssl_printf
    - config_get_option
    linkageType: ''
    returnType: void
    signature: void do_get_option(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:3463,1
    - Dst: anchor_find
      Src: /src/unbound/daemon/remote.c:3470,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3474,1
    - Dst: ssl_print_name_dp
      Src: /src/unbound/daemon/remote.c:3477,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3479,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3483,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3484
      start: 3455
    functionDepth: 5
    functionLinenumber: 3455
    functionLinenumberEnd: 3484
    functionName: do_list_forwards
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - anchor_find
    - lock_basic_unlock
    - lock_rw_unlock
    - lock_rw_rdlock
    - ssl_print_name_dp
    linkageType: ''
    returnType: void
    signature: void do_list_forwards(RES* ssl, struct worker* worker)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: anchor_find
      Src: /src/unbound/daemon/remote.c:3470,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3474,1
    - Dst: ssl_print_name_dp
      Src: /src/unbound/daemon/remote.c:3477,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3479,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 1
    argNames:
    - tree
    argTypes:
    - fwds
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3482
      start: 3464
    functionDepth: 5
    functionLinenumber: 3464
    functionLinenumberEnd: 3482
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_rw_unlock
    - anchor_find
    - ssl_print_name_dp
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct iter_forward_zone*, fwds->tree)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:3494,1
    - Dst: anchor_find
      Src: /src/unbound/daemon/remote.c:3500,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3504,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3507,1
    - Dst: ssl_print_name_dp
      Src: /src/unbound/daemon/remote.c:3509,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3511,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3515,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3516
      start: 3487
    functionDepth: 5
    functionLinenumber: 3487
    functionLinenumberEnd: 3516
    functionName: do_list_stubs
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - anchor_find
    - lock_basic_unlock
    - snprintf
    - lock_rw_unlock
    - lock_rw_rdlock
    - ssl_print_name_dp
    linkageType: ''
    returnType: void
    signature: void do_list_stubs(RES* ssl, struct worker* worker)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: anchor_find
      Src: /src/unbound/daemon/remote.c:3500,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3504,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3507,1
    - Dst: ssl_print_name_dp
      Src: /src/unbound/daemon/remote.c:3509,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3511,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - tree
    argTypes:
    - worker
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3514
      start: 3495
    functionDepth: 5
    functionLinenumber: 3495
    functionLinenumberEnd: 3514
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - anchor_find
    - lock_basic_unlock
    - lock_rw_unlock
    - snprintf
    - ssl_print_name_dp
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct iter_hints_stub*, &worker->env.hints->tree)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:3524,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:3526,1
    - Dst: dname_str
      Src: /src/unbound/daemon/remote.c:3527,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3529,1
    - Dst: auth_zone_get_serial
      Src: /src/unbound/daemon/remote.c:3532,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3533,1
    - Dst: localtime_r
      Src: /src/unbound/daemon/remote.c:3540,1
    - Dst: strftime
      Src: /src/unbound/daemon/remote.c:3542,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3543,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3544,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3549,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3557,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3561,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3562,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3564,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3568,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 2
    argNames:
    - ssl
    - az
    argTypes:
    - RES*
    - struct auth_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3569
      start: 3519
    functionDepth: 4
    functionLinenumber: 3519
    functionLinenumberEnd: 3569
    functionName: do_list_auth_zones
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - strftime
    - snprintf
    - lock_rw_unlock
    - dname_str
    - ssl_printf
    - localtime_r
    - lock_rw_rdlock
    - auth_zone_get_serial
    linkageType: ''
    returnType: void
    signature: void do_list_auth_zones(RES* ssl, struct auth_zones* az)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:3526,1
    - Dst: dname_str
      Src: /src/unbound/daemon/remote.c:3527,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3529,1
    - Dst: auth_zone_get_serial
      Src: /src/unbound/daemon/remote.c:3532,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3533,1
    - Dst: localtime_r
      Src: /src/unbound/daemon/remote.c:3540,1
    - Dst: strftime
      Src: /src/unbound/daemon/remote.c:3542,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3543,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3544,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3549,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:3557,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3561,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3562,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3564,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 1
    argNames:
    - ztree
    argTypes:
    - az
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3567
      start: 3525
    functionDepth: 4
    functionLinenumber: 3525
    functionLinenumberEnd: 3567
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - strftime
    - snprintf
    - lock_rw_unlock
    - dname_str
    - ssl_printf
    - localtime_r
    - lock_rw_rdlock
    - auth_zone_get_serial
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct auth_zone*, &az->ztree)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:3577,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:3579,1
    - Dst: dname_str
      Src: /src/unbound/daemon/remote.c:3580,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3581,1
    - Dst: local_zone_type2str
      Src: /src/unbound/daemon/remote.c:3582,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3584,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3585,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3588,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - ssl
    - zones
    argTypes:
    - RES*
    - struct local_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3591
      start: 3572
    functionDepth: 4
    functionLinenumber: 3572
    functionLinenumberEnd: 3591
    functionName: do_list_local_zones
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - local_zone_type2str
    - lock_rw_unlock
    - dname_str
    - ssl_printf
    - lock_rw_rdlock
    linkageType: ''
    returnType: void
    signature: void do_list_local_zones(RES* ssl, struct local_zones* zones)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:3579,1
    - Dst: dname_str
      Src: /src/unbound/daemon/remote.c:3580,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3581,1
    - Dst: local_zone_type2str
      Src: /src/unbound/daemon/remote.c:3582,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3584,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3585,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3588,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - ztree
    argTypes:
    - zones
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3589
      start: 3578
    functionDepth: 4
    functionLinenumber: 3578
    functionLinenumberEnd: 3589
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - local_zone_type2str
    - lock_rw_unlock
    - dname_str
    - ssl_printf
    - lock_rw_rdlock
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct local_zone*, &zones->ztree)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/remote.c:3600,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/daemon/remote.c:3601,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:3602,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:3604,1
    - Dst: packed_rr_to_string
      Src: /src/unbound/daemon/remote.c:3611,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3613,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3614,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3615,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3619,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3620,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3621,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3627,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3629,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 3
    argNames:
    - ssl
    - worker
    - zones
    argTypes:
    - RES*
    - struct worker*
    - struct local_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3630
      start: 3594
    functionDepth: 4
    functionLinenumber: 3594
    functionLinenumberEnd: 3630
    functionName: do_list_local_data
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - packed_rr_to_string
    - lock_rw_unlock
    - sldns_buffer_begin
    - ssl_printf
    - lock_rw_rdlock
    linkageType: ''
    returnType: void
    signature: void do_list_local_data(RES* ssl, struct worker* worker, struct local_zones*
      zones)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:3604,1
    - Dst: packed_rr_to_string
      Src: /src/unbound/daemon/remote.c:3611,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3613,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3614,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3615,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3619,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3620,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3621,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3627,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - ztree
    argTypes:
    - zones
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3628
      start: 3603
    functionDepth: 4
    functionLinenumber: 3603
    functionLinenumberEnd: 3628
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - lock_rw_unlock
    - lock_rw_rdlock
    - ssl_printf
    - packed_rr_to_string
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct local_zone*, &zones->ztree)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: packed_rr_to_string
      Src: /src/unbound/daemon/remote.c:3611,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3613,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3614,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3615,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3619,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3620,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3621,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - data
    argTypes:
    - z
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3626
      start: 3605
    functionDepth: 4
    functionLinenumber: 3605
    functionLinenumberEnd: 3626
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - lock_rw_unlock
    - ssl_printf
    - packed_rr_to_string
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(d, struct local_data*, &z->data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: views_find_view
      Src: /src/unbound/daemon/remote.c:3636,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3639,1
    - Dst: do_list_local_zones
      Src: /src/unbound/daemon/remote.c:3643,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3645,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3646
      start: 3633
    functionDepth: 5
    functionLinenumber: 3633
    functionLinenumberEnd: 3646
    functionName: do_view_list_local_zones
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - do_list_local_zones
    - views_find_view
    - lock_rw_unlock
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_view_list_local_zones(RES* ssl, struct worker* worker, char*
      arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: views_find_view
      Src: /src/unbound/daemon/remote.c:3652,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3655,1
    - Dst: do_list_local_data
      Src: /src/unbound/daemon/remote.c:3659,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3661,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3662
      start: 3649
    functionDepth: 5
    functionLinenumber: 3649
    functionLinenumberEnd: 3662
    functionName: do_view_list_local_data
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - do_list_local_data
    - views_find_view
    - lock_rw_unlock
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_view_list_local_data(RES* ssl, struct worker* worker, char*
      arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: infra_find_ratelimit
      Src: /src/unbound/daemon/remote.c:3688,1
    - Dst: infra_rate_max
      Src: /src/unbound/daemon/remote.c:3689,1
    - Dst: dname_str
      Src: /src/unbound/daemon/remote.c:3694,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3695,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - e
    - arg
    argTypes:
    - struct lruhash_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3696
      start: 3681
    functionDepth: 4
    functionLinenumber: 3681
    functionLinenumberEnd: 3696
    functionName: rate_list
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - infra_rate_max
    - infra_find_ratelimit
    - dname_str
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void rate_list(struct lruhash_entry* e, void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: infra_rate_max
      Src: /src/unbound/daemon/remote.c:3707,1
    - Dst: addr_to_str
      Src: /src/unbound/daemon/remote.c:3712,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3713,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - e
    - arg
    argTypes:
    - struct lruhash_entry*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3714
      start: 3699
    functionDepth: 4
    functionLinenumber: 3699
    functionLinenumberEnd: 3714
    functionName: ip_rate_list
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - infra_rate_max
    - addr_to_str
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void ip_rate_list(struct lruhash_entry* e, void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:3726,1
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:3727,1
    - Dst: slabhash_traverse
      Src: /src/unbound/daemon/remote.c:3732,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3733
      start: 3717
    functionDepth: 1
    functionLinenumber: 3717
    functionLinenumberEnd: 3733
    functionName: do_ratelimit_list
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - slabhash_traverse
    - skipwhite
    - strcmp
    linkageType: ''
    returnType: void
    signature: void do_ratelimit_list(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:3745,1
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:3746,1
    - Dst: slabhash_traverse
      Src: /src/unbound/daemon/remote.c:3751,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3752
      start: 3736
    functionDepth: 1
    functionLinenumber: 3736
    functionLinenumberEnd: 3752
    functionName: do_ip_ratelimit_list
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - slabhash_traverse
    - skipwhite
    - strcmp
    linkageType: ''
    returnType: void
    signature: void do_ip_ratelimit_list(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: parse_arg_name
      Src: /src/unbound/daemon/remote.c:3762,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:3765,1
    - Dst: auth_zone_find
      Src: /src/unbound/daemon/remote.c:3766,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:3768,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3770,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:3772,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3774,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3778,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3779,1
    - Dst: rpz_enable
      Src: /src/unbound/daemon/remote.c:3783,1
    - Dst: rpz_disable
      Src: /src/unbound/daemon/remote.c:3785,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:3787,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:3788,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 4
    argNames:
    - ssl
    - worker
    - arg
    - enable
    argTypes:
    - RES*
    - struct worker*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3789
      start: 3755
    functionDepth: 5
    functionLinenumber: 3755
    functionLinenumberEnd: 3789
    functionName: do_rpz_enable_disable
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - auth_zone_find
    - lock_rw_wrlock
    - lock_rw_unlock
    - free
    - rpz_enable
    - rpz_disable
    - ssl_printf
    - parse_arg_name
    - lock_rw_rdlock
    linkageType: ''
    returnType: void
    signature: void do_rpz_enable_disable(RES* ssl, struct worker* worker, char* arg,
      int enable)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: do_rpz_enable_disable
      Src: /src/unbound/daemon/remote.c:3795,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3796
      start: 3792
    functionDepth: 6
    functionLinenumber: 3792
    functionLinenumberEnd: 3796
    functionName: do_rpz_enable
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - do_rpz_enable_disable
    linkageType: ''
    returnType: void
    signature: void do_rpz_enable(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: do_rpz_enable_disable
      Src: /src/unbound/daemon/remote.c:3802,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3803
      start: 3799
    functionDepth: 6
    functionLinenumber: 3799
    functionLinenumberEnd: 3803
    functionName: do_rpz_disable
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - do_rpz_enable_disable
    linkageType: ''
    returnType: void
    signature: void do_rpz_disable(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3815,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:3818,1
    - Dst: fopen
      Src: /src/unbound/daemon/remote.c:3821,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3822,1
    - Dst: strerror
      Src: /src/unbound/daemon/remote.c:3823,1
    - Dst: fclose
      Src: /src/unbound/daemon/remote.c:3828,1
    - Dst: hex_ntop
      Src: /src/unbound/daemon/remote.c:3835,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:3839,1
    - Dst: fprintf
      Src: /src/unbound/daemon/remote.c:3841,1
    - Dst: explicit_bzero
      Src: /src/unbound/daemon/remote.c:3843,1
    - Dst: fclose
      Src: /src/unbound/daemon/remote.c:3844,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3846
      start: 3807
    functionDepth: 4
    functionLinenumber: 3807
    functionLinenumberEnd: 3846
    functionName: cookie_secret_file_dump
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - fclose
    - hex_ntop
    - explicit_bzero
    - fopen
    - log_assert
    - strerror
    - ssl_printf
    - fprintf
    linkageType: ''
    returnType: int
    signature: int cookie_secret_file_dump(RES* ssl, struct worker* worker)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3855,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3859,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:3862,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3865,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3866,1
    - Dst: cookie_secret_file_dump
      Src: /src/unbound/daemon/remote.c:3870,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3871,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3872,1
    - Dst: activate_cookie_secret
      Src: /src/unbound/daemon/remote.c:3876,1
    - Dst: cookie_secret_file_dump
      Src: /src/unbound/daemon/remote.c:3878,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3879,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:3880,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3881
      start: 3849
    functionDepth: 5
    functionLinenumber: 3849
    functionLinenumberEnd: 3881
    functionName: do_activate_cookie_secret
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - lock_basic_unlock
    - activate_cookie_secret
    - lock_basic_lock
    - ssl_printf
    - cookie_secret_file_dump
    linkageType: ''
    returnType: void
    signature: void do_activate_cookie_secret(RES* ssl, struct worker* worker)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3890,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3894,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:3897,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3900,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3901,1
    - Dst: cookie_secret_file_dump
      Src: /src/unbound/daemon/remote.c:3905,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3906,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3907,1
    - Dst: drop_cookie_secret
      Src: /src/unbound/daemon/remote.c:3911,1
    - Dst: cookie_secret_file_dump
      Src: /src/unbound/daemon/remote.c:3913,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3914,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:3915,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3916
      start: 3884
    functionDepth: 5
    functionLinenumber: 3884
    functionLinenumberEnd: 3916
    functionName: do_drop_cookie_secret
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - drop_cookie_secret
    - lock_basic_unlock
    - lock_basic_lock
    - ssl_printf
    - cookie_secret_file_dump
    linkageType: ''
    returnType: void
    signature: void do_drop_cookie_secret(RES* ssl, struct worker* worker)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3926,1
    - Dst: cookie_secrets_create
      Src: /src/unbound/daemon/remote.c:3930,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3932,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:3937,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3940,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3941,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:3944,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3945,1
    - Dst: explicit_bzero
      Src: /src/unbound/daemon/remote.c:3946,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:3946,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3947,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3948,1
    - Dst: hex_pton
      Src: /src/unbound/daemon/remote.c:3951,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3953,1
    - Dst: explicit_bzero
      Src: /src/unbound/daemon/remote.c:3954,1
    - Dst: explicit_bzero
      Src: /src/unbound/daemon/remote.c:3955,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:3955,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3956,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3957,1
    - Dst: cookie_secret_file_dump
      Src: /src/unbound/daemon/remote.c:3961,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3962,1
    - Dst: explicit_bzero
      Src: /src/unbound/daemon/remote.c:3963,1
    - Dst: explicit_bzero
      Src: /src/unbound/daemon/remote.c:3964,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:3964,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3965,1
    - Dst: add_cookie_secret
      Src: /src/unbound/daemon/remote.c:3969,1
    - Dst: explicit_bzero
      Src: /src/unbound/daemon/remote.c:3970,1
    - Dst: cookie_secret_file_dump
      Src: /src/unbound/daemon/remote.c:3972,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:3973,1
    - Dst: explicit_bzero
      Src: /src/unbound/daemon/remote.c:3974,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:3974,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:3975,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 3
    argNames:
    - ssl
    - worker
    - arg
    argTypes:
    - RES*
    - struct worker*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3976
      start: 3919
    functionDepth: 5
    functionLinenumber: 3919
    functionLinenumberEnd: 3976
    functionName: do_add_cookie_secret
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - send_ok
    - hex_pton
    - lock_basic_unlock
    - cookie_secrets_create
    - add_cookie_secret
    - explicit_bzero
    - lock_basic_lock
    - strlen
    - ssl_printf
    - cookie_secret_file_dump
    linkageType: ''
    returnType: void
    signature: void do_add_cookie_secret(RES* ssl, struct worker* worker, char* arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:3987,1
    - Dst: hex_ntop
      Src: /src/unbound/daemon/remote.c:3991,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:3995,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:3998,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:4000,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:4002,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:4005,1
    - Dst: explicit_bzero
      Src: /src/unbound/daemon/remote.c:4006,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - ssl
    - worker
    argTypes:
    - RES*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4007
      start: 3979
    functionDepth: 4
    functionLinenumber: 3979
    functionLinenumberEnd: 4007
    functionName: do_print_cookie_secrets
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - hex_ntop
    - explicit_bzero
    - log_assert
    - lock_basic_lock
    - ssl_printf
    linkageType: ''
    returnType: void
    signature: void do_print_cookie_secrets(RES* ssl, struct worker* worker)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:4017,1
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:4017,1
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:4018,1
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:4018,1
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:4019,1
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:4020,1
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:4021,1
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:4022,1
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:4023,1
    - Dst: strchr
      Src: /src/unbound/daemon/remote.c:4024,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:4026,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - ssl
    - cmd
    - p
    argTypes:
    - RES*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4031
      start: 4010
    functionDepth: 4
    functionLinenumber: 4010
    functionLinenumberEnd: 4031
    functionName: cmd_no_args
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - strchr
    - ssl_printf
    linkageType: ''
    returnType: int
    signature: int cmd_no_args(RES* ssl, char* cmd, char* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/unbound/daemon/remote.c:4037,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 3
    argNames:
    - p
    - cmd
    - len
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4038
      start: 4034
    functionDepth: 0
    functionLinenumber: 4034
    functionLinenumberEnd: 4038
    functionName: cmdcmp
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: int cmdcmp(char* p, const char* cmd, size_t len)
  - BBCount: 99
    BranchProfiles: []
    Callsites:
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4045,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4047,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4048,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4048,1
    - Dst: do_stop
      Src: /src/unbound/daemon/remote.c:4050,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4052,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4053,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4053,1
    - Dst: do_reload
      Src: /src/unbound/daemon/remote.c:4055,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4057,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4058,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4058,1
    - Dst: do_reload
      Src: /src/unbound/daemon/remote.c:4060,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4062,1
    - Dst: do_fast_reload
      Src: /src/unbound/daemon/remote.c:4063,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4063,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4065,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4066,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4066,1
    - Dst: do_stats
      Src: /src/unbound/daemon/remote.c:4068,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4070,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4071,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4071,1
    - Dst: do_stats
      Src: /src/unbound/daemon/remote.c:4073,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4075,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4076,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4076,1
    - Dst: do_status
      Src: /src/unbound/daemon/remote.c:4078,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4080,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4081,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4081,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:4085,1
    - Dst: dump_cache
      Src: /src/unbound/daemon/remote.c:4090,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4092,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4093,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4093,1
    - Dst: load_cache
      Src: /src/unbound/daemon/remote.c:4102,1
    - Dst: send_ok
      Src: /src/unbound/daemon/remote.c:4102,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4104,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4105,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4105,1
    - Dst: do_list_forwards
      Src: /src/unbound/daemon/remote.c:4107,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4109,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4110,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4110,1
    - Dst: do_list_stubs
      Src: /src/unbound/daemon/remote.c:4112,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4114,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4115,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4115,1
    - Dst: do_insecure_list
      Src: /src/unbound/daemon/remote.c:4117,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4119,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4120,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4120,1
    - Dst: do_list_local_zones
      Src: /src/unbound/daemon/remote.c:4122,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4124,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4125,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4125,1
    - Dst: do_list_local_data
      Src: /src/unbound/daemon/remote.c:4127,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4129,1
    - Dst: do_view_list_local_zones
      Src: /src/unbound/daemon/remote.c:4130,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4130,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4132,1
    - Dst: do_view_list_local_data
      Src: /src/unbound/daemon/remote.c:4133,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4133,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4135,1
    - Dst: do_ratelimit_list
      Src: /src/unbound/daemon/remote.c:4136,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4138,1
    - Dst: do_ip_ratelimit_list
      Src: /src/unbound/daemon/remote.c:4139,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4141,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4142,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4142,1
    - Dst: do_list_auth_zones
      Src: /src/unbound/daemon/remote.c:4144,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4146,1
    - Dst: do_auth_zone_reload
      Src: /src/unbound/daemon/remote.c:4147,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4147,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4149,1
    - Dst: do_auth_zone_transfer
      Src: /src/unbound/daemon/remote.c:4150,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4150,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4152,1
    - Dst: distribute_cmd
      Src: /src/unbound/daemon/remote.c:4154,1
    - Dst: do_insecure_add
      Src: /src/unbound/daemon/remote.c:4155,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4155,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4157,1
    - Dst: distribute_cmd
      Src: /src/unbound/daemon/remote.c:4159,1
    - Dst: do_insecure_remove
      Src: /src/unbound/daemon/remote.c:4160,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4160,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4162,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4164,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4164,1
    - Dst: distribute_cmd
      Src: /src/unbound/daemon/remote.c:4166,1
    - Dst: do_flush_stats
      Src: /src/unbound/daemon/remote.c:4167,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4169,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4171,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4171,1
    - Dst: distribute_cmd
      Src: /src/unbound/daemon/remote.c:4173,1
    - Dst: do_flush_requestlist
      Src: /src/unbound/daemon/remote.c:4174,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4176,1
    - Dst: do_cache_lookup
      Src: /src/unbound/daemon/remote.c:4177,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4177,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4179,1
    - Dst: do_lookup
      Src: /src/unbound/daemon/remote.c:4180,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4180,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4185,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4186,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4186,1
    - Dst: do_zones_remove
      Src: /src/unbound/daemon/remote.c:4188,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4190,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4191,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4191,1
    - Dst: do_zones_add
      Src: /src/unbound/daemon/remote.c:4193,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4195,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4196,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4196,1
    - Dst: do_datas_remove
      Src: /src/unbound/daemon/remote.c:4198,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4200,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4201,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4201,1
    - Dst: do_datas_add
      Src: /src/unbound/daemon/remote.c:4203,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4205,1
    - Dst: do_view_datas_remove
      Src: /src/unbound/daemon/remote.c:4206,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4206,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4208,1
    - Dst: do_view_datas_add
      Src: /src/unbound/daemon/remote.c:4209,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4209,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4211,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4212,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4212,1
    - Dst: do_print_cookie_secrets
      Src: /src/unbound/daemon/remote.c:4214,1
    - Dst: distribute_cmd
      Src: /src/unbound/daemon/remote.c:4223,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4226,1
    - Dst: do_verbosity
      Src: /src/unbound/daemon/remote.c:4227,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4227,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4228,1
    - Dst: do_zone_remove
      Src: /src/unbound/daemon/remote.c:4229,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4229,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4230,1
    - Dst: do_zone_add
      Src: /src/unbound/daemon/remote.c:4231,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4231,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4232,1
    - Dst: do_data_remove
      Src: /src/unbound/daemon/remote.c:4233,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4233,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4234,1
    - Dst: do_data_add
      Src: /src/unbound/daemon/remote.c:4235,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4235,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4236,1
    - Dst: do_forward_add
      Src: /src/unbound/daemon/remote.c:4237,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4237,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4238,1
    - Dst: do_forward_remove
      Src: /src/unbound/daemon/remote.c:4239,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4239,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4240,1
    - Dst: do_forward
      Src: /src/unbound/daemon/remote.c:4241,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4241,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4242,1
    - Dst: do_stub_add
      Src: /src/unbound/daemon/remote.c:4243,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4243,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4244,1
    - Dst: do_stub_remove
      Src: /src/unbound/daemon/remote.c:4245,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4245,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4246,1
    - Dst: do_view_zone_remove
      Src: /src/unbound/daemon/remote.c:4247,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4247,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4248,1
    - Dst: do_view_zone_add
      Src: /src/unbound/daemon/remote.c:4249,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4249,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4250,1
    - Dst: do_view_data_remove
      Src: /src/unbound/daemon/remote.c:4251,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4251,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4252,1
    - Dst: do_view_data_add
      Src: /src/unbound/daemon/remote.c:4253,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4253,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4254,1
    - Dst: do_flush_zone
      Src: /src/unbound/daemon/remote.c:4255,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4255,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4256,1
    - Dst: do_flush_type
      Src: /src/unbound/daemon/remote.c:4257,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4257,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4258,1
    - Dst: do_flush_infra
      Src: /src/unbound/daemon/remote.c:4259,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4259,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4260,1
    - Dst: do_flush_name
      Src: /src/unbound/daemon/remote.c:4261,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4261,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4262,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4263,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4263,1
    - Dst: do_dump_requestlist
      Src: /src/unbound/daemon/remote.c:4265,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4266,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4267,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4267,1
    - Dst: do_dump_infra
      Src: /src/unbound/daemon/remote.c:4269,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4270,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4271,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4271,1
    - Dst: do_log_reopen
      Src: /src/unbound/daemon/remote.c:4273,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4274,1
    - Dst: do_set_option
      Src: /src/unbound/daemon/remote.c:4275,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4275,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4276,1
    - Dst: do_get_option
      Src: /src/unbound/daemon/remote.c:4277,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4277,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4278,1
    - Dst: do_flush_bogus
      Src: /src/unbound/daemon/remote.c:4279,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4279,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4280,1
    - Dst: do_flush_negative
      Src: /src/unbound/daemon/remote.c:4281,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4281,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4282,1
    - Dst: do_rpz_enable
      Src: /src/unbound/daemon/remote.c:4283,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4283,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4284,1
    - Dst: do_rpz_disable
      Src: /src/unbound/daemon/remote.c:4285,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4285,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4286,1
    - Dst: do_add_cookie_secret
      Src: /src/unbound/daemon/remote.c:4287,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4287,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4288,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4289,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4289,1
    - Dst: do_drop_cookie_secret
      Src: /src/unbound/daemon/remote.c:4291,1
    - Dst: cmdcmp
      Src: /src/unbound/daemon/remote.c:4292,1
    - Dst: cmd_no_args
      Src: /src/unbound/daemon/remote.c:4293,1
    - Dst: skipwhite
      Src: /src/unbound/daemon/remote.c:4293,1
    - Dst: do_activate_cookie_secret
      Src: /src/unbound/daemon/remote.c:4295,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:4297,1
    CyclomaticComplexity: 98
    EdgeCount: 98
    ICount: 300
    argCount: 5
    argNames:
    - rc
    - s
    - ssl
    - cmd
    - worker
    argTypes:
    - struct daemon_remote*
    - struct rc_state*
    - RES*
    - char*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4299
      start: 4041
    functionDepth: 8
    functionLinenumber: 4041
    functionLinenumberEnd: 4299
    functionName: execute_cmd
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - do_cache_lookup
    - do_insecure_add
    - do_view_zone_remove
    - do_get_option
    - do_drop_cookie_secret
    - do_data_remove
    - do_forward_add
    - do_flush_infra
    - do_list_stubs
    - do_insecure_list
    - do_stop
    - do_forward
    - do_stub_add
    - do_lookup
    - do_status
    - distribute_cmd
    - do_list_forwards
    - do_list_local_zones
    - do_reload
    - do_datas_remove
    - do_set_option
    - do_view_list_local_data
    - dump_cache
    - do_ratelimit_list
    - do_stub_remove
    - ssl_printf
    - do_view_datas_remove
    - cmdcmp
    - do_rpz_enable
    - do_view_datas_add
    - do_view_data_remove
    - do_list_local_data
    - do_insecure_remove
    - do_dump_infra
    - do_log_reopen
    - do_stats
    - do_data_add
    - do_fast_reload
    - do_zones_add
    - do_flush_name
    - do_flush_bogus
    - do_zone_remove
    - do_ip_ratelimit_list
    - do_add_cookie_secret
    - do_flush_negative
    - do_flush_zone
    - do_print_cookie_secrets
    - do_forward_remove
    - do_rpz_disable
    - do_zone_add
    - do_auth_zone_reload
    - do_view_data_add
    - do_verbosity
    - do_view_list_local_zones
    - do_activate_cookie_secret
    - load_cache
    - do_auth_zone_transfer
    - do_zones_remove
    - send_ok
    - skipwhite
    - do_list_auth_zones
    - do_flush_requestlist
    - do_datas_add
    - do_flush_stats
    - do_flush_type
    - do_view_zone_add
    - do_dump_requestlist
    - cmd_no_args
    linkageType: ''
    returnType: void
    signature: "void execute_cmd(struct daemon_remote* rc, struct rc_state* s, RES*
      ssl, char* cmd,\n\tstruct worker* worker)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tube_read_msg
      Src: /src/unbound/daemon/remote.c:4307,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:4308,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:4311,1
    - Dst: execute_cmd
      Src: /src/unbound/daemon/remote.c:4312,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:4313,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4314
      start: 4301
    functionDepth: 9
    functionLinenumber: 4301
    functionLinenumberEnd: 4314
    functionName: daemon_remote_exec
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - log_err
    - verbose
    - execute_cmd
    - free
    - tube_read_msg
    linkageType: ''
    returnType: void
    signature: void daemon_remote_exec(struct worker* worker)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: WSAEventSelect
      Src: /src/unbound/daemon/remote.c:4327,1
    - Dst: fd_set_block
      Src: /src/unbound/daemon/remote.c:4329,1
    - Dst: ERR_clear_error
      Src: /src/unbound/daemon/remote.c:4333,1
    - Dst: SSL_read
      Src: /src/unbound/daemon/remote.c:4334,1
    - Dst: SSL_get_error
      Src: /src/unbound/daemon/remote.c:4336,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/daemon/remote.c:4338,1
    - Dst: recv
      Src: /src/unbound/daemon/remote.c:4343,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:4348,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:4348,1
    - Dst: strncmp
      Src: /src/unbound/daemon/remote.c:4356,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:4357,1
    - Dst: ssl_read_line
      Src: /src/unbound/daemon/remote.c:4363,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:4366,1
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:4367,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:4368,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:4370,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:4373,1
    - Dst: execute_cmd
      Src: /src/unbound/daemon/remote.c:4376,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 3
    argNames:
    - rc
    - s
    - res
    argTypes:
    - struct daemon_remote*
    - struct rc_state*
    - RES*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4377
      start: 4317
    functionDepth: 9
    functionLinenumber: 4317
    functionLinenumberEnd: 4377
    functionName: handle_req
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - log_err
    - strncmp
    - strcmp
    - log_crypto_err_io
    - verbose
    - ssl_read_line
    - snprintf
    - execute_cmd
    - SSL_read
    - sock_strerror
    - WSAEventSelect
    - ssl_printf
    - fd_set_block
    - recv
    - ERR_clear_error
    - SSL_get_error
    linkageType: ''
    returnType: void
    signature: void handle_req(struct daemon_remote* rc, struct rc_state* s, RES*
      res)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/daemon/remote.c:4390,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/daemon/remote.c:4398,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:4402,1
    - Dst: log_addr
      Src: /src/unbound/daemon/remote.c:4403,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/daemon/remote.c:4405,1
    - Dst: clean_point
      Src: /src/unbound/daemon/remote.c:4406,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 5
    argNames:
    - rc
    - s
    - c
    - r
    - r2
    argTypes:
    - struct daemon_remote*
    - struct rc_state*
    - struct comm_point*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4409
      start: 4380
    functionDepth: 2
    functionLinenumber: 4380
    functionLinenumberEnd: 4409
    functionName: remote_handshake_later
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - log_err
    - comm_point_listen_for_rw
    - log_crypto_err_io
    - clean_point
    - log_addr
    linkageType: ''
    returnType: int
    signature: "int remote_handshake_later(struct daemon_remote* rc, struct rc_state*
      s,\n\tstruct comm_point* c, int r, int r2)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:4420,1
    - Dst: clean_point
      Src: /src/unbound/daemon/remote.c:4421,1
    - Dst: ERR_clear_error
      Src: /src/unbound/daemon/remote.c:4426,1
    - Dst: SSL_do_handshake
      Src: /src/unbound/daemon/remote.c:4427,1
    - Dst: SSL_get_error
      Src: /src/unbound/daemon/remote.c:4429,1
    - Dst: remote_handshake_later
      Src: /src/unbound/daemon/remote.c:4430,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:4437,1
    - Dst: SSL_get_verify_result
      Src: /src/unbound/daemon/remote.c:4438,1
    - Dst: SSL_get1_peer_certificate
      Src: /src/unbound/daemon/remote.c:4440,1
    - Dst: SSL_get_peer_certificate
      Src: /src/unbound/daemon/remote.c:4442,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:4445,1
    - Dst: clean_point
      Src: /src/unbound/daemon/remote.c:4447,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:4450,1
    - Dst: X509_free
      Src: /src/unbound/daemon/remote.c:4451,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:4453,1
    - Dst: clean_point
      Src: /src/unbound/daemon/remote.c:4455,1
    - Dst: handle_req
      Src: /src/unbound/daemon/remote.c:4462,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:4464,1
    - Dst: clean_point
      Src: /src/unbound/daemon/remote.c:4465,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 4
    argNames:
    - c
    - arg
    - err
    - ATTR_UNUSED(rep)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4467
      start: 4411
    functionDepth: 10
    functionLinenumber: 4411
    functionLinenumberEnd: 4467
    functionName: remote_control_callback
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - remote_handshake_later
    - log_err
    - handle_req
    - verbose
    - clean_point
    - SSL_do_handshake
    - SSL_get_peer_certificate
    - X509_free
    - SSL_get_verify_result
    - SSL_get1_peer_certificate
    - ERR_clear_error
    - SSL_get_error
    linkageType: ''
    returnType: int
    signature: "int remote_control_callback(struct comm_point* c, void* arg, int err,\n\tstruct
      comm_reply* ATTR_UNUSED(rep))"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:4485,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:4490,1
    - Dst: memset
      Src: /src/unbound/daemon/remote.c:4501,1
    - Dst: poll
      Src: /src/unbound/daemon/remote.c:4514,1
    - Dst: Sleep
      Src: /src/unbound/daemon/remote.c:4517,1
    - Dst: WSAPoll
      Src: /src/unbound/daemon/remote.c:4520,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:4538,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:4538,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 48
    argCount: 5
    argNames:
    - fd
    - timeout
    - pollin
    - pollout
    - event
    argTypes:
    - int
    - int
    - int
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4553
      start: 4480
    functionDepth: 1
    functionLinenumber: 4480
    functionLinenumberEnd: 4553
    functionName: sock_poll_timeout
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - log_err
    - poll
    - log_assert
    - sock_strerror
    - memset
    - Sleep
    - WSAPoll
    linkageType: ''
    returnType: int
    signature: int sock_poll_timeout(int fd, int timeout, int pollin, int pollout,
      int* event)
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 1
    argNames:
    - status
    argTypes:
    - enum fast_reload_notification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4584
      start: 4556
    functionDepth: 0
    functionLinenumber: 4556
    functionLinenumberEnd: 4584
    functionName: fr_notification_to_string
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      fr_notification_to_string(enum fast_reload_notification status)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sock_poll_timeout
      Src: /src/unbound/daemon/remote.c:4598,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:4599,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:4608,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:4609,1
    - Dst: recv
      Src: /src/unbound/daemon/remote.c:4612,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:4622,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:4623,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:4624,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:4628,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:4629,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:4640,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:4643,1
    - Dst: fr_notification_to_string
      Src: /src/unbound/daemon/remote.c:4644,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 35
    argCount: 1
    argNames:
    - fr
    argTypes:
    - struct fast_reload_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4646
      start: 4588
    functionDepth: 2
    functionLinenumber: 4588
    functionLinenumberEnd: 4646
    functionName: fr_poll_for_quit
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - log_err
    - verbose
    - sock_poll_timeout
    - WSAGetLastError
    - sock_strerror
    - fr_notification_to_string
    - recv
    linkageType: ''
    returnType: int
    signature: int fr_poll_for_quit(struct fast_reload_thread* fr)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:4656,1
    - Dst: fr_notification_to_string
      Src: /src/unbound/daemon/remote.c:4657,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:4661,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:4666,1
    - Dst: sock_poll_timeout
      Src: /src/unbound/daemon/remote.c:4670,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:4672,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:4675,1
    - Dst: send
      Src: /src/unbound/daemon/remote.c:4679,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:4689,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:4690,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:4691,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:4695,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:4696,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 32
    argCount: 2
    argNames:
    - fr
    - status
    argTypes:
    - struct fast_reload_thread*
    - enum fast_reload_notification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4705
      start: 4649
    functionDepth: 3
    functionLinenumber: 4649
    functionLinenumberEnd: 4705
    functionName: fr_send_notification
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - log_err
    - fr_poll_for_quit
    - verbose
    - sock_poll_timeout
    - WSAGetLastError
    - fr_notification_to_string
    - sock_strerror
    - send
    linkageType: ''
    returnType: void
    signature: "void fr_send_notification(struct fast_reload_thread* fr,\n\tenum fast_reload_notification
      status)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/unbound/daemon/remote.c:4711,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:4713,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:4716,1
    - Dst: cfg_strlist_append
      Src: /src/unbound/daemon/remote.c:4717,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:4718,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:4720,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:4723,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - fr
    - msg
    argTypes:
    - struct fast_reload_thread*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4725
      start: 4708
    functionDepth: 1
    functionLinenumber: 4708
    functionLinenumberEnd: 4725
    functionName: fr_output_text
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - log_err
    - cfg_strlist_append
    - lock_basic_unlock
    - lock_basic_lock
    - strdup
    linkageType: ''
    returnType: int
    signature: int fr_output_text(struct fast_reload_thread* fr, const char* msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: vsnprintf
      Src: /src/unbound/daemon/remote.c:4732,1
    - Dst: fr_output_text
      Src: /src/unbound/daemon/remote.c:4733,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - fr
    - format
    - args
    argTypes:
    - struct fast_reload_thread*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4734
      start: 4728
    functionDepth: 2
    functionLinenumber: 4728
    functionLinenumberEnd: 4734
    functionName: fr_output_vmsg
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - vsnprintf
    - fr_output_text
    linkageType: ''
    returnType: int
    signature: int fr_output_vmsg(struct fast_reload_thread* fr, const char* format,
      va_list args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/daemon/remote.c:4748,1
    - Dst: fr_output_vmsg
      Src: /src/unbound/daemon/remote.c:4749,1
    - Dst: va_end
      Src: /src/unbound/daemon/remote.c:4750,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - fr
    - format
    argTypes:
    - struct fast_reload_thread*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4752
      start: 4743
    functionDepth: 3
    functionLinenumber: 4743
    functionLinenumberEnd: 4752
    functionName: fr_output_printf
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - va_end
    - fr_output_vmsg
    - va_start
    linkageType: ''
    returnType: int
    signature: int fr_output_printf(struct fast_reload_thread* fr, const char* format,
      ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/daemon/remote.c:4760,1
    - Dst: memset
      Src: /src/unbound/daemon/remote.c:4761,1
    - Dst: memset
      Src: /src/unbound/daemon/remote.c:4762,1
    - Dst: memset
      Src: /src/unbound/daemon/remote.c:4763,1
    - Dst: memset
      Src: /src/unbound/daemon/remote.c:4764,1
    - Dst: gettimeofday
      Src: /src/unbound/daemon/remote.c:4765,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:4766,1
    - Dst: strerror
      Src: /src/unbound/daemon/remote.c:4766,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 5
    argNames:
    - time_start
    - time_read
    - time_construct
    - time_reload
    - time_end
    argTypes:
    - struct timeval*
    - struct timeval*
    - struct timeval*
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4767
      start: 4755
    functionDepth: 1
    functionLinenumber: 4755
    functionLinenumberEnd: 4767
    functionName: fr_init_time
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - memset
    - strerror
    - gettimeofday
    - log_err
    linkageType: ''
    returnType: void
    signature: "void fr_init_time(struct timeval* time_start, struct timeval* time_read,\n\tstruct
      timeval* time_construct, struct timeval* time_reload,\n\tstruct timeval* time_end)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: config_create
      Src: /src/unbound/daemon/remote.c:4856,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:4858,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:4860,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:4863,1
    - Dst: config_read
      Src: /src/unbound/daemon/remote.c:4867,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:4869,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:4870,1
    - Dst: strerror
      Src: /src/unbound/daemon/remote.c:4874,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:4876,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:4879,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:4882,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:4888,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - fr
    - newcfg
    argTypes:
    - struct fast_reload_thread*
    - struct config_file**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4892
      start: 4852
    functionDepth: 4
    functionLinenumber: 4852
    functionLinenumberEnd: 4892
    functionName: fr_read_config
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - fr_poll_for_quit
    - config_create
    - fr_output_printf
    - fr_send_notification
    - strerror
    - config_delete
    - config_read
    linkageType: ''
    returnType: int
    signature: int fr_read_config(struct fast_reload_thread* fr, struct config_file**
      newcfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:4903,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - tagname_a
    - num_tags_a
    - tagname_b
    - num_tags_b
    argTypes:
    - char**
    - int
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4907
      start: 4895
    functionDepth: 0
    functionLinenumber: 4895
    functionLinenumberEnd: 4907
    functionName: taglist_equal
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: "int taglist_equal(char** tagname_a, int num_tags_a, char** tagname_b,\n\tint
      num_tags_b)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: taglist_equal
      Src: /src/unbound/daemon/remote.c:4920,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 4
    argNames:
    - tagname_a
    - num_tags_a
    - tagname_b
    - num_tags_b
    argTypes:
    - char**
    - int
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4923
      start: 4910
    functionDepth: 1
    functionLinenumber: 4910
    functionLinenumberEnd: 4923
    functionName: taglist_change_at_end
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - taglist_equal
    linkageType: ''
    returnType: int
    signature: "int taglist_change_at_end(char** tagname_a, int num_tags_a, char**
      tagname_b,\n\tint num_tags_b)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: taglist_equal
      Src: /src/unbound/daemon/remote.c:4934,1
    - Dst: taglist_change_at_end
      Src: /src/unbound/daemon/remote.c:4937,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:4945,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:4949,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - fr
    - newcfg
    argTypes:
    - struct fast_reload_thread*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4952
      start: 4926
    functionDepth: 4
    functionLinenumber: 4926
    functionLinenumberEnd: 4952
    functionName: fr_check_tag_defines
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - fr_output_printf
    - taglist_equal
    - taglist_change_at_end
    - fr_send_notification
    linkageType: ''
    returnType: int
    signature: int fr_check_tag_defines(struct fast_reload_thread* fr, struct config_file*
      newcfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:4958,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:4959,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:4961,1
    - Dst: snprintf
      Src: /src/unbound/daemon/remote.c:4966,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - desc
    - str
    - len
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4967
      start: 4955
    functionDepth: 1
    functionLinenumber: 4955
    functionLinenumberEnd: 4967
    functionName: fr_add_incompatible_option
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - snprintf
    - strlen
    linkageType: ''
    returnType: void
    signature: void fr_add_incompatible_option(const char* desc, char* str, size_t
      len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - desc
    - ','
    - var
    - ','
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4976
      start: 4970
    functionDepth: 0
    functionLinenumber: 4970
    functionLinenumberEnd: 4976
    functionName: FR_CHECK_CHANGED_CFG
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FR_CHECK_CHANGED_CFG(desc, var, str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - desc
    - ','
    - var
    - ','
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4987
      start: 4978
    functionDepth: 0
    functionLinenumber: 4978
    functionLinenumberEnd: 4987
    functionName: FR_CHECK_CHANGED_CFG_STR
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FR_CHECK_CHANGED_CFG_STR(desc, var, str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - desc
    - ','
    - var
    - ','
    - str
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4993
      start: 4989
    functionDepth: 0
    functionLinenumber: 4989
    functionLinenumberEnd: 4993
    functionName: FR_CHECK_CHANGED_CFG_STRLIST
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FR_CHECK_CHANGED_CFG_STRLIST(desc, var, str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:5001,1
    - Dst: fr_add_incompatible_option
      Src: /src/unbound/daemon/remote.c:5003,1
    - Dst: fr_add_incompatible_option
      Src: /src/unbound/daemon/remote.c:5010,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 12
    argCount: 5
    argNames:
    - cmp1
    - cmp2
    - desc
    - str
    - len
    argTypes:
    - struct config_strlist*
    - struct config_strlist*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5012
      start: 4993
    functionDepth: 2
    functionLinenumber: 4993
    functionLinenumberEnd: 5012
    functionName: fr_check_changed_cfg_strlist
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - fr_add_incompatible_option
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void fr_check_changed_cfg_strlist(struct config_strlist* cmp1,\n\tstruct
      config_strlist* cmp2, const char* desc, char* str, size_t len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - desc
    - ','
    - var
    - ','
    - buff
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5019
      start: 5015
    functionDepth: 0
    functionLinenumber: 5015
    functionLinenumberEnd: 5019
    functionName: FR_CHECK_CHANGED_CFG_STR2LIST
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FR_CHECK_CHANGED_CFG_STR2LIST(desc, var, buff)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:5027,1
    - Dst: fr_add_incompatible_option
      Src: /src/unbound/daemon/remote.c:5029,1
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:5035,1
    - Dst: fr_add_incompatible_option
      Src: /src/unbound/daemon/remote.c:5037,1
    - Dst: fr_add_incompatible_option
      Src: /src/unbound/daemon/remote.c:5044,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 16
    argCount: 5
    argNames:
    - cmp1
    - cmp2
    - desc
    - str
    - len
    argTypes:
    - struct config_str2list*
    - struct config_str2list*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5046
      start: 5019
    functionDepth: 2
    functionLinenumber: 5019
    functionLinenumberEnd: 5046
    functionName: fr_check_changed_cfg_str2list
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - fr_add_incompatible_option
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void fr_check_changed_cfg_str2list(struct config_str2list* cmp1,\n\tstruct
      config_str2list* cmp2, const char* desc, char* str, size_t len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - desc
    - ','
    - var
    - ','
    - buff
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5053
      start: 5049
    functionDepth: 0
    functionLinenumber: 5049
    functionLinenumberEnd: 5053
    functionName: FR_CHECK_CHANGED_CFG_STR3LIST
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FR_CHECK_CHANGED_CFG_STR3LIST(desc, var, buff)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:5061,1
    - Dst: fr_add_incompatible_option
      Src: /src/unbound/daemon/remote.c:5063,1
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:5069,1
    - Dst: fr_add_incompatible_option
      Src: /src/unbound/daemon/remote.c:5071,1
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:5077,1
    - Dst: fr_add_incompatible_option
      Src: /src/unbound/daemon/remote.c:5079,1
    - Dst: fr_add_incompatible_option
      Src: /src/unbound/daemon/remote.c:5086,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 20
    argCount: 5
    argNames:
    - cmp1
    - cmp2
    - desc
    - str
    - len
    argTypes:
    - struct config_str3list*
    - struct config_str3list*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5088
      start: 5053
    functionDepth: 2
    functionLinenumber: 5053
    functionLinenumberEnd: 5088
    functionName: fr_check_changed_cfg_str3list
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - fr_add_incompatible_option
    - strcmp
    linkageType: ''
    returnType: void
    signature: "void fr_check_changed_cfg_str3list(struct config_str3list* cmp1,\n\tstruct
      config_str3list* cmp2, const char* desc, char* str, size_t len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FR_CHECK_CHANGED_CFG_STR3LIST
      Src: /src/unbound/daemon/remote.c:5099,1
    - Dst: FR_CHECK_CHANGED_CFG_STR3LIST
      Src: /src/unbound/daemon/remote.c:5100,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:5107,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:5111,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - fr
    - newcfg
    argTypes:
    - struct fast_reload_thread*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5114
      start: 5091
    functionDepth: 4
    functionLinenumber: 5091
    functionLinenumberEnd: 5114
    functionName: fr_check_tag_datas
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - fr_output_printf
    - FR_CHECK_CHANGED_CFG_STR3LIST
    - fr_send_notification
    linkageType: ''
    returnType: int
    signature: int fr_check_tag_datas(struct fast_reload_thread* fr, struct config_file*
      newcfg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5126,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5127,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5128,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5129,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5130,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5131,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5134,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5135,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5136,1
    - Dst: FR_CHECK_CHANGED_CFG_STR
      Src: /src/unbound/daemon/remote.c:5139,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5142,1
    - Dst: FR_CHECK_CHANGED_CFG_STR
      Src: /src/unbound/daemon/remote.c:5145,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5148,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5149,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5150,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5151,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5152,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5153,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5154,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5155,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5156,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5157,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5158,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5161,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5162,1
    - Dst: FR_CHECK_CHANGED_CFG_STR
      Src: /src/unbound/daemon/remote.c:5163,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5164,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5165,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5166,1
    - Dst: FR_CHECK_CHANGED_CFG_STR
      Src: /src/unbound/daemon/remote.c:5167,1
    - Dst: FR_CHECK_CHANGED_CFG_STRLIST
      Src: /src/unbound/daemon/remote.c:5168,1
    - Dst: FR_CHECK_CHANGED_CFG_STRLIST
      Src: /src/unbound/daemon/remote.c:5169,1
    - Dst: FR_CHECK_CHANGED_CFG_STR
      Src: /src/unbound/daemon/remote.c:5170,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5171,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:5176,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:5179,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:5181,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 49
    argCount: 2
    argNames:
    - fr
    - newcfg
    argTypes:
    - struct fast_reload_thread*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5185
      start: 5117
    functionDepth: 4
    functionLinenumber: 5117
    functionLinenumberEnd: 5185
    functionName: fr_check_compat_cfg
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - FR_CHECK_CHANGED_CFG
    - FR_CHECK_CHANGED_CFG_STRLIST
    - fr_output_printf
    - fr_send_notification
    - FR_CHECK_CHANGED_CFG_STR
    linkageType: ''
    returnType: int
    signature: int fr_check_compat_cfg(struct fast_reload_thread* fr, struct config_file*
      newcfg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5198,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5199,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5200,1
    - Dst: FR_CHECK_CHANGED_CFG_STR
      Src: /src/unbound/daemon/remote.c:5201,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5202,1
    - Dst: FR_CHECK_CHANGED_CFG_STRLIST
      Src: /src/unbound/daemon/remote.c:5203,1
    - Dst: FR_CHECK_CHANGED_CFG_STRLIST
      Src: /src/unbound/daemon/remote.c:5204,1
    - Dst: FR_CHECK_CHANGED_CFG_STRLIST
      Src: /src/unbound/daemon/remote.c:5205,1
    - Dst: FR_CHECK_CHANGED_CFG_STRLIST
      Src: /src/unbound/daemon/remote.c:5206,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5207,1
    - Dst: FR_CHECK_CHANGED_CFG_STR
      Src: /src/unbound/daemon/remote.c:5208,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5211,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5212,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5213,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5214,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5215,1
    - Dst: FR_CHECK_CHANGED_CFG_STR
      Src: /src/unbound/daemon/remote.c:5216,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5220,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5221,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5222,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5223,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5224,1
    - Dst: FR_CHECK_CHANGED_CFG_STR2LIST
      Src: /src/unbound/daemon/remote.c:5225,1
    - Dst: FR_CHECK_CHANGED_CFG_STR2LIST
      Src: /src/unbound/daemon/remote.c:5226,1
    - Dst: FR_CHECK_CHANGED_CFG_STR2LIST
      Src: /src/unbound/daemon/remote.c:5227,1
    - Dst: FR_CHECK_CHANGED_CFG_STR2LIST
      Src: /src/unbound/daemon/remote.c:5228,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5231,1
    - Dst: FR_CHECK_CHANGED_CFG
      Src: /src/unbound/daemon/remote.c:5232,1
    - Dst: FR_CHECK_CHANGED_CFG_STR
      Src: /src/unbound/daemon/remote.c:5233,1
    - Dst: FR_CHECK_CHANGED_CFG_STR
      Src: /src/unbound/daemon/remote.c:5234,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:5239,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:5242,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:5244,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 41
    argCount: 2
    argNames:
    - fr
    - newcfg
    argTypes:
    - struct fast_reload_thread*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5248
      start: 5188
    functionDepth: 4
    functionLinenumber: 5188
    functionLinenumberEnd: 5248
    functionName: fr_check_nopause_compat_cfg
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - FR_CHECK_CHANGED_CFG
    - FR_CHECK_CHANGED_CFG_STRLIST
    - fr_output_printf
    - fr_send_notification
    - FR_CHECK_CHANGED_CFG_STR
    - FR_CHECK_CHANGED_CFG_STR2LIST
    linkageType: ''
    returnType: int
    signature: int fr_check_nopause_compat_cfg(struct fast_reload_thread* fr, struct
      config_file* newcfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_zones_delete
      Src: /src/unbound/daemon/remote.c:5256,1
    - Dst: forwards_delete
      Src: /src/unbound/daemon/remote.c:5257,1
    - Dst: hints_delete
      Src: /src/unbound/daemon/remote.c:5258,1
    - Dst: respip_set_delete
      Src: /src/unbound/daemon/remote.c:5259,1
    - Dst: local_zones_delete
      Src: /src/unbound/daemon/remote.c:5260,1
    - Dst: acl_list_delete
      Src: /src/unbound/daemon/remote.c:5261,1
    - Dst: acl_list_delete
      Src: /src/unbound/daemon/remote.c:5262,1
    - Dst: tcl_list_delete
      Src: /src/unbound/daemon/remote.c:5263,1
    - Dst: edns_strings_delete
      Src: /src/unbound/daemon/remote.c:5264,1
    - Dst: anchors_delete
      Src: /src/unbound/daemon/remote.c:5265,1
    - Dst: views_delete
      Src: /src/unbound/daemon/remote.c:5266,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:5267,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:5268,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:5269,1
    - Dst: donotq_delete
      Src: /src/unbound/daemon/remote.c:5270,1
    - Dst: priv_delete
      Src: /src/unbound/daemon/remote.c:5271,1
    - Dst: caps_white_delete
      Src: /src/unbound/daemon/remote.c:5272,1
    - Dst: wait_limits_free
      Src: /src/unbound/daemon/remote.c:5273,1
    - Dst: wait_limits_free
      Src: /src/unbound/daemon/remote.c:5274,1
    - Dst: domain_limits_free
      Src: /src/unbound/daemon/remote.c:5275,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/daemon/remote.c:5280,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/daemon/remote.c:5281,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/daemon/remote.c:5282,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/daemon/remote.c:5285,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:5287,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:5288,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:5292,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:5295,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 34
    argCount: 1
    argNames:
    - ct
    argTypes:
    - struct fast_reload_construct*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5296
      start: 5251
    functionDepth: 2
    functionLinenumber: 5251
    functionLinenumberEnd: 5296
    functionName: fr_construct_clear
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - SSL_CTX_free
    - respip_set_delete
    - views_delete
    - local_zones_delete
    - anchors_delete
    - edns_strings_delete
    - free
    - forwards_delete
    - wait_limits_free
    - donotq_delete
    - domain_limits_free
    - caps_white_delete
    - config_delete
    - priv_delete
    - tcl_list_delete
    - auth_zones_delete
    - acl_list_delete
    - hints_delete
    linkageType: ''
    returnType: void
    signature: void fr_construct_clear(struct fast_reload_construct* ct)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5305,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct config_strlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5307
      start: 5299
    functionDepth: 1
    functionLinenumber: 5299
    functionLinenumberEnd: 5307
    functionName: getmem_config_strlist
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - getmem_str
    linkageType: ''
    returnType: size_t
    signature: size_t getmem_config_strlist(struct config_strlist* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5316,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5316,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct config_str2list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5318
      start: 5310
    functionDepth: 1
    functionLinenumber: 5310
    functionLinenumberEnd: 5318
    functionName: getmem_config_str2list
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - getmem_str
    linkageType: ''
    returnType: size_t
    signature: size_t getmem_config_str2list(struct config_str2list* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5327,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5327,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5328,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct config_str3list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5330
      start: 5321
    functionDepth: 1
    functionLinenumber: 5321
    functionLinenumberEnd: 5330
    functionName: getmem_config_str3list
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - getmem_str
    linkageType: ''
    returnType: size_t
    signature: size_t getmem_config_str3list(struct config_str3list* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct config_strbytelist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5341
      start: 5333
    functionDepth: 1
    functionLinenumber: 5333
    functionLinenumberEnd: 5341
    functionName: getmem_config_strbytelist
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - getmem_str
    linkageType: ''
    returnType: size_t
    signature: size_t getmem_config_strbytelist(struct config_strbytelist* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - numifs
    - ifs
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5353
      start: 5344
    functionDepth: 1
    functionLinenumber: 5344
    functionLinenumberEnd: 5353
    functionName: getmem_ifs
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - getmem_str
    linkageType: ''
    returnType: size_t
    signature: size_t getmem_ifs(int numifs, char** ifs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5362,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5363,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5364,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct config_stub*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5366
      start: 5356
    functionDepth: 2
    functionLinenumber: 5356
    functionLinenumberEnd: 5366
    functionName: getmem_config_stub
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - getmem_config_strlist
    - getmem_str
    linkageType: ''
    returnType: size_t
    signature: size_t getmem_config_stub(struct config_stub* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5375,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5376,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5377,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5378,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5379,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5381,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5382,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5383,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct config_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5385
      start: 5369
    functionDepth: 2
    functionLinenumber: 5369
    functionLinenumberEnd: 5385
    functionName: getmem_config_auth
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - getmem_config_strlist
    - getmem_str
    linkageType: ''
    returnType: size_t
    signature: size_t getmem_config_auth(struct config_auth* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5394,1
    - Dst: getmem_config_str2list
      Src: /src/unbound/daemon/remote.c:5395,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5396,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5397,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5399,1
    - Dst: getmem_config_str2list
      Src: /src/unbound/daemon/remote.c:5401,1
    - Dst: getmem_config_str2list
      Src: /src/unbound/daemon/remote.c:5402,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct config_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5405
      start: 5388
    functionDepth: 2
    functionLinenumber: 5388
    functionLinenumberEnd: 5405
    functionName: getmem_config_view
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - getmem_config_str2list
    - getmem_config_strlist
    - getmem_str
    linkageType: ''
    returnType: size_t
    signature: size_t getmem_config_view(struct config_view* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5413,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5414,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5415,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5416,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5417,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5418,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5419,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5420,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5421,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5422,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5424,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5425,1
    - Dst: getmem_ifs
      Src: /src/unbound/daemon/remote.c:5426,1
    - Dst: getmem_ifs
      Src: /src/unbound/daemon/remote.c:5427,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5428,1
    - Dst: getmem_config_stub
      Src: /src/unbound/daemon/remote.c:5429,1
    - Dst: getmem_config_stub
      Src: /src/unbound/daemon/remote.c:5430,1
    - Dst: getmem_config_auth
      Src: /src/unbound/daemon/remote.c:5431,1
    - Dst: getmem_config_view
      Src: /src/unbound/daemon/remote.c:5432,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5433,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5435,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5436,1
    - Dst: getmem_config_str2list
      Src: /src/unbound/daemon/remote.c:5438,1
    - Dst: getmem_config_str2list
      Src: /src/unbound/daemon/remote.c:5439,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5440,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5441,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5442,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5443,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5444,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5445,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5446,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5447,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5448,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5449,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5450,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5451,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5452,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5454,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5455,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5456,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5457,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5458,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5459,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5460,1
    - Dst: getmem_config_str2list
      Src: /src/unbound/daemon/remote.c:5461,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5462,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5464,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5466,1
    - Dst: getmem_config_str3list
      Src: /src/unbound/daemon/remote.c:5467,1
    - Dst: getmem_config_strbytelist
      Src: /src/unbound/daemon/remote.c:5468,1
    - Dst: getmem_config_strbytelist
      Src: /src/unbound/daemon/remote.c:5469,1
    - Dst: getmem_config_str3list
      Src: /src/unbound/daemon/remote.c:5470,1
    - Dst: getmem_config_str3list
      Src: /src/unbound/daemon/remote.c:5471,1
    - Dst: getmem_config_str2list
      Src: /src/unbound/daemon/remote.c:5472,1
    - Dst: getmem_config_str2list
      Src: /src/unbound/daemon/remote.c:5473,1
    - Dst: getmem_config_strbytelist
      Src: /src/unbound/daemon/remote.c:5474,1
    - Dst: getmem_config_str3list
      Src: /src/unbound/daemon/remote.c:5475,1
    - Dst: getmem_config_str3list
      Src: /src/unbound/daemon/remote.c:5476,1
    - Dst: getmem_config_str2list
      Src: /src/unbound/daemon/remote.c:5477,1
    - Dst: getmem_config_strbytelist
      Src: /src/unbound/daemon/remote.c:5478,1
    - Dst: getmem_config_str2list
      Src: /src/unbound/daemon/remote.c:5479,1
    - Dst: getmem_config_str2list
      Src: /src/unbound/daemon/remote.c:5480,1
    - Dst: getmem_ifs
      Src: /src/unbound/daemon/remote.c:5481,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5482,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5483,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5484,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5485,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5486,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5487,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5488,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5489,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5490,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5491,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5492,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5493,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5494,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5495,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5496,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5497,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5498,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5499,1
    - Dst: getmem_config_str2list
      Src: /src/unbound/daemon/remote.c:5500,1
    - Dst: getmem_config_str2list
      Src: /src/unbound/daemon/remote.c:5501,1
    - Dst: getmem_config_str2list
      Src: /src/unbound/daemon/remote.c:5502,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5503,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5504,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5505,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5506,1
    - Dst: getmem_config_strlist
      Src: /src/unbound/daemon/remote.c:5508,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5509,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5512,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5513,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5515,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5516,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5517,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5518,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5519,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5520,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5524,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5525,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 105
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5528
      start: 5408
    functionDepth: 3
    functionLinenumber: 5408
    functionLinenumberEnd: 5528
    functionName: config_file_getmem
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - getmem_config_auth
    - getmem_config_stub
    - getmem_config_strlist
    - getmem_str
    - getmem_config_strbytelist
    - getmem_config_view
    - getmem_ifs
    - getmem_config_str2list
    - getmem_config_str3list
    linkageType: ''
    returnType: size_t
    signature: size_t config_file_getmem(struct config_file* cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:5536,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5538,1
    - Dst: getmem_str
      Src: /src/unbound/daemon/remote.c:5539,1
    - Dst: views_get_mem
      Src: /src/unbound/daemon/remote.c:5540,1
    - Dst: respip_set_get_mem
      Src: /src/unbound/daemon/remote.c:5541,1
    - Dst: auth_zones_get_mem
      Src: /src/unbound/daemon/remote.c:5542,1
    - Dst: forwards_get_mem
      Src: /src/unbound/daemon/remote.c:5543,1
    - Dst: hints_get_mem
      Src: /src/unbound/daemon/remote.c:5544,1
    - Dst: local_zones_get_mem
      Src: /src/unbound/daemon/remote.c:5545,1
    - Dst: acl_list_get_mem
      Src: /src/unbound/daemon/remote.c:5546,1
    - Dst: acl_list_get_mem
      Src: /src/unbound/daemon/remote.c:5547,1
    - Dst: tcl_list_get_mem
      Src: /src/unbound/daemon/remote.c:5548,1
    - Dst: edns_strings_get_mem
      Src: /src/unbound/daemon/remote.c:5549,1
    - Dst: anchors_get_mem
      Src: /src/unbound/daemon/remote.c:5550,1
    - Dst: config_file_getmem
      Src: /src/unbound/daemon/remote.c:5552,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:5554,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:5556,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 3
    argNames:
    - fr
    - newcfg
    - ct
    argTypes:
    - struct fast_reload_thread*
    - struct config_file*
    - struct fast_reload_construct*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5559
      start: 5531
    functionDepth: 4
    functionLinenumber: 5531
    functionLinenumberEnd: 5559
    functionName: fr_printmem
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - acl_list_get_mem
    - respip_set_get_mem
    - fr_poll_for_quit
    - edns_strings_get_mem
    - forwards_get_mem
    - tcl_list_get_mem
    - views_get_mem
    - local_zones_get_mem
    - fr_output_printf
    - auth_zones_get_mem
    - getmem_str
    - hints_get_mem
    - fr_send_notification
    - anchors_get_mem
    - config_file_getmem
    linkageType: ''
    returnType: int
    signature: "int fr_printmem(struct fast_reload_thread* fr,\n\tstruct config_file*
      newcfg, struct fast_reload_construct* ct)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: acl_interface_init
      Src: /src/unbound/daemon/remote.c:5568,1
    - Dst: setup_acl_for_ports
      Src: /src/unbound/daemon/remote.c:5569,1
    - Dst: setup_acl_for_ports
      Src: /src/unbound/daemon/remote.c:5574,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - acl_interface
    - daemon
    argTypes:
    - struct acl_list*
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5580
      start: 5563
    functionDepth: 2
    functionLinenumber: 5563
    functionLinenumberEnd: 5580
    functionName: ct_acl_interface_setup_ports
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - acl_interface_init
    - setup_acl_for_ports
    linkageType: ''
    returnType: int
    signature: "int ct_acl_interface_setup_ports(struct acl_list* acl_interface,\n\tstruct
      daemon* daemon)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/daemon/remote.c:5588,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:5590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 6
    argNames:
    - fr
    - old_z
    - new_z
    - is_deleted
    - is_added
    - is_changed
    argTypes:
    - struct fast_reload_thread*
    - struct auth_zone*
    - struct auth_zone*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5602
      start: 5583
    functionDepth: 1
    functionLinenumber: 5583
    functionLinenumberEnd: 5602
    functionName: fr_add_auth_zone_change
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - log_err
    - calloc
    linkageType: ''
    returnType: int
    signature: "int fr_add_auth_zone_change(struct fast_reload_thread* fr, struct
      auth_zone* old_z,\n\tstruct auth_zone* new_z, int is_deleted, int is_added,
      int is_changed)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:5615,1
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:5620,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 24
    argCount: 2
    argNames:
    - m1
    - m2
    argTypes:
    - struct auth_master*
    - struct auth_master*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5634
      start: 5605
    functionDepth: 0
    functionLinenumber: 5605
    functionLinenumberEnd: 5634
    functionName: xfr_auth_master_equal
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int xfr_auth_master_equal(struct auth_master* m1, struct auth_master*
      m2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: xfr_auth_master_equal
      Src: /src/unbound/daemon/remote.c:5642,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - list1
    - list2
    argTypes:
    - struct auth_master*
    - struct auth_master*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5650
      start: 5637
    functionDepth: 1
    functionLinenumber: 5637
    functionLinenumberEnd: 5650
    functionName: xfr_masterlist_equal
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - xfr_auth_master_equal
    linkageType: ''
    returnType: int
    signature: int xfr_masterlist_equal(struct auth_master* list1, struct auth_master*
      list2)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 12
    argCount: 2
    argNames:
    - xfr1
    - xfr2
    argTypes:
    - struct auth_xfer*
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5667
      start: 5653
    functionDepth: 0
    functionLinenumber: 5653
    functionLinenumberEnd: 5667
    functionName: xfr_config_equal
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int xfr_config_equal(struct auth_xfer* xfr1, struct auth_xfer* xfr2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: xfr_masterlist_equal
      Src: /src/unbound/daemon/remote.c:5679,1
    - Dst: xfr_masterlist_equal
      Src: /src/unbound/daemon/remote.c:5681,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 10
    argCount: 2
    argNames:
    - xfr1
    - xfr2
    argTypes:
    - struct auth_xfer*
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5685
      start: 5670
    functionDepth: 2
    functionLinenumber: 5670
    functionLinenumberEnd: 5685
    functionName: xfr_masters_equal
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - xfr_masterlist_equal
    linkageType: ''
    returnType: int
    signature: int xfr_masters_equal(struct auth_xfer* xfr1, struct auth_xfer* xfr2)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:5699,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:5703,1
    - Dst: auth_zone_find
      Src: /src/unbound/daemon/remote.c:5705,1
    - Dst: fr_add_auth_zone_change
      Src: /src/unbound/daemon/remote.c:5709,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5711,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5712,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5717,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:5721,1
    - Dst: auth_zone_find
      Src: /src/unbound/daemon/remote.c:5722,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5726,1
    - Dst: fr_add_auth_zone_change
      Src: /src/unbound/daemon/remote.c:5727,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5729,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:5736,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:5737,1
    - Dst: auth_xfer_find
      Src: /src/unbound/daemon/remote.c:5738,1
    - Dst: auth_xfer_find
      Src: /src/unbound/daemon/remote.c:5740,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:5743,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:5746,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5748,1
    - Dst: auth_zone_get_serial
      Src: /src/unbound/daemon/remote.c:5753,1
    - Dst: auth_zone_get_serial
      Src: /src/unbound/daemon/remote.c:5755,1
    - Dst: xfr_masters_equal
      Src: /src/unbound/daemon/remote.c:5779,1
    - Dst: xfr_config_equal
      Src: /src/unbound/daemon/remote.c:5780,1
    - Dst: fr_add_auth_zone_change
      Src: /src/unbound/daemon/remote.c:5783,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5785,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5786,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5787,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:5789,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:5792,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:5799,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:5802,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5804,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5805,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5809,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 62
    argCount: 2
    argNames:
    - fr
    - ct
    argTypes:
    - struct fast_reload_thread*
    - struct fast_reload_construct*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5811
      start: 5688
    functionDepth: 3
    functionLinenumber: 5688
    functionLinenumberEnd: 5811
    functionName: auth_zones_check_changes
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - auth_zone_find
    - xfr_masters_equal
    - lock_rw_unlock
    - lock_basic_unlock
    - xfr_config_equal
    - fr_add_auth_zone_change
    - lock_basic_lock
    - auth_xfer_find
    - lock_rw_rdlock
    - auth_zone_get_serial
    linkageType: ''
    returnType: int
    signature: "int auth_zones_check_changes(struct fast_reload_thread* fr,\n\tstruct
      fast_reload_construct* ct)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_zone_find
      Src: /src/unbound/daemon/remote.c:5705,1
    - Dst: fr_add_auth_zone_change
      Src: /src/unbound/daemon/remote.c:5709,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5711,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5712,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - ztree
    argTypes:
    - env
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5716
      start: 5704
    functionDepth: 2
    functionLinenumber: 5704
    functionLinenumberEnd: 5716
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - auth_zone_find
    - lock_rw_unlock
    - fr_add_auth_zone_change
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(old_z, struct auth_zone*, &env->auth_zones->ztree)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:5721,1
    - Dst: auth_zone_find
      Src: /src/unbound/daemon/remote.c:5722,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5726,1
    - Dst: fr_add_auth_zone_change
      Src: /src/unbound/daemon/remote.c:5727,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5729,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:5736,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:5737,1
    - Dst: auth_xfer_find
      Src: /src/unbound/daemon/remote.c:5738,1
    - Dst: auth_xfer_find
      Src: /src/unbound/daemon/remote.c:5740,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:5743,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:5746,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5748,1
    - Dst: auth_zone_get_serial
      Src: /src/unbound/daemon/remote.c:5753,1
    - Dst: auth_zone_get_serial
      Src: /src/unbound/daemon/remote.c:5755,1
    - Dst: xfr_masters_equal
      Src: /src/unbound/daemon/remote.c:5779,1
    - Dst: xfr_config_equal
      Src: /src/unbound/daemon/remote.c:5780,1
    - Dst: fr_add_auth_zone_change
      Src: /src/unbound/daemon/remote.c:5783,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5785,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5786,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5787,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:5789,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:5792,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:5799,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:5802,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5804,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:5805,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 1
    argNames:
    - ztree
    argTypes:
    - ct
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5807
      start: 5720
    functionDepth: 3
    functionLinenumber: 5720
    functionLinenumberEnd: 5807
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - auth_zone_find
    - xfr_masters_equal
    - lock_rw_unlock
    - lock_basic_unlock
    - xfr_config_equal
    - fr_add_auth_zone_change
    - lock_basic_lock
    - auth_xfer_find
    - lock_rw_rdlock
    - auth_zone_get_serial
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(new_z, struct auth_zone*, &ct->auth_zones->ztree)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ssl_cert_changed
      Src: /src/unbound/daemon/remote.c:5822,1
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:5831,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 13
    argCount: 2
    argNames:
    - fr
    - newcfg
    argTypes:
    - struct fast_reload_thread*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5838
      start: 5814
    functionDepth: 1
    functionLinenumber: 5814
    functionLinenumberEnd: 5838
    functionName: fr_check_sslctx_change
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - strcmp
    - ssl_cert_changed
    linkageType: ''
    returnType: int
    signature: "int fr_check_sslctx_change(struct fast_reload_thread* fr,\n\tstruct
      config_file* newcfg)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: daemon_setup_connect_dot_sslctx
      Src: /src/unbound/daemon/remote.c:5852,1
    - Dst: strncmp
      Src: /src/unbound/daemon/remote.c:5859,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:5859,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:5860,1
    - Dst: strncmp
      Src: /src/unbound/daemon/remote.c:5861,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:5861,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:5862,1
    - Dst: daemon_setup_listen_dot_sslctx
      Src: /src/unbound/daemon/remote.c:5864,1
    - Dst: cfg_has_https
      Src: /src/unbound/daemon/remote.c:5868,1
    - Dst: daemon_setup_listen_doh_sslctx
      Src: /src/unbound/daemon/remote.c:5869,1
    - Dst: cfg_has_quic
      Src: /src/unbound/daemon/remote.c:5876,1
    - Dst: daemon_setup_listen_quic_sslctx
      Src: /src/unbound/daemon/remote.c:5877,1
    - Dst: daemon_setup_connect_dot_sslctx
      Src: /src/unbound/daemon/remote.c:5883,1
    - Dst: strdup
      Src: /src/unbound/daemon/remote.c:5889,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:5891,1
    - Dst: strdup
      Src: /src/unbound/daemon/remote.c:5894,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:5896,1
    - Dst: file_get_mtime
      Src: /src/unbound/daemon/remote.c:5899,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:5901,1
    - Dst: strerror
      Src: /src/unbound/daemon/remote.c:5902,1
    - Dst: file_get_mtime
      Src: /src/unbound/daemon/remote.c:5903,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:5905,1
    - Dst: strerror
      Src: /src/unbound/daemon/remote.c:5906,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 45
    argCount: 3
    argNames:
    - ct
    - newcfg
    - daemon
    argTypes:
    - struct fast_reload_construct*
    - struct config_file*
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5911
      start: 5841
    functionDepth: 1
    functionLinenumber: 5841
    functionLinenumberEnd: 5911
    functionName: ct_create_sslctxs
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - log_err
    - strncmp
    - daemon_setup_connect_dot_sslctx
    - strdup
    - daemon_setup_listen_quic_sslctx
    - file_get_mtime
    - daemon_setup_listen_doh_sslctx
    - cfg_has_quic
    - daemon_setup_listen_dot_sslctx
    - strerror
    - strlen
    - cfg_has_https
    linkageType: ''
    returnType: int
    signature: "int ct_create_sslctxs(struct fast_reload_construct* ct,\n\tstruct
      config_file* newcfg, struct daemon* daemon)"
  - BBCount: 60
    BranchProfiles: []
    Callsites:
    - Dst: fr_check_sslctx_change
      Src: /src/unbound/daemon/remote.c:5920,1
    - Dst: ct_create_sslctxs
      Src: /src/unbound/daemon/remote.c:5922,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:5923,1
    - Dst: views_create
      Src: /src/unbound/daemon/remote.c:5927,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:5928,1
    - Dst: views_apply_cfg
      Src: /src/unbound/daemon/remote.c:5931,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:5932,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:5935,1
    - Dst: acl_list_create
      Src: /src/unbound/daemon/remote.c:5938,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:5939,1
    - Dst: acl_list_apply_cfg
      Src: /src/unbound/daemon/remote.c:5942,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:5943,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:5946,1
    - Dst: acl_list_create
      Src: /src/unbound/daemon/remote.c:5949,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:5950,1
    - Dst: ct_acl_interface_setup_ports
      Src: /src/unbound/daemon/remote.c:5953,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:5955,1
    - Dst: acl_interface_apply_cfg
      Src: /src/unbound/daemon/remote.c:5958,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:5959,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:5962,1
    - Dst: tcl_list_create
      Src: /src/unbound/daemon/remote.c:5965,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:5966,1
    - Dst: tcl_list_apply_cfg
      Src: /src/unbound/daemon/remote.c:5969,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:5970,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:5976,1
    - Dst: auth_zones_create
      Src: /src/unbound/daemon/remote.c:5979,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:5980,1
    - Dst: auth_zones_apply_cfg
      Src: /src/unbound/daemon/remote.c:5983,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:5985,1
    - Dst: auth_zones_check_changes
      Src: /src/unbound/daemon/remote.c:5988,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:5989,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:5992,1
    - Dst: forwards_create
      Src: /src/unbound/daemon/remote.c:5995,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:5996,1
    - Dst: forwards_apply_cfg
      Src: /src/unbound/daemon/remote.c:5999,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6000,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:6003,1
    - Dst: hints_create
      Src: /src/unbound/daemon/remote.c:6006,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6007,1
    - Dst: hints_apply_cfg
      Src: /src/unbound/daemon/remote.c:6010,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6011,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:6014,1
    - Dst: local_zones_create
      Src: /src/unbound/daemon/remote.c:6017,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6018,1
    - Dst: local_zones_apply_cfg
      Src: /src/unbound/daemon/remote.c:6021,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6022,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:6025,1
    - Dst: respip_set_create
      Src: /src/unbound/daemon/remote.c:6028,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6029,1
    - Dst: respip_global_apply_cfg
      Src: /src/unbound/daemon/remote.c:6032,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6033,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:6036,1
    - Dst: respip_views_apply_cfg
      Src: /src/unbound/daemon/remote.c:6038,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6039,1
    - Dst: respip_set_is_empty
      Src: /src/unbound/daemon/remote.c:6042,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:6044,1
    - Dst: edns_strings_create
      Src: /src/unbound/daemon/remote.c:6047,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6048,1
    - Dst: edns_strings_apply_cfg
      Src: /src/unbound/daemon/remote.c:6051,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6052,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:6055,1
    - Dst: anchors_create
      Src: /src/unbound/daemon/remote.c:6060,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6061,1
    - Dst: anchors_apply_cfg
      Src: /src/unbound/daemon/remote.c:6064,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6065,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:6068,1
    - Dst: val_env_parse_key_iter
      Src: /src/unbound/daemon/remote.c:6072,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6075,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:6078,1
    - Dst: read_fetch_policy
      Src: /src/unbound/daemon/remote.c:6081,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6083,1
    - Dst: donotq_create
      Src: /src/unbound/daemon/remote.c:6086,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6087,1
    - Dst: donotq_apply_cfg
      Src: /src/unbound/daemon/remote.c:6090,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6091,1
    - Dst: priv_create
      Src: /src/unbound/daemon/remote.c:6094,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6095,1
    - Dst: priv_apply_cfg
      Src: /src/unbound/daemon/remote.c:6098,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6099,1
    - Dst: caps_white_create
      Src: /src/unbound/daemon/remote.c:6103,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6104,1
    - Dst: caps_white_apply_cfg
      Src: /src/unbound/daemon/remote.c:6107,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6108,1
    - Dst: nat64_apply_cfg
      Src: /src/unbound/daemon/remote.c:6112,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6113,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:6116,1
    - Dst: setup_wait_limits
      Src: /src/unbound/daemon/remote.c:6119,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6121,1
    - Dst: setup_domain_limits
      Src: /src/unbound/daemon/remote.c:6124,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6125,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:6128,1
    - Dst: calloc
      Src: /src/unbound/daemon/remote.c:6131,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:6133,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:6134,1
    - Dst: fr_printmem
      Src: /src/unbound/daemon/remote.c:6138,1
    CyclomaticComplexity: 60
    EdgeCount: 60
    ICount: 200
    argCount: 3
    argNames:
    - fr
    - newcfg
    - ct
    argTypes:
    - struct fast_reload_thread*
    - struct config_file*
    - struct fast_reload_construct*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6142
      start: 5914
    functionDepth: 6
    functionLinenumber: 5914
    functionLinenumberEnd: 6142
    functionName: fr_construct_from_config
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - ct_create_sslctxs
    - auth_zones_check_changes
    - donotq_apply_cfg
    - read_fetch_policy
    - local_zones_create
    - donotq_create
    - auth_zones_apply_cfg
    - auth_zones_create
    - setup_domain_limits
    - forwards_apply_cfg
    - priv_apply_cfg
    - nat64_apply_cfg
    - acl_list_apply_cfg
    - fr_printmem
    - log_err
    - views_apply_cfg
    - fr_construct_clear
    - acl_list_create
    - respip_set_create
    - ct_acl_interface_setup_ports
    - tcl_list_create
    - views_create
    - respip_global_apply_cfg
    - priv_create
    - setup_wait_limits
    - calloc
    - local_zones_apply_cfg
    - anchors_apply_cfg
    - hints_create
    - respip_set_is_empty
    - anchors_create
    - val_env_parse_key_iter
    - respip_views_apply_cfg
    - fr_poll_for_quit
    - edns_strings_apply_cfg
    - hints_apply_cfg
    - tcl_list_apply_cfg
    - caps_white_apply_cfg
    - forwards_create
    - edns_strings_create
    - acl_interface_apply_cfg
    - caps_white_create
    - fr_check_sslctx_change
    linkageType: ''
    returnType: int
    signature: "int fr_construct_from_config(struct fast_reload_thread* fr,\n\tstruct
      config_file* newcfg, struct fast_reload_construct* ct)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/unbound/daemon/remote.c:6151,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:6152,1
    - Dst: strerror
      Src: /src/unbound/daemon/remote.c:6152,1
    - Dst: timeval_subtract
      Src: /src/unbound/daemon/remote.c:6154,1
    - Dst: timeval_subtract
      Src: /src/unbound/daemon/remote.c:6155,1
    - Dst: timeval_subtract
      Src: /src/unbound/daemon/remote.c:6156,1
    - Dst: timeval_subtract
      Src: /src/unbound/daemon/remote.c:6157,1
    - Dst: timeval_subtract
      Src: /src/unbound/daemon/remote.c:6158,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:6159,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:6162,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:6165,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:6168,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:6171,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:6174,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 6
    argNames:
    - fr
    - time_start
    - time_read
    - time_construct
    - time_reload
    - time_end
    argTypes:
    - struct fast_reload_thread*
    - struct timeval*
    - struct timeval*
    - struct timeval*
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6176
      start: 6145
    functionDepth: 4
    functionLinenumber: 6145
    functionLinenumberEnd: 6176
    functionName: fr_finish_time
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - log_err
    - fr_output_printf
    - timeval_subtract
    - fr_send_notification
    - strerror
    - gettimeofday
    linkageType: ''
    returnType: int
    signature: "int fr_finish_time(struct fast_reload_thread* fr, struct timeval*
      time_start,\n\tstruct timeval* time_read, struct timeval* time_construct,\n\tstruct
      timeval* time_reload, struct timeval* time_end)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - az
    - data
    argTypes:
    - struct auth_zones*
    - struct auth_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6202
      start: 6179
    functionDepth: 0
    functionLinenumber: 6179
    functionLinenumberEnd: 6202
    functionName: auth_zones_swap
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void auth_zones_swap(struct auth_zones* az, struct auth_zones* data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void**
    - void**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6211
      start: 6205
    functionDepth: 0
    functionLinenumber: 6205
    functionLinenumberEnd: 6211
    functionName: void_ptr_swap
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void void_ptr_swap(void** a, void **b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6220
      start: 6214
    functionDepth: 0
    functionLinenumber: 6214
    functionLinenumberEnd: 6220
    functionName: char_ptr_swap
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void char_ptr_swap(char** a, char **b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: void_ptr_swap
      Src: /src/unbound/daemon/remote.c:6226,1
    - Dst: void_ptr_swap
      Src: /src/unbound/daemon/remote.c:6227,1
    - Dst: void_ptr_swap
      Src: /src/unbound/daemon/remote.c:6229,1
    - Dst: void_ptr_swap
      Src: /src/unbound/daemon/remote.c:6232,1
    - Dst: char_ptr_swap
      Src: /src/unbound/daemon/remote.c:6234,1
    - Dst: char_ptr_swap
      Src: /src/unbound/daemon/remote.c:6235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - daemon
    - ct
    argTypes:
    - struct daemon*
    - struct fast_reload_construct*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6240
      start: 6223
    functionDepth: 1
    functionLinenumber: 6223
    functionLinenumberEnd: 6240
    functionName: sslctxs_swap
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - void_ptr_swap
    - char_ptr_swap
    linkageType: ''
    returnType: void
    signature: void sslctxs_swap(struct daemon* daemon, struct fast_reload_construct*
      ct)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6264,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6265,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6266,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6267,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6268,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6269,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6270,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6271,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6272,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6273,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6274,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6275,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6276,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6277,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6278,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6279,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6280,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6281,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6282,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6283,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6284,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6285,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6286,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6287,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6288,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6289,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6290,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6291,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6292,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6293,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6294,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6295,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6296,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6299,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6300,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6301,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6302,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6303,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6304,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6305,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6306,1
    - Dst: COPY_VAR_uint32_t
      Src: /src/unbound/daemon/remote.c:6307,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6308,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6309,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6310,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6311,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6312,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6313,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6314,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6315,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6316,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6317,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6318,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6319,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6320,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6321,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6322,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6323,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6324,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6325,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6326,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6327,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6328,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6329,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6330,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6331,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6332,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6333,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6334,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6335,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6336,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6337,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6338,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6339,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6340,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6341,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6342,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6343,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6347,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6348,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6349,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6350,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6351,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6352,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6354,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6355,1
    - Dst: COPY_VAR_uint16_t
      Src: /src/unbound/daemon/remote.c:6356,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6357,1
    - Dst: COPY_VAR_uint8_t
      Src: /src/unbound/daemon/remote.c:6358,1
    - Dst: COPY_VAR_uint8_t
      Src: /src/unbound/daemon/remote.c:6359,1
    - Dst: COPY_VAR_uint8_t
      Src: /src/unbound/daemon/remote.c:6360,1
    - Dst: COPY_VAR_uint8_t
      Src: /src/unbound/daemon/remote.c:6361,1
    - Dst: COPY_VAR_uint32_t
      Src: /src/unbound/daemon/remote.c:6362,1
    - Dst: COPY_VAR_uint32_t
      Src: /src/unbound/daemon/remote.c:6363,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6365,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6366,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6367,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6368,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6369,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6370,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6371,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6372,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6373,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6374,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6375,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6376,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6377,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6378,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6379,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6380,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6381,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6382,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6383,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6384,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6385,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6386,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6387,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6388,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6389,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6390,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6391,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6392,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6393,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6394,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6395,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6396,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6397,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6398,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6399,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6400,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6401,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6402,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6403,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6404,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6405,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6406,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6407,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6408,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6409,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6410,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6411,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6416,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6417,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6418,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6419,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6420,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6421,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6422,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6423,1
    - Dst: COPY_VAR_int32_t
      Src: /src/unbound/daemon/remote.c:6424,1
    - Dst: COPY_VAR_int32_t
      Src: /src/unbound/daemon/remote.c:6425,1
    - Dst: COPY_VAR_int32_t
      Src: /src/unbound/daemon/remote.c:6426,1
    - Dst: COPY_VAR_int32_t
      Src: /src/unbound/daemon/remote.c:6427,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6428,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6429,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6430,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6431,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6432,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6433,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6434,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6435,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6436,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6437,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6438,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6439,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6440,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6441,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6442,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6443,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6444,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6445,1
    - Dst: COPY_VAR_unsigned_int
      Src: /src/unbound/daemon/remote.c:6446,1
    - Dst: COPY_VAR_unsigned_int
      Src: /src/unbound/daemon/remote.c:6447,1
    - Dst: COPY_VAR_unsigned_int
      Src: /src/unbound/daemon/remote.c:6448,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6449,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6450,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6451,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6452,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6453,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6454,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6456,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6458,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6459,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6460,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6461,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6462,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6469,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6470,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6476,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6480,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6481,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6486,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6489,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6490,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6491,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6492,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6493,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6494,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6495,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6496,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6497,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6498,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6499,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6500,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6501,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6502,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6503,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6504,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6505,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6506,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6507,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6508,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6509,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6510,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6511,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6512,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6513,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6514,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6515,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6516,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6517,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6518,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6519,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6520,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6521,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6522,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6523,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6524,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6525,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6526,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6527,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6528,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6529,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6530,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6531,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6532,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6533,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6534,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6535,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6536,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6537,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6538,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6539,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6540,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6541,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6542,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6543,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6544,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6545,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6546,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6547,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6548,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6549,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6550,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6551,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6552,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6553,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6554,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6555,1
    - Dst: COPY_VAR_uint16_t
      Src: /src/unbound/daemon/remote.c:6556,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6557,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6558,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6559,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6560,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6561,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6562,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6563,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6564,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6565,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6566,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6567,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6568,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6569,1
    - Dst: COPY_VAR_size_t
      Src: /src/unbound/daemon/remote.c:6570,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6572,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6573,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6574,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6575,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6576,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6577,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6580,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6581,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6582,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6583,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6585,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6586,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6587,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6588,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6589,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6590,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6591,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6592,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6593,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6594,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6595,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6596,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6597,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6598,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6599,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6600,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6601,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6604,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6609,1
    - Dst: COPY_VAR_ptr
      Src: /src/unbound/daemon/remote.c:6610,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6612,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6613,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6614,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6615,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6616,1
    - Dst: COPY_VAR_int
      Src: /src/unbound/daemon/remote.c:6617,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 311
    argCount: 3
    argNames:
    - oldcfg
    - cfg
    - newcfg
    argTypes:
    - struct config_file*
    - struct config_file*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6627
      start: 6245
    functionDepth: 1
    functionLinenumber: 6245
    functionLinenumberEnd: 6627
    functionName: fr_atomic_copy_cfg
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - COPY_VAR_ptr
    - COPY_VAR_unsigned_int
    - COPY_VAR_uint16_t
    - COPY_VAR_int
    - COPY_VAR_uint8_t
    - COPY_VAR_uint32_t
    - COPY_VAR_int32_t
    - COPY_VAR_size_t
    linkageType: ''
    returnType: void
    signature: "void fr_atomic_copy_cfg(struct config_file* oldcfg, struct config_file*
      cfg,\n\tstruct config_file* newcfg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6250
      start: 6249
    functionDepth: 0
    functionLinenumber: 6249
    functionLinenumberEnd: 6250
    functionName: COPY_VAR_int
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPY_VAR_int(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6251
      start: 6250
    functionDepth: 0
    functionLinenumber: 6250
    functionLinenumberEnd: 6251
    functionName: COPY_VAR_ptr
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPY_VAR_ptr(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6252
      start: 6251
    functionDepth: 0
    functionLinenumber: 6251
    functionLinenumberEnd: 6252
    functionName: COPY_VAR_unsigned_int
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPY_VAR_unsigned_int(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6253
      start: 6252
    functionDepth: 0
    functionLinenumber: 6252
    functionLinenumberEnd: 6253
    functionName: COPY_VAR_size_t
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPY_VAR_size_t(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6254
      start: 6253
    functionDepth: 0
    functionLinenumber: 6253
    functionLinenumberEnd: 6254
    functionName: COPY_VAR_uint8_t
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPY_VAR_uint8_t(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6255
      start: 6254
    functionDepth: 0
    functionLinenumber: 6254
    functionLinenumberEnd: 6255
    functionName: COPY_VAR_uint16_t
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPY_VAR_uint16_t(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6256
      start: 6255
    functionDepth: 0
    functionLinenumber: 6255
    functionLinenumberEnd: 6256
    functionName: COPY_VAR_uint32_t
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPY_VAR_uint32_t(var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6257
      start: 6256
    functionDepth: 0
    functionLinenumber: 6256
    functionLinenumberEnd: 6257
    functionName: COPY_VAR_int32_t
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COPY_VAR_int32_t(var)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: slabhash_adjust_size
      Src: /src/unbound/daemon/remote.c:6635,1
    - Dst: slabhash_adjust_size
      Src: /src/unbound/daemon/remote.c:6637,1
    - Dst: slabhash_adjust_size
      Src: /src/unbound/daemon/remote.c:6641,1
    - Dst: slabhash_adjust_size
      Src: /src/unbound/daemon/remote.c:6647,1
    - Dst: slabhash_adjust_size
      Src: /src/unbound/daemon/remote.c:6650,1
    - Dst: slabhash_adjust_size
      Src: /src/unbound/daemon/remote.c:6652,1
    - Dst: val_neg_adjust_size
      Src: /src/unbound/daemon/remote.c:6657,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 2
    argNames:
    - env
    - oldcfg
    argTypes:
    - struct module_env*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6659
      start: 6631
    functionDepth: 1
    functionLinenumber: 6631
    functionLinenumberEnd: 6659
    functionName: fr_adjust_cache
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - slabhash_adjust_size
    - val_neg_adjust_size
    linkageType: ''
    returnType: void
    signature: void fr_adjust_cache(struct module_env* env, struct config_file* oldcfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: modstack_find
      Src: /src/unbound/daemon/remote.c:6675,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - env
    - ct
    argTypes:
    - struct module_env*
    - struct fast_reload_construct*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6703
      start: 6662
    functionDepth: 1
    functionLinenumber: 6662
    functionLinenumberEnd: 6703
    functionName: fr_adjust_iter_env
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - modstack_find
    linkageType: ''
    returnType: void
    signature: void fr_adjust_iter_env(struct module_env* env, struct fast_reload_construct*
      ct)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/daemon/remote.c:6717,1
    - Dst: modstack_find
      Src: /src/unbound/daemon/remote.c:6724,1
    - Dst: val_env_apply_cfg
      Src: /src/unbound/daemon/remote.c:6732,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:6737,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:6740,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 3
    argNames:
    - env
    - ct
    - oldcfg
    argTypes:
    - struct module_env*
    - struct fast_reload_construct*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6743
      start: 6706
    functionDepth: 1
    functionLinenumber: 6706
    functionLinenumberEnd: 6743
    functionName: fr_adjust_val_env
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - strcmp
    - val_env_apply_cfg
    - lock_basic_unlock
    - lock_basic_lock
    - modstack_find
    linkageType: ''
    returnType: void
    signature: "void fr_adjust_val_env(struct module_env* env, struct fast_reload_construct*
      ct,\n\tstruct config_file* oldcfg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - env
    - ct
    argTypes:
    - struct module_env*
    - struct fast_reload_construct*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6770
      start: 6746
    functionDepth: 0
    functionLinenumber: 6746
    functionLinenumberEnd: 6770
    functionName: fr_adjust_infra
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fr_adjust_infra(struct module_env* env, struct fast_reload_construct*
      ct)
  - BBCount: 183
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:6782,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:6783,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:6784,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:6787,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:6788,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:6789,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:6790,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:6791,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:6792,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:6793,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:6794,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:6795,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:6796,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:6797,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:6798,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:6799,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:6800,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:6802,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:6803,1
    - Dst: fr_atomic_copy_cfg
      Src: /src/unbound/daemon/remote.c:6808,1
    - Dst: log_ident_set_or_default
      Src: /src/unbound/daemon/remote.c:6821,1
    - Dst: memset
      Src: /src/unbound/daemon/remote.c:6828,1
    - Dst: forwards_swap_tree
      Src: /src/unbound/daemon/remote.c:6835,1
    - Dst: hints_swap_tree
      Src: /src/unbound/daemon/remote.c:6836,1
    - Dst: views_swap_tree
      Src: /src/unbound/daemon/remote.c:6837,1
    - Dst: acl_list_swap_tree
      Src: /src/unbound/daemon/remote.c:6838,1
    - Dst: acl_list_swap_tree
      Src: /src/unbound/daemon/remote.c:6839,1
    - Dst: tcl_list_swap_tree
      Src: /src/unbound/daemon/remote.c:6840,1
    - Dst: local_zones_swap_tree
      Src: /src/unbound/daemon/remote.c:6841,1
    - Dst: respip_set_swap_tree
      Src: /src/unbound/daemon/remote.c:6842,1
    - Dst: auth_zones_swap
      Src: /src/unbound/daemon/remote.c:6845,1
    - Dst: edns_strings_swap_tree
      Src: /src/unbound/daemon/remote.c:6846,1
    - Dst: anchors_swap_tree
      Src: /src/unbound/daemon/remote.c:6847,1
    - Dst: cachedb_is_enabled
      Src: /src/unbound/daemon/remote.c:6849,1
    - Dst: sslctxs_swap
      Src: /src/unbound/daemon/remote.c:6853,1
    - Dst: dt_apply_cfg
      Src: /src/unbound/daemon/remote.c:6858,1
    - Dst: log_warn
      Src: /src/unbound/daemon/remote.c:6859,1
    - Dst: dt_apply_logcfg
      Src: /src/unbound/daemon/remote.c:6861,1
    - Dst: fr_adjust_cache
      Src: /src/unbound/daemon/remote.c:6865,1
    - Dst: fr_adjust_iter_env
      Src: /src/unbound/daemon/remote.c:6867,1
    - Dst: fr_adjust_val_env
      Src: /src/unbound/daemon/remote.c:6868,1
    - Dst: fr_adjust_infra
      Src: /src/unbound/daemon/remote.c:6869,1
    - Dst: config_apply
      Src: /src/unbound/daemon/remote.c:6873,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:6875,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:6876,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:6877,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:6878,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:6879,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:6880,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:6881,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:6882,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:6883,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:6884,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:6885,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:6886,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:6887,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:6888,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:6890,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:6891,1
    - Dst: sock_poll_timeout
      Src: /src/unbound/daemon/remote.c:6908,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:6909,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:6916,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:6917,1
    - Dst: recv
      Src: /src/unbound/daemon/remote.c:6920,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:6930,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:6931,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:6932,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:6936,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:6937,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:6948,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:6953,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:6965,1
    - Dst: fr_poll_for_ack
      Src: /src/unbound/daemon/remote.c:6966,1
    - Dst: fr_reload_config
      Src: /src/unbound/daemon/remote.c:6968,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:6972,1
    - Dst: fr_poll_for_ack
      Src: /src/unbound/daemon/remote.c:6973,1
    - Dst: memset
      Src: /src/unbound/daemon/remote.c:6985,1
    - Dst: fr_read_config
      Src: /src/unbound/daemon/remote.c:6988,1
    - Dst: gettimeofday
      Src: /src/unbound/daemon/remote.c:6990,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:6991,1
    - Dst: strerror
      Src: /src/unbound/daemon/remote.c:6991,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:6992,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:6993,1
    - Dst: fr_check_tag_defines
      Src: /src/unbound/daemon/remote.c:6998,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:6999,1
    - Dst: fr_check_tag_datas
      Src: /src/unbound/daemon/remote.c:7002,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:7003,1
    - Dst: fr_check_compat_cfg
      Src: /src/unbound/daemon/remote.c:7006,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:7007,1
    - Dst: fr_check_nopause_compat_cfg
      Src: /src/unbound/daemon/remote.c:7010,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:7011,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:7014,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:7015,1
    - Dst: fr_construct_from_config
      Src: /src/unbound/daemon/remote.c:7020,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:7021,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:7022,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:7027,1
    - Dst: gettimeofday
      Src: /src/unbound/daemon/remote.c:7030,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7031,1
    - Dst: strerror
      Src: /src/unbound/daemon/remote.c:7031,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:7032,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:7033,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:7034,1
    - Dst: fr_reload_ipc
      Src: /src/unbound/daemon/remote.c:7039,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:7040,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:7041,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:7042,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:7044,1
    - Dst: gettimeofday
      Src: /src/unbound/daemon/remote.c:7047,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7048,1
    - Dst: strerror
      Src: /src/unbound/daemon/remote.c:7048,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:7050,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:7051,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:7052,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:7069,1
    - Dst: fr_poll_for_ack
      Src: /src/unbound/daemon/remote.c:7071,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:7075,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:7076,1
    - Dst: gettid
      Src: /src/unbound/daemon/remote.c:7090,1
    - Dst: log_thread_set
      Src: /src/unbound/daemon/remote.c:7092,1
    - Dst: log_thread_set
      Src: /src/unbound/daemon/remote.c:7095,1
    - Dst: ub_thread_setname
      Src: /src/unbound/daemon/remote.c:7097,1
    - Dst: ub_thread_self
      Src: /src/unbound/daemon/remote.c:7097,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:7100,1
    - Dst: fr_init_time
      Src: /src/unbound/daemon/remote.c:7102,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:7104,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:7110,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:7112,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:7114,1
    - Dst: fr_load_config
      Src: /src/unbound/daemon/remote.c:7118,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:7121,1
    - Dst: fr_finish_time
      Src: /src/unbound/daemon/remote.c:7125,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:7128,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:7132,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:7134,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:7136,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:7139,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:7146,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:7150,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:7151,1
    - Dst: socketpair
      Src: /src/unbound/daemon/remote.c:7162,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7163,1
    - Dst: strerror
      Src: /src/unbound/daemon/remote.c:7163,1
    - Dst: ub_random_max
      Src: /src/unbound/daemon/remote.c:7179,1
    - Dst: socket
      Src: /src/unbound/daemon/remote.c:7181,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7183,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7183,1
    - Dst: memset
      Src: /src/unbound/daemon/remote.c:7186,1
    - Dst: memcpy
      Src: /src/unbound/daemon/remote.c:7189,1
    - Dst: bind
      Src: /src/unbound/daemon/remote.c:7190,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7192,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7192,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7193,1
    - Dst: listen
      Src: /src/unbound/daemon/remote.c:7196,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7197,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7197,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7198,1
    - Dst: socket
      Src: /src/unbound/daemon/remote.c:7202,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7204,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7204,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7205,1
    - Dst: getsockname
      Src: /src/unbound/daemon/remote.c:7209,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7210,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7211,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7212,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7213,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7218,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7219,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7220,1
    - Dst: connect
      Src: /src/unbound/daemon/remote.c:7225,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7226,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7227,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7228,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7229,1
    - Dst: sock_poll_timeout
      Src: /src/unbound/daemon/remote.c:7233,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7234,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7235,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7236,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7237,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7242,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7243,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7244,1
    - Dst: accept
      Src: /src/unbound/daemon/remote.c:7249,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7251,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7251,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7252,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7253,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7258,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7259,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7260,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7261,1
    - Dst: memcmp
      Src: /src/unbound/daemon/remote.c:7267,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7268,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7269,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7270,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7271,1
    - Dst: getsockname
      Src: /src/unbound/daemon/remote.c:7277,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7279,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7280,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7281,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7282,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7283,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7289,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7290,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7291,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7292,1
    - Dst: memcmp
      Src: /src/unbound/daemon/remote.c:7298,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7299,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7300,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7301,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7302,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7308,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7309,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7310,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7311,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7316,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7322,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7323,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7324,1
    - Dst: send
      Src: /src/unbound/daemon/remote.c:7329,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7339,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7340,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7341,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7345,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7345,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7346,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7347,1
    - Dst: sock_poll_timeout
      Src: /src/unbound/daemon/remote.c:7359,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7360,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7361,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7362,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7363,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7369,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7370,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7371,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7381,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7382,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7383,1
    - Dst: recv
      Src: /src/unbound/daemon/remote.c:7388,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7398,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7399,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7400,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7404,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7404,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7405,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7406,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7411,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7412,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7413,1
    - Dst: memcmp
      Src: /src/unbound/daemon/remote.c:7425,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7426,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7427,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7428,1
    - Dst: calloc
      Src: /src/unbound/daemon/remote.c:7445,1
    - Dst: create_socketpair
      Src: /src/unbound/daemon/remote.c:7460,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:7461,1
    - Dst: calloc
      Src: /src/unbound/daemon/remote.c:7466,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7469,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7470,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:7471,1
    - Dst: create_socketpair
      Src: /src/unbound/daemon/remote.c:7475,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7476,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7477,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:7478,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:7479,1
    - Dst: lock_basic_init
      Src: /src/unbound/daemon/remote.c:7483,1
    - Dst: lock_protect
      Src: /src/unbound/daemon/remote.c:7484,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:7501,1
    - Dst: ub_event_del
      Src: /src/unbound/daemon/remote.c:7514,1
    - Dst: ub_event_free
      Src: /src/unbound/daemon/remote.c:7518,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7519,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7520,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7521,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7522,1
    - Dst: fr_main_perform_printout
      Src: /src/unbound/daemon/remote.c:7524,1
    - Dst: fr_printq_empty
      Src: /src/unbound/daemon/remote.c:7526,1
    - Dst: fr_printq_delete
      Src: /src/unbound/daemon/remote.c:7527,1
    - Dst: fr_printq_list_insert
      Src: /src/unbound/daemon/remote.c:7535,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/daemon/remote.c:7540,1
    - Dst: config_delstrlist
      Src: /src/unbound/daemon/remote.c:7542,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:7543,1
    - Dst: fr_auth_change_list_delete
      Src: /src/unbound/daemon/remote.c:7545,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:7547,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:7561,1
    - Dst: fr_notification_to_string
      Src: /src/unbound/daemon/remote.c:7562,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7566,1
    - Dst: fr_check_cmd_from_thread
      Src: /src/unbound/daemon/remote.c:7570,1
    - Dst: sock_poll_timeout
      Src: /src/unbound/daemon/remote.c:7572,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7575,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:7581,1
    - Dst: send
      Src: /src/unbound/daemon/remote.c:7582,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7592,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7593,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7594,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7598,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7599,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:7616,1
    - Dst: ub_thread_join
      Src: /src/unbound/daemon/remote.c:7617,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:7618,1
    - Dst: fast_reload_thread_desetup
      Src: /src/unbound/daemon/remote.c:7619,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:7645,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:7650,1
    - Dst: config_delstrlist
      Src: /src/unbound/daemon/remote.c:7654,1
    - Dst: cfg_strlist_append_listhead
      Src: /src/unbound/daemon/remote.c:7662,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/daemon/remote.c:7666,1
    - Dst: recv
      Src: /src/unbound/daemon/remote.c:7680,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7689,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7690,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7691,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7695,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7696,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:7700,1
    - Dst: sock_poll_timeout
      Src: /src/unbound/daemon/remote.c:7715,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7716,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7723,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7724,1
    - Dst: recv
      Src: /src/unbound/daemon/remote.c:7727,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7737,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7738,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7739,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7743,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7744,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:7754,1
    - Dst: mesh_remove_callback
      Src: /src/unbound/daemon/remote.c:7819,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:7834,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:7835,1
    - Dst: memmove
      Src: /src/unbound/daemon/remote.c:7838,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7839,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:7841,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:7842,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:7844,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:7847,1
    - Dst: auth_xfer_find
      Src: /src/unbound/daemon/remote.c:7850,1
    - Dst: auth_xfer_find
      Src: /src/unbound/daemon/remote.c:7853,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:7856,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:7859,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:7871,1
    - Dst: auth_zone_zonemd_stop_lookup
      Src: /src/unbound/daemon/remote.c:7876,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7879,1
    - Dst: fr_pickup_auth_locks
      Src: /src/unbound/daemon/remote.c:7881,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7883,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7884,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7885,1
    - Dst: xfr_disown_tasks
      Src: /src/unbound/daemon/remote.c:7892,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:7894,1
    - Dst: fr_pickup_auth_locks
      Src: /src/unbound/daemon/remote.c:7900,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7902,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7903,1
    - Dst: rbtree_delete
      Src: /src/unbound/daemon/remote.c:7907,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7909,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:7910,1
    - Dst: auth_xfer_delete
      Src: /src/unbound/daemon/remote.c:7911,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7913,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:7915,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:7926,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:7927,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:7928,1
    - Dst: fr_pickup_auth_locks
      Src: /src/unbound/daemon/remote.c:7951,1
    - Dst: auth_xfer_create
      Src: /src/unbound/daemon/remote.c:7956,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7958,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7959,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7960,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7961,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:7963,1
    - Dst: auth_xfr_pickup_config
      Src: /src/unbound/daemon/remote.c:7967,1
    - Dst: xfr_find_soa
      Src: /src/unbound/daemon/remote.c:7969,1
    - Dst: xfr_find_soa
      Src: /src/unbound/daemon/remote.c:7973,1
    - Dst: auth_zone_pickup_initial_zone
      Src: /src/unbound/daemon/remote.c:7977,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7978,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7979,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7980,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:7982,1
    - Dst: auth_xfer_pickup_initial_zone
      Src: /src/unbound/daemon/remote.c:7985,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:7989,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:7993,1
    - Dst: auth_zone_verify_zonemd
      Src: /src/unbound/daemon/remote.c:7995,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7997,1
    - Dst: fr_worker_auth_del
      Src: /src/unbound/daemon/remote.c:8009,1
    - Dst: fr_pickup_auth_locks
      Src: /src/unbound/daemon/remote.c:8018,1
    - Dst: auth_xfr_pickup_config
      Src: /src/unbound/daemon/remote.c:8026,1
    - Dst: rbtree_delete
      Src: /src/unbound/daemon/remote.c:8029,1
    - Dst: auth_xfer_create
      Src: /src/unbound/daemon/remote.c:8035,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:8037,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:8038,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:8039,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:8040,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:8041,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:8043,1
    - Dst: auth_xfr_pickup_config
      Src: /src/unbound/daemon/remote.c:8047,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:8050,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:8051,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:8052,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:8053,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:8055,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:8058,1
    - Dst: auth_xfer_delete
      Src: /src/unbound/daemon/remote.c:8061,1
    - Dst: fr_worker_auth_add
      Src: /src/unbound/daemon/remote.c:8064,1
    - Dst: fr_worker_auth_del
      Src: /src/unbound/daemon/remote.c:8075,1
    - Dst: fr_worker_auth_add
      Src: /src/unbound/daemon/remote.c:8079,1
    - Dst: fr_worker_auth_cha
      Src: /src/unbound/daemon/remote.c:8083,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:8158,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:8180,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:8182,1
    - Dst: fr_worker_pickup_mesh
      Src: /src/unbound/daemon/remote.c:8199,1
    - Dst: tcl_remove_old
      Src: /src/unbound/daemon/remote.c:8204,1
    - Dst: fr_worker_pickup_auth_changes
      Src: /src/unbound/daemon/remote.c:8208,1
    - Dst: fr_worker_pickup_listen_dnsport
      Src: /src/unbound/daemon/remote.c:8213,1
    - Dst: fr_worker_pickup_outside_network
      Src: /src/unbound/daemon/remote.c:8214,1
    - Dst: fr_worker_pickup_dnstap_changes
      Src: /src/unbound/daemon/remote.c:8216,1
    - Dst: worker_send_cmd
      Src: /src/unbound/daemon/remote.c:8233,1
    - Dst: fr_read_ack_from_workers
      Src: /src/unbound/daemon/remote.c:8237,1
    - Dst: fr_send_cmd_to
      Src: /src/unbound/daemon/remote.c:8240,1
    - Dst: fr_poll_for_reload_start
      Src: /src/unbound/daemon/remote.c:8243,1
    - Dst: worker_send_cmd
      Src: /src/unbound/daemon/remote.c:8249,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:8254,1
    - Dst: mesh_delete_all
      Src: /src/unbound/daemon/remote.c:8255,1
    - Dst: fast_reload_worker_pickup_changes
      Src: /src/unbound/daemon/remote.c:8257,1
    - Dst: fr_read_ack_from_workers
      Src: /src/unbound/daemon/remote.c:8260,1
    - Dst: fr_send_cmd_to
      Src: /src/unbound/daemon/remote.c:8263,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:8265,1
    - Dst: worker_send_cmd
      Src: /src/unbound/daemon/remote.c:8283,1
    - Dst: fr_read_ack_from_workers
      Src: /src/unbound/daemon/remote.c:8287,1
    - Dst: fast_reload_worker_pickup_changes
      Src: /src/unbound/daemon/remote.c:8288,1
    - Dst: fr_send_cmd_to
      Src: /src/unbound/daemon/remote.c:8291,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:8299,1
    - Dst: fr_notification_to_string
      Src: /src/unbound/daemon/remote.c:8300,1
    - Dst: fr_main_perform_printout
      Src: /src/unbound/daemon/remote.c:8302,1
    - Dst: fr_main_perform_done
      Src: /src/unbound/daemon/remote.c:8306,1
    - Dst: fr_main_perform_reload_stop
      Src: /src/unbound/daemon/remote.c:8308,1
    - Dst: fr_main_perform_reload_nopause_poll
      Src: /src/unbound/daemon/remote.c:8310,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:8312,1
    - Dst: fr_notification_to_string
      Src: /src/unbound/daemon/remote.c:8313,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:8324,1
    - Dst: recv
      Src: /src/unbound/daemon/remote.c:8325,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:8336,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:8337,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:8342,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/daemon/remote.c:8343,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:8348,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:8349,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:8352,1
    - Dst: fr_main_perform_cmd
      Src: /src/unbound/daemon/remote.c:8365,1
    - Dst: sock_poll_timeout
      Src: /src/unbound/daemon/remote.c:8376,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:8377,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/daemon/remote.c:8381,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/daemon/remote.c:8390,1
    - Dst: fr_main_handle_cmd
      Src: /src/unbound/daemon/remote.c:8396,1
    - Dst: fr_main_handle_cmd
      Src: /src/unbound/daemon/remote.c:8408,1
    - Dst: fr_check_cmd_from_thread
      Src: /src/unbound/daemon/remote.c:8412,1
    - Dst: ERR_clear_error
      Src: /src/unbound/daemon/remote.c:8423,1
    - Dst: SSL_write
      Src: /src/unbound/daemon/remote.c:8424,1
    - Dst: SSL_get_error
      Src: /src/unbound/daemon/remote.c:8428,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:8430,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/daemon/remote.c:8436,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/daemon/remote.c:8440,1
    - Dst: comm_point_internal
      Src: /src/unbound/daemon/remote.c:8440,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:8451,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:8453,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/daemon/remote.c:8456,1
    - Dst: send
      Src: /src/unbound/daemon/remote.c:8470,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:8481,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:8482,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:8483,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/daemon/remote.c:8487,1
    - Dst: comm_point_internal
      Src: /src/unbound/daemon/remote.c:8487,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:8491,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:8492,1
    CyclomaticComplexity: 282
    EdgeCount: 282
    ICount: 1043
    argCount: 3
    argNames:
    - fr
    - newcfg
    - ct
    argTypes:
    - struct fast_reload_thread*
    - struct config_file*
    - struct fast_reload_construct*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8496
      start: 6774
    functionDepth: 7
    functionLinenumber: 6774
    functionLinenumberEnd: 8496
    functionName: fr_reload_config
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - fr_atomic_copy_cfg
    - mesh_delete_all
    - ub_thread_setname
    - comm_point_internal
    - dt_apply_logcfg
    - fr_poll_for_ack
    - fr_printq_delete
    - fr_reload_config
    - fr_check_nopause_compat_cfg
    - auth_xfr_pickup_config
    - auth_zone_pickup_initial_zone
    - auth_xfer_pickup_initial_zone
    - log_err
    - auth_xfer_delete
    - ub_event_del
    - sock_strerror
    - fr_printq_list_insert
    - fr_check_compat_cfg
    - memcpy
    - fr_adjust_cache
    - views_swap_tree
    - config_delete
    - lock_basic_destroy
    - fr_check_cmd_from_thread
    - fast_reload_worker_pickup_changes
    - sock_close
    - fr_adjust_infra
    - fr_output_printf
    - WSAGetLastError
    - fr_worker_pickup_dnstap_changes
    - ub_thread_join
    - anchors_swap_tree
    - config_delstrlist
    - worker_send_cmd
    - fr_read_ack_from_workers
    - log_ident_set_or_default
    - ub_winsock_tcp_wouldblock
    - fr_adjust_iter_env
    - fr_poll_for_reload_start
    - sslctxs_swap
    - recv
    - fr_worker_pickup_auth_changes
    - forwards_swap_tree
    - fr_reload_ipc
    - bind
    - tcl_remove_old
    - fr_send_notification
    - fr_main_perform_printout
    - config_apply
    - fr_main_perform_reload_nopause_poll
    - auth_zone_zonemd_stop_lookup
    - fast_reload_thread_desetup
    - accept
    - fr_poll_for_quit
    - lock_rw_unlock
    - free
    - ub_event_free
    - log_assert
    - log_warn
    - fr_main_handle_cmd
    - cfg_strlist_append_listhead
    - auth_xfer_find
    - fr_check_tag_datas
    - ub_random_max
    - fr_worker_pickup_listen_dnsport
    - lock_protect
    - cachedb_is_enabled
    - SSL_get_error
    - auth_xfer_create
    - fr_auth_change_list_delete
    - auth_zone_verify_zonemd
    - lock_basic_lock
    - fr_main_perform_reload_stop
    - fr_check_tag_defines
    - fr_worker_auth_add
    - fr_construct_clear
    - gettid
    - getsockname
    - lock_basic_init
    - fr_load_config
    - send
    - edns_strings_swap_tree
    - comm_point_listen_for_rw
    - auth_zones_swap
    - create_socketpair
    - ub_thread_self
    - gettimeofday
    - strerror
    - dt_apply_cfg
    - lock_rw_rdlock
    - ERR_clear_error
    - log_crypto_err_io
    - fr_printq_empty
    - socketpair
    - local_zones_swap_tree
    - fr_notification_to_string
    - tcl_list_swap_tree
    - fr_main_perform_cmd
    - fr_worker_auth_cha
    - fr_init_time
    - lock_rw_wrlock
    - sock_poll_timeout
    - memset
    - xfr_disown_tasks
    - fr_construct_from_config
    - fr_worker_auth_del
    - socket
    - calloc
    - acl_list_swap_tree
    - rbtree_delete
    - respip_set_swap_tree
    - SSL_write
    - verbose
    - mesh_remove_callback
    - xfr_find_soa
    - fr_adjust_val_env
    - fr_read_config
    - hints_swap_tree
    - fr_worker_pickup_outside_network
    - fr_send_cmd_to
    - memmove
    - lock_basic_unlock
    - fr_pickup_auth_locks
    - log_thread_set
    - listen
    - fr_finish_time
    - memcmp
    - fr_worker_pickup_mesh
    - fr_main_perform_done
    - connect
    linkageType: ''
    returnType: int
    signature: "int fr_reload_config(struct fast_reload_thread* fr, struct config_file*
      newcfg,\n\tstruct fast_reload_construct* ct)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sock_poll_timeout
      Src: /src/unbound/daemon/remote.c:6908,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:6909,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:6916,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:6917,1
    - Dst: recv
      Src: /src/unbound/daemon/remote.c:6920,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:6930,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:6931,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:6932,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:6936,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:6937,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:6948,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:6953,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 34
    argCount: 1
    argNames:
    - fr
    argTypes:
    - struct fast_reload_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6956
      start: 6898
    functionDepth: 2
    functionLinenumber: 6898
    functionLinenumberEnd: 6956
    functionName: fr_poll_for_ack
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - log_err
    - verbose
    - sock_poll_timeout
    - WSAGetLastError
    - sock_strerror
    - recv
    linkageType: ''
    returnType: void
    signature: void fr_poll_for_ack(struct fast_reload_thread* fr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:6965,1
    - Dst: fr_poll_for_ack
      Src: /src/unbound/daemon/remote.c:6966,1
    - Dst: fr_reload_config
      Src: /src/unbound/daemon/remote.c:6968,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:6972,1
    - Dst: fr_poll_for_ack
      Src: /src/unbound/daemon/remote.c:6973,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - fr
    - newcfg
    - ct
    argTypes:
    - struct fast_reload_thread*
    - struct config_file*
    - struct fast_reload_construct*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6976
      start: 6959
    functionDepth: 8
    functionLinenumber: 6959
    functionLinenumberEnd: 6976
    functionName: fr_reload_ipc
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - fr_send_notification
    - fr_reload_config
    - fr_poll_for_ack
    linkageType: ''
    returnType: int
    signature: "int fr_reload_ipc(struct fast_reload_thread* fr, struct config_file*
      newcfg,\n\tstruct fast_reload_construct* ct)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/daemon/remote.c:6985,1
    - Dst: fr_read_config
      Src: /src/unbound/daemon/remote.c:6988,1
    - Dst: gettimeofday
      Src: /src/unbound/daemon/remote.c:6990,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:6991,1
    - Dst: strerror
      Src: /src/unbound/daemon/remote.c:6991,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:6992,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:6993,1
    - Dst: fr_check_tag_defines
      Src: /src/unbound/daemon/remote.c:6998,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:6999,1
    - Dst: fr_check_tag_datas
      Src: /src/unbound/daemon/remote.c:7002,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:7003,1
    - Dst: fr_check_compat_cfg
      Src: /src/unbound/daemon/remote.c:7006,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:7007,1
    - Dst: fr_check_nopause_compat_cfg
      Src: /src/unbound/daemon/remote.c:7010,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:7011,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:7014,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:7015,1
    - Dst: fr_construct_from_config
      Src: /src/unbound/daemon/remote.c:7020,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:7021,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:7022,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:7027,1
    - Dst: gettimeofday
      Src: /src/unbound/daemon/remote.c:7030,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7031,1
    - Dst: strerror
      Src: /src/unbound/daemon/remote.c:7031,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:7032,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:7033,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:7034,1
    - Dst: fr_reload_ipc
      Src: /src/unbound/daemon/remote.c:7039,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:7040,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:7041,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:7042,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:7044,1
    - Dst: gettimeofday
      Src: /src/unbound/daemon/remote.c:7047,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7048,1
    - Dst: strerror
      Src: /src/unbound/daemon/remote.c:7048,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:7050,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:7051,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:7052,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:7069,1
    - Dst: fr_poll_for_ack
      Src: /src/unbound/daemon/remote.c:7071,1
    - Dst: config_delete
      Src: /src/unbound/daemon/remote.c:7075,1
    - Dst: fr_construct_clear
      Src: /src/unbound/daemon/remote.c:7076,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 66
    argCount: 4
    argNames:
    - fr
    - time_read
    - time_construct
    - time_reload
    argTypes:
    - struct fast_reload_thread*
    - struct timeval*
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7078
      start: 6979
    functionDepth: 9
    functionLinenumber: 6979
    functionLinenumberEnd: 7078
    functionName: fr_load_config
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - log_err
    - fr_construct_from_config
    - fr_reload_ipc
    - fr_poll_for_quit
    - fr_construct_clear
    - fr_output_printf
    - fr_check_nopause_compat_cfg
    - fr_poll_for_ack
    - fr_send_notification
    - fr_check_compat_cfg
    - strerror
    - gettimeofday
    - config_delete
    - memset
    - fr_read_config
    - fr_check_tag_defines
    - fr_check_tag_datas
    linkageType: ''
    returnType: int
    signature: "int fr_load_config(struct fast_reload_thread* fr, struct timeval*
      time_read,\n\tstruct timeval* time_construct, struct timeval* time_reload)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: gettid
      Src: /src/unbound/daemon/remote.c:7090,1
    - Dst: log_thread_set
      Src: /src/unbound/daemon/remote.c:7092,1
    - Dst: log_thread_set
      Src: /src/unbound/daemon/remote.c:7095,1
    - Dst: ub_thread_setname
      Src: /src/unbound/daemon/remote.c:7097,1
    - Dst: ub_thread_self
      Src: /src/unbound/daemon/remote.c:7097,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:7100,1
    - Dst: fr_init_time
      Src: /src/unbound/daemon/remote.c:7102,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:7104,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:7110,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:7112,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:7114,1
    - Dst: fr_load_config
      Src: /src/unbound/daemon/remote.c:7118,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:7121,1
    - Dst: fr_finish_time
      Src: /src/unbound/daemon/remote.c:7125,1
    - Dst: fr_poll_for_quit
      Src: /src/unbound/daemon/remote.c:7128,1
    - Dst: fr_output_printf
      Src: /src/unbound/daemon/remote.c:7132,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:7134,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:7136,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:7139,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:7146,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:7150,1
    - Dst: fr_send_notification
      Src: /src/unbound/daemon/remote.c:7151,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 54
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7154
      start: 7081
    functionDepth: 10
    functionLinenumber: 7081
    functionLinenumberEnd: 7154
    functionName: fast_reload_thread_main
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - fr_init_time
    - ub_thread_setname
    - fr_poll_for_quit
    - gettid
    - verbose
    - fr_output_printf
    - fr_send_notification
    - ub_thread_self
    - log_thread_set
    - fr_load_config
    - fr_finish_time
    linkageType: ''
    returnType: void
    signature: void * fast_reload_thread_main(void* arg)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: socketpair
      Src: /src/unbound/daemon/remote.c:7162,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7163,1
    - Dst: strerror
      Src: /src/unbound/daemon/remote.c:7163,1
    - Dst: ub_random_max
      Src: /src/unbound/daemon/remote.c:7179,1
    - Dst: socket
      Src: /src/unbound/daemon/remote.c:7181,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7183,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7183,1
    - Dst: memset
      Src: /src/unbound/daemon/remote.c:7186,1
    - Dst: memcpy
      Src: /src/unbound/daemon/remote.c:7189,1
    - Dst: bind
      Src: /src/unbound/daemon/remote.c:7190,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7192,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7192,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7193,1
    - Dst: listen
      Src: /src/unbound/daemon/remote.c:7196,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7197,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7197,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7198,1
    - Dst: socket
      Src: /src/unbound/daemon/remote.c:7202,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7204,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7204,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7205,1
    - Dst: getsockname
      Src: /src/unbound/daemon/remote.c:7209,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7210,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7211,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7212,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7213,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7218,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7219,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7220,1
    - Dst: connect
      Src: /src/unbound/daemon/remote.c:7225,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7226,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7227,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7228,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7229,1
    - Dst: sock_poll_timeout
      Src: /src/unbound/daemon/remote.c:7233,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7234,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7235,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7236,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7237,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7242,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7243,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7244,1
    - Dst: accept
      Src: /src/unbound/daemon/remote.c:7249,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7251,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7251,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7252,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7253,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7258,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7259,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7260,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7261,1
    - Dst: memcmp
      Src: /src/unbound/daemon/remote.c:7267,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7268,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7269,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7270,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7271,1
    - Dst: getsockname
      Src: /src/unbound/daemon/remote.c:7277,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7279,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7280,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7281,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7282,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7283,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7289,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7290,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7291,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7292,1
    - Dst: memcmp
      Src: /src/unbound/daemon/remote.c:7298,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7299,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7300,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7301,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7302,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7308,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7309,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7310,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7311,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7316,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7322,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7323,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7324,1
    - Dst: send
      Src: /src/unbound/daemon/remote.c:7329,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7339,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7340,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7341,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7345,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7345,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7346,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7347,1
    - Dst: sock_poll_timeout
      Src: /src/unbound/daemon/remote.c:7359,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7360,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7361,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7362,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7363,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7369,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7370,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7371,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7381,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7382,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7383,1
    - Dst: recv
      Src: /src/unbound/daemon/remote.c:7388,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7398,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7399,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7400,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7404,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7404,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7405,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7406,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7411,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7412,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7413,1
    - Dst: memcmp
      Src: /src/unbound/daemon/remote.c:7425,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7426,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7427,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7428,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 228
    argCount: 2
    argNames:
    - pair
    - rand
    argTypes:
    - int*
    - struct ub_randstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7435
      start: 7158
    functionDepth: 2
    functionLinenumber: 7158
    functionLinenumberEnd: 7435
    functionName: create_socketpair
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - sock_poll_timeout
    - memset
    - recv
    - log_err
    - bind
    - socket
    - getsockname
    - sock_strerror
    - send
    - accept
    - memcpy
    - strerror
    - ub_random_max
    - sock_close
    - WSAGetLastError
    - socketpair
    - listen
    - memcmp
    - connect
    linkageType: ''
    returnType: int
    signature: int create_socketpair(int* pair, struct ub_randstate* rand)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/daemon/remote.c:7445,1
    - Dst: create_socketpair
      Src: /src/unbound/daemon/remote.c:7460,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:7461,1
    - Dst: calloc
      Src: /src/unbound/daemon/remote.c:7466,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7469,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7470,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:7471,1
    - Dst: create_socketpair
      Src: /src/unbound/daemon/remote.c:7475,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7476,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7477,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:7478,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:7479,1
    - Dst: lock_basic_init
      Src: /src/unbound/daemon/remote.c:7483,1
    - Dst: lock_protect
      Src: /src/unbound/daemon/remote.c:7484,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 40
    argCount: 4
    argNames:
    - worker
    - fr_verb
    - fr_nopause
    - fr_drop_mesh
    argTypes:
    - struct worker*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7490
      start: 7438
    functionDepth: 3
    functionLinenumber: 7438
    functionLinenumberEnd: 7490
    functionName: fast_reload_thread_setup
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - sock_close
    - lock_basic_init
    - create_socketpair
    - free
    - lock_protect
    - calloc
    linkageType: ''
    returnType: int
    signature: "int fast_reload_thread_setup(struct worker* worker, int fr_verb, int
      fr_nopause,\n\tint fr_drop_mesh)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/daemon/remote.c:7501,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - auth_zone_change_list
    argTypes:
    - struct fast_reload_auth_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7504
      start: 7493
    functionDepth: 1
    functionLinenumber: 7493
    functionLinenumberEnd: 7504
    functionName: fr_auth_change_list_delete
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: "void fr_auth_change_list_delete(\n\tstruct fast_reload_auth_change*
      auth_zone_change_list)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ub_event_del
      Src: /src/unbound/daemon/remote.c:7514,1
    - Dst: ub_event_free
      Src: /src/unbound/daemon/remote.c:7518,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7519,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7520,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7521,1
    - Dst: sock_close
      Src: /src/unbound/daemon/remote.c:7522,1
    - Dst: fr_main_perform_printout
      Src: /src/unbound/daemon/remote.c:7524,1
    - Dst: fr_printq_empty
      Src: /src/unbound/daemon/remote.c:7526,1
    - Dst: fr_printq_delete
      Src: /src/unbound/daemon/remote.c:7527,1
    - Dst: fr_printq_list_insert
      Src: /src/unbound/daemon/remote.c:7535,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/daemon/remote.c:7540,1
    - Dst: config_delstrlist
      Src: /src/unbound/daemon/remote.c:7542,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:7543,1
    - Dst: fr_auth_change_list_delete
      Src: /src/unbound/daemon/remote.c:7545,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:7547,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 1
    argNames:
    - fast_reload_thread
    argTypes:
    - struct fast_reload_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7548
      start: 7507
    functionDepth: 2
    functionLinenumber: 7507
    functionLinenumberEnd: 7548
    functionName: fast_reload_thread_desetup
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - sock_close
    - fr_printq_empty
    - ub_event_del
    - fr_printq_delete
    - lock_basic_destroy
    - free
    - fr_auth_change_list_delete
    - ub_event_free
    - fr_main_perform_printout
    - fr_printq_list_insert
    - config_delstrlist
    linkageType: ''
    returnType: void
    signature: void fast_reload_thread_desetup(struct fast_reload_thread* fast_reload_thread)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:7561,1
    - Dst: fr_notification_to_string
      Src: /src/unbound/daemon/remote.c:7562,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7566,1
    - Dst: fr_check_cmd_from_thread
      Src: /src/unbound/daemon/remote.c:7570,1
    - Dst: sock_poll_timeout
      Src: /src/unbound/daemon/remote.c:7572,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7575,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:7581,1
    - Dst: send
      Src: /src/unbound/daemon/remote.c:7582,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7592,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7593,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7594,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7598,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7599,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 31
    argCount: 4
    argNames:
    - fr
    - status
    - check_cmds
    - blocking
    argTypes:
    - struct fast_reload_thread*
    - enum fast_reload_notification
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7608
      start: 7554
    functionDepth: 2
    functionLinenumber: 7554
    functionLinenumberEnd: 7608
    functionName: fr_send_cmd_to
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - log_err
    - verbose
    - sock_poll_timeout
    - WSAGetLastError
    - fr_notification_to_string
    - log_assert
    - sock_strerror
    - fr_check_cmd_from_thread
    - send
    linkageType: ''
    returnType: void
    signature: "void fr_send_cmd_to(struct fast_reload_thread* fr,\n\tenum fast_reload_notification
      status, int check_cmds, int blocking)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:7616,1
    - Dst: ub_thread_join
      Src: /src/unbound/daemon/remote.c:7617,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:7618,1
    - Dst: fast_reload_thread_desetup
      Src: /src/unbound/daemon/remote.c:7619,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - fr
    argTypes:
    - struct fast_reload_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7621
      start: 7612
    functionDepth: 3
    functionLinenumber: 7612
    functionLinenumberEnd: 7621
    functionName: fr_main_perform_done
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - ub_thread_join
    - verbose
    - fast_reload_thread_desetup
    linkageType: ''
    returnType: void
    signature: void fr_main_perform_done(struct fast_reload_thread* fr)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - list
    - more
    argTypes:
    - struct config_strlist_head*
    - struct config_strlist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7635
      start: 7624
    functionDepth: 0
    functionLinenumber: 7624
    functionLinenumberEnd: 7635
    functionName: cfg_strlist_append_listhead
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void cfg_strlist_append_listhead(struct config_strlist_head* list,\n\tstruct
      config_strlist_head* more)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:7645,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:7650,1
    - Dst: config_delstrlist
      Src: /src/unbound/daemon/remote.c:7654,1
    - Dst: cfg_strlist_append_listhead
      Src: /src/unbound/daemon/remote.c:7662,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/daemon/remote.c:7666,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - fr
    argTypes:
    - struct fast_reload_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7667
      start: 7639
    functionDepth: 1
    functionLinenumber: 7639
    functionLinenumberEnd: 7667
    functionName: fr_main_perform_printout
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 2
    functionsReached:
    - comm_point_listen_for_rw
    - lock_basic_unlock
    - lock_basic_lock
    - cfg_strlist_append_listhead
    - config_delstrlist
    linkageType: ''
    returnType: void
    signature: void fr_main_perform_printout(struct fast_reload_thread* fr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/unbound/daemon/remote.c:7680,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7689,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7690,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7691,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7695,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7696,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:7700,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - fr
    argTypes:
    - struct fast_reload_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7703
      start: 7671
    functionDepth: 1
    functionLinenumber: 7671
    functionLinenumberEnd: 7703
    functionName: fr_read_ack_from_workers
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - log_err
    - verbose
    - WSAGetLastError
    - sock_strerror
    - recv
    linkageType: ''
    returnType: void
    signature: void fr_read_ack_from_workers(struct fast_reload_thread* fr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sock_poll_timeout
      Src: /src/unbound/daemon/remote.c:7715,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7716,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7723,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7724,1
    - Dst: recv
      Src: /src/unbound/daemon/remote.c:7727,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7737,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7738,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:7739,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7743,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:7744,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:7754,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 27
    argCount: 1
    argNames:
    - fr
    argTypes:
    - struct fast_reload_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7757
      start: 7707
    functionDepth: 2
    functionLinenumber: 7707
    functionLinenumberEnd: 7757
    functionName: fr_poll_for_reload_start
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - log_err
    - verbose
    - sock_poll_timeout
    - WSAGetLastError
    - sock_strerror
    - recv
    linkageType: ''
    returnType: void
    signature: void fr_poll_for_reload_start(struct fast_reload_thread* fr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7773
      start: 7760
    functionDepth: 0
    functionLinenumber: 7760
    functionLinenumberEnd: 7773
    functionName: fr_worker_pickup_mesh
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fr_worker_pickup_mesh(struct worker* worker)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - front
    argTypes:
    - struct listen_dnsport*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7805
      start: 7780
    functionDepth: 0
    functionLinenumber: 7780
    functionLinenumberEnd: 7805
    functionName: tcl_remove_old
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void tcl_remove_old(struct listen_dnsport* front)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mesh_remove_callback
      Src: /src/unbound/daemon/remote.c:7819,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - z
    - mesh
    argTypes:
    - struct auth_zone*
    - struct mesh_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7822
      start: 7808
    functionDepth: 1
    functionLinenumber: 7808
    functionLinenumberEnd: 7822
    functionName: auth_zone_zonemd_stop_lookup
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - mesh_remove_callback
    linkageType: ''
    returnType: void
    signature: void auth_zone_zonemd_stop_lookup(struct auth_zone* z, struct mesh_area*
      mesh)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:7834,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/daemon/remote.c:7835,1
    - Dst: memmove
      Src: /src/unbound/daemon/remote.c:7838,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7839,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:7841,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:7842,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:7844,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:7847,1
    - Dst: auth_xfer_find
      Src: /src/unbound/daemon/remote.c:7850,1
    - Dst: auth_xfer_find
      Src: /src/unbound/daemon/remote.c:7853,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:7856,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:7859,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 6
    argNames:
    - worker
    - namez
    - old_z
    - new_z
    - xfr
    - loadxfr
    argTypes:
    - struct worker*
    - struct auth_zone*
    - struct auth_zone*
    - struct auth_zone*
    - struct auth_xfer**
    - struct auth_xfer**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7861
      start: 7825
    functionDepth: 1
    functionLinenumber: 7825
    functionLinenumberEnd: 7861
    functionName: fr_pickup_auth_locks
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - memmove
    - lock_rw_wrlock
    - lock_rw_unlock
    - log_assert
    - lock_basic_lock
    - auth_xfer_find
    - lock_rw_rdlock
    linkageType: ''
    returnType: void
    signature: "void fr_pickup_auth_locks(struct worker* worker, struct auth_zone*
      namez,\n\tstruct auth_zone* old_z, struct auth_zone* new_z,\n\tstruct auth_xfer**
      xfr, struct auth_xfer** loadxfr)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:7871,1
    - Dst: auth_zone_zonemd_stop_lookup
      Src: /src/unbound/daemon/remote.c:7876,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7879,1
    - Dst: fr_pickup_auth_locks
      Src: /src/unbound/daemon/remote.c:7881,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7883,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7884,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7885,1
    - Dst: xfr_disown_tasks
      Src: /src/unbound/daemon/remote.c:7892,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:7894,1
    - Dst: fr_pickup_auth_locks
      Src: /src/unbound/daemon/remote.c:7900,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7902,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7903,1
    - Dst: rbtree_delete
      Src: /src/unbound/daemon/remote.c:7907,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7909,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:7910,1
    - Dst: auth_xfer_delete
      Src: /src/unbound/daemon/remote.c:7911,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7913,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:7915,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 3
    argNames:
    - worker
    - item
    - for_change
    argTypes:
    - struct worker*
    - struct fast_reload_auth_change*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7919
      start: 7864
    functionDepth: 2
    functionLinenumber: 7864
    functionLinenumberEnd: 7919
    functionName: fr_worker_auth_del
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - auth_xfer_delete
    - rbtree_delete
    - lock_rw_wrlock
    - lock_rw_unlock
    - lock_basic_unlock
    - fr_pickup_auth_locks
    - xfr_disown_tasks
    - auth_zone_zonemd_stop_lookup
    linkageType: ''
    returnType: void
    signature: "void fr_worker_auth_del(struct worker* worker, struct fast_reload_auth_change*
      item,\n\tint for_change)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:7926,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:7927,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:7928,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - loadxfr
    - xfr
    argTypes:
    - struct auth_xfer*
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7941
      start: 7922
    functionDepth: 1
    functionLinenumber: 7922
    functionLinenumberEnd: 7941
    functionName: auth_xfr_pickup_config
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void auth_xfr_pickup_config(struct auth_xfer* loadxfr, struct auth_xfer*
      xfr)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: fr_pickup_auth_locks
      Src: /src/unbound/daemon/remote.c:7951,1
    - Dst: auth_xfer_create
      Src: /src/unbound/daemon/remote.c:7956,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:7958,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7959,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7960,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7961,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:7963,1
    - Dst: auth_xfr_pickup_config
      Src: /src/unbound/daemon/remote.c:7967,1
    - Dst: xfr_find_soa
      Src: /src/unbound/daemon/remote.c:7969,1
    - Dst: xfr_find_soa
      Src: /src/unbound/daemon/remote.c:7973,1
    - Dst: auth_zone_pickup_initial_zone
      Src: /src/unbound/daemon/remote.c:7977,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7978,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7979,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7980,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:7982,1
    - Dst: auth_xfer_pickup_initial_zone
      Src: /src/unbound/daemon/remote.c:7985,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:7989,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/daemon/remote.c:7993,1
    - Dst: auth_zone_verify_zonemd
      Src: /src/unbound/daemon/remote.c:7995,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:7997,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 41
    argCount: 3
    argNames:
    - worker
    - item
    - for_change
    argTypes:
    - struct worker*
    - struct fast_reload_auth_change*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7998
      start: 7944
    functionDepth: 2
    functionLinenumber: 7944
    functionLinenumberEnd: 7998
    functionName: fr_worker_auth_add
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - log_err
    - lock_basic_unlock
    - lock_rw_unlock
    - lock_rw_wrlock
    - fr_pickup_auth_locks
    - auth_xfer_create
    - auth_zone_verify_zonemd
    - xfr_find_soa
    - auth_zone_pickup_initial_zone
    - auth_xfr_pickup_config
    - auth_xfer_pickup_initial_zone
    linkageType: ''
    returnType: void
    signature: "void fr_worker_auth_add(struct worker* worker, struct fast_reload_auth_change*
      item,\n\tint for_change)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: fr_worker_auth_del
      Src: /src/unbound/daemon/remote.c:8009,1
    - Dst: fr_pickup_auth_locks
      Src: /src/unbound/daemon/remote.c:8018,1
    - Dst: auth_xfr_pickup_config
      Src: /src/unbound/daemon/remote.c:8026,1
    - Dst: rbtree_delete
      Src: /src/unbound/daemon/remote.c:8029,1
    - Dst: auth_xfer_create
      Src: /src/unbound/daemon/remote.c:8035,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:8037,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:8038,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:8039,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:8040,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:8041,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:8043,1
    - Dst: auth_xfr_pickup_config
      Src: /src/unbound/daemon/remote.c:8047,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:8050,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:8051,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:8052,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/remote.c:8053,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:8055,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:8058,1
    - Dst: auth_xfer_delete
      Src: /src/unbound/daemon/remote.c:8061,1
    - Dst: fr_worker_auth_add
      Src: /src/unbound/daemon/remote.c:8064,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 2
    argNames:
    - worker
    - item
    argTypes:
    - struct worker*
    - struct fast_reload_auth_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8065
      start: 8001
    functionDepth: 3
    functionLinenumber: 8001
    functionLinenumberEnd: 8065
    functionName: fr_worker_auth_cha
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - fr_worker_auth_add
    - fr_worker_auth_del
    - log_err
    - auth_xfer_delete
    - rbtree_delete
    - lock_basic_unlock
    - lock_rw_unlock
    - fr_pickup_auth_locks
    - auth_xfer_create
    - auth_xfr_pickup_config
    linkageType: ''
    returnType: void
    signature: void fr_worker_auth_cha(struct worker* worker, struct fast_reload_auth_change*
      item)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fr_worker_auth_del
      Src: /src/unbound/daemon/remote.c:8075,1
    - Dst: fr_worker_auth_add
      Src: /src/unbound/daemon/remote.c:8079,1
    - Dst: fr_worker_auth_cha
      Src: /src/unbound/daemon/remote.c:8083,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - worker
    - auth_zone_change_list
    argTypes:
    - struct worker*
    - struct fast_reload_auth_change*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8086
      start: 8068
    functionDepth: 4
    functionLinenumber: 8068
    functionLinenumberEnd: 8086
    functionName: fr_worker_pickup_auth_changes
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - fr_worker_auth_add
    - fr_worker_auth_del
    - fr_worker_auth_cha
    linkageType: ''
    returnType: void
    signature: "void fr_worker_pickup_auth_changes(struct worker* worker,\n\tstruct
      fast_reload_auth_change* auth_zone_change_list)"
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 20
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8124
      start: 8089
    functionDepth: 0
    functionLinenumber: 8089
    functionLinenumberEnd: 8124
    functionName: fr_worker_pickup_listen_dnsport
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fr_worker_pickup_listen_dnsport(struct worker* worker)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8149
      start: 8127
    functionDepth: 0
    functionLinenumber: 8127
    functionLinenumberEnd: 8149
    functionName: fr_worker_pickup_outside_network
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fr_worker_pickup_outside_network(struct worker* worker)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:8158,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/remote.c:8180,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/remote.c:8182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8183
      start: 8153
    functionDepth: 1
    functionLinenumber: 8153
    functionLinenumberEnd: 8183
    functionName: fr_worker_pickup_dnstap_changes
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - lock_basic_unlock
    - log_assert
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: void fr_worker_pickup_dnstap_changes(struct worker* worker)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fr_worker_pickup_mesh
      Src: /src/unbound/daemon/remote.c:8199,1
    - Dst: tcl_remove_old
      Src: /src/unbound/daemon/remote.c:8204,1
    - Dst: fr_worker_pickup_auth_changes
      Src: /src/unbound/daemon/remote.c:8208,1
    - Dst: fr_worker_pickup_listen_dnsport
      Src: /src/unbound/daemon/remote.c:8213,1
    - Dst: fr_worker_pickup_outside_network
      Src: /src/unbound/daemon/remote.c:8214,1
    - Dst: fr_worker_pickup_dnstap_changes
      Src: /src/unbound/daemon/remote.c:8216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8218
      start: 8186
    functionDepth: 5
    functionLinenumber: 8186
    functionLinenumberEnd: 8218
    functionName: fast_reload_worker_pickup_changes
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - fr_worker_pickup_outside_network
    - tcl_remove_old
    - fr_worker_pickup_dnstap_changes
    - fr_worker_pickup_listen_dnsport
    - fr_worker_pickup_mesh
    - fr_worker_pickup_auth_changes
    linkageType: ''
    returnType: void
    signature: void fast_reload_worker_pickup_changes(struct worker* worker)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: worker_send_cmd
      Src: /src/unbound/daemon/remote.c:8233,1
    - Dst: fr_read_ack_from_workers
      Src: /src/unbound/daemon/remote.c:8237,1
    - Dst: fr_send_cmd_to
      Src: /src/unbound/daemon/remote.c:8240,1
    - Dst: fr_poll_for_reload_start
      Src: /src/unbound/daemon/remote.c:8243,1
    - Dst: worker_send_cmd
      Src: /src/unbound/daemon/remote.c:8249,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:8254,1
    - Dst: mesh_delete_all
      Src: /src/unbound/daemon/remote.c:8255,1
    - Dst: fast_reload_worker_pickup_changes
      Src: /src/unbound/daemon/remote.c:8257,1
    - Dst: fr_read_ack_from_workers
      Src: /src/unbound/daemon/remote.c:8260,1
    - Dst: fr_send_cmd_to
      Src: /src/unbound/daemon/remote.c:8263,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:8265,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 1
    argNames:
    - fr
    argTypes:
    - struct fast_reload_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8266
      start: 8223
    functionDepth: 3
    functionLinenumber: 8223
    functionLinenumberEnd: 8266
    functionName: fr_main_perform_reload_stop
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - mesh_delete_all
    - fr_send_cmd_to
    - verbose
    - fr_poll_for_reload_start
    - worker_send_cmd
    - fr_read_ack_from_workers
    - fast_reload_worker_pickup_changes
    linkageType: ''
    returnType: void
    signature: void fr_main_perform_reload_stop(struct fast_reload_thread* fr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: worker_send_cmd
      Src: /src/unbound/daemon/remote.c:8283,1
    - Dst: fr_read_ack_from_workers
      Src: /src/unbound/daemon/remote.c:8287,1
    - Dst: fast_reload_worker_pickup_changes
      Src: /src/unbound/daemon/remote.c:8288,1
    - Dst: fr_send_cmd_to
      Src: /src/unbound/daemon/remote.c:8291,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - fr
    argTypes:
    - struct fast_reload_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8292
      start: 8272
    functionDepth: 3
    functionLinenumber: 8272
    functionLinenumberEnd: 8292
    functionName: fr_main_perform_reload_nopause_poll
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - worker_send_cmd
    - fr_read_ack_from_workers
    - fast_reload_worker_pickup_changes
    - fr_send_cmd_to
    linkageType: ''
    returnType: void
    signature: void fr_main_perform_reload_nopause_poll(struct fast_reload_thread*
      fr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:8299,1
    - Dst: fr_notification_to_string
      Src: /src/unbound/daemon/remote.c:8300,1
    - Dst: fr_main_perform_printout
      Src: /src/unbound/daemon/remote.c:8302,1
    - Dst: fr_main_perform_done
      Src: /src/unbound/daemon/remote.c:8306,1
    - Dst: fr_main_perform_reload_stop
      Src: /src/unbound/daemon/remote.c:8308,1
    - Dst: fr_main_perform_reload_nopause_poll
      Src: /src/unbound/daemon/remote.c:8310,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:8312,1
    - Dst: fr_notification_to_string
      Src: /src/unbound/daemon/remote.c:8313,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 2
    argNames:
    - fr
    - status
    argTypes:
    - struct fast_reload_thread*
    - enum fast_reload_notification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8315
      start: 8295
    functionDepth: 4
    functionLinenumber: 8295
    functionLinenumberEnd: 8315
    functionName: fr_main_perform_cmd
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - log_err
    - verbose
    - fr_main_perform_printout
    - fr_notification_to_string
    - fr_main_perform_done
    - fr_main_perform_reload_stop
    - fr_main_perform_reload_nopause_poll
    linkageType: ''
    returnType: void
    signature: "void fr_main_perform_cmd(struct fast_reload_thread* fr,\n\tenum fast_reload_notification
      status)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:8324,1
    - Dst: recv
      Src: /src/unbound/daemon/remote.c:8325,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:8336,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:8337,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:8342,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/daemon/remote.c:8343,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:8348,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:8349,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:8352,1
    - Dst: fr_main_perform_cmd
      Src: /src/unbound/daemon/remote.c:8365,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 1
    argNames:
    - fr
    argTypes:
    - struct fast_reload_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8366
      start: 8318
    functionDepth: 5
    functionLinenumber: 8318
    functionLinenumberEnd: 8366
    functionName: fr_main_handle_cmd
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - log_err
    - verbose
    - WSAGetLastError
    - ub_winsock_tcp_wouldblock
    - log_assert
    - sock_strerror
    - recv
    - fr_main_perform_cmd
    linkageType: ''
    returnType: void
    signature: void fr_main_handle_cmd(struct fast_reload_thread* fr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sock_poll_timeout
      Src: /src/unbound/daemon/remote.c:8376,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:8377,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/daemon/remote.c:8381,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/daemon/remote.c:8390,1
    - Dst: fr_main_handle_cmd
      Src: /src/unbound/daemon/remote.c:8396,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - fr
    argTypes:
    - struct fast_reload_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8398
      start: 8369
    functionDepth: 6
    functionLinenumber: 8369
    functionLinenumberEnd: 8398
    functionName: fr_check_cmd_from_thread
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 2
    functionsReached:
    - log_err
    - fr_main_handle_cmd
    - sock_poll_timeout
    - ub_winsock_tcp_wouldblock
    linkageType: ''
    returnType: void
    signature: void fr_check_cmd_from_thread(struct fast_reload_thread* fr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fr_main_handle_cmd
      Src: /src/unbound/daemon/remote.c:8408,1
    - Dst: fr_check_cmd_from_thread
      Src: /src/unbound/daemon/remote.c:8412,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8414
      start: 8400
    functionDepth: 7
    functionLinenumber: 8400
    functionLinenumberEnd: 8414
    functionName: fast_reload_service_cb
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - fr_check_cmd_from_thread
    - fr_main_handle_cmd
    linkageType: ''
    returnType: void
    signature: "void fast_reload_service_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(bits),\n\tvoid*
      arg)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ERR_clear_error
      Src: /src/unbound/daemon/remote.c:8423,1
    - Dst: SSL_write
      Src: /src/unbound/daemon/remote.c:8424,1
    - Dst: SSL_get_error
      Src: /src/unbound/daemon/remote.c:8428,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:8430,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/daemon/remote.c:8436,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/daemon/remote.c:8440,1
    - Dst: comm_point_internal
      Src: /src/unbound/daemon/remote.c:8440,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:8451,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:8453,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/daemon/remote.c:8456,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 1
    argNames:
    - printq
    argTypes:
    - struct fast_reload_printq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8461
      start: 8419
    functionDepth: 1
    functionLinenumber: 8419
    functionLinenumberEnd: 8461
    functionName: fr_client_send_item_ssl
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - log_err
    - comm_point_listen_for_rw
    - comm_point_internal
    - SSL_write
    - log_crypto_err_io
    - ub_winsock_tcp_wouldblock
    - sock_strerror
    - ERR_clear_error
    - SSL_get_error
    linkageType: ''
    returnType: int
    signature: int fr_client_send_item_ssl(struct fast_reload_printq* printq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: send
      Src: /src/unbound/daemon/remote.c:8470,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:8481,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:8482,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/remote.c:8483,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/daemon/remote.c:8487,1
    - Dst: comm_point_internal
      Src: /src/unbound/daemon/remote.c:8487,1
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:8491,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/remote.c:8492,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 1
    argNames:
    - printq
    argTypes:
    - struct fast_reload_printq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8494
      start: 8466
    functionDepth: 1
    functionLinenumber: 8466
    functionLinenumberEnd: 8494
    functionName: fr_client_send_item_fd
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - log_err
    - comm_point_internal
    - WSAGetLastError
    - ub_winsock_tcp_wouldblock
    - sock_strerror
    - send
    linkageType: ''
    returnType: int
    signature: int fr_client_send_item_fd(struct fast_reload_printq* printq)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/daemon/remote.c:8550,1
    - Dst: strlen
      Src: /src/unbound/daemon/remote.c:8554,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - printq
    argTypes:
    - struct fast_reload_printq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8555
      start: 8527
    functionDepth: 1
    functionLinenumber: 8527
    functionLinenumberEnd: 8555
    functionName: fr_client_pickup_next_item
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - free
    - strlen
    linkageType: ''
    returnType: void
    signature: void fr_client_pickup_next_item(struct fast_reload_printq* printq)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: fr_printq_remove
      Src: /src/unbound/daemon/remote.c:8562,1
    - Dst: verbose
      Src: /src/unbound/daemon/remote.c:8566,1
    - Dst: fr_printq_remove
      Src: /src/unbound/daemon/remote.c:8567,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/daemon/remote.c:8573,1
    - Dst: fr_client_pickup_next_item
      Src: /src/unbound/daemon/remote.c:8580,1
    - Dst: fr_printq_remove
      Src: /src/unbound/daemon/remote.c:8585,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/daemon/remote.c:8589,1
    - Dst: fr_client_send_item
      Src: /src/unbound/daemon/remote.c:8598,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:8604,1
    - Dst: fr_printq_remove
      Src: /src/unbound/daemon/remote.c:8612,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/daemon/remote.c:8616,1
    - Dst: fr_client_pickup_next_item
      Src: /src/unbound/daemon/remote.c:8619,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - arg
    - err
    - ATTR_UNUSED(rep)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8623
      start: 8557
    functionDepth: 2
    functionLinenumber: 8557
    functionLinenumberEnd: 8623
    functionName: fast_reload_client_callback
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - comm_point_listen_for_rw
    - comm_point_stop_listening
    - fr_printq_remove
    - verbose
    - fr_client_pickup_next_item
    - free
    - fr_client_send_item
    linkageType: ''
    returnType: int
    signature: "int fast_reload_client_callback(struct comm_point* ATTR_UNUSED(c),
      void* arg,\n\tint err, struct comm_reply* ATTR_UNUSED(rep))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/daemon/remote.c:8630,1
    - Dst: calloc
      Src: /src/unbound/daemon/remote.c:8633,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:8635,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - c
    - worker
    argTypes:
    - struct comm_point*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8643
      start: 8627
    functionDepth: 1
    functionLinenumber: 8627
    functionLinenumberEnd: 8643
    functionName: fr_printq_create
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - free
    - calloc
    linkageType: ''
    returnType: struct fast_reload_printq
    signature: 'struct fast_reload_printq *

      fr_printq_create(struct comm_point* c, struct worker* worker)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SSL_shutdown
      Src: /src/unbound/daemon/remote.c:8654,1
    - Dst: SSL_free
      Src: /src/unbound/daemon/remote.c:8655,1
    - Dst: comm_point_delete
      Src: /src/unbound/daemon/remote.c:8658,1
    - Dst: config_delstrlist
      Src: /src/unbound/daemon/remote.c:8660,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:8661,1
    - Dst: free
      Src: /src/unbound/daemon/remote.c:8663,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - printq
    argTypes:
    - struct fast_reload_printq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8664
      start: 8647
    functionDepth: 1
    functionLinenumber: 8647
    functionLinenumberEnd: 8664
    functionName: fr_printq_delete
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 2
    functionsReached:
    - comm_point_delete
    - SSL_free
    - free
    - config_delstrlist
    - SSL_shutdown
    linkageType: ''
    returnType: void
    signature: void fr_printq_delete(struct fast_reload_printq* printq)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - printq
    argTypes:
    - struct fast_reload_printq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8673
      start: 8667
    functionDepth: 0
    functionLinenumber: 8667
    functionLinenumberEnd: 8673
    functionName: fr_printq_empty
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fr_printq_empty(struct fast_reload_printq* printq)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - printq
    - daemon
    argTypes:
    - struct fast_reload_printq*
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8687
      start: 8676
    functionDepth: 0
    functionLinenumber: 8676
    functionLinenumberEnd: 8687
    functionName: fr_printq_list_insert
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fr_printq_list_insert(struct fast_reload_printq* printq, struct
      daemon* daemon)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fr_printq_delete
      Src: /src/unbound/daemon/remote.c:8696,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct fast_reload_printq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8699
      start: 8690
    functionDepth: 2
    functionLinenumber: 8690
    functionLinenumberEnd: 8699
    functionName: fast_reload_printq_list_delete
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - fr_printq_delete
    linkageType: ''
    returnType: void
    signature: void fast_reload_printq_list_delete(struct fast_reload_printq* list)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - printq
    argTypes:
    - struct fast_reload_printq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8712
      start: 8702
    functionDepth: 0
    functionLinenumber: 8702
    functionLinenumberEnd: 8712
    functionName: fr_printq_list_remove
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fr_printq_list_remove(struct fast_reload_printq* printq)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fr_printq_list_remove
      Src: /src/unbound/daemon/remote.c:8725,1
    - Dst: fr_printq_delete
      Src: /src/unbound/daemon/remote.c:8726,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - printq
    argTypes:
    - struct fast_reload_printq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8727
      start: 8716
    functionDepth: 2
    functionLinenumber: 8716
    functionLinenumberEnd: 8727
    functionName: fr_printq_remove
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - fr_printq_list_remove
    - fr_printq_delete
    linkageType: ''
    returnType: void
    signature: void fr_printq_remove(struct fast_reload_printq* printq)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fr_send_cmd_to
      Src: /src/unbound/daemon/remote.c:8734,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fr
    argTypes:
    - struct fast_reload_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8735
      start: 8731
    functionDepth: 3
    functionLinenumber: 8731
    functionLinenumberEnd: 8735
    functionName: fr_send_stop
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - fr_send_cmd_to
    linkageType: ''
    returnType: void
    signature: void fr_send_stop(struct fast_reload_thread* fr)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/daemon/remote.c:8742,1
    - Dst: fast_reload_thread_setup
      Src: /src/unbound/daemon/remote.c:8745,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:8747,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/daemon/remote.c:8761,1
    - Dst: ub_event_new
      Src: /src/unbound/daemon/remote.c:8762,1
    - Dst: comm_base_internal
      Src: /src/unbound/daemon/remote.c:8763,1
    - Dst: fast_reload_thread_desetup
      Src: /src/unbound/daemon/remote.c:8768,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:8769,1
    - Dst: ub_event_add
      Src: /src/unbound/daemon/remote.c:8773,1
    - Dst: fast_reload_thread_desetup
      Src: /src/unbound/daemon/remote.c:8775,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:8776,1
    - Dst: log_assert
      Src: /src/unbound/daemon/remote.c:8785,1
    - Dst: state_list_remove_elem
      Src: /src/unbound/daemon/remote.c:8786,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/daemon/remote.c:8791,1
    - Dst: fr_printq_create
      Src: /src/unbound/daemon/remote.c:8792,1
    - Dst: fast_reload_thread_desetup
      Src: /src/unbound/daemon/remote.c:8795,1
    - Dst: ssl_printf
      Src: /src/unbound/daemon/remote.c:8796,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/daemon/remote.c:8803,1
    - Dst: ub_thread_create
      Src: /src/unbound/daemon/remote.c:8806,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 6
    argNames:
    - ssl
    - worker
    - s
    - fr_verb
    - fr_nopause
    - fr_drop_mesh
    argTypes:
    - RES*
    - struct worker*
    - struct rc_state*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8811
      start: 8737
    functionDepth: 4
    functionLinenumber: 8737
    functionLinenumberEnd: 8811
    functionName: fast_reload_thread_start
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 1
    functionsReached:
    - log_err
    - comm_point_stop_listening
    - fr_printq_create
    - ub_thread_create
    - state_list_remove_elem
    - fast_reload_thread_setup
    - ub_event_add
    - fd_set_nonblock
    - log_assert
    - ssl_printf
    - comm_base_internal
    - ub_event_new
    - fast_reload_thread_desetup
    linkageType: ''
    returnType: void
    signature: "void fast_reload_thread_start(RES* ssl, struct worker* worker, struct
      rc_state* s,\n\tint fr_verb, int fr_nopause, int fr_drop_mesh)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fr_send_stop
      Src: /src/unbound/daemon/remote.c:8819,1
    - Dst: fr_main_perform_done
      Src: /src/unbound/daemon/remote.c:8823,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - fast_reload_thread
    argTypes:
    - struct fast_reload_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8825
      start: 8813
    functionDepth: 4
    functionLinenumber: 8813
    functionLinenumberEnd: 8825
    functionName: fast_reload_thread_stop
    functionSourceFile: /src/unbound/daemon/remote.c
    functionUses: 0
    functionsReached:
    - fr_send_stop
    - fr_main_perform_done
    linkageType: ''
    returnType: void
    signature: void fast_reload_thread_stop(struct fast_reload_thread* fast_reload_thread)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: listen_get_mem
      Src: /src/unbound/daemon/worker.c:132,1
    - Dst: outnet_get_mem
      Src: /src/unbound/daemon/worker.c:133,1
    - Dst: slabhash_get_mem
      Src: /src/unbound/daemon/worker.c:134,1
    - Dst: slabhash_get_mem
      Src: /src/unbound/daemon/worker.c:135,1
    - Dst: infra_get_mem
      Src: /src/unbound/daemon/worker.c:136,1
    - Dst: mesh_get_mem
      Src: /src/unbound/daemon/worker.c:137,1
    - Dst: alloc_get_mem
      Src: /src/unbound/daemon/worker.c:138,1
    - Dst: alloc_get_mem
      Src: /src/unbound/daemon/worker.c:139,1
    - Dst: anchors_get_mem
      Src: /src/unbound/daemon/worker.c:140,1
    - Dst: fptr_ok
      Src: /src/unbound/daemon/worker.c:144,1
    - Dst: fptr_whitelist_mod_get_mem
      Src: /src/unbound/daemon/worker.c:144,1
    - Dst: strcmp
      Src: /src/unbound/daemon/worker.c:146,1
    - Dst: strcmp
      Src: /src/unbound/daemon/worker.c:150,1
    - Dst: comm_point_get_mem
      Src: /src/unbound/daemon/worker.c:159,1
    - Dst: regional_get_mem
      Src: /src/unbound/daemon/worker.c:161,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/daemon/worker.c:163,1
    - Dst: log_info
      Src: /src/unbound/daemon/worker.c:165,1
    - Dst: forwards_get_mem
      Src: /src/unbound/daemon/worker.c:165,1
    - Dst: log_info
      Src: /src/unbound/daemon/worker.c:167,1
    - Dst: hints_get_mem
      Src: /src/unbound/daemon/worker.c:167,1
    - Dst: acl_list_get_mem
      Src: /src/unbound/daemon/worker.c:169,1
    - Dst: serviced_get_mem
      Src: /src/unbound/daemon/worker.c:171,1
    - Dst: log_info
      Src: /src/unbound/daemon/worker.c:176,1
    - Dst: log_info
      Src: /src/unbound/daemon/worker.c:185,1
    - Dst: log_info
      Src: /src/unbound/daemon/worker.c:193,1
    - Dst: fptr_ok
      Src: /src/unbound/daemon/worker.c:205,1
    - Dst: fptr_whitelist_mod_get_mem
      Src: /src/unbound/daemon/worker.c:205,1
    - Dst: strcmp
      Src: /src/unbound/daemon/worker.c:207,1
    - Dst: strcmp
      Src: /src/unbound/daemon/worker.c:211,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:218,1
    - Dst: slabhash_get_mem
      Src: /src/unbound/daemon/worker.c:220,1
    - Dst: slabhash_get_mem
      Src: /src/unbound/daemon/worker.c:221,1
    - Dst: infra_get_mem
      Src: /src/unbound/daemon/worker.c:222,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:225,1
    - Dst: slabhash_get_mem
      Src: /src/unbound/daemon/worker.c:226,1
    - Dst: slabhash_get_mem
      Src: /src/unbound/daemon/worker.c:227,1
    - Dst: infra_get_mem
      Src: /src/unbound/daemon/worker.c:228,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 46
    argCount: 2
    argNames:
    - ATTR_UNUSED(worker)
    - ATTR_UNUSED(cur_serv)
    argTypes:
    - struct worker*
    - struct serviced_query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 116
    functionDepth: 2
    functionLinenumber: 116
    functionLinenumberEnd: 232
    functionName: worker_mem_report
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - strcmp
    - log_info
    - hints_get_mem
    - slabhash_get_mem
    - alloc_get_mem
    - mesh_get_mem
    - serviced_get_mem
    - fptr_whitelist_mod_get_mem
    - fptr_ok
    - infra_get_mem
    - outnet_get_mem
    - forwards_get_mem
    - comm_point_get_mem
    - verbose
    - listen_get_mem
    - regional_get_mem
    - sldns_buffer_capacity
    - acl_list_get_mem
    - anchors_get_mem
    linkageType: ''
    returnType: void
    signature: "void worker_mem_report(struct worker* ATTR_UNUSED(worker),\n\tstruct
      serviced_query* ATTR_UNUSED(cur_serv))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/unbound/daemon/worker.c:237,1
    - Dst: tube_write_msg
      Src: /src/unbound/daemon/worker.c:238,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:239,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - worker
    - cmd
    argTypes:
    - struct worker*
    - enum worker_commands
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 241
    functionName: worker_send_cmd
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 5
    functionsReached:
    - log_err
    - tube_write_msg
    - htonl
    linkageType: ''
    returnType: void
    signature: void worker_send_cmd(struct worker* worker, enum worker_commands cmd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:251,1
    - Dst: mesh_report_reply
      Src: /src/unbound/daemon/worker.c:253,1
    - Dst: worker_mem_report
      Src: /src/unbound/daemon/worker.c:254,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/daemon/worker.c:258,1
    - Dst: LDNS_QR_WIRE
      Src: /src/unbound/daemon/worker.c:259,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:259,1
    - Dst: LDNS_OPCODE_WIRE
      Src: /src/unbound/daemon/worker.c:260,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:260,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/daemon/worker.c:262,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:262,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:265,1
    - Dst: mesh_report_reply
      Src: /src/unbound/daemon/worker.c:266,1
    - Dst: worker_mem_report
      Src: /src/unbound/daemon/worker.c:268,1
    - Dst: mesh_report_reply
      Src: /src/unbound/daemon/worker.c:271,1
    - Dst: worker_mem_report
      Src: /src/unbound/daemon/worker.c:272,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - c
    - arg
    - error
    - reply_info
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 243
    functionDepth: 3
    functionLinenumber: 243
    functionLinenumberEnd: 274
    functionName: worker_handle_service_reply
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - worker_mem_report
    - verbose
    - LDNS_QDCOUNT
    - sldns_buffer_limit
    - mesh_report_reply
    - sldns_buffer_begin
    - LDNS_QR_WIRE
    - LDNS_OPCODE_WIRE
    linkageType: ''
    returnType: int
    signature: "int worker_handle_service_reply(struct comm_point* c, void* arg, int
      error,\n\tstruct comm_reply* reply_info)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - worker
    - err
    argTypes:
    - struct worker*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 294
    functionName: worker_err_ratelimit
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int worker_err_ratelimit(struct worker* worker, int err)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/daemon/worker.c:312,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/daemon/worker.c:313,1
    - Dst: LDNS_QR_SET
      Src: /src/unbound/daemon/worker.c:314,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:314,1
    - Dst: LDNS_RCODE_SET
      Src: /src/unbound/daemon/worker.c:315,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:315,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/daemon/worker.c:317,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:317,1
    - Dst: LDNS_QDCOUNT_SET
      Src: /src/unbound/daemon/worker.c:320,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:320,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/daemon/worker.c:321,1
    - Dst: LDNS_QDCOUNT_SET
      Src: /src/unbound/daemon/worker.c:325,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:325,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/daemon/worker.c:326,1
    - Dst: LDNS_ANCOUNT_SET
      Src: /src/unbound/daemon/worker.c:328,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:328,1
    - Dst: LDNS_NSCOUNT_SET
      Src: /src/unbound/daemon/worker.c:329,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:329,1
    - Dst: LDNS_ARCOUNT_SET
      Src: /src/unbound/daemon/worker.c:330,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:330,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/daemon/worker.c:331,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - pkt
    - err
    - qname_len
    argTypes:
    - sldns_buffer*
    - int
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 332
    functionName: query_error
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - LDNS_ANCOUNT_SET
    - LDNS_QDCOUNT
    - LDNS_RCODE_SET
    - sldns_buffer_flip
    - LDNS_ARCOUNT_SET
    - LDNS_QDCOUNT_SET
    - sldns_buffer_set_position
    - sldns_buffer_begin
    - LDNS_NSCOUNT_SET
    - sldns_buffer_read_u16_at
    - sldns_buffer_write_u16_at
    - LDNS_QR_SET
    linkageType: ''
    returnType: void
    signature: void query_error(sldns_buffer* pkt, int err, size_t qname_len)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/daemon/worker.c:354,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:355,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/daemon/worker.c:359,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:361,1
    - Dst: LDNS_QR_WIRE
      Src: /src/unbound/daemon/worker.c:365,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:365,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:366,1
    - Dst: LDNS_TC_WIRE
      Src: /src/unbound/daemon/worker.c:370,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:370,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:371,1
    - Dst: worker_err_ratelimit
      Src: /src/unbound/daemon/worker.c:372,1
    - Dst: LDNS_OPCODE_WIRE
      Src: /src/unbound/daemon/worker.c:375,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:375,1
    - Dst: LDNS_OPCODE_WIRE
      Src: /src/unbound/daemon/worker.c:376,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:376,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:377,1
    - Dst: LDNS_OPCODE_WIRE
      Src: /src/unbound/daemon/worker.c:378,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:378,1
    - Dst: worker_err_ratelimit
      Src: /src/unbound/daemon/worker.c:379,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/daemon/worker.c:382,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:382,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:383,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/daemon/worker.c:384,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:384,1
    - Dst: worker_err_ratelimit
      Src: /src/unbound/daemon/worker.c:385,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/daemon/worker.c:388,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:388,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/daemon/worker.c:389,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:389,1
    - Dst: LDNS_OPCODE_WIRE
      Src: /src/unbound/daemon/worker.c:390,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:390,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:391,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/daemon/worker.c:392,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:392,1
    - Dst: worker_err_ratelimit
      Src: /src/unbound/daemon/worker.c:393,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/daemon/worker.c:396,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:396,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:397,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/daemon/worker.c:398,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:398,1
    - Dst: worker_err_ratelimit
      Src: /src/unbound/daemon/worker.c:399,1
    - Dst: LDNS_ARCOUNT
      Src: /src/unbound/daemon/worker.c:402,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:402,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:403,1
    - Dst: LDNS_ARCOUNT
      Src: /src/unbound/daemon/worker.c:404,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:404,1
    - Dst: worker_err_ratelimit
      Src: /src/unbound/daemon/worker.c:405,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 51
    argCount: 3
    argNames:
    - pkt
    - worker
    - out
    argTypes:
    - sldns_buffer*
    - struct worker*
    - struct check_request_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 410
    functionName: worker_check_request
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - LDNS_TC_WIRE
    - worker_err_ratelimit
    - LDNS_ANCOUNT
    - verbose
    - LDNS_QDCOUNT
    - sldns_buffer_limit
    - LDNS_NSCOUNT
    - sldns_buffer_begin
    - LDNS_QR_WIRE
    - LDNS_OPCODE_WIRE
    - LDNS_ARCOUNT
    linkageType: ''
    returnType: void
    signature: "void worker_check_request(sldns_buffer* pkt, struct worker* worker,\n\tstruct
      check_request_result* out)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: send
      Src: /src/unbound/daemon/worker.c:428,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/worker.c:438,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/worker.c:439,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/worker.c:440,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:444,1
    - Dst: sock_strerror
      Src: /src/unbound/daemon/worker.c:445,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 450
      start: 419
    functionDepth: 1
    functionLinenumber: 419
    functionLinenumberEnd: 450
    functionName: worker_send_reload_ack
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_err
    - sock_strerror
    - WSAGetLastError
    - send
    linkageType: ''
    returnType: void
    signature: void worker_send_reload_ack(struct worker* worker)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: worker_send_reload_ack
      Src: /src/unbound/daemon/worker.c:458,1
    - Dst: tube_read_msg
      Src: /src/unbound/daemon/worker.c:460,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:461,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:465,1
    - Dst: free
      Src: /src/unbound/daemon/worker.c:467,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/daemon/worker.c:470,1
    - Dst: free
      Src: /src/unbound/daemon/worker.c:471,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:474,1
    - Dst: comm_base_exit
      Src: /src/unbound/daemon/worker.c:475,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:479,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:482,1
    - Dst: mesh_delete_all
      Src: /src/unbound/daemon/worker.c:483,1
    - Dst: fast_reload_worker_pickup_changes
      Src: /src/unbound/daemon/worker.c:485,1
    - Dst: worker_send_reload_ack
      Src: /src/unbound/daemon/worker.c:486,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:487,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 453
    functionDepth: 2
    functionLinenumber: 453
    functionLinenumberEnd: 488
    functionName: worker_stop_and_wait
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_err
    - mesh_delete_all
    - verbose
    - worker_send_reload_ack
    - free
    - tube_read_msg
    - sldns_read_uint32
    - fast_reload_worker_pickup_changes
    - comm_base_exit
    linkageType: ''
    returnType: void
    signature: void worker_stop_and_wait(struct worker* worker)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/daemon/worker.c:497,1
    - Dst: comm_base_exit
      Src: /src/unbound/daemon/worker.c:499,1
    - Dst: log_info
      Src: /src/unbound/daemon/worker.c:500,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:504,1
    - Dst: free
      Src: /src/unbound/daemon/worker.c:505,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/daemon/worker.c:508,1
    - Dst: free
      Src: /src/unbound/daemon/worker.c:509,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:512,1
    - Dst: comm_base_exit
      Src: /src/unbound/daemon/worker.c:513,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:516,1
    - Dst: server_stats_reply
      Src: /src/unbound/daemon/worker.c:517,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:520,1
    - Dst: server_stats_reply
      Src: /src/unbound/daemon/worker.c:521,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:524,1
    - Dst: daemon_remote_exec
      Src: /src/unbound/daemon/worker.c:525,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:528,1
    - Dst: worker_stop_and_wait
      Src: /src/unbound/daemon/worker.c:529,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:532,1
    - Dst: fast_reload_worker_pickup_changes
      Src: /src/unbound/daemon/worker.c:533,1
    - Dst: worker_send_reload_ack
      Src: /src/unbound/daemon/worker.c:534,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:537,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 45
    argCount: 5
    argNames:
    - ATTR_UNUSED(tube)
    - msg
    - len
    - error
    - arg
    argTypes:
    - struct tube*
    - uint8_t*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 490
    functionDepth: 4
    functionLinenumber: 490
    functionLinenumberEnd: 540
    functionName: worker_handle_control_cmd
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_err
    - verbose
    - log_info
    - worker_send_reload_ack
    - worker_stop_and_wait
    - free
    - daemon_remote_exec
    - sldns_read_uint32
    - fast_reload_worker_pickup_changes
    - server_stats_reply
    - comm_base_exit
    linkageType: ''
    returnType: void
    signature: "void worker_handle_control_cmd(struct tube* ATTR_UNUSED(tube), uint8_t*
      msg,\n\tsize_t len, int error, void* arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - rep
    argTypes:
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 543
    functionDepth: 0
    functionLinenumber: 543
    functionLinenumberEnd: 566
    functionName: check_delegation_secure
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum sec_status
    signature: enum sec_status check_delegation_secure(struct reply_info *rep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/daemon/worker.c:580,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - rep
    argTypes:
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 569
    functionDepth: 1
    functionLinenumber: 569
    functionLinenumberEnd: 588
    functionName: deleg_remove_nonsecure_additional
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - memmove
    linkageType: ''
    returnType: void
    signature: void deleg_remove_nonsecure_additional(struct reply_info* rep)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: dns_cache_find_delegation
      Src: /src/unbound/daemon/worker.c:614,1
    - Dst: check_delegation_secure
      Src: /src/unbound/daemon/worker.c:625,1
    - Dst: inplace_cb_reply_servfail_call
      Src: /src/unbound/daemon/worker.c:637,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/daemon/worker.c:644,1
    - Dst: error_encode
      Src: /src/unbound/daemon/worker.c:648,1
    - Dst: deleg_remove_nonsecure_additional
      Src: /src/unbound/daemon/worker.c:659,1
    - Dst: inplace_cb_reply_cache_call
      Src: /src/unbound/daemon/worker.c:677,1
    - Dst: check_delegation_secure
      Src: /src/unbound/daemon/worker.c:685,1
    - Dst: check_delegation_secure
      Src: /src/unbound/daemon/worker.c:686,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/daemon/worker.c:688,1
    - Dst: reply_info_answer_encode
      Src: /src/unbound/daemon/worker.c:692,1
    - Dst: inplace_cb_reply_servfail_call
      Src: /src/unbound/daemon/worker.c:695,1
    - Dst: error_encode
      Src: /src/unbound/daemon/worker.c:699,1
    - Dst: server_stats_insrcode
      Src: /src/unbound/daemon/worker.c:704,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 62
    argCount: 6
    argNames:
    - worker
    - qinfo
    - id
    - flags
    - repinfo
    - edns
    argTypes:
    - struct worker*
    - struct query_info*
    - uint16_t
    - uint16_t
    - struct comm_reply*
    - struct edns_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 591
    functionDepth: 2
    functionLinenumber: 591
    functionLinenumberEnd: 707
    functionName: answer_norec_from_cache
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - server_stats_insrcode
    - reply_info_answer_encode
    - check_delegation_secure
    - inplace_cb_reply_servfail_call
    - deleg_remove_nonsecure_additional
    - dns_cache_find_delegation
    - edns_opt_list_append_ede
    - error_encode
    - inplace_cb_reply_cache_call
    linkageType: ''
    returnType: int
    signature: "int answer_norec_from_cache(struct worker* worker, struct query_info*
      qinfo,\n\tuint16_t id, uint16_t flags, struct comm_reply* repinfo,\n\tstruct
      edns_data* edns)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: respip_rewrite_reply
      Src: /src/unbound/daemon/worker.c:730,1
    - Dst: respip_inform_print
      Src: /src/unbound/daemon/worker.c:746,1
    - Dst: respip_action_to_rpz_action
      Src: /src/unbound/daemon/worker.c:757,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 19
    argCount: 10
    argNames:
    - worker
    - qinfo
    - cinfo
    - rep
    - addr
    - addrlen
    - alias_rrset
    - encode_repp
    - az
    - rpz_passthru
    argTypes:
    - struct worker*
    - struct query_info*
    - struct respip_client_info*
    - struct reply_info*
    - struct sockaddr_storage*
    - socklen_t
    - struct ub_packed_rrset_key**
    - struct reply_info**
    - struct auth_zones*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 762
      start: 714
    functionDepth: 1
    functionLinenumber: 714
    functionLinenumberEnd: 762
    functionName: apply_respip_action
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - respip_action_to_rpz_action
    - respip_inform_print
    - respip_rewrite_reply
    linkageType: ''
    returnType: int
    signature: "int apply_respip_action(struct worker* worker, const struct query_info*
      qinfo,\n\tstruct respip_client_info* cinfo, struct reply_info* rep,\n\tstruct
      sockaddr_storage* addr, socklen_t addrlen,\n\tstruct ub_packed_rrset_key** alias_rrset,\n\tstruct
      reply_info** encode_repp, struct auth_zones* az,\n\tint* rpz_passthru)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/daemon/worker.c:790,1
    - Dst: reply_info_can_answer_expired
      Src: /src/unbound/daemon/worker.c:804,1
    - Dst: rrset_array_lock
      Src: /src/unbound/daemon/worker.c:806,1
    - Dst: rrset_array_lock
      Src: /src/unbound/daemon/worker.c:817,1
    - Dst: htons
      Src: /src/unbound/daemon/worker.c:824,1
    - Dst: htons
      Src: /src/unbound/daemon/worker.c:825,1
    - Dst: reply_check_cname_chain
      Src: /src/unbound/daemon/worker.c:826,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:828,1
    - Dst: inplace_cb_reply_servfail_call
      Src: /src/unbound/daemon/worker.c:842,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/daemon/worker.c:848,1
    - Dst: error_encode
      Src: /src/unbound/daemon/worker.c:852,1
    - Dst: rrset_array_unlock_touch
      Src: /src/unbound/daemon/worker.c:854,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:862,1
    - Dst: reply_all_rrsets_secure
      Src: /src/unbound/daemon/worker.c:866,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:870,1
    - Dst: apply_respip_action
      Src: /src/unbound/daemon/worker.c:886,1
    - Dst: respip_merge_cname
      Src: /src/unbound/daemon/worker.c:891,1
    - Dst: reply_info_copy
      Src: /src/unbound/daemon/worker.c:908,1
    - Dst: EDNS_OPT_LIST_APPEND_EDE
      Src: /src/unbound/daemon/worker.c:916,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/daemon/worker.c:924,1
    - Dst: inplace_cb_reply_cache_call
      Src: /src/unbound/daemon/worker.c:928,1
    - Dst: reply_info_answer_encode
      Src: /src/unbound/daemon/worker.c:932,1
    - Dst: inplace_cb_reply_servfail_call
      Src: /src/unbound/daemon/worker.c:936,1
    - Dst: error_encode
      Src: /src/unbound/daemon/worker.c:940,1
    - Dst: rrset_array_unlock_touch
      Src: /src/unbound/daemon/worker.c:946,1
    - Dst: rrset_array_unlock_touch
      Src: /src/unbound/daemon/worker.c:952,1
    CyclomaticComplexity: 60
    EdgeCount: 60
    ICount: 110
    argCount: 14
    argNames:
    - worker
    - qinfo
    - cinfo
    - need_drop
    - is_expired_answer
    - is_secure_answer
    - alias_rrset
    - partial_repp
    - rep
    - id
    - flags
    - repinfo
    - edns
    - rpz_passthru
    argTypes:
    - struct worker*
    - struct query_info*
    - struct respip_client_info*
    - int*
    - int*
    - int*
    - struct ub_packed_rrset_key**
    - struct reply_info**
    - struct reply_info*
    - uint16_t
    - uint16_t
    - struct comm_reply*
    - struct edns_data*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 772
    functionDepth: 1
    functionLinenumber: 772
    functionLinenumberEnd: 955
    functionName: answer_from_cache
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - respip_merge_cname
    - reply_all_rrsets_secure
    - reply_info_answer_encode
    - verbose
    - TTL_IS_EXPIRED
    - inplace_cb_reply_cache_call
    - inplace_cb_reply_servfail_call
    - rrset_array_unlock_touch
    - htons
    - reply_info_can_answer_expired
    - EDNS_OPT_LIST_APPEND_EDE
    - edns_opt_list_append_ede
    - rrset_array_lock
    - reply_check_cname_chain
    - error_encode
    - reply_info_copy
    - apply_respip_action
    linkageType: ''
    returnType: int
    signature: "int answer_from_cache(struct worker* worker, struct query_info* qinfo,\n\tstruct
      respip_client_info* cinfo, int* need_drop, int* is_expired_answer,\n\tint* is_secure_answer,
      struct ub_packed_rrset_key** alias_rrset,\n\tstruct reply_info** partial_repp,\n\tstruct
      reply_info* rep, uint16_t id, uint16_t flags,\n\tstruct comm_reply* repinfo,
      struct edns_data* edns, int* rpz_passthru)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_copy
      Src: /src/unbound/daemon/worker.c:968,1
    - Dst: comm_point_send_reply
      Src: /src/unbound/daemon/worker.c:972,1
    - Dst: server_stats_prefetch
      Src: /src/unbound/daemon/worker.c:974,1
    - Dst: modstack_find
      Src: /src/unbound/daemon/worker.c:979,1
    - Dst: mesh_new_prefetch
      Src: /src/unbound/daemon/worker.c:981,1
    - Dst: mesh_new_prefetch
      Src: /src/unbound/daemon/worker.c:991,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 8
    argNames:
    - worker
    - qinfo
    - flags
    - repinfo
    - leeway
    - noreply
    - rpz_passthru
    - opt_list
    argTypes:
    - struct worker*
    - struct query_info*
    - uint16_t
    - struct comm_reply*
    - time_t
    - int
    - int
    - struct edns_option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 958
    functionDepth: 1
    functionLinenumber: 958
    functionLinenumberEnd: 993
    functionName: reply_and_prefetch
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - mesh_new_prefetch
    - sldns_buffer_copy
    - modstack_find
    - server_stats_prefetch
    - comm_point_send_reply
    linkageType: ''
    returnType: void
    signature: "void reply_and_prefetch(struct worker* worker, struct query_info*
      qinfo,\n\tuint16_t flags, struct comm_reply* repinfo, time_t leeway, int noreply,\n\tint
      rpz_passthru, struct edns_option* opt_list)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_RD_WIRE
      Src: /src/unbound/daemon/worker.c:1010,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1010,1
    - Dst: LDNS_CD_WIRE
      Src: /src/unbound/daemon/worker.c:1011,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1011,1
    - Dst: inplace_cb_reply_local_call
      Src: /src/unbound/daemon/worker.c:1017,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/daemon/worker.c:1021,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/daemon/worker.c:1022,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/daemon/worker.c:1023,1
    - Dst: LDNS_RD_SET
      Src: /src/unbound/daemon/worker.c:1024,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1024,1
    - Dst: LDNS_CD_SET
      Src: /src/unbound/daemon/worker.c:1025,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1025,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/daemon/worker.c:1026,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/daemon/worker.c:1027,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/daemon/worker.c:1028,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/daemon/worker.c:1029,1
    - Dst: query_dname_len
      Src: /src/unbound/daemon/worker.c:1030,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/daemon/worker.c:1031,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/daemon/worker.c:1032,1
    - Dst: strlen
      Src: /src/unbound/daemon/worker.c:1034,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/daemon/worker.c:1036,1
    - Dst: calc_edns_field_size
      Src: /src/unbound/daemon/worker.c:1037,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/daemon/worker.c:1038,1
    - Dst: LDNS_TC_SET
      Src: /src/unbound/daemon/worker.c:1039,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1039,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/daemon/worker.c:1042,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/daemon/worker.c:1043,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/daemon/worker.c:1044,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/daemon/worker.c:1045,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/daemon/worker.c:1046,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/daemon/worker.c:1047,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/daemon/worker.c:1048,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/daemon/worker.c:1050,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/daemon/worker.c:1051,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/daemon/worker.c:1052,1
    - Dst: calc_edns_field_size
      Src: /src/unbound/daemon/worker.c:1052,1
    - Dst: attach_edns_record
      Src: /src/unbound/daemon/worker.c:1053,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 40
    argCount: 6
    argNames:
    - pkt
    - str
    - num
    - edns
    - worker
    - repinfo
    argTypes:
    - sldns_buffer*
    - char**
    - int
    - struct edns_data*
    - struct worker*
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1005
    functionDepth: 1
    functionLinenumber: 1005
    functionLinenumberEnd: 1054
    functionName: chaos_replystr
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - query_dname_len
    - attach_edns_record
    - sldns_buffer_skip
    - sldns_buffer_write_u16_at
    - LDNS_CD_SET
    - sldns_buffer_begin
    - LDNS_RD_WIRE
    - strlen
    - calc_edns_field_size
    - LDNS_RD_SET
    - sldns_buffer_write
    - sldns_buffer_write_u16
    - LDNS_CD_WIRE
    - sldns_buffer_capacity
    - LDNS_TC_SET
    - sldns_buffer_flip
    - sldns_buffer_limit
    - sldns_buffer_clear
    - inplace_cb_reply_local_call
    - sldns_buffer_write_u32
    - sldns_buffer_write_u8
    linkageType: ''
    returnType: void
    signature: "void chaos_replystr(sldns_buffer* pkt, char** str, int num, struct
      edns_data* edns,\n\tstruct worker* worker, struct comm_reply* repinfo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: chaos_replystr
      Src: /src/unbound/daemon/worker.c:1061,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - pkt
    - str
    - edns
    - worker
    - repinfo
    argTypes:
    - sldns_buffer*
    - char*
    - struct edns_data*
    - struct worker*
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 1057
    functionDepth: 2
    functionLinenumber: 1057
    functionLinenumberEnd: 1062
    functionName: chaos_replyonestr
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - chaos_replystr
    linkageType: ''
    returnType: void
    signature: "void chaos_replyonestr(sldns_buffer* pkt, const char* str, struct
      edns_data* edns,\n\tstruct worker* worker, struct comm_reply* repinfo)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: chaos_replystr
      Src: /src/unbound/daemon/worker.c:1084,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/worker.c:1089,1
    - Dst: regional_alloc
      Src: /src/unbound/daemon/worker.c:1094,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/worker.c:1096,1
    - Dst: anchor_list_keytags
      Src: /src/unbound/daemon/worker.c:1097,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/worker.c:1100,1
    - Dst: sldns_wire2str_dname_buf
      Src: /src/unbound/daemon/worker.c:1107,1
    - Dst: strlen
      Src: /src/unbound/daemon/worker.c:1108,1
    - Dst: strlen
      Src: /src/unbound/daemon/worker.c:1108,1
    - Dst: snprintf
      Src: /src/unbound/daemon/worker.c:1111,1
    - Dst: strlen
      Src: /src/unbound/daemon/worker.c:1112,1
    - Dst: strlen
      Src: /src/unbound/daemon/worker.c:1112,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/worker.c:1114,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/worker.c:1116,1
    - Dst: chaos_replystr
      Src: /src/unbound/daemon/worker.c:1118,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1119,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 4
    argNames:
    - pkt
    - edns
    - w
    - repinfo
    argTypes:
    - sldns_buffer*
    - struct edns_data*
    - struct worker*
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1071
    functionDepth: 2
    functionLinenumber: 1071
    functionLinenumberEnd: 1120
    functionName: chaos_trustanchor
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_dname_buf
    - lock_basic_unlock
    - snprintf
    - regional_alloc
    - lock_basic_lock
    - strlen
    - regional_free_all
    - chaos_replystr
    - anchor_list_keytags
    linkageType: ''
    returnType: void
    signature: "void chaos_trustanchor(sldns_buffer* pkt, struct edns_data* edns,
      struct worker* w,\n\tstruct comm_reply* repinfo)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/daemon/worker.c:1094,1
    - Dst: lock_basic_lock
      Src: /src/unbound/daemon/worker.c:1096,1
    - Dst: anchor_list_keytags
      Src: /src/unbound/daemon/worker.c:1097,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/worker.c:1100,1
    - Dst: sldns_wire2str_dname_buf
      Src: /src/unbound/daemon/worker.c:1107,1
    - Dst: strlen
      Src: /src/unbound/daemon/worker.c:1108,1
    - Dst: strlen
      Src: /src/unbound/daemon/worker.c:1108,1
    - Dst: snprintf
      Src: /src/unbound/daemon/worker.c:1111,1
    - Dst: strlen
      Src: /src/unbound/daemon/worker.c:1112,1
    - Dst: strlen
      Src: /src/unbound/daemon/worker.c:1112,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/daemon/worker.c:1114,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - tree
    argTypes:
    - w
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1090
    functionDepth: 1
    functionLinenumber: 1090
    functionLinenumberEnd: 1115
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_dname_buf
    - lock_basic_unlock
    - snprintf
    - regional_alloc
    - lock_basic_lock
    - strlen
    - anchor_list_keytags
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(ta, struct trust_anchor*, w->env.anchors->tree)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: query_dname_compare
      Src: /src/unbound/daemon/worker.c:1138,1
    - Dst: query_dname_compare
      Src: /src/unbound/daemon/worker.c:1140,1
    - Dst: gethostname
      Src: /src/unbound/daemon/worker.c:1147,1
    - Dst: chaos_replyonestr
      Src: /src/unbound/daemon/worker.c:1149,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:1151,1
    - Dst: strerror
      Src: /src/unbound/daemon/worker.c:1151,1
    - Dst: chaos_replyonestr
      Src: /src/unbound/daemon/worker.c:1152,1
    - Dst: chaos_replyonestr
      Src: /src/unbound/daemon/worker.c:1155,1
    - Dst: query_dname_compare
      Src: /src/unbound/daemon/worker.c:1158,1
    - Dst: query_dname_compare
      Src: /src/unbound/daemon/worker.c:1160,1
    - Dst: chaos_replyonestr
      Src: /src/unbound/daemon/worker.c:1166,1
    - Dst: chaos_replyonestr
      Src: /src/unbound/daemon/worker.c:1167,1
    - Dst: query_dname_compare
      Src: /src/unbound/daemon/worker.c:1170,1
    - Dst: chaos_trustanchor
      Src: /src/unbound/daemon/worker.c:1175,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 5
    argNames:
    - w
    - qinfo
    - edns
    - repinfo
    - pkt
    argTypes:
    - struct worker*
    - struct query_info*
    - struct edns_data*
    - struct comm_reply*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1180
      start: 1131
    functionDepth: 3
    functionLinenumber: 1131
    functionLinenumberEnd: 1180
    functionName: answer_chaos
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_err
    - chaos_replyonestr
    - query_dname_compare
    - strerror
    - chaos_trustanchor
    - gethostname
    linkageType: ''
    returnType: int
    signature: "int answer_chaos(struct worker* w, struct query_info* qinfo,\n\tstruct
      edns_data* edns, struct comm_reply* repinfo, sldns_buffer* pkt)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: auth_zone_parse_notify_serial
      Src: /src/unbound/daemon/worker.c:1203,1
    - Dst: auth_zones_notify
      Src: /src/unbound/daemon/worker.c:1204,1
    - Dst: dname_str
      Src: /src/unbound/daemon/worker.c:1218,1
    - Dst: snprintf
      Src: /src/unbound/daemon/worker.c:1221,1
    - Dst: snprintf
      Src: /src/unbound/daemon/worker.c:1224,1
    - Dst: snprintf
      Src: /src/unbound/daemon/worker.c:1227,1
    - Dst: snprintf
      Src: /src/unbound/daemon/worker.c:1229,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:1231,1
    - Dst: error_encode
      Src: /src/unbound/daemon/worker.c:1237,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1238,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/daemon/worker.c:1239,1
    - Dst: LDNS_OPCODE_SET
      Src: /src/unbound/daemon/worker.c:1240,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1240,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 6
    argNames:
    - w
    - qinfo
    - edns
    - pkt
    - addr
    - addrlen
    argTypes:
    - struct worker*
    - struct query_info*
    - struct edns_data*
    - sldns_buffer*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1193
    functionDepth: 1
    functionLinenumber: 1193
    functionLinenumberEnd: 1241
    functionName: answer_notify
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - snprintf
    - dname_str
    - LDNS_OPCODE_SET
    - auth_zones_notify
    - sldns_buffer_begin
    - log_addr
    - auth_zone_parse_notify_serial
    - sldns_buffer_read_u16_at
    - error_encode
    linkageType: ''
    returnType: void
    signature: "void answer_notify(struct worker* w, struct query_info* qinfo,\n\tstruct
      edns_data* edns, sldns_buffer* pkt,\n\tstruct sockaddr_storage* addr, socklen_t
      addrlen)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: log_acl_action
      Src: /src/unbound/daemon/worker.c:1252,1
    - Dst: log_buf
      Src: /src/unbound/daemon/worker.c:1254,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1256,1
    - Dst: log_acl_action
      Src: /src/unbound/daemon/worker.c:1264,1
    - Dst: log_buf
      Src: /src/unbound/daemon/worker.c:1266,1
    - Dst: worker_check_request
      Src: /src/unbound/daemon/worker.c:1271,1
    - Dst: query_error
      Src: /src/unbound/daemon/worker.c:1274,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1277,1
    - Dst: log_assert
      Src: /src/unbound/daemon/worker.c:1283,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/daemon/worker.c:1283,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/daemon/worker.c:1284,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1284,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/daemon/worker.c:1286,1
    - Dst: LDNS_ARCOUNT
      Src: /src/unbound/daemon/worker.c:1289,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1289,1
    - Dst: query_error
      Src: /src/unbound/daemon/worker.c:1291,1
    - Dst: query_dname_len
      Src: /src/unbound/daemon/worker.c:1295,1
    - Dst: query_error
      Src: /src/unbound/daemon/worker.c:1296,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/daemon/worker.c:1300,1
    - Dst: query_error
      Src: /src/unbound/daemon/worker.c:1301,1
    - Dst: LDNS_QR_SET
      Src: /src/unbound/daemon/worker.c:1304,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1304,1
    - Dst: LDNS_RCODE_SET
      Src: /src/unbound/daemon/worker.c:1305,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1305,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/daemon/worker.c:1308,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/daemon/worker.c:1310,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/daemon/worker.c:1315,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/daemon/worker.c:1318,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1318,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/daemon/worker.c:1319,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1319,1
    - Dst: skip_pkt_rrs
      Src: /src/unbound/daemon/worker.c:1320,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/daemon/worker.c:1321,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1321,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/daemon/worker.c:1322,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1322,1
    - Dst: query_error
      Src: /src/unbound/daemon/worker.c:1323,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/daemon/worker.c:1331,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/daemon/worker.c:1331,1
    - Dst: query_error
      Src: /src/unbound/daemon/worker.c:1332,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/daemon/worker.c:1337,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/daemon/worker.c:1339,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/daemon/worker.c:1340,1
    - Dst: query_error
      Src: /src/unbound/daemon/worker.c:1341,1
    - Dst: LDNS_ANCOUNT_SET
      Src: /src/unbound/daemon/worker.c:1349,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1349,1
    - Dst: LDNS_NSCOUNT_SET
      Src: /src/unbound/daemon/worker.c:1350,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1350,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/daemon/worker.c:1351,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/daemon/worker.c:1352,1
    - Dst: sldns_buffer_available
      Src: /src/unbound/daemon/worker.c:1359,1
    - Dst: LDNS_ARCOUNT_SET
      Src: /src/unbound/daemon/worker.c:1360,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1360,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/daemon/worker.c:1361,1
    - Dst: LDNS_ARCOUNT_SET
      Src: /src/unbound/daemon/worker.c:1365,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1365,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/daemon/worker.c:1368,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/daemon/worker.c:1369,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/daemon/worker.c:1370,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/daemon/worker.c:1373,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/daemon/worker.c:1376,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/daemon/worker.c:1379,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/daemon/worker.c:1382,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/daemon/worker.c:1385,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/daemon/worker.c:1387,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:1389,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 85
    argCount: 9
    argNames:
    - c
    - acl
    - deny
    - refuse
    - worker
    - repinfo
    - acladdr
    - ede
    - check_result
    argTypes:
    - struct comm_point*
    - enum acl_access
    - enum acl_access
    - enum acl_access
    - struct worker*
    - struct comm_reply*
    - struct acl_addr*
    - int
    - struct check_request_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1396
      start: 1243
    functionDepth: 2
    functionLinenumber: 1243
    functionLinenumberEnd: 1396
    functionName: deny_refuse
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - query_dname_len
    - LDNS_ANCOUNT
    - sldns_buffer_skip
    - LDNS_RCODE_SET
    - query_error
    - LDNS_NSCOUNT_SET
    - sldns_buffer_current
    - comm_point_drop_reply
    - skip_pkt_rrs
    - worker_check_request
    - sldns_buffer_begin
    - LDNS_ARCOUNT
    - LDNS_ANCOUNT_SET
    - verbose
    - sldns_buffer_write_u16
    - sldns_buffer_set_position
    - log_assert
    - LDNS_NSCOUNT
    - LDNS_QR_SET
    - log_acl_action
    - sldns_buffer_remaining
    - sldns_buffer_available
    - LDNS_QDCOUNT
    - sldns_buffer_flip
    - sldns_buffer_limit
    - sldns_buffer_clear
    - sldns_buffer_read_u16
    - LDNS_ARCOUNT_SET
    - log_buf
    - sldns_buffer_write_u32
    - sldns_buffer_write_u8
    linkageType: ''
    returnType: int
    signature: "int deny_refuse(struct comm_point* c, enum acl_access acl,\n\tenum
      acl_access deny, enum acl_access refuse,\n\tstruct worker* worker, struct comm_reply*
      repinfo,\n\tstruct acl_addr* acladdr, int ede,\n\tstruct check_request_result*
      check_result)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: acl_addr_lookup
      Src: /src/unbound/daemon/worker.c:1405,1
    - Dst: acl_addr_lookup
      Src: /src/unbound/daemon/worker.c:1408,1
    - Dst: acl_get_control
      Src: /src/unbound/daemon/worker.c:1415,1
    - Dst: deny_refuse
      Src: /src/unbound/daemon/worker.c:1416,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 8
    argNames:
    - c
    - acl
    - worker
    - repinfo
    - acladdr
    - ede
    - check_proxy
    - check_result
    argTypes:
    - struct comm_point*
    - enum acl_access*
    - struct worker*
    - struct comm_reply*
    - struct acl_addr**
    - int
    - int
    - struct check_request_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1418
      start: 1398
    functionDepth: 3
    functionLinenumber: 1398
    functionLinenumberEnd: 1418
    functionName: deny_refuse_all
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - acl_addr_lookup
    - deny_refuse
    - acl_get_control
    linkageType: ''
    returnType: int
    signature: "int deny_refuse_all(struct comm_point* c, enum acl_access* acl,\n\tstruct
      worker* worker, struct comm_reply* repinfo,\n\tstruct acl_addr** acladdr, int
      ede, int check_proxy,\n\tstruct check_request_result* check_result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: deny_refuse
      Src: /src/unbound/daemon/worker.c:1426,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - c
    - acl
    - worker
    - repinfo
    - acladdr
    - ede
    - check_result
    argTypes:
    - struct comm_point*
    - enum acl_access
    - struct worker*
    - struct comm_reply*
    - struct acl_addr*
    - int
    - struct check_request_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1428
      start: 1420
    functionDepth: 3
    functionLinenumber: 1420
    functionLinenumberEnd: 1428
    functionName: deny_refuse_non_local
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - deny_refuse
    linkageType: ''
    returnType: int
    signature: "int deny_refuse_non_local(struct comm_point* c, enum acl_access acl,\n\tstruct
      worker* worker, struct comm_reply* repinfo,\n\tstruct acl_addr* acladdr, int
      ede,\n\tstruct check_request_result* check_result)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: infra_ip_ratelimit_inc
      Src: /src/unbound/daemon/worker.c:1436,1
    - Dst: ub_random_max
      Src: /src/unbound/daemon/worker.c:1441,1
    - Dst: addr_to_str
      Src: /src/unbound/daemon/worker.c:1444,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:1445,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 5
    argNames:
    - worker
    - addr
    - addrlen
    - has_cookie
    - pkt
    argTypes:
    - struct worker*
    - struct sockaddr_storage*
    - socklen_t
    - int
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1453
      start: 1432
    functionDepth: 1
    functionLinenumber: 1432
    functionLinenumberEnd: 1453
    functionName: check_ip_ratelimit
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - infra_ip_ratelimit_inc
    - verbose
    - addr_to_str
    - ub_random_max
    linkageType: ''
    returnType: int
    signature: "int check_ip_ratelimit(struct worker* worker, struct sockaddr_storage*
      addr,\n\tsocklen_t addrlen, int has_cookie, sldns_buffer* pkt)"
  - BBCount: 90
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/daemon/worker.c:1505,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:1509,1
    - Dst: timeval_isset
      Src: /src/unbound/daemon/worker.c:1513,1
    - Dst: timeval_subtract
      Src: /src/unbound/daemon/worker.c:1514,1
    - Dst: dnsc_handle_curved_request
      Src: /src/unbound/daemon/worker.c:1528,1
    - Dst: worker_check_request
      Src: /src/unbound/daemon/worker.c:1535,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:1537,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:1539,1
    - Dst: query_error
      Src: /src/unbound/daemon/worker.c:1542,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1545,1
    - Dst: query_info_parse
      Src: /src/unbound/daemon/worker.c:1548,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:1549,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:1551,1
    - Dst: worker_err_ratelimit
      Src: /src/unbound/daemon/worker.c:1553,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1554,1
    - Dst: query_error
      Src: /src/unbound/daemon/worker.c:1557,1
    - Dst: sldns_buffer_copy
      Src: /src/unbound/daemon/worker.c:1558,1
    - Dst: dname_str
      Src: /src/unbound/daemon/worker.c:1561,1
    - Dst: strcasecmp
      Src: /src/unbound/daemon/worker.c:1563,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:1565,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/daemon/worker.c:1568,1
    - Dst: worker_err_ratelimit
      Src: /src/unbound/daemon/worker.c:1570,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1571,1
    - Dst: query_error
      Src: /src/unbound/daemon/worker.c:1574,1
    - Dst: sldns_buffer_copy
      Src: /src/unbound/daemon/worker.c:1577,1
    - Dst: sldns_buffer_rewind
      Src: /src/unbound/daemon/worker.c:1581,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:1591,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:1592,1
    - Dst: dt_msg_send_client_query
      Src: /src/unbound/daemon/worker.c:1593,1
    - Dst: timeval_isset
      Src: /src/unbound/daemon/worker.c:1594,1
    - Dst: deny_refuse_all
      Src: /src/unbound/daemon/worker.c:1599,1
    - Dst: deny_refuse_all
      Src: /src/unbound/daemon/worker.c:1606,1
    - Dst: worker_check_request
      Src: /src/unbound/daemon/worker.c:1613,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:1615,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:1616,1
    - Dst: query_error
      Src: /src/unbound/daemon/worker.c:1618,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1621,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/daemon/worker.c:1627,1
    - Dst: LDNS_ARCOUNT
      Src: /src/unbound/daemon/worker.c:1628,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1628,1
    - Dst: check_ip_ratelimit
      Src: /src/unbound/daemon/worker.c:1635,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1638,1
    - Dst: query_info_parse
      Src: /src/unbound/daemon/worker.c:1643,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:1644,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:1645,1
    - Dst: memset
      Src: /src/unbound/daemon/worker.c:1647,1
    - Dst: worker_err_ratelimit
      Src: /src/unbound/daemon/worker.c:1648,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1649,1
    - Dst: query_error
      Src: /src/unbound/daemon/worker.c:1652,1
    - Dst: addr_to_str
      Src: /src/unbound/daemon/worker.c:1657,1
    - Dst: log_query_in
      Src: /src/unbound/daemon/worker.c:1658,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:1662,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:1663,1
    - Dst: worker_err_ratelimit
      Src: /src/unbound/daemon/worker.c:1665,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1666,1
    - Dst: query_error
      Src: /src/unbound/daemon/worker.c:1669,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:1681,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:1682,1
    - Dst: worker_err_ratelimit
      Src: /src/unbound/daemon/worker.c:1684,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1685,1
    - Dst: query_error
      Src: /src/unbound/daemon/worker.c:1688,1
    - Dst: parse_edns_from_query_pkt
      Src: /src/unbound/daemon/worker.c:1694,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:1699,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:1700,1
    - Dst: worker_err_ratelimit
      Src: /src/unbound/daemon/worker.c:1702,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1703,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1704,1
    - Dst: memset
      Src: /src/unbound/daemon/worker.c:1707,1
    - Dst: error_encode
      Src: /src/unbound/daemon/worker.c:1709,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1710,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/daemon/worker.c:1711,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1712,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:1720,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:1721,1
    - Dst: worker_err_ratelimit
      Src: /src/unbound/daemon/worker.c:1723,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1724,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1725,1
    - Dst: extended_error_encode
      Src: /src/unbound/daemon/worker.c:1728,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1729,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/daemon/worker.c:1730,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1731,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:1736,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:1738,1
    - Dst: server_stats_downstream_cookie
      Src: /src/unbound/daemon/worker.c:1745,1
    - Dst: check_ip_ratelimit
      Src: /src/unbound/daemon/worker.c:1751,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1755,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1756,1
    - Dst: worker_err_ratelimit
      Src: /src/unbound/daemon/worker.c:1773,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1774,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1775,1
    - Dst: extended_error_encode
      Src: /src/unbound/daemon/worker.c:1778,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1781,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/daemon/worker.c:1782,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1784,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:1788,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:1790,1
    - Dst: worker_err_ratelimit
      Src: /src/unbound/daemon/worker.c:1792,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1793,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1794,1
    - Dst: EDNS_OPT_LIST_APPEND_EDE
      Src: /src/unbound/daemon/worker.c:1797,1
    - Dst: error_encode
      Src: /src/unbound/daemon/worker.c:1800,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1803,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/daemon/worker.c:1804,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1806,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:1812,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:1815,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:1820,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:1821,1
    - Dst: worker_err_ratelimit
      Src: /src/unbound/daemon/worker.c:1823,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1824,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1825,1
    - Dst: query_error
      Src: /src/unbound/daemon/worker.c:1829,1
    - Dst: LDNS_TC_SET
      Src: /src/unbound/daemon/worker.c:1830,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1830,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1831,1
    - Dst: server_stats_insquery
      Src: /src/unbound/daemon/worker.c:1835,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/daemon/worker.c:1840,1
    - Dst: answer_chaos
      Src: /src/unbound/daemon/worker.c:1845,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1847,1
    - Dst: LDNS_OPCODE_WIRE
      Src: /src/unbound/daemon/worker.c:1850,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1850,1
    - Dst: answer_notify
      Src: /src/unbound/daemon/worker.c:1852,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1854,1
    - Dst: local_zones_answer
      Src: /src/unbound/daemon/worker.c:1857,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1863,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/daemon/worker.c:1864,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1865,1
    - Dst: rpz_callback_from_worker_request
      Src: /src/unbound/daemon/worker.c:1871,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1875,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/daemon/worker.c:1876,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1877,1
    - Dst: auth_zones_downstream_answer
      Src: /src/unbound/daemon/worker.c:1883,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1886,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/daemon/worker.c:1887,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1888,1
    - Dst: LDNS_RD_WIRE
      Src: /src/unbound/daemon/worker.c:1893,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1893,1
    - Dst: LDNS_RA_SET
      Src: /src/unbound/daemon/worker.c:1895,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1895,1
    - Dst: deny_refuse_non_local
      Src: /src/unbound/daemon/worker.c:1901,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1904,1
    - Dst: LDNS_RD_WIRE
      Src: /src/unbound/daemon/worker.c:1912,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1912,1
    - Dst: LDNS_RD_SET
      Src: /src/unbound/daemon/worker.c:1914,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1914,1
    - Dst: LDNS_RD_WIRE
      Src: /src/unbound/daemon/worker.c:1919,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1919,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:1921,1
    - Dst: worker_err_ratelimit
      Src: /src/unbound/daemon/worker.c:1925,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:1926,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1927,1
    - Dst: EDNS_OPT_LIST_APPEND_EDE
      Src: /src/unbound/daemon/worker.c:1931,1
    - Dst: error_encode
      Src: /src/unbound/daemon/worker.c:1934,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1935,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/daemon/worker.c:1936,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1937,1
    - Dst: local_alias_shallow_copy_qname
      Src: /src/unbound/daemon/worker.c:1949,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:1951,1
    - Dst: edns_bypass_cache_stage
      Src: /src/unbound/daemon/worker.c:1984,1
    - Dst: query_info_hash
      Src: /src/unbound/daemon/worker.c:1987,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/daemon/worker.c:1987,1
    - Dst: slabhash_lookup
      Src: /src/unbound/daemon/worker.c:1988,1
    - Dst: answer_from_cache
      Src: /src/unbound/daemon/worker.c:1991,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:1994,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/daemon/worker.c:1995,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/daemon/worker.c:2004,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/daemon/worker.c:2007,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/worker.c:2009,1
    - Dst: reply_and_prefetch
      Src: /src/unbound/daemon/worker.c:2011,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/daemon/worker.c:2012,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:2019,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/worker.c:2023,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:2024,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/worker.c:2029,1
    - Dst: memset
      Src: /src/unbound/daemon/worker.c:2037,1
    - Dst: get_cname_target
      Src: /src/unbound/daemon/worker.c:2038,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:2041,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:2042,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:2050,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/daemon/worker.c:2051,1
    - Dst: LDNS_RD_WIRE
      Src: /src/unbound/daemon/worker.c:2054,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:2054,1
    - Dst: answer_norec_from_cache
      Src: /src/unbound/daemon/worker.c:2055,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:2056,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/daemon/worker.c:2057,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:2059,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:2062,1
    - Dst: sldns_buffer_rewind
      Src: /src/unbound/daemon/worker.c:2066,1
    - Dst: server_stats_querymiss
      Src: /src/unbound/daemon/worker.c:2067,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:2071,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:2073,1
    - Dst: mesh_new_client
      Src: /src/unbound/daemon/worker.c:2078,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/daemon/worker.c:2079,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/daemon/worker.c:2080,1
    - Dst: regional_free_all
      Src: /src/unbound/daemon/worker.c:2082,1
    - Dst: worker_mem_report
      Src: /src/unbound/daemon/worker.c:2083,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/daemon/worker.c:2090,1
    - Dst: server_stats_insrcode
      Src: /src/unbound/daemon/worker.c:2096,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:2105,1
    - Dst: log_addr
      Src: /src/unbound/daemon/worker.c:2106,1
    - Dst: dt_msg_send_client_response
      Src: /src/unbound/daemon/worker.c:2107,1
    - Dst: memset
      Src: /src/unbound/daemon/worker.c:2113,1
    - Dst: log_reply_info
      Src: /src/unbound/daemon/worker.c:2118,1
    - Dst: log_reply_info
      Src: /src/unbound/daemon/worker.c:2124,1
    - Dst: dnsc_handle_uncurved_request
      Src: /src/unbound/daemon/worker.c:2132,1
    CyclomaticComplexity: 147
    EdgeCount: 147
    ICount: 429
    argCount: 4
    argNames:
    - c
    - arg
    - error
    - repinfo
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2137
      start: 1473
    functionDepth: 4
    functionLinenumber: 1473
    functionLinenumberEnd: 2137
    functionName: worker_handle_request
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - sldns_rr_descript
    - reply_and_prefetch
    - answer_from_cache
    - server_stats_insquery
    - query_error
    - memset
    - log_query_in
    - regional_free_all
    - LDNS_OPCODE_WIRE
    - comm_point_drop_reply
    - LDNS_RA_SET
    - log_err
    - worker_err_ratelimit
    - server_stats_querymiss
    - local_alias_shallow_copy_qname
    - deny_refuse_non_local
    - worker_mem_report
    - answer_chaos
    - mesh_new_client
    - timeval_subtract
    - check_ip_ratelimit
    - worker_check_request
    - sldns_buffer_begin
    - LDNS_RD_WIRE
    - query_info_hash
    - sldns_buffer_read_u16_at
    - error_encode
    - query_info_parse
    - LDNS_RD_SET
    - LDNS_ARCOUNT
    - get_cname_target
    - server_stats_insrcode
    - timeval_isset
    - auth_zones_downstream_answer
    - verbose
    - lock_rw_unlock
    - dt_msg_send_client_query
    - sldns_buffer_rewind
    - TTL_IS_EXPIRED
    - rpz_callback_from_worker_request
    - parse_edns_from_query_pkt
    - dnsc_handle_uncurved_request
    - local_zones_answer
    - sldns_buffer_copy
    - dt_msg_send_client_response
    - answer_norec_from_cache
    - strcasecmp
    - EDNS_OPT_LIST_APPEND_EDE
    - sldns_buffer_capacity
    - addr_to_str
    - answer_notify
    - LDNS_TC_SET
    - edns_bypass_cache_stage
    - log_reply_info
    - deny_refuse_all
    - dname_str
    - dnsc_handle_curved_request
    - sldns_buffer_limit
    - server_stats_downstream_cookie
    - log_addr
    - slabhash_lookup
    - extended_error_encode
    linkageType: ''
    returnType: int
    signature: "int worker_handle_request(struct comm_point* c, void* arg, int error,\n\tstruct
      comm_reply* repinfo)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: comm_base_exit
      Src: /src/unbound/daemon/worker.c:2148,1
    - Dst: comm_base_exit
      Src: /src/unbound/daemon/worker.c:2156,1
    - Dst: comm_base_exit
      Src: /src/unbound/daemon/worker.c:2161,1
    - Dst: comm_base_exit
      Src: /src/unbound/daemon/worker.c:2166,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - sig
    - arg
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2172
      start: 2139
    functionDepth: 0
    functionLinenumber: 2139
    functionLinenumberEnd: 2172
    functionName: worker_sighandler
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - comm_base_exit
    linkageType: ''
    returnType: void
    signature: void worker_sighandler(int sig, void* arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/unbound/daemon/worker.c:2185,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:2186,1
    - Dst: strerror
      Src: /src/unbound/daemon/worker.c:2186,1
    - Dst: timeval_subtract
      Src: /src/unbound/daemon/worker.c:2204,1
    - Dst: comm_timer_set
      Src: /src/unbound/daemon/worker.c:2211,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2213
      start: 2175
    functionDepth: 1
    functionLinenumber: 2175
    functionLinenumberEnd: 2213
    functionName: worker_restart_timer
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_err
    - timeval_subtract
    - comm_timer_set
    - strerror
    - gettimeofday
    linkageType: ''
    returnType: void
    signature: void worker_restart_timer(struct worker* worker)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: server_stats_log
      Src: /src/unbound/daemon/worker.c:2218,1
    - Dst: mesh_stats
      Src: /src/unbound/daemon/worker.c:2219,1
    - Dst: worker_mem_report
      Src: /src/unbound/daemon/worker.c:2220,1
    - Dst: shm_main_run
      Src: /src/unbound/daemon/worker.c:2223,1
    - Dst: worker_stats_clear
      Src: /src/unbound/daemon/worker.c:2226,1
    - Dst: worker_restart_timer
      Src: /src/unbound/daemon/worker.c:2229,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2230
      start: 2215
    functionDepth: 3
    functionLinenumber: 2215
    functionLinenumberEnd: 2230
    functionName: worker_stat_timer_cb
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - mesh_stats
    - worker_mem_report
    - server_stats_log
    - shm_main_run
    - worker_restart_timer
    - worker_stats_clear
    linkageType: ''
    returnType: void
    signature: void worker_stat_timer_cb(void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: autr_probe_timer
      Src: /src/unbound/daemon/worker.c:2237,1
    - Dst: comm_timer_set
      Src: /src/unbound/daemon/worker.c:2241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2242
      start: 2232
    functionDepth: 1
    functionLinenumber: 2232
    functionLinenumberEnd: 2242
    functionName: worker_probe_timer_cb
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - comm_timer_set
    - autr_probe_timer
    linkageType: ''
    returnType: void
    signature: void worker_probe_timer_cb(void* arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/daemon/worker.c:2248,1
    - Dst: tube_create
      Src: /src/unbound/daemon/worker.c:2254,1
    - Dst: free
      Src: /src/unbound/daemon/worker.c:2255,1
    - Dst: ub_initstate
      Src: /src/unbound/daemon/worker.c:2259,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:2260,1
    - Dst: tube_delete
      Src: /src/unbound/daemon/worker.c:2261,1
    - Dst: free
      Src: /src/unbound/daemon/worker.c:2262,1
    - Dst: explicit_bzero
      Src: /src/unbound/daemon/worker.c:2265,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - daemon
    - id
    argTypes:
    - struct daemon*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2267
      start: 2244
    functionDepth: 1
    functionLinenumber: 2244
    functionLinenumberEnd: 2267
    functionName: worker_create
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_err
    - ub_initstate
    - tube_delete
    - free
    - explicit_bzero
    - calloc
    - tube_create
    linkageType: ''
    returnType: struct worker
    signature: 'struct worker *

      worker_create(struct daemon* daemon, int id)'
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: comm_base_create
      Src: /src/unbound/daemon/worker.c:2279,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:2281,1
    - Dst: worker_delete
      Src: /src/unbound/daemon/worker.c:2282,1
    - Dst: comm_base_set_slow_accept_handlers
      Src: /src/unbound/daemon/worker.c:2285,1
    - Dst: ub_thread_sig_unblock
      Src: /src/unbound/daemon/worker.c:2289,1
    - Dst: ub_thread_sig_unblock
      Src: /src/unbound/daemon/worker.c:2292,1
    - Dst: ub_thread_sig_unblock
      Src: /src/unbound/daemon/worker.c:2294,1
    - Dst: ub_thread_sig_unblock
      Src: /src/unbound/daemon/worker.c:2296,1
    - Dst: ub_thread_sig_unblock
      Src: /src/unbound/daemon/worker.c:2298,1
    - Dst: comm_signal_create
      Src: /src/unbound/daemon/worker.c:2300,1
    - Dst: comm_signal_bind
      Src: /src/unbound/daemon/worker.c:2304,1
    - Dst: comm_signal_bind
      Src: /src/unbound/daemon/worker.c:2307,1
    - Dst: comm_signal_bind
      Src: /src/unbound/daemon/worker.c:2309,1
    - Dst: comm_signal_bind
      Src: /src/unbound/daemon/worker.c:2311,1
    - Dst: comm_signal_bind
      Src: /src/unbound/daemon/worker.c:2313,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:2314,1
    - Dst: worker_delete
      Src: /src/unbound/daemon/worker.c:2315,1
    - Dst: daemon_remote_open_accept
      Src: /src/unbound/daemon/worker.c:2319,1
    - Dst: worker_delete
      Src: /src/unbound/daemon/worker.c:2321,1
    - Dst: wsvc_setup_worker
      Src: /src/unbound/daemon/worker.c:2325,1
    - Dst: log_assert
      Src: /src/unbound/daemon/worker.c:2332,1
    - Dst: memcpy
      Src: /src/unbound/daemon/worker.c:2333,1
    - Dst: dt_init
      Src: /src/unbound/daemon/worker.c:2334,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/worker.c:2335,1
    - Dst: listen_create
      Src: /src/unbound/daemon/worker.c:2338,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:2351,1
    - Dst: worker_delete
      Src: /src/unbound/daemon/worker.c:2352,1
    - Dst: outside_network_create
      Src: /src/unbound/daemon/worker.c:2355,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:2369,1
    - Dst: worker_delete
      Src: /src/unbound/daemon/worker.c:2370,1
    - Dst: iterator_set_ip46_support
      Src: /src/unbound/daemon/worker.c:2373,1
    - Dst: tube_setup_bg_listen
      Src: /src/unbound/daemon/worker.c:2376,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:2378,1
    - Dst: worker_delete
      Src: /src/unbound/daemon/worker.c:2379,1
    - Dst: comm_timer_create
      Src: /src/unbound/daemon/worker.c:2382,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:2385,1
    - Dst: worker_delete
      Src: /src/unbound/daemon/worker.c:2386,1
    - Dst: regional_create_custom
      Src: /src/unbound/daemon/worker.c:2392,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:2394,1
    - Dst: worker_delete
      Src: /src/unbound/daemon/worker.c:2395,1
    - Dst: server_stats_init
      Src: /src/unbound/daemon/worker.c:2399,1
    - Dst: alloc_set_id_cleanup
      Src: /src/unbound/daemon/worker.c:2401,1
    - Dst: comm_base_timept
      Src: /src/unbound/daemon/worker.c:2403,1
    - Dst: regional_create_custom
      Src: /src/unbound/daemon/worker.c:2415,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:2417,1
    - Dst: worker_delete
      Src: /src/unbound/daemon/worker.c:2418,1
    - Dst: mesh_create
      Src: /src/unbound/daemon/worker.c:2421,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:2423,1
    - Dst: worker_delete
      Src: /src/unbound/daemon/worker.c:2424,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/daemon/worker.c:2436,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:2438,1
    - Dst: worker_delete
      Src: /src/unbound/daemon/worker.c:2439,1
    - Dst: autr_get_num_anchors
      Src: /src/unbound/daemon/worker.c:2443,1
    - Dst: comm_timer_create
      Src: /src/unbound/daemon/worker.c:2451,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:2454,1
    - Dst: comm_timer_set
      Src: /src/unbound/daemon/worker.c:2457,1
    - Dst: auth_xfer_pickup_initial
      Src: /src/unbound/daemon/worker.c:2466,1
    - Dst: auth_zones_pickup_zonemd_verify
      Src: /src/unbound/daemon/worker.c:2467,1
    - Dst: dt_io_thread_start
      Src: /src/unbound/daemon/worker.c:2476,1
    - Dst: comm_base_internal
      Src: /src/unbound/daemon/worker.c:2476,1
    - Dst: log_err
      Src: /src/unbound/daemon/worker.c:2478,1
    - Dst: worker_delete
      Src: /src/unbound/daemon/worker.c:2479,1
    - Dst: worker_mem_report
      Src: /src/unbound/daemon/worker.c:2484,1
    - Dst: verbose
      Src: /src/unbound/daemon/worker.c:2487,1
    - Dst: worker_restart_timer
      Src: /src/unbound/daemon/worker.c:2489,1
    - Dst: pp_init
      Src: /src/unbound/daemon/worker.c:2491,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 129
    argCount: 4
    argNames:
    - worker
    - cfg
    - ports
    - do_sigs
    argTypes:
    - struct worker*
    - struct config_file*
    - struct listen_port*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2493
      start: 2269
    functionDepth: 3
    functionLinenumber: 2269
    functionLinenumberEnd: 2493
    functionName: worker_init
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - mesh_create
    - sldns_buffer_new
    - autr_get_num_anchors
    - wsvc_setup_worker
    - regional_create_custom
    - auth_zones_pickup_zonemd_verify
    - worker_restart_timer
    - log_err
    - worker_mem_report
    - worker_delete
    - iterator_set_ip46_support
    - comm_base_internal
    - memcpy
    - pp_init
    - comm_signal_create
    - verbose
    - comm_timer_create
    - comm_timer_set
    - log_assert
    - ub_thread_sig_unblock
    - comm_signal_bind
    - comm_base_set_slow_accept_handlers
    - dt_io_thread_start
    - comm_base_timept
    - listen_create
    - comm_base_create
    - server_stats_init
    - auth_xfer_pickup_initial
    - dt_init
    - fatal_exit
    - daemon_remote_open_accept
    - alloc_set_id_cleanup
    - outside_network_create
    - tube_setup_bg_listen
    linkageType: ''
    returnType: int
    signature: "int worker_init(struct worker* worker, struct config_file *cfg,\n\tstruct
      listen_port* ports, int do_sigs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: comm_base_dispatch
      Src: /src/unbound/daemon/worker.c:2498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2499
      start: 2495
    functionDepth: 0
    functionLinenumber: 2495
    functionLinenumberEnd: 2499
    functionName: worker_work
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - comm_base_dispatch
    linkageType: ''
    returnType: void
    signature: void worker_work(struct worker* worker)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: server_stats_log
      Src: /src/unbound/daemon/worker.c:2507,1
    - Dst: mesh_stats
      Src: /src/unbound/daemon/worker.c:2508,1
    - Dst: worker_mem_report
      Src: /src/unbound/daemon/worker.c:2509,1
    - Dst: outside_network_quit_prepare
      Src: /src/unbound/daemon/worker.c:2511,1
    - Dst: mesh_delete
      Src: /src/unbound/daemon/worker.c:2512,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/daemon/worker.c:2513,1
    - Dst: listen_delete
      Src: /src/unbound/daemon/worker.c:2514,1
    - Dst: outside_network_delete
      Src: /src/unbound/daemon/worker.c:2515,1
    - Dst: comm_signal_delete
      Src: /src/unbound/daemon/worker.c:2516,1
    - Dst: tube_delete
      Src: /src/unbound/daemon/worker.c:2517,1
    - Dst: comm_timer_delete
      Src: /src/unbound/daemon/worker.c:2518,1
    - Dst: comm_timer_delete
      Src: /src/unbound/daemon/worker.c:2519,1
    - Dst: wsvc_desetup_worker
      Src: /src/unbound/daemon/worker.c:2522,1
    - Dst: dt_io_thread_stop
      Src: /src/unbound/daemon/worker.c:2531,1
    - Dst: dt_deinit
      Src: /src/unbound/daemon/worker.c:2533,1
    - Dst: comm_base_delete
      Src: /src/unbound/daemon/worker.c:2535,1
    - Dst: ub_randfree
      Src: /src/unbound/daemon/worker.c:2536,1
    - Dst: regional_destroy
      Src: /src/unbound/daemon/worker.c:2538,1
    - Dst: regional_destroy
      Src: /src/unbound/daemon/worker.c:2539,1
    - Dst: log_thread_set
      Src: /src/unbound/daemon/worker.c:2541,1
    - Dst: free
      Src: /src/unbound/daemon/worker.c:2542,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2543
      start: 2501
    functionDepth: 3
    functionLinenumber: 2501
    functionLinenumberEnd: 2543
    functionName: worker_delete
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 1
    functionsReached:
    - outside_network_delete
    - tube_delete
    - outside_network_quit_prepare
    - sldns_buffer_free
    - worker_mem_report
    - server_stats_log
    - regional_destroy
    - mesh_stats
    - ub_randfree
    - comm_signal_delete
    - dt_io_thread_stop
    - free
    - dt_deinit
    - mesh_delete
    - comm_timer_delete
    - wsvc_desetup_worker
    - log_thread_set
    - listen_delete
    - comm_base_delete
    linkageType: ''
    returnType: void
    signature: void worker_delete(struct worker* worker)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/daemon/worker.c:2554,1
    - Dst: outnet_serviced_query
      Src: /src/unbound/daemon/worker.c:2559,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 16
    argNames:
    - qinfo
    - flags
    - dnssec
    - want_dnssec
    - nocaps
    - check_ratelimit
    - addr
    - addrlen
    - zone
    - zonelen
    - tcp_upstream
    - ssl_upstream
    - tls_auth_name
    - q
    - was_ratelimited
    - ratelimit_incremented
    argTypes:
    - struct query_info*
    - uint16_t
    - int
    - int
    - int
    - int
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - int
    - int
    - char*
    - struct module_qstate*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2568
      start: 2545
    functionDepth: 0
    functionLinenumber: 2545
    functionLinenumberEnd: 2568
    functionName: worker_send_query
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - regional_alloc
    - outnet_serviced_query
    linkageType: ''
    returnType: struct outbound_entry
    signature: "struct outbound_entry *\nworker_send_query(struct query_info* qinfo,
      uint16_t flags, int dnssec,\n\tint want_dnssec, int nocaps, int check_ratelimit,\n\tstruct
      sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone,\n\tsize_t zonelen,
      int tcp_upstream, int ssl_upstream, char* tls_auth_name,\n\tstruct module_qstate*
      q, int* was_ratelimited,\n\tint* ratelimit_incremented)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: slabhash_clear
      Src: /src/unbound/daemon/worker.c:2574,1
    - Dst: slabhash_clear
      Src: /src/unbound/daemon/worker.c:2575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2576
      start: 2570
    functionDepth: 1
    functionLinenumber: 2570
    functionLinenumberEnd: 2576
    functionName: worker_alloc_cleanup
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - slabhash_clear
    linkageType: ''
    returnType: void
    signature: void worker_alloc_cleanup(void* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: server_stats_init
      Src: /src/unbound/daemon/worker.c:2580,1
    - Dst: mesh_stats_clear
      Src: /src/unbound/daemon/worker.c:2581,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2585
      start: 2578
    functionDepth: 1
    functionLinenumber: 2578
    functionLinenumberEnd: 2585
    functionName: worker_stats_clear
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 3
    functionsReached:
    - mesh_stats_clear
    - server_stats_init
    linkageType: ''
    returnType: void
    signature: void worker_stats_clear(struct worker* worker)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listen_start_accept
      Src: /src/unbound/daemon/worker.c:2590,1
    - Dst: daemon_remote_start_accept
      Src: /src/unbound/daemon/worker.c:2592,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2593
      start: 2587
    functionDepth: 0
    functionLinenumber: 2587
    functionLinenumberEnd: 2593
    functionName: worker_start_accept
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - daemon_remote_start_accept
    - listen_start_accept
    linkageType: ''
    returnType: void
    signature: void worker_start_accept(void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: listen_stop_accept
      Src: /src/unbound/daemon/worker.c:2598,1
    - Dst: daemon_remote_stop_accept
      Src: /src/unbound/daemon/worker.c:2600,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2601
      start: 2595
    functionDepth: 0
    functionLinenumber: 2595
    functionLinenumberEnd: 2601
    functionName: worker_stop_accept
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - listen_stop_accept
    - daemon_remote_stop_accept
    linkageType: ''
    returnType: void
    signature: void worker_stop_accept(void* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/worker.c:2615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 16
    argNames:
    - ATTR_UNUSED(qinfo)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(addr)
    - ATTR_UNUSED
    - ATTR_UNUSED(zone)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(tls_auth_name)
    - ATTR_UNUSED(q)
    - ATTR_UNUSED(was_ratelimited)
    - ATTR_UNUSED(ratelimit_incremented)
    argTypes:
    - struct query_info*
    - uint16_t
    - int
    - int
    - int
    - int
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - int
    - int
    - char*
    - struct module_qstate*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2617
      start: 2604
    functionDepth: 1
    functionLinenumber: 2604
    functionLinenumberEnd: 2617
    functionName: libworker_send_query
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: struct outbound_entry
    signature: "struct outbound_entry * libworker_send_query(\n\tstruct query_info*
      ATTR_UNUSED(qinfo),\n\tuint16_t ATTR_UNUSED(flags), int ATTR_UNUSED(dnssec),\n\tint
      ATTR_UNUSED(want_dnssec), int ATTR_UNUSED(nocaps),\n\tint ATTR_UNUSED(check_ratelimit),\n\tstruct
      sockaddr_storage* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen),\n\tuint8_t*
      ATTR_UNUSED(zone), size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream),\n\tint
      ATTR_UNUSED(ssl_upstream), char* ATTR_UNUSED(tls_auth_name),\n\tstruct module_qstate*
      ATTR_UNUSED(q), int* ATTR_UNUSED(was_ratelimited),\n\tint* ATTR_UNUSED(ratelimit_incremented))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/worker.c:2623,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(reply_info)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2625
      start: 2619
    functionDepth: 1
    functionLinenumber: 2619
    functionLinenumberEnd: 2625
    functionName: libworker_handle_service_reply
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int libworker_handle_service_reply(struct comm_point* ATTR_UNUSED(c),\n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(reply_info))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/worker.c:2631,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ATTR_UNUSED(tube)
    - ATTR_UNUSED(buffer)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - struct tube*
    - uint8_t*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2632
      start: 2627
    functionDepth: 1
    functionLinenumber: 2627
    functionLinenumberEnd: 2632
    functionName: libworker_handle_control_cmd
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void libworker_handle_control_cmd(struct tube* ATTR_UNUSED(tube),\n
      \       uint8_t* ATTR_UNUSED(buffer), size_t ATTR_UNUSED(len),\n        int
      ATTR_UNUSED(error), void* ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/worker.c:2638,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(buf)
    - ATTR_UNUSED
    - ATTR_UNUSED(why_bogus)
    - ATTR_UNUSED
    argTypes:
    - void*
    - int
    - sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2639
      start: 2634
    functionDepth: 1
    functionLinenumber: 2634
    functionLinenumberEnd: 2639
    functionName: libworker_fg_done_cb
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void libworker_fg_done_cb(void* ATTR_UNUSED(arg), int ATTR_UNUSED(rcode),\n\tsldns_buffer*
      ATTR_UNUSED(buf), enum sec_status ATTR_UNUSED(s),\n\tchar* ATTR_UNUSED(why_bogus),
      int ATTR_UNUSED(was_ratelimited))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/worker.c:2645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(buf)
    - ATTR_UNUSED
    - ATTR_UNUSED(why_bogus)
    - ATTR_UNUSED
    argTypes:
    - void*
    - int
    - sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2646
      start: 2641
    functionDepth: 1
    functionLinenumber: 2641
    functionLinenumberEnd: 2646
    functionName: libworker_bg_done_cb
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void libworker_bg_done_cb(void* ATTR_UNUSED(arg), int ATTR_UNUSED(rcode),\n\tsldns_buffer*
      ATTR_UNUSED(buf), enum sec_status ATTR_UNUSED(s),\n\tchar* ATTR_UNUSED(why_bogus),
      int ATTR_UNUSED(was_ratelimited))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/worker.c:2652,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(buf)
    - ATTR_UNUSED
    - ATTR_UNUSED(why_bogus)
    - ATTR_UNUSED
    argTypes:
    - void*
    - int
    - sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2653
      start: 2648
    functionDepth: 1
    functionLinenumber: 2648
    functionLinenumberEnd: 2653
    functionName: libworker_event_done_cb
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void libworker_event_done_cb(void* ATTR_UNUSED(arg), int ATTR_UNUSED(rcode),\n\tsldns_buffer*
      ATTR_UNUSED(buf), enum sec_status ATTR_UNUSED(s),\n\tchar* ATTR_UNUSED(why_bogus),
      int ATTR_UNUSED(was_ratelimited))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/worker.c:2657,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2658
      start: 2655
    functionDepth: 1
    functionLinenumber: 2655
    functionLinenumberEnd: 2658
    functionName: libworker_alloc_cleanup
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void libworker_alloc_cleanup(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/worker.c:2662,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED(a)
    - ATTR_UNUSED(b)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2664
      start: 2660
    functionDepth: 1
    functionLinenumber: 2660
    functionLinenumberEnd: 2664
    functionName: context_query_cmp
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int context_query_cmp(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/worker.c:2668,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED(e1)
    - ATTR_UNUSED(e2)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2670
      start: 2666
    functionDepth: 1
    functionLinenumber: 2666
    functionLinenumberEnd: 2670
    functionName: order_lock_cmp
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int order_lock_cmp(const void* ATTR_UNUSED(e1), const void* ATTR_UNUSED(e2))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/worker.c:2674,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED(a)
    - ATTR_UNUSED(b)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2676
      start: 2672
    functionDepth: 1
    functionLinenumber: 2672
    functionLinenumberEnd: 2676
    functionName: codeline_cmp
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int codeline_cmp(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/worker.c:2682,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2683
      start: 2679
    functionDepth: 1
    functionLinenumber: 2679
    functionLinenumberEnd: 2683
    functionName: dtio_tap_callback
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void dtio_tap_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/worker.c:2690,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2691
      start: 2687
    functionDepth: 1
    functionLinenumber: 2687
    functionLinenumberEnd: 2691
    functionName: dtio_mainfdcallback
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void dtio_mainfdcallback(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/worker.c:2698,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2699
      start: 2695
    functionDepth: 1
    functionLinenumber: 2695
    functionLinenumberEnd: 2699
    functionName: doq_client_event_cb
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void doq_client_event_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/worker.c:2706,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2707
      start: 2703
    functionDepth: 1
    functionLinenumber: 2703
    functionLinenumberEnd: 2707
    functionName: doq_client_timer_cb
    functionSourceFile: /src/unbound/daemon/worker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void doq_client_timer_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: exit
      Src: /src/unbound/daemon/daemon.c:132,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 1
    argNames:
    - sig
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 126
    functionDepth: 0
    functionLinenumber: 126
    functionLinenumberEnd: 159
    functionName: record_sigh
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 0
    functionsReached:
    - exit
    linkageType: ''
    returnType: RETSIGTYPE
    signature: RETSIGTYPE record_sigh(int sig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/unbound/daemon/daemon.c:168,1
    - Dst: signal
      Src: /src/unbound/daemon/daemon.c:170,1
    - Dst: signal
      Src: /src/unbound/daemon/daemon.c:173,1
    - Dst: signal
      Src: /src/unbound/daemon/daemon.c:176,1
    - Dst: signal
      Src: /src/unbound/daemon/daemon.c:179,1
    - Dst: signal
      Src: /src/unbound/daemon/daemon.c:181,1
    - Dst: log_err
      Src: /src/unbound/daemon/daemon.c:183,1
    - Dst: strerror
      Src: /src/unbound/daemon/daemon.c:183,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 184
    functionName: signal_handling_record
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 0
    functionsReached:
    - log_err
    - strerror
    - signal
    linkageType: ''
    returnType: void
    signature: void signal_handling_record(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: worker_sighandler
      Src: /src/unbound/daemon/daemon.c:195,1
    - Dst: worker_sighandler
      Src: /src/unbound/daemon/daemon.c:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - wrk
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 201
    functionName: signal_handling_playback
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 0
    functionsReached:
    - worker_sighandler
    linkageType: ''
    returnType: void
    signature: void signal_handling_playback(struct worker* wrk)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/unbound/daemon/daemon.c:211,1
    - Dst: strlen
      Src: /src/unbound/daemon/daemon.c:211,1
    - Dst: strlen
      Src: /src/unbound/daemon/daemon.c:212,1
    - Dst: strncmp
      Src: /src/unbound/daemon/daemon.c:213,1
    - Dst: strlen
      Src: /src/unbound/daemon/daemon.c:213,1
    - Dst: strlen
      Src: /src/unbound/daemon/daemon.c:214,1
    - Dst: listen_sslctx_create
      Src: /src/unbound/daemon/daemon.c:215,1
    - Dst: log_err
      Src: /src/unbound/daemon/daemon.c:220,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 5
    argNames:
    - ctx
    - is_dot
    - is_doh
    - cfg
    - chroot
    argTypes:
    - void**
    - int
    - int
    - struct config_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 223
    functionName: setup_listen_sslctx
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 0
    functionsReached:
    - listen_sslctx_create
    - strncmp
    - strlen
    - log_err
    linkageType: ''
    returnType: void
    signature: "void setup_listen_sslctx(void** ctx, int is_dot, int is_doh,\n\tstruct
      config_file* cfg, char* chroot)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setup_listen_sslctx
      Src: /src/unbound/daemon/daemon.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - daemon
    - cfg
    argTypes:
    - struct daemon*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 233
    functionName: daemon_setup_listen_dot_sslctx
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 1
    functionsReached:
    - setup_listen_sslctx
    linkageType: ''
    returnType: void
    signature: "void * daemon_setup_listen_dot_sslctx(struct daemon* daemon,\n\tstruct
      config_file* cfg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setup_listen_sslctx
      Src: /src/unbound/daemon/daemon.c:242,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - daemon
    - cfg
    argTypes:
    - struct daemon*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 238
    functionDepth: 2
    functionLinenumber: 238
    functionLinenumberEnd: 244
    functionName: daemon_setup_listen_doh_sslctx
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 1
    functionsReached:
    - setup_listen_sslctx
    linkageType: ''
    returnType: void
    signature: "void * daemon_setup_listen_doh_sslctx(struct daemon* daemon,\n\tstruct
      config_file* cfg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/unbound/daemon/daemon.c:257,1
    - Dst: strlen
      Src: /src/unbound/daemon/daemon.c:257,1
    - Dst: strlen
      Src: /src/unbound/daemon/daemon.c:258,1
    - Dst: strncmp
      Src: /src/unbound/daemon/daemon.c:259,1
    - Dst: strlen
      Src: /src/unbound/daemon/daemon.c:259,1
    - Dst: strlen
      Src: /src/unbound/daemon/daemon.c:260,1
    - Dst: quic_sslctx_create
      Src: /src/unbound/daemon/daemon.c:262,1
    - Dst: log_err
      Src: /src/unbound/daemon/daemon.c:263,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 2
    argNames:
    - daemon
    - cfg
    argTypes:
    - struct daemon*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 267
    functionName: daemon_setup_listen_quic_sslctx
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 1
    functionsReached:
    - log_err
    - strncmp
    - strlen
    - quic_sslctx_create
    linkageType: ''
    returnType: void
    signature: "void * daemon_setup_listen_quic_sslctx(struct daemon* daemon,\n\tstruct
      config_file* cfg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/unbound/daemon/daemon.c:278,1
    - Dst: strlen
      Src: /src/unbound/daemon/daemon.c:278,1
    - Dst: strlen
      Src: /src/unbound/daemon/daemon.c:279,1
    - Dst: connect_sslctx_create
      Src: /src/unbound/daemon/daemon.c:281,1
    - Dst: log_err
      Src: /src/unbound/daemon/daemon.c:283,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - daemon
    - cfg
    argTypes:
    - struct daemon*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 287
    functionName: daemon_setup_connect_dot_sslctx
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 1
    functionsReached:
    - log_err
    - connect_sslctx_create
    - strncmp
    - strlen
    linkageType: ''
    returnType: void
    signature: "void * daemon_setup_connect_dot_sslctx(struct daemon* daemon,\n\tstruct
      config_file* cfg)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/unbound/daemon/daemon.c:299,1
    - Dst: strlen
      Src: /src/unbound/daemon/daemon.c:299,1
    - Dst: strlen
      Src: /src/unbound/daemon/daemon.c:300,1
    - Dst: strncmp
      Src: /src/unbound/daemon/daemon.c:301,1
    - Dst: strlen
      Src: /src/unbound/daemon/daemon.c:301,1
    - Dst: strlen
      Src: /src/unbound/daemon/daemon.c:302,1
    - Dst: listen_sslctx_setup_ticket_keys
      Src: /src/unbound/daemon/daemon.c:308,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:310,1
    - Dst: daemon_setup_listen_dot_sslctx
      Src: /src/unbound/daemon/daemon.c:313,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:316,1
    - Dst: cfg_has_https
      Src: /src/unbound/daemon/daemon.c:318,1
    - Dst: daemon_setup_listen_doh_sslctx
      Src: /src/unbound/daemon/daemon.c:320,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:322,1
    - Dst: cfg_has_quic
      Src: /src/unbound/daemon/daemon.c:326,1
    - Dst: daemon_setup_listen_quic_sslctx
      Src: /src/unbound/daemon/daemon.c:328,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:330,1
    - Dst: strdup
      Src: /src/unbound/daemon/daemon.c:335,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:337,1
    - Dst: strdup
      Src: /src/unbound/daemon/daemon.c:339,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:341,1
    - Dst: file_get_mtime
      Src: /src/unbound/daemon/daemon.c:345,1
    - Dst: log_err
      Src: /src/unbound/daemon/daemon.c:348,1
    - Dst: strerror
      Src: /src/unbound/daemon/daemon.c:349,1
    - Dst: file_get_mtime
      Src: /src/unbound/daemon/daemon.c:351,1
    - Dst: log_err
      Src: /src/unbound/daemon/daemon.c:354,1
    - Dst: strerror
      Src: /src/unbound/daemon/daemon.c:355,1
    - Dst: daemon_setup_connect_dot_sslctx
      Src: /src/unbound/daemon/daemon.c:361,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:364,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 49
    argCount: 2
    argNames:
    - daemon
    - cfg
    argTypes:
    - struct daemon*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 291
    functionDepth: 3
    functionLinenumber: 291
    functionLinenumberEnd: 368
    functionName: daemon_setup_sslctxs
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 1
    functionsReached:
    - listen_sslctx_setup_ticket_keys
    - log_err
    - strncmp
    - daemon_setup_connect_dot_sslctx
    - strdup
    - daemon_setup_listen_quic_sslctx
    - file_get_mtime
    - fatal_exit
    - daemon_setup_listen_doh_sslctx
    - cfg_has_quic
    - daemon_setup_listen_dot_sslctx
    - strerror
    - strlen
    - cfg_has_https
    linkageType: ''
    returnType: void
    signature: void daemon_setup_sslctxs(struct daemon* daemon, struct config_file*
      cfg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: listen_sslctx_delete_ticket_keys
      Src: /src/unbound/daemon/daemon.c:375,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/daemon/daemon.c:376,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/daemon/daemon.c:378,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/daemon/daemon.c:380,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:382,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:384,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/daemon/daemon.c:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - daemon
    argTypes:
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 393
    functionName: daemon_delete_sslctxs
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 0
    functionsReached:
    - free
    - SSL_CTX_free
    - listen_sslctx_delete_ticket_keys
    linkageType: ''
    returnType: void
    signature: void daemon_delete_sslctxs(struct daemon* daemon)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/daemon.c:403,1
    - Dst: strncmp
      Src: /src/unbound/daemon/daemon.c:404,1
    - Dst: strlen
      Src: /src/unbound/daemon/daemon.c:404,1
    - Dst: strlen
      Src: /src/unbound/daemon/daemon.c:405,1
    - Dst: strncmp
      Src: /src/unbound/daemon/daemon.c:406,1
    - Dst: strlen
      Src: /src/unbound/daemon/daemon.c:406,1
    - Dst: strlen
      Src: /src/unbound/daemon/daemon.c:407,1
    - Dst: strcmp
      Src: /src/unbound/daemon/daemon.c:409,1
    - Dst: strcmp
      Src: /src/unbound/daemon/daemon.c:412,1
    - Dst: file_get_mtime
      Src: /src/unbound/daemon/daemon.c:414,1
    - Dst: log_err
      Src: /src/unbound/daemon/daemon.c:415,1
    - Dst: strerror
      Src: /src/unbound/daemon/daemon.c:416,1
    - Dst: file_get_mtime
      Src: /src/unbound/daemon/daemon.c:425,1
    - Dst: log_err
      Src: /src/unbound/daemon/daemon.c:426,1
    - Dst: strerror
      Src: /src/unbound/daemon/daemon.c:427,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 25
    argCount: 2
    argNames:
    - daemon
    - cfg
    argTypes:
    - struct daemon*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 395
    functionDepth: 1
    functionLinenumber: 395
    functionLinenumberEnd: 437
    functionName: ssl_cert_changed
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 1
    functionsReached:
    - log_err
    - strcmp
    - strncmp
    - file_get_mtime
    - log_assert
    - strerror
    - strlen
    linkageType: ''
    returnType: int
    signature: int ssl_cert_changed(struct daemon* daemon, struct config_file* cfg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ssl_cert_changed
      Src: /src/unbound/daemon/daemon.c:447,1
    - Dst: verbose
      Src: /src/unbound/daemon/daemon.c:448,1
    - Dst: daemon_delete_sslctxs
      Src: /src/unbound/daemon/daemon.c:449,1
    - Dst: daemon_setup_sslctxs
      Src: /src/unbound/daemon/daemon.c:450,1
    - Dst: verbose
      Src: /src/unbound/daemon/daemon.c:455,1
    - Dst: daemon_delete_sslctxs
      Src: /src/unbound/daemon/daemon.c:456,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - daemon
    argTypes:
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 440
    functionDepth: 4
    functionLinenumber: 440
    functionLinenumberEnd: 462
    functionName: daemon_reload_sslctxs
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 0
    functionsReached:
    - verbose
    - daemon_delete_sslctxs
    - daemon_setup_sslctxs
    - ssl_cert_changed
    linkageType: ''
    returnType: void
    signature: void daemon_reload_sslctxs(struct daemon* daemon)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/daemon/daemon.c:467,1
    - Dst: WSAStartup
      Src: /src/unbound/daemon/daemon.c:476,1
    - Dst: MAKEWORD
      Src: /src/unbound/daemon/daemon.c:476,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:478,1
    - Dst: wsa_strerror
      Src: /src/unbound/daemon/daemon.c:479,1
    - Dst: signal_handling_record
      Src: /src/unbound/daemon/daemon.c:482,1
    - Dst: ERR_load_crypto_strings
      Src: /src/unbound/daemon/daemon.c:485,1
    - Dst: ERR_load_SSL_strings
      Src: /src/unbound/daemon/daemon.c:488,1
    - Dst: sldns_key_EVP_load_gost_id
      Src: /src/unbound/daemon/daemon.c:491,1
    - Dst: OpenSSL_add_all_algorithms
      Src: /src/unbound/daemon/daemon.c:495,1
    - Dst: OPENSSL_init_crypto
      Src: /src/unbound/daemon/daemon.c:498,1
    - Dst: defined
      Src: /src/unbound/daemon/daemon.c:501,1
    - Dst: SSL_COMP_get_compression_methods
      Src: /src/unbound/daemon/daemon.c:508,1
    - Dst: SSL_library_init
      Src: /src/unbound/daemon/daemon.c:511,1
    - Dst: OPENSSL_init_ssl
      Src: /src/unbound/daemon/daemon.c:513,1
    - Dst: defined
      Src: /src/unbound/daemon/daemon.c:514,1
    - Dst: ub_openssl_lock_init
      Src: /src/unbound/daemon/daemon.c:520,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:521,1
    - Dst: NSS_NoDB_Init
      Src: /src/unbound/daemon/daemon.c:524,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:525,1
    - Dst: tzset
      Src: /src/unbound/daemon/daemon.c:529,1
    - Dst: modstack_init
      Src: /src/unbound/daemon/daemon.c:532,1
    - Dst: calloc
      Src: /src/unbound/daemon/daemon.c:533,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:535,1
    - Dst: edns_known_options_init
      Src: /src/unbound/daemon/daemon.c:540,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:541,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:542,1
    - Dst: alloc_init
      Src: /src/unbound/daemon/daemon.c:545,1
    - Dst: acl_list_create
      Src: /src/unbound/daemon/daemon.c:546,1
    - Dst: edns_known_options_delete
      Src: /src/unbound/daemon/daemon.c:548,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:549,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:550,1
    - Dst: acl_list_create
      Src: /src/unbound/daemon/daemon.c:553,1
    - Dst: acl_list_delete
      Src: /src/unbound/daemon/daemon.c:555,1
    - Dst: edns_known_options_delete
      Src: /src/unbound/daemon/daemon.c:556,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:557,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:558,1
    - Dst: tcl_list_create
      Src: /src/unbound/daemon/daemon.c:561,1
    - Dst: acl_list_delete
      Src: /src/unbound/daemon/daemon.c:563,1
    - Dst: acl_list_delete
      Src: /src/unbound/daemon/daemon.c:564,1
    - Dst: edns_known_options_delete
      Src: /src/unbound/daemon/daemon.c:565,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:566,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:567,1
    - Dst: listen_setup_locks
      Src: /src/unbound/daemon/daemon.c:570,1
    - Dst: gettimeofday
      Src: /src/unbound/daemon/daemon.c:571,1
    - Dst: log_err
      Src: /src/unbound/daemon/daemon.c:572,1
    - Dst: strerror
      Src: /src/unbound/daemon/daemon.c:572,1
    - Dst: auth_zones_create
      Src: /src/unbound/daemon/daemon.c:574,1
    - Dst: acl_list_delete
      Src: /src/unbound/daemon/daemon.c:575,1
    - Dst: acl_list_delete
      Src: /src/unbound/daemon/daemon.c:576,1
    - Dst: tcl_list_delete
      Src: /src/unbound/daemon/daemon.c:577,1
    - Dst: edns_known_options_delete
      Src: /src/unbound/daemon/daemon.c:578,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:579,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:580,1
    - Dst: edns_strings_create
      Src: /src/unbound/daemon/daemon.c:583,1
    - Dst: auth_zones_delete
      Src: /src/unbound/daemon/daemon.c:584,1
    - Dst: acl_list_delete
      Src: /src/unbound/daemon/daemon.c:585,1
    - Dst: acl_list_delete
      Src: /src/unbound/daemon/daemon.c:586,1
    - Dst: tcl_list_delete
      Src: /src/unbound/daemon/daemon.c:587,1
    - Dst: edns_known_options_delete
      Src: /src/unbound/daemon/daemon.c:588,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:589,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:590,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 82
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 464
    functionDepth: 2
    functionLinenumber: 464
    functionLinenumberEnd: 594
    functionName: daemon_init
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 1
    functionsReached:
    - SSL_COMP_get_compression_methods
    - auth_zones_create
    - modstack_init
    - ub_openssl_lock_init
    - NSS_NoDB_Init
    - log_err
    - acl_list_create
    - ERR_load_SSL_strings
    - SSL_library_init
    - tcl_list_create
    - calloc
    - sldns_key_EVP_load_gost_id
    - signal_handling_record
    - acl_list_delete
    - wsa_strerror
    - defined
    - alloc_init
    - edns_known_options_delete
    - OPENSSL_init_ssl
    - free
    - listen_setup_locks
    - WSAStartup
    - gettimeofday
    - strerror
    - MAKEWORD
    - OpenSSL_add_all_algorithms
    - edns_strings_create
    - tzset
    - fatal_exit
    - edns_known_options_init
    - OPENSSL_init_crypto
    - ERR_load_crypto_strings
    - tcl_list_delete
    - auth_zones_delete
    linkageType: ''
    returnType: struct daemon
    signature: "struct daemon * \ndaemon_init(void)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: acl_interface_insert
      Src: /src/unbound/daemon/daemon.c:605,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - list
    - port_list
    argTypes:
    - struct acl_list*
    - struct listen_port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 596
    functionDepth: 4
    functionLinenumber: 596
    functionLinenumberEnd: 614
    functionName: setup_acl_for_ports
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 1
    functionsReached:
    - acl_interface_insert
    linkageType: ''
    returnType: int
    signature: int setup_acl_for_ports(struct acl_list* list, struct listen_port*
      port_list)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/daemon.c:619,1
    - Dst: listening_ports_free
      Src: /src/unbound/daemon/daemon.c:629,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:630,1
    - Dst: acl_interface_init
      Src: /src/unbound/daemon/daemon.c:634,1
    - Dst: resolve_interface_names
      Src: /src/unbound/daemon/daemon.c:635,1
    - Dst: listening_ports_open
      Src: /src/unbound/daemon/daemon.c:644,1
    - Dst: listening_ports_free
      Src: /src/unbound/daemon/daemon.c:647,1
    - Dst: config_del_strarray
      Src: /src/unbound/daemon/daemon.c:648,1
    - Dst: calloc
      Src: /src/unbound/daemon/daemon.c:659,1
    - Dst: listening_ports_free
      Src: /src/unbound/daemon/daemon.c:661,1
    - Dst: config_del_strarray
      Src: /src/unbound/daemon/daemon.c:662,1
    - Dst: setup_acl_for_ports
      Src: /src/unbound/daemon/daemon.c:666,1
    - Dst: listening_ports_free
      Src: /src/unbound/daemon/daemon.c:668,1
    - Dst: config_del_strarray
      Src: /src/unbound/daemon/daemon.c:669,1
    - Dst: listening_ports_open
      Src: /src/unbound/daemon/daemon.c:676,1
    - Dst: listening_ports_free
      Src: /src/unbound/daemon/daemon.c:681,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:682,1
    - Dst: config_del_strarray
      Src: /src/unbound/daemon/daemon.c:684,1
    - Dst: setup_acl_for_ports
      Src: /src/unbound/daemon/daemon.c:687,1
    - Dst: listening_ports_free
      Src: /src/unbound/daemon/daemon.c:690,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:691,1
    - Dst: config_del_strarray
      Src: /src/unbound/daemon/daemon.c:693,1
    - Dst: config_del_strarray
      Src: /src/unbound/daemon/daemon.c:698,1
    - Dst: listening_ports_free
      Src: /src/unbound/daemon/daemon.c:702,1
    - Dst: listening_ports_free
      Src: /src/unbound/daemon/daemon.c:708,1
    - Dst: daemon_remote_open_ports
      Src: /src/unbound/daemon/daemon.c:709,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 72
    argCount: 1
    argNames:
    - daemon
    argTypes:
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 714
      start: 616
    functionDepth: 5
    functionLinenumber: 616
    functionLinenumberEnd: 714
    functionName: daemon_open_shared_ports
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 1
    functionsReached:
    - daemon_remote_open_ports
    - listening_ports_open
    - acl_interface_init
    - listening_ports_free
    - free
    - calloc
    - log_assert
    - config_del_strarray
    - setup_acl_for_ports
    - resolve_interface_names
    linkageType: ''
    returnType: int
    signature: int daemon_open_shared_ports(struct daemon* daemon)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: modstack_call_startup
      Src: /src/unbound/daemon/daemon.c:722,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:724,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - daemon
    argTypes:
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 716
    functionDepth: 1
    functionLinenumber: 716
    functionLinenumberEnd: 727
    functionName: daemon_privileged
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 1
    functionsReached:
    - modstack_call_startup
    - fatal_exit
    linkageType: ''
    returnType: int
    signature: int daemon_privileged(struct daemon* daemon)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: modstack_call_deinit
      Src: /src/unbound/daemon/daemon.c:739,1
    - Dst: modstack_call_init
      Src: /src/unbound/daemon/daemon.c:742,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:744,1
    - Dst: log_edns_known_options
      Src: /src/unbound/daemon/daemon.c:747,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - daemon
    argTypes:
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 748
      start: 733
    functionDepth: 1
    functionLinenumber: 733
    functionLinenumberEnd: 748
    functionName: daemon_setup_modules
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 0
    functionsReached:
    - modstack_call_deinit
    - modstack_call_init
    - fatal_exit
    - log_edns_known_options
    linkageType: ''
    returnType: void
    signature: void daemon_setup_modules(struct daemon* daemon)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:768,1
    - Dst: ub_random_max
      Src: /src/unbound/daemon/daemon.c:773,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - daemon
    - shufport
    argTypes:
    - struct daemon*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 779
      start: 757
    functionDepth: 1
    functionLinenumber: 757
    functionLinenumberEnd: 779
    functionName: daemon_get_shufport
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 0
    functionsReached:
    - ub_random_max
    - fatal_exit
    linkageType: ''
    returnType: int
    signature: int daemon_get_shufport(struct daemon* daemon, int* shufport)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: alloc_clear
      Src: /src/unbound/daemon/daemon.c:796,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:797,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:799,1
    - Dst: alloc_clear_special
      Src: /src/unbound/daemon/daemon.c:802,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - daemon
    argTypes:
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 787
    functionDepth: 1
    functionLinenumber: 787
    functionLinenumberEnd: 803
    functionName: daemon_clear_allocs
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 0
    functionsReached:
    - free
    - alloc_clear_special
    - alloc_clear
    linkageType: ''
    returnType: void
    signature: void daemon_clear_allocs(struct daemon* daemon)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/daemon.c:817,1
    - Dst: ub_initstate
      Src: /src/unbound/daemon/daemon.c:819,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:821,1
    - Dst: hash_set_raninit
      Src: /src/unbound/daemon/daemon.c:822,1
    - Dst: ub_random
      Src: /src/unbound/daemon/daemon.c:822,1
    - Dst: calloc
      Src: /src/unbound/daemon/daemon.c:824,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:826,1
    - Dst: daemon_get_shufport
      Src: /src/unbound/daemon/daemon.c:827,1
    - Dst: verbose
      Src: /src/unbound/daemon/daemon.c:828,1
    - Dst: shared_ports_create
      Src: /src/unbound/daemon/daemon.c:829,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:832,1
    - Dst: cfg_has_quic
      Src: /src/unbound/daemon/daemon.c:835,1
    - Dst: doq_table_create
      Src: /src/unbound/daemon/daemon.c:836,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:838,1
    - Dst: log_warn
      Src: /src/unbound/daemon/daemon.c:844,1
    - Dst: calloc
      Src: /src/unbound/daemon/daemon.c:849,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:852,1
    - Dst: dt_create
      Src: /src/unbound/daemon/daemon.c:855,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:857,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:859,1
    - Dst: worker_create
      Src: /src/unbound/daemon/daemon.c:863,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:864,1
    - Dst: calloc
      Src: /src/unbound/daemon/daemon.c:868,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:871,1
    - Dst: calloc
      Src: /src/unbound/daemon/daemon.c:873,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:876,1
    - Dst: alloc_init
      Src: /src/unbound/daemon/daemon.c:877,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:881,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 50
    argCount: 1
    argNames:
    - daemon
    argTypes:
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 812
    functionDepth: 2
    functionLinenumber: 812
    functionLinenumberEnd: 882
    functionName: daemon_create_workers
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 0
    functionsReached:
    - daemon_get_shufport
    - shared_ports_create
    - worker_create
    - ub_initstate
    - verbose
    - alloc_init
    - doq_table_create
    - fatal_exit
    - cfg_has_quic
    - free
    - calloc
    - log_assert
    - log_warn
    - hash_set_raninit
    - dt_create
    - ub_random
    linkageType: ''
    returnType: void
    signature: void daemon_create_workers(struct daemon* daemon)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tube_close_read
      Src: /src/unbound/daemon/daemon.c:897,1
    - Dst: tube_delete
      Src: /src/unbound/daemon/daemon.c:900,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - daemon
    - thr
    argTypes:
    - struct daemon*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 890
    functionDepth: 1
    functionLinenumber: 890
    functionLinenumberEnd: 904
    functionName: close_other_pipes
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 0
    functionsReached:
    - tube_close_read
    - tube_delete
    linkageType: ''
    returnType: void
    signature: void close_other_pipes(struct daemon* daemon, int thr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/daemon.c:916,1
    - Dst: gettid
      Src: /src/unbound/daemon/daemon.c:918,1
    - Dst: log_thread_set
      Src: /src/unbound/daemon/daemon.c:920,1
    - Dst: log_thread_set
      Src: /src/unbound/daemon/daemon.c:923,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - worker
    - cfg
    argTypes:
    - struct worker*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 924
      start: 912
    functionDepth: 1
    functionLinenumber: 912
    functionLinenumberEnd: 924
    functionName: set_log_thread_id
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 0
    functionsReached:
    - log_thread_set
    - log_assert
    - gettid
    linkageType: ''
    returnType: void
    signature: void set_log_thread_id(struct worker* worker, struct config_file* cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: set_log_thread_id
      Src: /src/unbound/daemon/daemon.c:936,1
    - Dst: snprintf
      Src: /src/unbound/daemon/daemon.c:940,1
    - Dst: ub_thread_setname
      Src: /src/unbound/daemon/daemon.c:943,1
    - Dst: ub_thread_self
      Src: /src/unbound/daemon/daemon.c:943,1
    - Dst: ub_thread_blocksigs
      Src: /src/unbound/daemon/daemon.c:945,1
    - Dst: tube_close_write
      Src: /src/unbound/daemon/daemon.c:948,1
    - Dst: close_other_pipes
      Src: /src/unbound/daemon/daemon.c:949,1
    - Dst: worker_init
      Src: /src/unbound/daemon/daemon.c:957,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:959,1
    - Dst: worker_work
      Src: /src/unbound/daemon/daemon.c:962,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 931
    functionDepth: 4
    functionLinenumber: 931
    functionLinenumberEnd: 964
    functionName: thread_start
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 2
    functionsReached:
    - close_other_pipes
    - ub_thread_setname
    - snprintf
    - set_log_thread_id
    - worker_init
    - fatal_exit
    - ub_thread_self
    - ub_thread_blocksigs
    - tube_close_write
    - worker_work
    linkageType: ''
    returnType: void
    signature: "void * \nthread_start(void* arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/daemon.c:974,1
    - Dst: verbose
      Src: /src/unbound/daemon/daemon.c:975,1
    - Dst: ub_thread_create
      Src: /src/unbound/daemon/daemon.c:978,1
    - Dst: tube_close_read
      Src: /src/unbound/daemon/daemon.c:982,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - daemon
    argTypes:
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 970
    functionDepth: 1
    functionLinenumber: 970
    functionLinenumberEnd: 985
    functionName: daemon_start_others
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 0
    functionsReached:
    - tube_close_read
    - verbose
    - log_assert
    - ub_thread_create
    linkageType: ''
    returnType: void
    signature: void daemon_start_others(struct daemon* daemon)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/daemon.c:995,1
    - Dst: verbose
      Src: /src/unbound/daemon/daemon.c:996,1
    - Dst: worker_send_cmd
      Src: /src/unbound/daemon/daemon.c:1000,1
    - Dst: verbose
      Src: /src/unbound/daemon/daemon.c:1005,1
    - Dst: ub_thread_join
      Src: /src/unbound/daemon/daemon.c:1006,1
    - Dst: verbose
      Src: /src/unbound/daemon/daemon.c:1007,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - daemon
    argTypes:
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 991
    functionDepth: 2
    functionLinenumber: 991
    functionLinenumberEnd: 1009
    functionName: daemon_stop_others
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 0
    functionsReached:
    - ub_thread_join
    - verbose
    - worker_send_cmd
    - log_assert
    linkageType: ''
    returnType: void
    signature: void daemon_stop_others(struct daemon* daemon)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/daemon.c:1019,1
    - Dst: daemon_reload_sslctxs
      Src: /src/unbound/daemon/daemon.c:1020,1
    - Dst: views_create
      Src: /src/unbound/daemon/daemon.c:1021,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1022,1
    - Dst: views_apply_cfg
      Src: /src/unbound/daemon/daemon.c:1024,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1025,1
    - Dst: acl_list_apply_cfg
      Src: /src/unbound/daemon/daemon.c:1027,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1028,1
    - Dst: acl_interface_apply_cfg
      Src: /src/unbound/daemon/daemon.c:1029,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1031,1
    - Dst: tcl_list_apply_cfg
      Src: /src/unbound/daemon/daemon.c:1032,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1033,1
    - Dst: dnsc_create
      Src: /src/unbound/daemon/daemon.c:1036,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1038,1
    - Dst: dnsc_apply_cfg
      Src: /src/unbound/daemon/daemon.c:1039,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1041,1
    - Dst: cookie_secrets_create
      Src: /src/unbound/daemon/daemon.c:1047,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1048,1
    - Dst: cookie_secrets_apply_cfg
      Src: /src/unbound/daemon/daemon.c:1049,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1051,1
    - Dst: local_zones_create
      Src: /src/unbound/daemon/daemon.c:1054,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1055,1
    - Dst: local_zones_apply_cfg
      Src: /src/unbound/daemon/daemon.c:1056,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1057,1
    - Dst: forwards_create
      Src: /src/unbound/daemon/daemon.c:1058,1
    - Dst: forwards_apply_cfg
      Src: /src/unbound/daemon/daemon.c:1059,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1060,1
    - Dst: hints_create
      Src: /src/unbound/daemon/daemon.c:1061,1
    - Dst: hints_apply_cfg
      Src: /src/unbound/daemon/daemon.c:1062,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1063,1
    - Dst: respip_set_create
      Src: /src/unbound/daemon/daemon.c:1066,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1067,1
    - Dst: respip_global_apply_cfg
      Src: /src/unbound/daemon/daemon.c:1068,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1069,1
    - Dst: respip_views_apply_cfg
      Src: /src/unbound/daemon/daemon.c:1070,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1072,1
    - Dst: respip_set_is_empty
      Src: /src/unbound/daemon/daemon.c:1073,1
    - Dst: daemon_setup_modules
      Src: /src/unbound/daemon/daemon.c:1077,1
    - Dst: auth_zones_apply_cfg
      Src: /src/unbound/daemon/daemon.c:1080,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1082,1
    - Dst: edns_strings_apply_cfg
      Src: /src/unbound/daemon/daemon.c:1085,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1086,1
    - Dst: cachedb_is_enabled
      Src: /src/unbound/daemon/daemon.c:1089,1
    - Dst: modstack_find
      Src: /src/unbound/daemon/daemon.c:1096,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1097,1
    - Dst: modstack_find
      Src: /src/unbound/daemon/daemon.c:1102,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1103,1
    - Dst: daemon_create_workers
      Src: /src/unbound/daemon/daemon.c:1108,1
    - Dst: set_log_thread_id
      Src: /src/unbound/daemon/daemon.c:1112,1
    - Dst: time
      Src: /src/unbound/daemon/daemon.c:1117,1
    - Dst: worker_init
      Src: /src/unbound/daemon/daemon.c:1122,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1123,1
    - Dst: daemon_start_others
      Src: /src/unbound/daemon/daemon.c:1130,1
    - Dst: worker_init
      Src: /src/unbound/daemon/daemon.c:1137,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1138,1
    - Dst: signal_handling_playback
      Src: /src/unbound/daemon/daemon.c:1141,1
    - Dst: shm_main_init
      Src: /src/unbound/daemon/daemon.c:1143,1
    - Dst: log_warn
      Src: /src/unbound/daemon/daemon.c:1144,1
    - Dst: sd_notify
      Src: /src/unbound/daemon/daemon.c:1148,1
    - Dst: getenv
      Src: /src/unbound/daemon/daemon.c:1149,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1150,1
    - Dst: getenv
      Src: /src/unbound/daemon/daemon.c:1152,1
    - Dst: strerror
      Src: /src/unbound/daemon/daemon.c:1153,1
    - Dst: log_info
      Src: /src/unbound/daemon/daemon.c:1155,1
    - Dst: worker_work
      Src: /src/unbound/daemon/daemon.c:1156,1
    - Dst: sd_notify
      Src: /src/unbound/daemon/daemon.c:1159,1
    - Dst: sd_notify
      Src: /src/unbound/daemon/daemon.c:1161,1
    - Dst: log_info
      Src: /src/unbound/daemon/daemon.c:1163,1
    - Dst: daemon_stop_others
      Src: /src/unbound/daemon/daemon.c:1166,1
    - Dst: shm_main_shutdown
      Src: /src/unbound/daemon/daemon.c:1169,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 80
    argCount: 1
    argNames:
    - daemon
    argTypes:
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1173
      start: 1011
    functionDepth: 6
    functionLinenumber: 1011
    functionLinenumberEnd: 1173
    functionName: daemon_fork
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 1
    functionsReached:
    - signal_handling_playback
    - cookie_secrets_create
    - log_info
    - worker_init
    - local_zones_create
    - daemon_start_others
    - dnsc_apply_cfg
    - auth_zones_apply_cfg
    - forwards_apply_cfg
    - shm_main_shutdown
    - sd_notify
    - modstack_find
    - daemon_create_workers
    - acl_list_apply_cfg
    - views_apply_cfg
    - respip_set_create
    - daemon_setup_modules
    - views_create
    - respip_global_apply_cfg
    - dnsc_create
    - getenv
    - cookie_secrets_apply_cfg
    - local_zones_apply_cfg
    - hints_create
    - respip_set_is_empty
    - worker_work
    - respip_views_apply_cfg
    - time
    - edns_strings_apply_cfg
    - shm_main_init
    - log_assert
    - hints_apply_cfg
    - tcl_list_apply_cfg
    - log_warn
    - strerror
    - forwards_create
    - set_log_thread_id
    - acl_interface_apply_cfg
    - daemon_reload_sslctxs
    - fatal_exit
    - daemon_stop_others
    - cachedb_is_enabled
    linkageType: ''
    returnType: void
    signature: void daemon_fork(struct daemon* daemon)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/daemon/daemon.c:1179,1
    - Dst: signal_handling_record
      Src: /src/unbound/daemon/daemon.c:1182,1
    - Dst: slabhash_clear
      Src: /src/unbound/daemon/daemon.c:1191,1
    - Dst: slabhash_clear
      Src: /src/unbound/daemon/daemon.c:1192,1
    - Dst: forwards_delete
      Src: /src/unbound/daemon/daemon.c:1195,1
    - Dst: hints_delete
      Src: /src/unbound/daemon/daemon.c:1197,1
    - Dst: local_zones_delete
      Src: /src/unbound/daemon/daemon.c:1199,1
    - Dst: respip_set_delete
      Src: /src/unbound/daemon/daemon.c:1201,1
    - Dst: views_delete
      Src: /src/unbound/daemon/daemon.c:1203,1
    - Dst: auth_zones_cleanup
      Src: /src/unbound/daemon/daemon.c:1206,1
    - Dst: daemon_remote_clear
      Src: /src/unbound/daemon/daemon.c:1208,1
    - Dst: fast_reload_thread_stop
      Src: /src/unbound/daemon/daemon.c:1210,1
    - Dst: fast_reload_printq_list_delete
      Src: /src/unbound/daemon/daemon.c:1212,1
    - Dst: worker_delete
      Src: /src/unbound/daemon/daemon.c:1214,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:1215,1
    - Dst: daemon_clear_allocs
      Src: /src/unbound/daemon/daemon.c:1222,1
    - Dst: shared_ports_delete
      Src: /src/unbound/daemon/daemon.c:1224,1
    - Dst: dt_delete
      Src: /src/unbound/daemon/daemon.c:1227,1
    - Dst: dnsc_delete
      Src: /src/unbound/daemon/daemon.c:1231,1
    - Dst: doq_table_delete
      Src: /src/unbound/daemon/daemon.c:1236,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 43
    argCount: 1
    argNames:
    - daemon
    argTypes:
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1241
      start: 1175
    functionDepth: 4
    functionLinenumber: 1175
    functionLinenumberEnd: 1241
    functionName: daemon_cleanup
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 1
    functionsReached:
    - dnsc_delete
    - shared_ports_delete
    - daemon_clear_allocs
    - daemon_remote_clear
    - auth_zones_cleanup
    - worker_delete
    - signal_handling_record
    - dt_delete
    - doq_table_delete
    - free
    - forwards_delete
    - log_assert
    - fast_reload_thread_stop
    - hints_delete
    - respip_set_delete
    - views_delete
    - local_zones_delete
    - fast_reload_printq_list_delete
    - slabhash_clear
    linkageType: ''
    returnType: void
    signature: void daemon_cleanup(struct daemon* daemon)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: modstack_call_deinit
      Src: /src/unbound/daemon/daemon.c:1249,1
    - Dst: modstack_call_destartup
      Src: /src/unbound/daemon/daemon.c:1250,1
    - Dst: modstack_free
      Src: /src/unbound/daemon/daemon.c:1251,1
    - Dst: daemon_remote_delete
      Src: /src/unbound/daemon/daemon.c:1252,1
    - Dst: listening_ports_free
      Src: /src/unbound/daemon/daemon.c:1254,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:1255,1
    - Dst: listening_ports_free
      Src: /src/unbound/daemon/daemon.c:1256,1
    - Dst: slabhash_delete
      Src: /src/unbound/daemon/daemon.c:1258,1
    - Dst: rrset_cache_delete
      Src: /src/unbound/daemon/daemon.c:1259,1
    - Dst: infra_delete
      Src: /src/unbound/daemon/daemon.c:1260,1
    - Dst: edns_known_options_delete
      Src: /src/unbound/daemon/daemon.c:1261,1
    - Dst: edns_strings_delete
      Src: /src/unbound/daemon/daemon.c:1262,1
    - Dst: auth_zones_delete
      Src: /src/unbound/daemon/daemon.c:1263,1
    - Dst: ub_randfree
      Src: /src/unbound/daemon/daemon.c:1265,1
    - Dst: alloc_clear
      Src: /src/unbound/daemon/daemon.c:1266,1
    - Dst: acl_list_delete
      Src: /src/unbound/daemon/daemon.c:1267,1
    - Dst: acl_list_delete
      Src: /src/unbound/daemon/daemon.c:1268,1
    - Dst: tcl_list_delete
      Src: /src/unbound/daemon/daemon.c:1269,1
    - Dst: cookie_secrets_delete
      Src: /src/unbound/daemon/daemon.c:1270,1
    - Dst: listen_desetup_locks
      Src: /src/unbound/daemon/daemon.c:1271,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:1272,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:1273,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:1274,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:1275,1
    - Dst: daemon_delete_sslctxs
      Src: /src/unbound/daemon/daemon.c:1276,1
    - Dst: free
      Src: /src/unbound/daemon/daemon.c:1277,1
    - Dst: ub_c_lex_destroy
      Src: /src/unbound/daemon/daemon.c:1279,1
    - Dst: sldns_key_EVP_unload_gost
      Src: /src/unbound/daemon/daemon.c:1283,1
    - Dst: sk_SSL_COMP_pop_free
      Src: /src/unbound/daemon/daemon.c:1288,1
    - Dst: EVP_cleanup
      Src: /src/unbound/daemon/daemon.c:1293,1
    - Dst: ENGINE_cleanup
      Src: /src/unbound/daemon/daemon.c:1295,1
    - Dst: CONF_modules_free
      Src: /src/unbound/daemon/daemon.c:1297,1
    - Dst: CRYPTO_cleanup_all_ex_data
      Src: /src/unbound/daemon/daemon.c:1300,1
    - Dst: ERR_free_strings
      Src: /src/unbound/daemon/daemon.c:1303,1
    - Dst: RAND_cleanup
      Src: /src/unbound/daemon/daemon.c:1306,1
    - Dst: ub_openssl_lock_delete
      Src: /src/unbound/daemon/daemon.c:1309,1
    - Dst: OPENSSL_cleanup
      Src: /src/unbound/daemon/daemon.c:1312,1
    - Dst: _ARC4_LOCK_DESTROY
      Src: /src/unbound/daemon/daemon.c:1315,1
    - Dst: NSS_Shutdown
      Src: /src/unbound/daemon/daemon.c:1318,1
    - Dst: checklock_stop
      Src: /src/unbound/daemon/daemon.c:1320,1
    - Dst: WSACleanup
      Src: /src/unbound/daemon/daemon.c:1322,1
    - Dst: log_err
      Src: /src/unbound/daemon/daemon.c:1323,1
    - Dst: wsa_strerror
      Src: /src/unbound/daemon/daemon.c:1324,1
    - Dst: WSAGetLastError
      Src: /src/unbound/daemon/daemon.c:1324,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 49
    argCount: 1
    argNames:
    - daemon
    argTypes:
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1243
    functionDepth: 2
    functionLinenumber: 1243
    functionLinenumberEnd: 1327
    functionName: daemon_delete
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 1
    functionsReached:
    - modstack_call_destartup
    - CONF_modules_free
    - EVP_cleanup
    - WSACleanup
    - RAND_cleanup
    - listening_ports_free
    - sldns_key_EVP_unload_gost
    - log_err
    - ub_c_lex_destroy
    - daemon_delete_sslctxs
    - sk_SSL_COMP_pop_free
    - rrset_cache_delete
    - cookie_secrets_delete
    - ENGINE_cleanup
    - OPENSSL_cleanup
    - acl_list_delete
    - infra_delete
    - modstack_free
    - wsa_strerror
    - ub_randfree
    - ub_openssl_lock_delete
    - edns_known_options_delete
    - edns_strings_delete
    - free
    - checklock_stop
    - _ARC4_LOCK_DESTROY
    - slabhash_delete
    - listen_desetup_locks
    - NSS_Shutdown
    - alloc_clear
    - daemon_remote_delete
    - ERR_free_strings
    - WSAGetLastError
    - CRYPTO_cleanup_all_ex_data
    - modstack_call_deinit
    - tcl_list_delete
    - auth_zones_delete
    linkageType: ''
    returnType: void
    signature: void daemon_delete(struct daemon* daemon)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: config_apply
      Src: /src/unbound/daemon/daemon.c:1334,1
    - Dst: slabhash_is_size
      Src: /src/unbound/daemon/daemon.c:1356,1
    - Dst: slabhash_is_size
      Src: /src/unbound/daemon/daemon.c:1358,1
    - Dst: log_warn
      Src: /src/unbound/daemon/daemon.c:1361,1
    - Dst: slabhash_clear
      Src: /src/unbound/daemon/daemon.c:1362,1
    - Dst: slabhash_clear
      Src: /src/unbound/daemon/daemon.c:1363,1
    - Dst: daemon_clear_allocs
      Src: /src/unbound/daemon/daemon.c:1364,1
    - Dst: slabhash_is_size
      Src: /src/unbound/daemon/daemon.c:1367,1
    - Dst: slabhash_delete
      Src: /src/unbound/daemon/daemon.c:1369,1
    - Dst: slabhash_create
      Src: /src/unbound/daemon/daemon.c:1370,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1375,1
    - Dst: rrset_cache_adjust
      Src: /src/unbound/daemon/daemon.c:1378,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1380,1
    - Dst: infra_adjust
      Src: /src/unbound/daemon/daemon.c:1381,1
    - Dst: fatal_exit
      Src: /src/unbound/daemon/daemon.c:1383,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 2
    argNames:
    - daemon
    - cfg
    argTypes:
    - struct daemon*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1384
      start: 1329
    functionDepth: 2
    functionLinenumber: 1329
    functionLinenumberEnd: 1384
    functionName: daemon_apply_cfg
    functionSourceFile: /src/unbound/daemon/daemon.c
    functionUses: 1
    functionsReached:
    - infra_adjust
    - slabhash_create
    - fatal_exit
    - rrset_cache_adjust
    - slabhash_clear
    - log_warn
    - config_apply
    - slabhash_is_size
    - daemon_clear_allocs
    - slabhash_delete
    linkageType: ''
    returnType: void
    signature: void daemon_apply_cfg(struct daemon* daemon, struct config_file* cfg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - e
    - ','
    - 'off'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: RET_ERR
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RET_ERR(e, off)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - e
    - ','
    - move
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: RET_ERR_SHIFT
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RET_ERR_SHIFT(e, move)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:50,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:53,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:56,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:62,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:77,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:83,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:85,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:89,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:92,1
    - Dst: sldns_parse_escape
      Src: /src/unbound/sldns/str2wire.c:103,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:105,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:120,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:122,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:125,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:128,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 77
    argCount: 4
    argNames:
    - str
    - buf
    - olen
    - rel
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 138
    functionName: sldns_str2wire_dname_buf_rel
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_parse_escape
    - RET_ERR
    - strlen
    linkageType: ''
    returnType: int
    signature: "int sldns_str2wire_dname_buf_rel(const char* str, uint8_t* buf,\n\tsize_t*
      olen, int* rel)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname_buf_rel
      Src: /src/unbound/sldns/str2wire.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - str
    - buf
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 143
    functionName: sldns_str2wire_dname_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 3
    functionsReached:
    - sldns_str2wire_dname_buf_rel
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_dname_buf(const char* str, uint8_t* buf, size_t*
      len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname_buf_rel
      Src: /src/unbound/sldns/str2wire.c:150,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:157,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:159,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:162,1
    - Dst: memmove
      Src: /src/unbound/sldns/str2wire.c:164,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 5
    argNames:
    - str
    - buf
    - len
    - origin
    - origin_len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 169
    functionName: sldns_str2wire_dname_buf_origin
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_str2wire_dname_buf_rel
    - RET_ERR
    - memmove
    linkageType: ''
    returnType: int
    signature: "int sldns_str2wire_dname_buf_origin(const char* str, uint8_t* buf,
      size_t* len,\n\tuint8_t* origin, size_t origin_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/sldns/str2wire.c:175,1
    - Dst: malloc
      Src: /src/unbound/sldns/str2wire.c:178,1
    - Dst: memcpy
      Src: /src/unbound/sldns/str2wire.c:179,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - str
    - len
    argTypes:
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 171
    functionDepth: 3
    functionLinenumber: 171
    functionLinenumberEnd: 183
    functionName: sldns_str2wire_dname
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - malloc
    - memcpy
    - sldns_str2wire_dname_buf
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t * sldns_str2wire_dname(const char* str, size_t* len)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: sldns_bget_token
      Src: /src/unbound/sldns/str2wire.c:192,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:193,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:194,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:198,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:199,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:214,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:215,1
    - Dst: memmove
      Src: /src/unbound/sldns/str2wire.c:216,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:232,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:233,1
    - Dst: memmove
      Src: /src/unbound/sldns/str2wire.c:234,1
    - Dst: sldns_str2wire_dname_buf_origin
      Src: /src/unbound/sldns/str2wire.c:237,1
    - Dst: RET_ERR_SHIFT
      Src: /src/unbound/sldns/str2wire.c:239,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:240,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:240,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 43
    argCount: 10
    argNames:
    - strbuf
    - rr
    - len
    - dname_len
    - origin
    - origin_len
    - prev
    - prev_len
    - token
    - token_len
    argTypes:
    - sldns_buffer*
    - uint8_t*
    - size_t*
    - size_t*
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 186
    functionDepth: 3
    functionLinenumber: 186
    functionLinenumberEnd: 244
    functionName: rrinternal_get_owner
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_str2wire_dname_buf_origin
    - memmove
    - sldns_bget_token
    - RET_ERR_SHIFT
    - strlen
    - RET_ERR
    linkageType: ''
    returnType: int
    signature: "int rrinternal_get_owner(sldns_buffer* strbuf, uint8_t* rr, size_t*
      len,\n\tsize_t* dname_len, uint8_t* origin, size_t origin_len, uint8_t* prev,\n\tsize_t
      prev_len, char* token, size_t token_len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_bget_token
      Src: /src/unbound/sldns/str2wire.c:253,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:254,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:255,1
    - Dst: sldns_str2period
      Src: /src/unbound/sldns/str2wire.c:257,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:259,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:260,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:263,1
    - Dst: isdigit
      Src: /src/unbound/sldns/str2wire.c:263,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 6
    argNames:
    - strbuf
    - token
    - token_len
    - not_there
    - ttl
    - default_ttl
    argTypes:
    - sldns_buffer*
    - char*
    - size_t
    - int*
    - uint32_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 273
    functionName: rrinternal_get_ttl
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_str2period
    - sldns_bget_token
    - isdigit
    - strlen
    - RET_ERR
    linkageType: ''
    returnType: int
    signature: "int rrinternal_get_ttl(sldns_buffer* strbuf, char* token, size_t token_len,\n\tint*
      not_there, uint32_t* ttl, uint32_t default_ttl)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_bget_token
      Src: /src/unbound/sldns/str2wire.c:283,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:284,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:285,1
    - Dst: sldns_get_rr_class_by_name
      Src: /src/unbound/sldns/str2wire.c:288,1
    - Dst: strcmp
      Src: /src/unbound/sldns/str2wire.c:290,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 5
    argNames:
    - strbuf
    - token
    - token_len
    - not_there
    - cl
    argTypes:
    - sldns_buffer*
    - char*
    - size_t
    - int*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 295
    functionName: rrinternal_get_class
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - strcmp
    - sldns_get_rr_class_by_name
    - sldns_bget_token
    - RET_ERR
    linkageType: ''
    returnType: int
    signature: "int rrinternal_get_class(sldns_buffer* strbuf, char* token, size_t
      token_len,\n\tint* not_there, uint16_t* cl)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_bget_token
      Src: /src/unbound/sldns/str2wire.c:305,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:306,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:307,1
    - Dst: sldns_get_rr_type_by_name
      Src: /src/unbound/sldns/str2wire.c:310,1
    - Dst: strcmp
      Src: /src/unbound/sldns/str2wire.c:311,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:312,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:313,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 5
    argNames:
    - strbuf
    - token
    - token_len
    - not_there
    - tp
    argTypes:
    - sldns_buffer*
    - char*
    - size_t
    - int*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 298
    functionDepth: 1
    functionLinenumber: 298
    functionLinenumberEnd: 316
    functionName: rrinternal_get_type
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - strcmp
    - sldns_bget_token
    - RET_ERR
    - sldns_get_rr_type_by_name
    linkageType: ''
    returnType: int
    signature: "int rrinternal_get_type(sldns_buffer* strbuf, char* token, size_t
      token_len,\n\tint* not_there, uint16_t* tp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:326,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:327,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:328,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:329,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:335,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:336,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:337,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:338,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/sldns/str2wire.c:339,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:340,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 8
    argNames:
    - strbuf
    - rr
    - len
    - dname_len
    - tp
    - cl
    - ttl
    - question
    argTypes:
    - sldns_buffer*
    - uint8_t*
    - size_t
    - size_t
    - uint16_t
    - uint16_t
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 319
    functionDepth: 1
    functionLinenumber: 319
    functionLinenumberEnd: 342
    functionName: rrinternal_write_typeclassttl
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_write_uint16
    - sldns_write_uint32
    - RET_ERR
    linkageType: ''
    returnType: int
    signature: "int rrinternal_write_typeclassttl(sldns_buffer* strbuf, uint8_t* rr,
      size_t len,\n\tsize_t dname_len, uint16_t tp, uint16_t cl, uint32_t ttl, int
      question)"
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - rdftype
    - r_cnt
    - r_max
    argTypes:
    - sldns_rdf_type
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 361
    functionName: rrinternal_get_delims
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      rrinternal_get_delims(sldns_rdf_type rdftype, size_t r_cnt, size_t r_max)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - rdf_type
    argTypes:
    - sldns_rdf_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 370
    functionName: sldns_rdf_type_maybe_quoted
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sldns_rdf_type_maybe_quoted(sldns_rdf_type rdf_type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_rdf_type_maybe_quoted
      Src: /src/unbound/sldns/str2wire.c:377,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/sldns/str2wire.c:378,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/sldns/str2wire.c:381,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/sldns/str2wire.c:382,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/sldns/str2wire.c:383,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/sldns/str2wire.c:384,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/sldns/str2wire.c:387,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/sldns/str2wire.c:388,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/sldns/str2wire.c:390,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 3
    argNames:
    - strbuf
    - delimiters
    - rdftype
    argTypes:
    - sldns_buffer*
    - char**
    - sldns_rdf_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 395
      start: 373
    functionDepth: 1
    functionLinenumber: 373
    functionLinenumberEnd: 395
    functionName: rrinternal_get_quoted
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_current
    - sldns_rdf_type_maybe_quoted
    - sldns_buffer_skip
    linkageType: ''
    returnType: int
    signature: "int rrinternal_get_quoted(sldns_buffer* strbuf, const char** delimiters,\n\tsldns_rdf_type
      rdftype)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/sldns/str2wire.c:404,1
    - Dst: isxdigit
      Src: /src/unbound/sldns/str2wire.c:408,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:409,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:412,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:416,1
    - Dst: sldns_hexdigit_to_int
      Src: /src/unbound/sldns/str2wire.c:421,1
    - Dst: sldns_hexdigit_to_int
      Src: /src/unbound/sldns/str2wire.c:424,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 6
    argNames:
    - token
    - rr
    - rr_len
    - rr_cur_len
    - cur_hex_data_size
    - hex_data_size
    argTypes:
    - char*
    - uint8_t*
    - size_t
    - size_t
    - size_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 398
    functionDepth: 1
    functionLinenumber: 398
    functionLinenumberEnd: 430
    functionName: rrinternal_spool_hex
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_hexdigit_to_int
    - isxdigit
    - isspace
    - RET_ERR
    linkageType: ''
    returnType: int
    signature: "int rrinternal_spool_hex(char* token, uint8_t* rr, size_t rr_len,\n\tsize_t
      rr_cur_len, size_t* cur_hex_data_size, size_t hex_data_size)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/sldns/str2wire.c:442,1
    - Dst: sldns_bget_token
      Src: /src/unbound/sldns/str2wire.c:443,1
    - Dst: sldns_bget_token
      Src: /src/unbound/sldns/str2wire.c:446,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:448,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:449,1
    - Dst: atoi
      Src: /src/unbound/sldns/str2wire.c:451,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:454,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:455,1
    - Dst: sldns_bget_token
      Src: /src/unbound/sldns/str2wire.c:462,1
    - Dst: rrinternal_spool_hex
      Src: /src/unbound/sldns/str2wire.c:463,1
    - Dst: RET_ERR_SHIFT
      Src: /src/unbound/sldns/str2wire.c:465,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:466,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:466,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:469,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:471,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 7
    argNames:
    - strbuf
    - token
    - token_len
    - rr
    - rr_len
    - rr_cur_len
    - pre_data_pos
    argTypes:
    - sldns_buffer*
    - char*
    - size_t
    - uint8_t*
    - size_t*
    - size_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 433
    functionDepth: 2
    functionLinenumber: 433
    functionLinenumberEnd: 477
    functionName: rrinternal_parse_unknown
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_bget_token
    - RET_ERR_SHIFT
    - sldns_buffer_set_position
    - atoi
    - rrinternal_spool_hex
    - strlen
    - RET_ERR
    linkageType: ''
    returnType: int
    signature: "int rrinternal_parse_unknown(sldns_buffer* strbuf, char* token, size_t
      token_len,\n        uint8_t* rr, size_t* rr_len, size_t* rr_cur_len, size_t
      pre_data_pos)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/sldns/str2wire.c:492,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:506,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:508,1
    - Dst: memmove
      Src: /src/unbound/sldns/str2wire.c:509,1
    - Dst: sldns_str2wire_dname_buf_origin
      Src: /src/unbound/sldns/str2wire.c:513,1
    - Dst: RET_ERR_SHIFT
      Src: /src/unbound/sldns/str2wire.c:515,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:516,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:516,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:527,1
    - Dst: sldns_bget_token
      Src: /src/unbound/sldns/str2wire.c:528,1
    - Dst: sldns_str2wire_rdf_buf
      Src: /src/unbound/sldns/str2wire.c:537,1
    - Dst: RET_ERR_SHIFT
      Src: /src/unbound/sldns/str2wire.c:539,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:540,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:540,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 13
    argNames:
    - strbuf
    - token
    - token_len
    - rr
    - rr_len
    - rr_cur_len
    - rdftype
    - rr_type
    - r_cnt
    - r_max
    - dname_len
    - origin
    - origin_len
    argTypes:
    - sldns_buffer*
    - char*
    - size_t
    - uint8_t*
    - size_t
    - size_t*
    - sldns_rdf_type
    - uint16_t
    - size_t
    - size_t
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 480
    functionDepth: 3
    functionLinenumber: 480
    functionLinenumberEnd: 543
    functionName: rrinternal_parse_rdf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - strcmp
    - sldns_str2wire_dname_buf_origin
    - memmove
    - sldns_bget_token
    - RET_ERR_SHIFT
    - strlen
    - sldns_str2wire_rdf_buf
    - RET_ERR
    linkageType: ''
    returnType: int
    signature: "int rrinternal_parse_rdf(sldns_buffer* strbuf, char* token, size_t
      token_len,\n\tuint8_t* rr, size_t rr_len, size_t* rr_cur_len, sldns_rdf_type
      rdftype,\n\tuint16_t rr_type, size_t r_cnt, size_t r_max, size_t dname_len,\n\tuint8_t*
      origin, size_t origin_len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/sldns/str2wire.c:556,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/sldns/str2wire.c:557,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/sldns/str2wire.c:558,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/sldns/str2wire.c:559,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:562,1
    - Dst: sldns_bget_token_par
      Src: /src/unbound/sldns/str2wire.c:563,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:567,1
    - Dst: sldns_rdf_type_maybe_quoted
      Src: /src/unbound/sldns/str2wire.c:569,1
    - Dst: memmove
      Src: /src/unbound/sldns/str2wire.c:574,1
    - Dst: sldns_rdf_type_maybe_quoted
      Src: /src/unbound/sldns/str2wire.c:578,1
    - Dst: memmove
      Src: /src/unbound/sldns/str2wire.c:583,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:588,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/sldns/str2wire.c:589,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/sldns/str2wire.c:590,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/sldns/str2wire.c:591,1
    - Dst: sldns_bget_token_par
      Src: /src/unbound/sldns/str2wire.c:593,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:598,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 30
    argCount: 9
    argNames:
    - strbuf
    - token
    - token_len
    - quoted
    - parens
    - pre_data_pos
    - delimiters
    - rdftype
    - token_strlen
    argTypes:
    - sldns_buffer*
    - char*
    - size_t
    - int*
    - int*
    - size_t*
    - char*
    - sldns_rdf_type
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 548
    functionDepth: 1
    functionLinenumber: 548
    functionLinenumberEnd: 602
    functionName: sldns_parse_rdf_token
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_position
    - sldns_rdf_type_maybe_quoted
    - memmove
    - sldns_buffer_skip
    - sldns_bget_token_par
    - strlen
    - sldns_buffer_current
    linkageType: ''
    returnType: int
    signature: "int sldns_parse_rdf_token(sldns_buffer* strbuf, char* token, size_t
      token_len,\n\tint* quoted, int* parens, size_t* pre_data_pos,\n\tconst char*
      delimiters, sldns_rdf_type rdftype, size_t* token_strlen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_parse_rdf_token
      Src: /src/unbound/sldns/str2wire.c:623,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 9
    argNames:
    - strbuf
    - token
    - token_len
    - quoted
    - parens
    - pre_data_pos
    - delimiters
    - rdftype
    - token_strlen
    argTypes:
    - sldns_buffer*
    - char*
    - size_t*
    - int*
    - int*
    - size_t*
    - char*
    - sldns_rdf_type
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 605
    functionDepth: 2
    functionLinenumber: 605
    functionLinenumberEnd: 628
    functionName: sldns_affix_token
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_parse_rdf_token
    linkageType: ''
    returnType: int
    signature: "int sldns_affix_token(sldns_buffer* strbuf, char* token, size_t* token_len,\n\tint*
      quoted, int* parens, size_t* pre_data_pos,\n\tconst char* delimiters, sldns_rdf_type
      rdftype, size_t* token_strlen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/str2wire.c:632,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/str2wire.c:633,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 630
    functionDepth: 1
    functionLinenumber: 630
    functionLinenumberEnd: 634
    functionName: sldns_str2wire_svcparam_key_cmp
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_read_uint16
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_svcparam_key_cmp(const void *a, const void *b)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/str2wire.c:655,1
    - Dst: qsort
      Src: /src/unbound/sldns/str2wire.c:674,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/str2wire.c:695,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/str2wire.c:696,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/str2wire.c:705,1
    - Dst: assert
      Src: /src/unbound/sldns/str2wire.c:708,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/str2wire.c:711,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/str2wire.c:719,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/str2wire.c:733,1
    - Dst: memcpy
      Src: /src/unbound/sldns/str2wire.c:739,1
    - Dst: memcpy
      Src: /src/unbound/sldns/str2wire.c:742,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 45
    argCount: 2
    argNames:
    - rdata
    - rdata_len
    argTypes:
    - uint8_t*
    - uint16_t
    assertStmts:
    - condition: (mandatory_nkeys > 0)
      pos:
        line_end: 707
        line_start: 707
        source_file: /src/unbound/sldns/str2wire.c
    constantsTouched: []
    func_position:
      end: 744
      start: 639
    functionDepth: 1
    functionLinenumber: 639
    functionLinenumberEnd: 744
    functionName: sldns_str2wire_check_svcbparams
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_read_uint16
    - memcpy
    - assert
    - qsort
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_check_svcbparams(uint8_t* rdata, uint16_t rdata_len)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: sldns_rr_descript
      Src: /src/unbound/sldns/str2wire.c:752,1
    - Dst: sldns_rr_descriptor_maximum
      Src: /src/unbound/sldns/str2wire.c:760,1
    - Dst: sldns_rr_descriptor_minimum
      Src: /src/unbound/sldns/str2wire.c:761,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:764,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:765,1
    - Dst: sldns_rr_descriptor_field_type
      Src: /src/unbound/sldns/str2wire.c:770,1
    - Dst: rrinternal_get_delims
      Src: /src/unbound/sldns/str2wire.c:771,1
    - Dst: rrinternal_get_quoted
      Src: /src/unbound/sldns/str2wire.c:772,1
    - Dst: sldns_parse_rdf_token
      Src: /src/unbound/sldns/str2wire.c:774,1
    - Dst: strncmp
      Src: /src/unbound/sldns/str2wire.c:784,1
    - Dst: rrinternal_parse_unknown
      Src: /src/unbound/sldns/str2wire.c:788,1
    - Dst: sldns_affix_token
      Src: /src/unbound/sldns/str2wire.c:795,1
    - Dst: sldns_affix_token
      Src: /src/unbound/sldns/str2wire.c:800,1
    - Dst: strcmp
      Src: /src/unbound/sldns/str2wire.c:806,1
    - Dst: sldns_affix_token
      Src: /src/unbound/sldns/str2wire.c:808,1
    - Dst: rrinternal_parse_rdf
      Src: /src/unbound/sldns/str2wire.c:816,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:825,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:826,1
    - Dst: sldns_bget_token_par
      Src: /src/unbound/sldns/str2wire.c:830,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:833,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:834,1
    - Dst: strcmp
      Src: /src/unbound/sldns/str2wire.c:837,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:838,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:839,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:842,1
    - Dst: sldns_str2wire_check_svcbparams
      Src: /src/unbound/sldns/str2wire.c:878,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 69
    argCount: 9
    argNames:
    - strbuf
    - token
    - token_len
    - rr
    - rr_len
    - dname_len
    - rr_type
    - origin
    - origin_len
    argTypes:
    - sldns_buffer*
    - char*
    - size_t
    - uint8_t*
    - size_t*
    - size_t
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 882
      start: 747
    functionDepth: 4
    functionLinenumber: 747
    functionLinenumberEnd: 882
    functionName: rrinternal_parse_rdata
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - rrinternal_get_quoted
    - sldns_affix_token
    - strncmp
    - rrinternal_parse_unknown
    - strcmp
    - sldns_rr_descript
    - sldns_write_uint16
    - rrinternal_parse_rdf
    - sldns_bget_token_par
    - rrinternal_get_delims
    - sldns_rr_descriptor_minimum
    - sldns_rr_descriptor_maximum
    - sldns_rr_descriptor_field_type
    - sldns_parse_rdf_token
    - sldns_str2wire_check_svcbparams
    - RET_ERR
    linkageType: ''
    returnType: int
    signature: "int rrinternal_parse_rdata(sldns_buffer* strbuf, char* token, size_t
      token_len,\n\tuint8_t* rr, size_t* rr_len, size_t dname_len, uint16_t rr_type,\n\tuint8_t*
      origin, size_t origin_len)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_init_frm_data
      Src: /src/unbound/sldns/str2wire.c:912,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:912,1
    - Dst: rrinternal_get_owner
      Src: /src/unbound/sldns/str2wire.c:916,1
    - Dst: rrinternal_get_ttl
      Src: /src/unbound/sldns/str2wire.c:921,1
    - Dst: rrinternal_get_class
      Src: /src/unbound/sldns/str2wire.c:924,1
    - Dst: rrinternal_get_type
      Src: /src/unbound/sldns/str2wire.c:927,1
    - Dst: rrinternal_write_typeclassttl
      Src: /src/unbound/sldns/str2wire.c:931,1
    - Dst: rrinternal_parse_rdata
      Src: /src/unbound/sldns/str2wire.c:941,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 10
    argNames:
    - str
    - rr
    - len
    - dname_len
    - default_ttl
    - origin
    - origin_len
    - prev
    - prev_len
    - question
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    - size_t*
    - uint32_t
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 898
    functionDepth: 5
    functionLinenumber: 898
    functionLinenumberEnd: 946
    functionName: sldns_str2wire_rr_buf_internal
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - rrinternal_get_class
    - rrinternal_parse_rdata
    - rrinternal_get_ttl
    - rrinternal_get_owner
    - strlen
    - rrinternal_get_type
    - rrinternal_write_typeclassttl
    - sldns_buffer_init_frm_data
    linkageType: ''
    returnType: int
    signature: "int sldns_str2wire_rr_buf_internal(const char* str, uint8_t* rr, size_t*
      len,\n\tsize_t* dname_len, uint32_t default_ttl, uint8_t* origin,\n\tsize_t
      origin_len, uint8_t* prev, size_t prev_len, int question)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_rr_buf_internal
      Src: /src/unbound/sldns/str2wire.c:952,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 9
    argNames:
    - str
    - rr
    - len
    - dname_len
    - default_ttl
    - origin
    - origin_len
    - prev
    - prev_len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    - size_t*
    - uint32_t
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 948
    functionDepth: 6
    functionLinenumber: 948
    functionLinenumberEnd: 954
    functionName: sldns_str2wire_rr_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 4
    functionsReached:
    - sldns_str2wire_rr_buf_internal
    linkageType: ''
    returnType: int
    signature: "int sldns_str2wire_rr_buf(const char* str, uint8_t* rr, size_t* len,\n\tsize_t*
      dname_len, uint32_t default_ttl, uint8_t* origin,\n\tsize_t origin_len, uint8_t*
      prev, size_t prev_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_rr_buf_internal
      Src: /src/unbound/sldns/str2wire.c:960,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - str
    - rr
    - len
    - dname_len
    - origin
    - origin_len
    - prev
    - prev_len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    - size_t*
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 956
    functionDepth: 6
    functionLinenumber: 956
    functionLinenumberEnd: 962
    functionName: sldns_str2wire_rr_question_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 1
    functionsReached:
    - sldns_str2wire_rr_buf_internal
    linkageType: ''
    returnType: int
    signature: "int sldns_str2wire_rr_question_buf(const char* str, uint8_t* rr, size_t*
      len,\n\tsize_t* dname_len, uint8_t* origin, size_t origin_len, uint8_t* prev,\n\tsize_t
      prev_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/str2wire.c:968,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - rr
    - len
    - dname_len
    argTypes:
    - uint8_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 964
    functionDepth: 1
    functionLinenumber: 964
    functionLinenumberEnd: 969
    functionName: sldns_wirerr_get_type
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 4
    functionsReached:
    - sldns_read_uint16
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t sldns_wirerr_get_type(uint8_t* rr, size_t len, size_t dname_len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/str2wire.c:975,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - rr
    - len
    - dname_len
    argTypes:
    - uint8_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 971
    functionDepth: 1
    functionLinenumber: 971
    functionLinenumberEnd: 976
    functionName: sldns_wirerr_get_class
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 3
    functionsReached:
    - sldns_read_uint16
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t sldns_wirerr_get_class(uint8_t* rr, size_t len, size_t dname_len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint32
      Src: /src/unbound/sldns/str2wire.c:982,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - rr
    - len
    - dname_len
    argTypes:
    - uint8_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 978
    functionDepth: 1
    functionLinenumber: 978
    functionLinenumberEnd: 983
    functionName: sldns_wirerr_get_ttl
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 1
    functionsReached:
    - sldns_read_uint32
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t sldns_wirerr_get_ttl(uint8_t* rr, size_t len, size_t dname_len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/str2wire.c:989,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - rr
    - len
    - dname_len
    argTypes:
    - uint8_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 990
      start: 985
    functionDepth: 1
    functionLinenumber: 985
    functionLinenumberEnd: 990
    functionName: sldns_wirerr_get_rdatalen
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_read_uint16
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t sldns_wirerr_get_rdatalen(uint8_t* rr, size_t len, size_t
      dname_len)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - rr
    - len
    - dname_len
    argTypes:
    - uint8_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 992
    functionDepth: 0
    functionLinenumber: 992
    functionLinenumberEnd: 997
    functionName: sldns_wirerr_get_rdata
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t * sldns_wirerr_get_rdata(uint8_t* rr, size_t len, size_t dname_len)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - rr
    - len
    - dname_len
    argTypes:
    - uint8_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1004
      start: 999
    functionDepth: 0
    functionLinenumber: 999
    functionLinenumberEnd: 1004
    functionName: sldns_wirerr_get_rdatawl
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t * sldns_wirerr_get_rdatawl(uint8_t* rr, size_t len, size_t
      dname_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/sldns/str2wire.c:1009,1
    - Dst: LDNS_WIREPARSE_ERROR
      Src: /src/unbound/sldns/str2wire.c:1009,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - e
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 1006
    functionDepth: 1
    functionLinenumber: 1006
    functionLinenumberEnd: 1011
    functionName: sldns_get_errorstr_parse
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 7
    functionsReached:
    - LDNS_WIREPARSE_ERROR
    - sldns_lookup_by_id
    linkageType: ''
    returnType: char
    signature: char * sldns_get_errorstr_parse(int e)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/sldns/str2wire.c:1019,1
    - Dst: strchr
      Src: /src/unbound/sldns/str2wire.c:1021,1
    - Dst: isspace
      Src: /src/unbound/sldns/str2wire.c:1021,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 1
    argNames:
    - line
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 1014
    functionDepth: 0
    functionLinenumber: 1014
    functionLinenumberEnd: 1025
    functionName: sldns_strip_ws
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - strchr
    - isspace
    linkageType: ''
    returnType: char
    signature: 'char *

      sldns_strip_ws(char *line)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: sldns_fget_token_l
      Src: /src/unbound/sldns/str2wire.c:1034,1
    - Dst: strncmp
      Src: /src/unbound/sldns/str2wire.c:1054,1
    - Dst: isspace
      Src: /src/unbound/sldns/str2wire.c:1054,1
    - Dst: strlcpy
      Src: /src/unbound/sldns/str2wire.c:1056,1
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/sldns/str2wire.c:1061,1
    - Dst: sldns_strip_ws
      Src: /src/unbound/sldns/str2wire.c:1061,1
    - Dst: strncmp
      Src: /src/unbound/sldns/str2wire.c:1065,1
    - Dst: isspace
      Src: /src/unbound/sldns/str2wire.c:1065,1
    - Dst: strlcpy
      Src: /src/unbound/sldns/str2wire.c:1068,1
    - Dst: sldns_str2period
      Src: /src/unbound/sldns/str2wire.c:1072,1
    - Dst: sldns_strip_ws
      Src: /src/unbound/sldns/str2wire.c:1073,1
    - Dst: strncmp
      Src: /src/unbound/sldns/str2wire.c:1076,1
    - Dst: strlcpy
      Src: /src/unbound/sldns/str2wire.c:1077,1
    - Dst: strncmp
      Src: /src/unbound/sldns/str2wire.c:1081,1
    - Dst: strlcpy
      Src: /src/unbound/sldns/str2wire.c:1082,1
    - Dst: sldns_str2wire_rr_buf
      Src: /src/unbound/sldns/str2wire.c:1087,1
    - Dst: memmove
      Src: /src/unbound/sldns/str2wire.c:1098,1
    - Dst: sldns_wirerr_get_ttl
      Src: /src/unbound/sldns/str2wire.c:1102,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 55
    argCount: 5
    argNames:
    - in
    - rr
    - len
    - dname_len
    - parse_state
    argTypes:
    - FILE*
    - uint8_t*
    - size_t*
    - size_t*
    - struct sldns_file_parse_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1108
      start: 1027
    functionDepth: 7
    functionLinenumber: 1027
    functionLinenumberEnd: 1108
    functionName: sldns_fp2wire_rr_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_wirerr_get_ttl
    - strlcpy
    - strncmp
    - isspace
    - sldns_str2period
    - memmove
    - sldns_strip_ws
    - sldns_str2wire_rr_buf
    - sldns_fget_token_l
    - sldns_str2wire_dname_buf
    linkageType: ''
    returnType: int
    signature: "int sldns_fp2wire_rr_buf(FILE* in, uint8_t* rr, size_t* len, size_t*
      dname_len,\n\tstruct sldns_file_parse_state* parse_state)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/unbound/sldns/str2wire.c:1117,1
    - Dst: memcpy
      Src: /src/unbound/sldns/str2wire.c:1118,1
    - Dst: strtoul
      Src: /src/unbound/sldns/str2wire.c:1120,1
    - Dst: strncmp
      Src: /src/unbound/sldns/str2wire.c:1129,1
    - Dst: strncmp
      Src: /src/unbound/sldns/str2wire.c:1134,1
    - Dst: strncmp
      Src: /src/unbound/sldns/str2wire.c:1136,1
    - Dst: strncmp
      Src: /src/unbound/sldns/str2wire.c:1141,1
    - Dst: strncmp
      Src: /src/unbound/sldns/str2wire.c:1146,1
    - Dst: strncmp
      Src: /src/unbound/sldns/str2wire.c:1148,1
    - Dst: strncmp
      Src: /src/unbound/sldns/str2wire.c:1153,1
    - Dst: strncmp
      Src: /src/unbound/sldns/str2wire.c:1155,1
    - Dst: strncmp
      Src: /src/unbound/sldns/str2wire.c:1160,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 43
    argCount: 2
    argNames:
    - key
    - key_len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1110
    functionDepth: 0
    functionLinenumber: 1110
    functionLinenumberEnd: 1172
    functionName: sldns_str2wire_svcparam_key_lookup
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - memcpy
    - strncmp
    - strtoul
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_svcparam_key_lookup(const char *key, size_t key_len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strtoul
      Src: /src/unbound/sldns/str2wire.c:1183,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1189,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1190,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1191,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - val
    - rd
    - rd_len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 1174
    functionDepth: 1
    functionLinenumber: 1174
    functionLinenumberEnd: 1198
    functionName: sldns_str2wire_svcparam_port
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_write_uint16
    - strtoul
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_svcparam_port(const char* val, uint8_t* rd, size_t*
      rd_len)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1222,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1223,1
    - Dst: strchr
      Src: /src/unbound/sldns/str2wire.c:1227,1
    - Dst: inet_pton
      Src: /src/unbound/sldns/str2wire.c:1228,1
    - Dst: assert
      Src: /src/unbound/sldns/str2wire.c:1232,1
    - Dst: memcpy
      Src: /src/unbound/sldns/str2wire.c:1238,1
    - Dst: inet_pton
      Src: /src/unbound/sldns/str2wire.c:1240,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 3
    argNames:
    - val
    - rd
    - rd_len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts:
    - condition: (count == 1)
      pos:
        line_end: 1231
        line_start: 1231
        source_file: /src/unbound/sldns/str2wire.c
    constantsTouched: []
    func_position:
      end: 1253
      start: 1200
    functionDepth: 1
    functionLinenumber: 1200
    functionLinenumberEnd: 1253
    functionName: sldns_str2wire_svcbparam_ipv4hint
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - memcpy
    - sldns_write_uint16
    - assert
    - strchr
    - inet_pton
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_svcbparam_ipv4hint(const char* val, uint8_t* rd,
      size_t* rd_len)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1277,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1278,1
    - Dst: strchr
      Src: /src/unbound/sldns/str2wire.c:1282,1
    - Dst: inet_pton
      Src: /src/unbound/sldns/str2wire.c:1283,1
    - Dst: assert
      Src: /src/unbound/sldns/str2wire.c:1287,1
    - Dst: memcpy
      Src: /src/unbound/sldns/str2wire.c:1293,1
    - Dst: inet_pton
      Src: /src/unbound/sldns/str2wire.c:1295,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 3
    argNames:
    - val
    - rd
    - rd_len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts:
    - condition: (count == 1)
      pos:
        line_end: 1286
        line_start: 1286
        source_file: /src/unbound/sldns/str2wire.c
    constantsTouched: []
    func_position:
      end: 1308
      start: 1255
    functionDepth: 1
    functionLinenumber: 1255
    functionLinenumberEnd: 1308
    functionName: sldns_str2wire_svcbparam_ipv6hint
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - memcpy
    - sldns_write_uint16
    - assert
    - strchr
    - inet_pton
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_svcbparam_ipv6hint(const char* val, uint8_t* rd,
      size_t* rd_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/str2wire.c:1314,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/str2wire.c:1314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1311
    functionDepth: 1
    functionLinenumber: 1311
    functionLinenumberEnd: 1315
    functionName: sldns_network_uint16_cmp
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_read_uint16
    linkageType: ''
    returnType: int
    signature: int sldns_network_uint16_cmp(const void *a, const void *b)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:1323,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1335,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1336,1
    - Dst: strchr
      Src: /src/unbound/sldns/str2wire.c:1342,1
    - Dst: sldns_str2wire_svcparam_key_lookup
      Src: /src/unbound/sldns/str2wire.c:1343,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1349,1
    - Dst: sldns_str2wire_svcparam_key_lookup
      Src: /src/unbound/sldns/str2wire.c:1353,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1359,1
    - Dst: qsort
      Src: /src/unbound/sldns/str2wire.c:1373,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/str2wire.c:1383,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/str2wire.c:1391,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/str2wire.c:1393,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 45
    argCount: 3
    argNames:
    - val
    - rd
    - rd_len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1400
      start: 1317
    functionDepth: 1
    functionLinenumber: 1317
    functionLinenumberEnd: 1400
    functionName: sldns_str2wire_svcbparam_mandatory
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_write_uint16
    - sldns_str2wire_svcparam_key_lookup
    - strlen
    - qsort
    - strchr
    - sldns_read_uint16
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_svcbparam_mandatory(const char* val, uint8_t* rd,
      size_t* rd_len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/sldns/str2wire.c:1409,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1412,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1413,1
    - Dst: sldns_b64_pton
      Src: /src/unbound/sldns/str2wire.c:1419,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1426,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1427,1
    - Dst: memcpy
      Src: /src/unbound/sldns/str2wire.c:1428,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 3
    argNames:
    - val
    - rd
    - rd_len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1433
      start: 1402
    functionDepth: 1
    functionLinenumber: 1402
    functionLinenumberEnd: 1433
    functionName: sldns_str2wire_svcbparam_ech_value
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_write_uint16
    - strcmp
    - sldns_b64_pton
    - memcpy
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_svcbparam_ech_value(const char* val, uint8_t* rd,
      size_t* rd_len)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - val
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1450
      start: 1435
    functionDepth: 0
    functionLinenumber: 1435
    functionLinenumberEnd: 1450
    functionName: sldns_str2wire_svcbparam_parse_next_unescaped_comma
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      sldns_str2wire_svcbparam_parse_next_unescaped_comma(const char *val)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - dst
    - src
    - len
    argTypes:
    - uint8_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1475
      start: 1458
    functionDepth: 0
    functionLinenumber: 1458
    functionLinenumberEnd: 1475
    functionName: sldns_str2wire_svcbparam_parse_copy_unescaped
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: "size_t sldns_str2wire_svcbparam_parse_copy_unescaped(uint8_t *dst,\n\tconst
      char *src, size_t len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:1488,1
    - Dst: sldns_str2wire_svcbparam_parse_next_unescaped_comma
      Src: /src/unbound/sldns/str2wire.c:1496,1
    - Dst: sldns_str2wire_svcbparam_parse_copy_unescaped
      Src: /src/unbound/sldns/str2wire.c:1503,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1517,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1518,1
    - Dst: memcpy
      Src: /src/unbound/sldns/str2wire.c:1519,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 3
    argNames:
    - val
    - rd
    - rd_len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1523
      start: 1477
    functionDepth: 1
    functionLinenumber: 1477
    functionLinenumberEnd: 1523
    functionName: sldns_str2wire_svcbparam_alpn_value
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - memcpy
    - sldns_write_uint16
    - sldns_str2wire_svcbparam_parse_copy_unescaped
    - strlen
    - sldns_str2wire_svcbparam_parse_next_unescaped_comma
    linkageType: ''
    returnType: int
    signature: "int sldns_str2wire_svcbparam_alpn_value(const char* val,\n\tuint8_t*
      rd, size_t* rd_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:1538,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1544,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1545,1
    - Dst: memcpy
      Src: /src/unbound/sldns/str2wire.c:1546,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - val
    - rd
    - rd_len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1550
      start: 1525
    functionDepth: 1
    functionLinenumber: 1525
    functionLinenumberEnd: 1550
    functionName: sldns_str2wire_svcbparam_dohpath_value
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - sldns_write_uint16
    - memcpy
    - strlen
    linkageType: ''
    returnType: int
    signature: "int sldns_str2wire_svcbparam_dohpath_value(const char* val,\n\tuint8_t*
      rd, size_t* rd_len)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_svcparam_key_lookup
      Src: /src/unbound/sldns/str2wire.c:1557,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1578,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1579,1
    - Dst: sldns_str2wire_svcparam_port
      Src: /src/unbound/sldns/str2wire.c:1589,1
    - Dst: sldns_str2wire_svcbparam_ipv4hint
      Src: /src/unbound/sldns/str2wire.c:1591,1
    - Dst: sldns_str2wire_svcbparam_ipv6hint
      Src: /src/unbound/sldns/str2wire.c:1593,1
    - Dst: sldns_str2wire_svcbparam_mandatory
      Src: /src/unbound/sldns/str2wire.c:1595,1
    - Dst: sldns_str2wire_svcbparam_ech_value
      Src: /src/unbound/sldns/str2wire.c:1601,1
    - Dst: sldns_str2wire_svcbparam_alpn_value
      Src: /src/unbound/sldns/str2wire.c:1603,1
    - Dst: sldns_str2wire_svcbparam_dohpath_value
      Src: /src/unbound/sldns/str2wire.c:1605,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:1607,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1610,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1611,1
    - Dst: memcpy
      Src: /src/unbound/sldns/str2wire.c:1612,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 50
    argCount: 5
    argNames:
    - key
    - key_len
    - val
    - rd
    - rd_len
    argTypes:
    - char*
    - size_t
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1619
      start: 1552
    functionDepth: 2
    functionLinenumber: 1552
    functionLinenumberEnd: 1619
    functionName: sldns_str2wire_svcparam_value
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - memcpy
    - sldns_str2wire_svcbparam_alpn_value
    - sldns_write_uint16
    - sldns_str2wire_svcbparam_ipv4hint
    - sldns_str2wire_svcbparam_dohpath_value
    - sldns_str2wire_svcparam_port
    - sldns_str2wire_svcbparam_ipv6hint
    - sldns_str2wire_svcbparam_mandatory
    - sldns_str2wire_svcparam_key_lookup
    - strlen
    - sldns_str2wire_svcbparam_ech_value
    linkageType: ''
    returnType: int
    signature: "int sldns_str2wire_svcparam_value(const char *key, size_t key_len,\n\tconst
      char *val, uint8_t* rd, size_t* rd_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/sldns/str2wire.c:1628,1
    - Dst: sldns_parse_char
      Src: /src/unbound/sldns/str2wire.c:1639,1
    - Dst: sldns_parse_char
      Src: /src/unbound/sldns/str2wire.c:1644,1
    - Dst: sldns_str2wire_svcparam_value
      Src: /src/unbound/sldns/str2wire.c:1650,1
    - Dst: sldns_str2wire_svcparam_value
      Src: /src/unbound/sldns/str2wire.c:1655,1
    - Dst: sldns_str2wire_svcparam_value
      Src: /src/unbound/sldns/str2wire.c:1659,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:1659,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 3
    argNames:
    - str
    - rd
    - rd_len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1661
      start: 1621
    functionDepth: 3
    functionLinenumber: 1621
    functionLinenumberEnd: 1661
    functionName: sldns_str2wire_svcparam_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - strchr
    - sldns_parse_char
    - sldns_str2wire_svcparam_value
    - strlen
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_svcparam_buf(const char* str, uint8_t* rd, size_t*
      rd_len)
  - BBCount: 41
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/sldns/str2wire.c:1668,1
    - Dst: sldns_str2wire_int8_buf
      Src: /src/unbound/sldns/str2wire.c:1670,1
    - Dst: sldns_str2wire_int16_buf
      Src: /src/unbound/sldns/str2wire.c:1672,1
    - Dst: sldns_str2wire_int32_buf
      Src: /src/unbound/sldns/str2wire.c:1674,1
    - Dst: sldns_str2wire_a_buf
      Src: /src/unbound/sldns/str2wire.c:1676,1
    - Dst: sldns_str2wire_aaaa_buf
      Src: /src/unbound/sldns/str2wire.c:1678,1
    - Dst: sldns_str2wire_str_buf
      Src: /src/unbound/sldns/str2wire.c:1680,1
    - Dst: sldns_str2wire_apl_buf
      Src: /src/unbound/sldns/str2wire.c:1682,1
    - Dst: sldns_str2wire_b64_buf
      Src: /src/unbound/sldns/str2wire.c:1684,1
    - Dst: sldns_str2wire_b32_ext_buf
      Src: /src/unbound/sldns/str2wire.c:1686,1
    - Dst: sldns_str2wire_hex_buf
      Src: /src/unbound/sldns/str2wire.c:1688,1
    - Dst: sldns_str2wire_nsec_buf
      Src: /src/unbound/sldns/str2wire.c:1690,1
    - Dst: sldns_str2wire_type_buf
      Src: /src/unbound/sldns/str2wire.c:1692,1
    - Dst: sldns_str2wire_class_buf
      Src: /src/unbound/sldns/str2wire.c:1694,1
    - Dst: sldns_str2wire_cert_alg_buf
      Src: /src/unbound/sldns/str2wire.c:1696,1
    - Dst: sldns_str2wire_alg_buf
      Src: /src/unbound/sldns/str2wire.c:1698,1
    - Dst: sldns_str2wire_time_buf
      Src: /src/unbound/sldns/str2wire.c:1700,1
    - Dst: sldns_str2wire_period_buf
      Src: /src/unbound/sldns/str2wire.c:1702,1
    - Dst: sldns_str2wire_tsigtime_buf
      Src: /src/unbound/sldns/str2wire.c:1704,1
    - Dst: sldns_str2wire_loc_buf
      Src: /src/unbound/sldns/str2wire.c:1706,1
    - Dst: sldns_str2wire_wks_buf
      Src: /src/unbound/sldns/str2wire.c:1708,1
    - Dst: sldns_str2wire_nsap_buf
      Src: /src/unbound/sldns/str2wire.c:1710,1
    - Dst: sldns_str2wire_atma_buf
      Src: /src/unbound/sldns/str2wire.c:1712,1
    - Dst: sldns_str2wire_ipseckey_buf
      Src: /src/unbound/sldns/str2wire.c:1714,1
    - Dst: sldns_str2wire_nsec3_salt_buf
      Src: /src/unbound/sldns/str2wire.c:1716,1
    - Dst: sldns_str2wire_b32_ext_buf
      Src: /src/unbound/sldns/str2wire.c:1718,1
    - Dst: sldns_str2wire_ilnp64_buf
      Src: /src/unbound/sldns/str2wire.c:1720,1
    - Dst: sldns_str2wire_eui48_buf
      Src: /src/unbound/sldns/str2wire.c:1722,1
    - Dst: sldns_str2wire_eui64_buf
      Src: /src/unbound/sldns/str2wire.c:1724,1
    - Dst: sldns_str2wire_unquoted_buf
      Src: /src/unbound/sldns/str2wire.c:1726,1
    - Dst: sldns_str2wire_tag_buf
      Src: /src/unbound/sldns/str2wire.c:1728,1
    - Dst: sldns_str2wire_long_str_buf
      Src: /src/unbound/sldns/str2wire.c:1730,1
    - Dst: sldns_str2wire_tsigerror_buf
      Src: /src/unbound/sldns/str2wire.c:1732,1
    - Dst: sldns_str2wire_hip_buf
      Src: /src/unbound/sldns/str2wire.c:1734,1
    - Dst: sldns_str2wire_int16_data_buf
      Src: /src/unbound/sldns/str2wire.c:1736,1
    - Dst: sldns_str2wire_svcparam_buf
      Src: /src/unbound/sldns/str2wire.c:1738,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 82
    argCount: 4
    argNames:
    - str
    - rd
    - len
    - rdftype
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    - sldns_rdf_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1747
      start: 1663
    functionDepth: 4
    functionLinenumber: 1663
    functionLinenumberEnd: 1747
    functionName: sldns_str2wire_rdf_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 1
    functionsReached:
    - sldns_str2wire_nsap_buf
    - sldns_str2wire_hex_buf
    - sldns_str2wire_atma_buf
    - sldns_str2wire_wks_buf
    - sldns_str2wire_alg_buf
    - sldns_str2wire_b64_buf
    - sldns_str2wire_hip_buf
    - sldns_str2wire_str_buf
    - sldns_str2wire_eui48_buf
    - sldns_str2wire_type_buf
    - sldns_str2wire_ipseckey_buf
    - sldns_str2wire_tsigerror_buf
    - sldns_str2wire_int8_buf
    - sldns_str2wire_nsec_buf
    - sldns_str2wire_long_str_buf
    - sldns_str2wire_svcparam_buf
    - sldns_str2wire_tsigtime_buf
    - sldns_str2wire_cert_alg_buf
    - sldns_str2wire_int16_buf
    - sldns_str2wire_b32_ext_buf
    - sldns_str2wire_int32_buf
    - sldns_str2wire_loc_buf
    - sldns_str2wire_time_buf
    - sldns_str2wire_period_buf
    - sldns_str2wire_nsec3_salt_buf
    - sldns_str2wire_eui64_buf
    - sldns_str2wire_class_buf
    - sldns_str2wire_ilnp64_buf
    - sldns_str2wire_a_buf
    - sldns_str2wire_unquoted_buf
    - sldns_str2wire_tag_buf
    - sldns_str2wire_int16_data_buf
    - sldns_str2wire_apl_buf
    - sldns_str2wire_dname_buf
    - sldns_str2wire_aaaa_buf
    linkageType: ''
    returnType: int
    signature: "int sldns_str2wire_rdf_buf(const char* str, uint8_t* rd, size_t* len,\n\tsldns_rdf_type
      rdftype)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/unbound/sldns/str2wire.c:1752,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:1754,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1760
      start: 1749
    functionDepth: 1
    functionLinenumber: 1749
    functionLinenumberEnd: 1760
    functionName: sldns_str2wire_int8_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - RET_ERR
    - strtol
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_int8_buf(const char* str, uint8_t* rd, size_t* len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/unbound/sldns/str2wire.c:1765,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:1767,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1770,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1773
      start: 1762
    functionDepth: 1
    functionLinenumber: 1762
    functionLinenumberEnd: 1773
    functionName: sldns_str2wire_int16_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_write_uint16
    - RET_ERR
    - strtol
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_int16_buf(const char* str, uint8_t* rd, size_t*
      len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/unbound/sldns/str2wire.c:1782,1
    - Dst: strtoul
      Src: /src/unbound/sldns/str2wire.c:1783,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:1785,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/sldns/str2wire.c:1790,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1793
      start: 1775
    functionDepth: 1
    functionLinenumber: 1775
    functionLinenumberEnd: 1793
    functionName: sldns_str2wire_int32_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_write_uint32
    - strtoul
    - RET_ERR
    - strtol
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_int32_buf(const char* str, uint8_t* rd, size_t*
      len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/unbound/sldns/str2wire.c:1798,1
    - Dst: memmove
      Src: /src/unbound/sldns/str2wire.c:1802,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1805
      start: 1795
    functionDepth: 1
    functionLinenumber: 1795
    functionLinenumberEnd: 1805
    functionName: sldns_str2wire_a_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - inet_pton
    - memmove
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_a_buf(const char* str, uint8_t* rd, size_t* len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/unbound/sldns/str2wire.c:1811,1
    - Dst: memmove
      Src: /src/unbound/sldns/str2wire.c:1815,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1821
      start: 1807
    functionDepth: 1
    functionLinenumber: 1807
    functionLinenumberEnd: 1821
    functionName: sldns_str2wire_aaaa_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - inet_pton
    - memmove
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_aaaa_buf(const char* str, uint8_t* rd, size_t* len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_parse_char
      Src: /src/unbound/sldns/str2wire.c:1833,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:1835,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:1837,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1846
      start: 1823
    functionDepth: 1
    functionLinenumber: 1823
    functionLinenumberEnd: 1846
    functionName: sldns_str2wire_str_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_parse_char
    - RET_ERR
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_str_buf(const char* str, uint8_t* rd, size_t* len)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:1869,1
    - Dst: strchr
      Src: /src/unbound/sldns/str2wire.c:1870,1
    - Dst: strchr
      Src: /src/unbound/sldns/str2wire.c:1871,1
    - Dst: strchr
      Src: /src/unbound/sldns/str2wire.c:1872,1
    - Dst: strchr
      Src: /src/unbound/sldns/str2wire.c:1872,1
    - Dst: atoi
      Src: /src/unbound/sldns/str2wire.c:1883,1
    - Dst: strchr
      Src: /src/unbound/sldns/str2wire.c:1885,1
    - Dst: strchr
      Src: /src/unbound/sldns/str2wire.c:1888,1
    - Dst: strlcpy
      Src: /src/unbound/sldns/str2wire.c:1891,1
    - Dst: inet_pton
      Src: /src/unbound/sldns/str2wire.c:1896,1
    - Dst: inet_pton
      Src: /src/unbound/sldns/str2wire.c:1905,1
    - Dst: strchr
      Src: /src/unbound/sldns/str2wire.c:1917,1
    - Dst: atoi
      Src: /src/unbound/sldns/str2wire.c:1918,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:1920,1
    - Dst: memmove
      Src: /src/unbound/sldns/str2wire.c:1930,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 54
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1933
      start: 1848
    functionDepth: 1
    functionLinenumber: 1848
    functionLinenumberEnd: 1933
    functionName: sldns_str2wire_apl_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - strlcpy
    - memmove
    - sldns_write_uint16
    - atoi
    - strlen
    - strchr
    - inet_pton
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_apl_buf(const char* str, uint8_t* rd, size_t* len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_b64_pton_calculate_size
      Src: /src/unbound/sldns/str2wire.c:1937,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:1937,1
    - Dst: strcmp
      Src: /src/unbound/sldns/str2wire.c:1939,1
    - Dst: sldns_b64_pton
      Src: /src/unbound/sldns/str2wire.c:1945,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1950
      start: 1935
    functionDepth: 1
    functionLinenumber: 1935
    functionLinenumberEnd: 1950
    functionName: sldns_str2wire_b64_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - strcmp
    - sldns_b64_pton_calculate_size
    - sldns_b64_pton
    - strlen
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_b64_buf(const char* str, uint8_t* rd, size_t* len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:1954,1
    - Dst: sldns_b32_pton_calculate_size
      Src: /src/unbound/sldns/str2wire.c:1955,1
    - Dst: sldns_b32_pton_extended_hex
      Src: /src/unbound/sldns/str2wire.c:1960,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1965
      start: 1952
    functionDepth: 1
    functionLinenumber: 1952
    functionLinenumberEnd: 1965
    functionName: sldns_str2wire_b32_ext_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_b32_pton_extended_hex
    - strlen
    - sldns_b32_pton_calculate_size
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_b32_ext_buf(const char* str, uint8_t* rd, size_t*
      len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/sldns/str2wire.c:1972,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1976
      start: 1968
    functionDepth: 0
    functionLinenumber: 1968
    functionLinenumberEnd: 1976
    functionName: sldns_is_last_of_string
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - isspace
    linkageType: ''
    returnType: int
    signature: int sldns_is_last_of_string(const char* str)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/sldns/str2wire.c:1983,1
    - Dst: sldns_is_last_of_string
      Src: /src/unbound/sldns/str2wire.c:1987,1
    - Dst: isxdigit
      Src: /src/unbound/sldns/str2wire.c:1991,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:1992,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:1994,1
    - Dst: sldns_hexdigit_to_int
      Src: /src/unbound/sldns/str2wire.c:1997,1
    - Dst: sldns_hexdigit_to_int
      Src: /src/unbound/sldns/str2wire.c:1998,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2002,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2005
      start: 1978
    functionDepth: 1
    functionLinenumber: 1978
    functionLinenumberEnd: 2005
    functionName: sldns_str2wire_hex_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_hexdigit_to_int
    - isspace
    - isxdigit
    - RET_ERR
    - sldns_is_last_of_string
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_hex_buf(const char* str, uint8_t* rd, size_t* len)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_init_frm_data
      Src: /src/unbound/sldns/str2wire.c:2020,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:2020,1
    - Dst: memset
      Src: /src/unbound/sldns/str2wire.c:2023,1
    - Dst: memset
      Src: /src/unbound/sldns/str2wire.c:2024,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/sldns/str2wire.c:2025,1
    - Dst: sldns_bget_token
      Src: /src/unbound/sldns/str2wire.c:2026,1
    - Dst: sldns_get_rr_type_by_name
      Src: /src/unbound/sldns/str2wire.c:2027,1
    - Dst: strcmp
      Src: /src/unbound/sldns/str2wire.c:2030,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2031,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:2032,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 39
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2068
      start: 2007
    functionDepth: 1
    functionLinenumber: 2007
    functionLinenumberEnd: 2068
    functionName: sldns_str2wire_nsec_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_position
    - strcmp
    - sldns_bget_token
    - strlen
    - sldns_get_rr_type_by_name
    - memset
    - RET_ERR
    - sldns_buffer_init_frm_data
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_nsec_buf(const char* str, uint8_t* rd, size_t* len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_get_rr_type_by_name
      Src: /src/unbound/sldns/str2wire.c:2072,1
    - Dst: strcmp
      Src: /src/unbound/sldns/str2wire.c:2073,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:2077,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2080
      start: 2070
    functionDepth: 1
    functionLinenumber: 2070
    functionLinenumberEnd: 2080
    functionName: sldns_str2wire_type_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_write_uint16
    - strcmp
    - sldns_get_rr_type_by_name
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_type_buf(const char* str, uint8_t* rd, size_t* len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_get_rr_class_by_name
      Src: /src/unbound/sldns/str2wire.c:2084,1
    - Dst: strcmp
      Src: /src/unbound/sldns/str2wire.c:2085,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:2089,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2092
      start: 2082
    functionDepth: 1
    functionLinenumber: 2082
    functionLinenumberEnd: 2092
    functionName: sldns_str2wire_class_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_get_rr_class_by_name
    - sldns_write_uint16
    - strcmp
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_class_buf(const char* str, uint8_t* rd, size_t*
      len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_lookup_by_name
      Src: /src/unbound/sldns/str2wire.c:2098,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:2103,1
    - Dst: sldns_str2wire_int16_buf
      Src: /src/unbound/sldns/str2wire.c:2105,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/str2wire.c:2107,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2112
      start: 2096
    functionDepth: 2
    functionLinenumber: 2096
    functionLinenumberEnd: 2112
    functionName: sldns_str2wire_cert_alg_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_write_uint16
    - sldns_str2wire_int16_buf
    - sldns_read_uint16
    - sldns_lookup_by_name
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_cert_alg_buf(const char* str, uint8_t* rd, size_t*
      len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_lookup_by_name
      Src: /src/unbound/sldns/str2wire.c:2118,1
    - Dst: sldns_str2wire_int8_buf
      Src: /src/unbound/sldns/str2wire.c:2126,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2129
      start: 2116
    functionDepth: 2
    functionLinenumber: 2116
    functionLinenumberEnd: 2129
    functionName: sldns_str2wire_alg_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_str2wire_int8_buf
    - sldns_lookup_by_name
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_alg_buf(const char* str, uint8_t* rd, size_t* len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_lookup_by_name
      Src: /src/unbound/sldns/str2wire.c:2133,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:2137,1
    - Dst: sldns_str2wire_int16_buf
      Src: /src/unbound/sldns/str2wire.c:2141,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2144
      start: 2131
    functionDepth: 2
    functionLinenumber: 2131
    functionLinenumberEnd: 2144
    functionName: sldns_str2wire_tsigerror_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_write_uint16
    - sldns_str2wire_int16_buf
    - sldns_lookup_by_name
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_tsigerror_buf(const char* str, uint8_t* rd, size_t*
      len)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/sldns/str2wire.c:2154,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:2155,1
    - Dst: sscanf
      Src: /src/unbound/sldns/str2wire.c:2155,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/sldns/str2wire.c:2174,1
    - Dst: sldns_mktime_from_utc
      Src: /src/unbound/sldns/str2wire.c:2174,1
    - Dst: strtol
      Src: /src/unbound/sldns/str2wire.c:2178,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2180,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/sldns/str2wire.c:2182,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 27
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2186
      start: 2146
    functionDepth: 1
    functionLinenumber: 2146
    functionLinenumberEnd: 2186
    functionName: sldns_str2wire_time_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_mktime_from_utc
    - strlen
    - sldns_write_uint32
    - memset
    - sscanf
    - RET_ERR
    - strtol
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_time_buf(const char* str, uint8_t* rd, size_t* len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/unbound/sldns/str2wire.c:2191,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2195,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:2200,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/sldns/str2wire.c:2201,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2204
      start: 2188
    functionDepth: 1
    functionLinenumber: 2188
    functionLinenumberEnd: 2204
    functionName: sldns_str2wire_tsigtime_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_write_uint32
    - sldns_write_uint16
    - RET_ERR
    - strtol
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_tsigtime_buf(const char* str, uint8_t* rd, size_t*
      len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2period
      Src: /src/unbound/sldns/str2wire.c:2210,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2212,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2214,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/sldns/str2wire.c:2218,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2221
      start: 2206
    functionDepth: 1
    functionLinenumber: 2206
    functionLinenumberEnd: 2221
    functionName: sldns_str2wire_period_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_write_uint32
    - sldns_str2period
    - RET_ERR
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_period_buf(const char* str, uint8_t* rd, size_t*
      len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isblank
      Src: /src/unbound/sldns/str2wire.c:2229,1
    - Dst: strtol
      Src: /src/unbound/sldns/str2wire.c:2232,1
    - Dst: strtol
      Src: /src/unbound/sldns/str2wire.c:2235,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 4
    argNames:
    - my_str
    - endstr
    - m
    - e
    argTypes:
    - char*
    - char**
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2260
      start: 2224
    functionDepth: 1
    functionLinenumber: 2224
    functionLinenumberEnd: 2260
    functionName: loc_parse_cm
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - isblank
    - strtol
    linkageType: ''
    returnType: int
    signature: int loc_parse_cm(char* my_str, char** endstr, uint8_t* m, uint8_t*
      e)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/unbound/sldns/str2wire.c:2283,1
    - Dst: strtol
      Src: /src/unbound/sldns/str2wire.c:2284,1
    - Dst: isblank
      Src: /src/unbound/sldns/str2wire.c:2289,1
    - Dst: isdigit
      Src: /src/unbound/sldns/str2wire.c:2293,1
    - Dst: strtol
      Src: /src/unbound/sldns/str2wire.c:2294,1
    - Dst: isblank
      Src: /src/unbound/sldns/str2wire.c:2301,1
    - Dst: isdigit
      Src: /src/unbound/sldns/str2wire.c:2305,1
    - Dst: strtod
      Src: /src/unbound/sldns/str2wire.c:2306,1
    - Dst: isblank
      Src: /src/unbound/sldns/str2wire.c:2310,1
    - Dst: isblank
      Src: /src/unbound/sldns/str2wire.c:2337,1
    - Dst: isdigit
      Src: /src/unbound/sldns/str2wire.c:2341,1
    - Dst: strtol
      Src: /src/unbound/sldns/str2wire.c:2342,1
    - Dst: isblank
      Src: /src/unbound/sldns/str2wire.c:2347,1
    - Dst: isdigit
      Src: /src/unbound/sldns/str2wire.c:2351,1
    - Dst: strtol
      Src: /src/unbound/sldns/str2wire.c:2352,1
    - Dst: isblank
      Src: /src/unbound/sldns/str2wire.c:2359,1
    - Dst: isdigit
      Src: /src/unbound/sldns/str2wire.c:2363,1
    - Dst: strtod
      Src: /src/unbound/sldns/str2wire.c:2364,1
    - Dst: isblank
      Src: /src/unbound/sldns/str2wire.c:2368,1
    - Dst: strtod
      Src: /src/unbound/sldns/str2wire.c:2397,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:2403,1
    - Dst: loc_parse_cm
      Src: /src/unbound/sldns/str2wire.c:2404,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:2408,1
    - Dst: loc_parse_cm
      Src: /src/unbound/sldns/str2wire.c:2409,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:2413,1
    - Dst: loc_parse_cm
      Src: /src/unbound/sldns/str2wire.c:2414,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/sldns/str2wire.c:2424,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/sldns/str2wire.c:2425,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/sldns/str2wire.c:2426,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 125
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2429
      start: 2262
    functionDepth: 2
    functionLinenumber: 2262
    functionLinenumberEnd: 2429
    functionName: sldns_str2wire_loc_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - isblank
    - isdigit
    - loc_parse_cm
    - strtod
    - strlen
    - sldns_write_uint32
    - strtol
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_loc_buf(const char* str, uint8_t* rd, size_t* len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tolower
      Src: /src/unbound/sldns/str2wire.c:2436,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2440
      start: 2431
    functionDepth: 0
    functionLinenumber: 2431
    functionLinenumberEnd: 2440
    functionName: ldns_tolower_str
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 0
    functionsReached:
    - tolower
    linkageType: ''
    returnType: void
    signature: void ldns_tolower_str(char* s)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_init_frm_data
      Src: /src/unbound/sldns/str2wire.c:2448,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:2448,1
    - Dst: sldns_bget_token
      Src: /src/unbound/sldns/str2wire.c:2455,1
    - Dst: ldns_tolower_str
      Src: /src/unbound/sldns/str2wire.c:2456,1
    - Dst: getprotobyname
      Src: /src/unbound/sldns/str2wire.c:2458,1
    - Dst: strcasecmp
      Src: /src/unbound/sldns/str2wire.c:2461,1
    - Dst: strcasecmp
      Src: /src/unbound/sldns/str2wire.c:2462,1
    - Dst: atoi
      Src: /src/unbound/sldns/str2wire.c:2463,1
    - Dst: strlcpy
      Src: /src/unbound/sldns/str2wire.c:2464,1
    - Dst: atoi
      Src: /src/unbound/sldns/str2wire.c:2467,1
    - Dst: atoi
      Src: /src/unbound/sldns/str2wire.c:2467,1
    - Dst: strcmp
      Src: /src/unbound/sldns/str2wire.c:2468,1
    - Dst: strcasecmp
      Src: /src/unbound/sldns/str2wire.c:2469,1
    - Dst: getservbyname
      Src: /src/unbound/sldns/str2wire.c:2471,1
    - Dst: ntohs
      Src: /src/unbound/sldns/str2wire.c:2472,1
    - Dst: endservent
      Src: /src/unbound/sldns/str2wire.c:2475,1
    - Dst: endprotoent
      Src: /src/unbound/sldns/str2wire.c:2478,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2480,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:2481,1
    - Dst: endservent
      Src: /src/unbound/sldns/str2wire.c:2486,1
    - Dst: endprotoent
      Src: /src/unbound/sldns/str2wire.c:2489,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2491,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:2492,1
    - Dst: endservent
      Src: /src/unbound/sldns/str2wire.c:2498,1
    - Dst: endprotoent
      Src: /src/unbound/sldns/str2wire.c:2501,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2503,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:2505,1
    - Dst: memset
      Src: /src/unbound/sldns/str2wire.c:2507,1
    - Dst: endservent
      Src: /src/unbound/sldns/str2wire.c:2516,1
    - Dst: endprotoent
      Src: /src/unbound/sldns/str2wire.c:2519,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 52
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2522
      start: 2442
    functionDepth: 1
    functionLinenumber: 2442
    functionLinenumberEnd: 2522
    functionName: sldns_str2wire_wks_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - endprotoent
    - strlcpy
    - sldns_buffer_position
    - strcmp
    - ntohs
    - sldns_bget_token
    - RET_ERR
    - ldns_tolower_str
    - atoi
    - endservent
    - strlen
    - memset
    - getservbyname
    - strcasecmp
    - getprotobyname
    - sldns_buffer_init_frm_data
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_wks_buf(const char* str, uint8_t* rd, size_t* len)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:2534,1
    - Dst: isspace
      Src: /src/unbound/sldns/str2wire.c:2538,1
    - Dst: isxdigit
      Src: /src/unbound/sldns/str2wire.c:2542,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2543,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2545,1
    - Dst: sldns_hexdigit_to_int
      Src: /src/unbound/sldns/str2wire.c:2548,1
    - Dst: sldns_hexdigit_to_int
      Src: /src/unbound/sldns/str2wire.c:2549,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2553,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2556
      start: 2524
    functionDepth: 1
    functionLinenumber: 2524
    functionLinenumberEnd: 2556
    functionName: sldns_str2wire_nsap_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_hexdigit_to_int
    - isspace
    - isxdigit
    - strlen
    - RET_ERR
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_nsap_buf(const char* str, uint8_t* rd, size_t* len)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:2561,1
    - Dst: isspace
      Src: /src/unbound/sldns/str2wire.c:2580,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2585,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2587,1
    - Dst: isspace
      Src: /src/unbound/sldns/str2wire.c:2599,1
    - Dst: isxdigit
      Src: /src/unbound/sldns/str2wire.c:2603,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2604,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2606,1
    - Dst: sldns_hexdigit_to_int
      Src: /src/unbound/sldns/str2wire.c:2609,1
    - Dst: sldns_hexdigit_to_int
      Src: /src/unbound/sldns/str2wire.c:2610,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2614,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 47
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2617
      start: 2558
    functionDepth: 1
    functionLinenumber: 2558
    functionLinenumberEnd: 2617
    functionName: sldns_str2wire_atma_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_hexdigit_to_int
    - isspace
    - isxdigit
    - strlen
    - RET_ERR
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_atma_buf(const char* str, uint8_t* rd, size_t* len)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_init_frm_data
      Src: /src/unbound/sldns/str2wire.c:2626,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:2626,1
    - Dst: sldns_bget_token
      Src: /src/unbound/sldns/str2wire.c:2631,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2632,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:2633,1
    - Dst: atoi
      Src: /src/unbound/sldns/str2wire.c:2634,1
    - Dst: sldns_bget_token
      Src: /src/unbound/sldns/str2wire.c:2636,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2637,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:2638,1
    - Dst: atoi
      Src: /src/unbound/sldns/str2wire.c:2639,1
    - Dst: sldns_bget_token
      Src: /src/unbound/sldns/str2wire.c:2642,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2643,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:2644,1
    - Dst: atoi
      Src: /src/unbound/sldns/str2wire.c:2645,1
    - Dst: sldns_bget_token
      Src: /src/unbound/sldns/str2wire.c:2648,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2649,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:2650,1
    - Dst: strcmp
      Src: /src/unbound/sldns/str2wire.c:2653,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2654,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:2655,1
    - Dst: sldns_str2wire_a_buf
      Src: /src/unbound/sldns/str2wire.c:2660,1
    - Dst: RET_ERR_SHIFT
      Src: /src/unbound/sldns/str2wire.c:2661,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:2661,1
    - Dst: sldns_str2wire_aaaa_buf
      Src: /src/unbound/sldns/str2wire.c:2665,1
    - Dst: RET_ERR_SHIFT
      Src: /src/unbound/sldns/str2wire.c:2666,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:2666,1
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/sldns/str2wire.c:2670,1
    - Dst: RET_ERR_SHIFT
      Src: /src/unbound/sldns/str2wire.c:2671,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:2671,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2674,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:2675,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2679,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:2680,1
    - Dst: sldns_str2wire_b64_buf
      Src: /src/unbound/sldns/str2wire.c:2684,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/sldns/str2wire.c:2684,1
    - Dst: RET_ERR_SHIFT
      Src: /src/unbound/sldns/str2wire.c:2686,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/sldns/str2wire.c:2686,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 49
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2690
      start: 2619
    functionDepth: 3
    functionLinenumber: 2619
    functionLinenumberEnd: 2690
    functionName: sldns_str2wire_ipseckey_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_buffer_position
    - strcmp
    - sldns_bget_token
    - sldns_str2wire_b64_buf
    - RET_ERR_SHIFT
    - atoi
    - sldns_str2wire_dname_buf
    - strlen
    - sldns_str2wire_a_buf
    - sldns_buffer_current
    - RET_ERR
    - sldns_str2wire_aaaa_buf
    - sldns_buffer_init_frm_data
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_ipseckey_buf(const char* str, uint8_t* rd, size_t*
      len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:2694,1
    - Dst: isxdigit
      Src: /src/unbound/sldns/str2wire.c:2706,1
    - Dst: isxdigit
      Src: /src/unbound/sldns/str2wire.c:2707,1
    - Dst: sldns_hexdigit_to_int
      Src: /src/unbound/sldns/str2wire.c:2708,1
    - Dst: sldns_hexdigit_to_int
      Src: /src/unbound/sldns/str2wire.c:2709,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2711,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2716
      start: 2692
    functionDepth: 1
    functionLinenumber: 2692
    functionLinenumberEnd: 2716
    functionName: sldns_str2wire_nsec3_salt_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_hexdigit_to_int
    - isxdigit
    - RET_ERR
    - strlen
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_nsec3_salt_buf(const char* str, uint8_t* rd, size_t*
      len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/unbound/sldns/str2wire.c:2726,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:2727,1
    - Dst: strpbrk
      Src: /src/unbound/sldns/str2wire.c:2728,1
    - Dst: htons
      Src: /src/unbound/sldns/str2wire.c:2731,1
    - Dst: htons
      Src: /src/unbound/sldns/str2wire.c:2732,1
    - Dst: htons
      Src: /src/unbound/sldns/str2wire.c:2733,1
    - Dst: htons
      Src: /src/unbound/sldns/str2wire.c:2734,1
    - Dst: memmove
      Src: /src/unbound/sldns/str2wire.c:2735,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2738
      start: 2718
    functionDepth: 1
    functionLinenumber: 2718
    functionLinenumberEnd: 2738
    functionName: sldns_str2wire_ilnp64_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - memmove
    - htons
    - strlen
    - sscanf
    - strpbrk
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_ilnp64_buf(const char* str, uint8_t* rd, size_t*
      len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/unbound/sldns/str2wire.c:2747,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:2749,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2759
      start: 2740
    functionDepth: 0
    functionLinenumber: 2740
    functionLinenumberEnd: 2759
    functionName: sldns_str2wire_eui48_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sscanf
    - strlen
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_eui48_buf(const char* str, uint8_t* rd, size_t*
      len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/unbound/sldns/str2wire.c:2768,1
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:2770,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2782
      start: 2761
    functionDepth: 0
    functionLinenumber: 2761
    functionLinenumberEnd: 2782
    functionName: sldns_str2wire_eui64_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sscanf
    - strlen
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_eui64_buf(const char* str, uint8_t* rd, size_t*
      len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_str_buf
      Src: /src/unbound/sldns/str2wire.c:2786,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2787
      start: 2784
    functionDepth: 2
    functionLinenumber: 2784
    functionLinenumberEnd: 2787
    functionName: sldns_str2wire_unquoted_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 1
    functionsReached:
    - sldns_str2wire_str_buf
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_unquoted_buf(const char* str, uint8_t* rd, size_t*
      len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/sldns/str2wire.c:2791,1
    - Dst: isalnum
      Src: /src/unbound/sldns/str2wire.c:2799,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2800,1
    - Dst: memmove
      Src: /src/unbound/sldns/str2wire.c:2803,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2806
      start: 2789
    functionDepth: 1
    functionLinenumber: 2789
    functionLinenumberEnd: 2806
    functionName: sldns_str2wire_tag_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - isalnum
    - RET_ERR
    - strlen
    - memmove
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_tag_buf(const char* str, uint8_t* rd, size_t* len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_parse_char
      Src: /src/unbound/sldns/str2wire.c:2815,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2824
      start: 2808
    functionDepth: 1
    functionLinenumber: 2808
    functionLinenumberEnd: 2824
    functionName: sldns_str2wire_long_str_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_parse_char
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_long_str_buf(const char* str, uint8_t* rd, size_t*
      len)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/unbound/sldns/str2wire.c:2839,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2841,1
    - Dst: strchr
      Src: /src/unbound/sldns/str2wire.c:2848,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2849,1
    - Dst: sldns_str2wire_hex_buf
      Src: /src/unbound/sldns/str2wire.c:2852,1
    - Dst: RET_ERR_SHIFT
      Src: /src/unbound/sldns/str2wire.c:2854,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2858,1
    - Dst: sldns_str2wire_b64_buf
      Src: /src/unbound/sldns/str2wire.c:2866,1
    - Dst: RET_ERR_SHIFT
      Src: /src/unbound/sldns/str2wire.c:2867,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2869,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:2870,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2874
      start: 2826
    functionDepth: 2
    functionLinenumber: 2826
    functionLinenumberEnd: 2874
    functionName: sldns_str2wire_hip_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_str2wire_hex_buf
    - sldns_str2wire_b64_buf
    - sldns_write_uint16
    - RET_ERR_SHIFT
    - strchr
    - RET_ERR
    - strtol
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_hip_buf(const char* str, uint8_t* rd, size_t* len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/unbound/sldns/str2wire.c:2880,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:2889,1
    - Dst: RET_ERR
      Src: /src/unbound/sldns/str2wire.c:2894,1
    - Dst: sldns_b64_pton
      Src: /src/unbound/sldns/str2wire.c:2899,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/str2wire.c:2902,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 3
    argNames:
    - str
    - rd
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2905
      start: 2876
    functionDepth: 1
    functionLinenumber: 2876
    functionLinenumberEnd: 2905
    functionName: sldns_str2wire_int16_data_buf
    functionSourceFile: /src/unbound/sldns/str2wire.c
    functionUses: 2
    functionsReached:
    - sldns_write_uint16
    - sldns_b64_pton
    - RET_ERR
    - strtol
    linkageType: ''
    returnType: int
    signature: int sldns_str2wire_int16_data_buf(const char* str, uint8_t* rd, size_t*
      len)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 662
      start: 645
    functionDepth: 0
    functionLinenumber: 645
    functionLinenumberEnd: 662
    functionName: sldns_rr_descript
    functionSourceFile: /src/unbound/sldns/rrdef.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: sldns_rr_descriptor
    signature: 'sldns_rr_descriptor *

      sldns_rr_descript(uint16_t type)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - descriptor
    argTypes:
    - sldns_rr_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 664
    functionDepth: 0
    functionLinenumber: 664
    functionLinenumberEnd: 672
    functionName: sldns_rr_descriptor_minimum
    functionSourceFile: /src/unbound/sldns/rrdef.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sldns_rr_descriptor_minimum(const sldns_rr_descriptor *descriptor)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - descriptor
    argTypes:
    - sldns_rr_descriptor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 674
    functionDepth: 0
    functionLinenumber: 674
    functionLinenumberEnd: 686
    functionName: sldns_rr_descriptor_maximum
    functionSourceFile: /src/unbound/sldns/rrdef.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sldns_rr_descriptor_maximum(const sldns_rr_descriptor *descriptor)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/rrdef.c:692,1
    - Dst: assert
      Src: /src/unbound/sldns/rrdef.c:693,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - descriptor
    - index
    argTypes:
    - sldns_rr_descriptor*
    - size_t
    assertStmts:
    - condition: (descriptor != NULL)
      pos:
        line_end: 691
        line_start: 691
        source_file: /src/unbound/sldns/rrdef.c
    - condition: "(index < descriptor->_maximum\n\t       || descriptor->_variable
        != LDNS_RDF_TYPE_NONE)"
      pos:
        line_end: 693
        line_start: 692
        source_file: /src/unbound/sldns/rrdef.c
    constantsTouched: []
    func_position:
      end: 700
      start: 688
    functionDepth: 0
    functionLinenumber: 688
    functionLinenumberEnd: 700
    functionName: sldns_rr_descriptor_field_type
    functionSourceFile: /src/unbound/sldns/rrdef.c
    functionUses: 1
    functionsReached:
    - assert
    linkageType: ''
    returnType: sldns_rdf_type
    signature: "sldns_rdf_type sldns_rr_descriptor_field_type(const sldns_rr_descriptor
      *descriptor,\n                              size_t index)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/sldns/rrdef.c:710,1
    - Dst: strncasecmp
      Src: /src/unbound/sldns/rrdef.c:710,1
    - Dst: atoi
      Src: /src/unbound/sldns/rrdef.c:711,1
    - Dst: strlen
      Src: /src/unbound/sldns/rrdef.c:723,1
    - Dst: strlen
      Src: /src/unbound/sldns/rrdef.c:723,1
    - Dst: strncasecmp
      Src: /src/unbound/sldns/rrdef.c:724,1
    - Dst: strlen
      Src: /src/unbound/sldns/rrdef.c:724,1
    - Dst: strlen
      Src: /src/unbound/sldns/rrdef.c:731,1
    - Dst: strncasecmp
      Src: /src/unbound/sldns/rrdef.c:731,1
    - Dst: strlen
      Src: /src/unbound/sldns/rrdef.c:733,1
    - Dst: strncasecmp
      Src: /src/unbound/sldns/rrdef.c:733,1
    - Dst: strlen
      Src: /src/unbound/sldns/rrdef.c:735,1
    - Dst: strncasecmp
      Src: /src/unbound/sldns/rrdef.c:735,1
    - Dst: strlen
      Src: /src/unbound/sldns/rrdef.c:737,1
    - Dst: strncasecmp
      Src: /src/unbound/sldns/rrdef.c:737,1
    - Dst: strlen
      Src: /src/unbound/sldns/rrdef.c:739,1
    - Dst: strncasecmp
      Src: /src/unbound/sldns/rrdef.c:739,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 30
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 744
    functionName: sldns_get_rr_type_by_name
    functionSourceFile: /src/unbound/sldns/rrdef.c
    functionUses: 4
    functionsReached:
    - atoi
    - strncasecmp
    - strlen
    linkageType: ''
    returnType: sldns_rr_type
    signature: sldns_rr_type sldns_get_rr_type_by_name(const char *name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/sldns/rrdef.c:752,1
    - Dst: strncasecmp
      Src: /src/unbound/sldns/rrdef.c:752,1
    - Dst: atoi
      Src: /src/unbound/sldns/rrdef.c:753,1
    - Dst: sldns_lookup_by_name
      Src: /src/unbound/sldns/rrdef.c:761,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 766
    functionName: sldns_get_rr_class_by_name
    functionSourceFile: /src/unbound/sldns/rrdef.c
    functionUses: 2
    functionsReached:
    - atoi
    - strncasecmp
    - strlen
    - sldns_lookup_by_name
    linkageType: ''
    returnType: sldns_rr_class
    signature: sldns_rr_class sldns_get_rr_class_by_name(const char *name)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/sldns/sbuffer.c:21,1
    - Dst: malloc
      Src: /src/unbound/sldns/sbuffer.c:27,1
    - Dst: free
      Src: /src/unbound/sldns/sbuffer.c:29,1
    - Dst: sldns_buffer_invariant
      Src: /src/unbound/sldns/sbuffer.c:38,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - capacity
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 41
    functionName: sldns_buffer_new
    functionSourceFile: /src/unbound/sldns/sbuffer.c
    functionUses: 3
    functionsReached:
    - malloc
    - sldns_buffer_invariant
    - free
    linkageType: ''
    returnType: sldns_buffer
    signature: 'sldns_buffer *

      sldns_buffer_new(size_t capacity)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.c:46,1
    - Dst: free
      Src: /src/unbound/sldns/sbuffer.c:52,1
    - Dst: malloc
      Src: /src/unbound/sldns/sbuffer.c:53,1
    - Dst: memcpy
      Src: /src/unbound/sldns/sbuffer.c:58,1
    - Dst: sldns_buffer_invariant
      Src: /src/unbound/sldns/sbuffer.c:61,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - buffer
    - data
    - size
    argTypes:
    - sldns_buffer*
    - void*
    - size_t
    assertStmts:
    - condition: (data != NULL)
      pos:
        line_end: 45
        line_start: 45
        source_file: /src/unbound/sldns/sbuffer.c
    constantsTouched: []
    func_position:
      end: 62
      start: 43
    functionDepth: 1
    functionLinenumber: 43
    functionLinenumberEnd: 62
    functionName: sldns_buffer_new_frm_data
    functionSourceFile: /src/unbound/sldns/sbuffer.c
    functionUses: 2
    functionsReached:
    - sldns_buffer_invariant
    - memcpy
    - assert
    - free
    - malloc
    linkageType: ''
    returnType: void
    signature: void sldns_buffer_new_frm_data(sldns_buffer *buffer, void *data, size_t
      size)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/sldns/sbuffer.c:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - buffer
    - data
    - size
    argTypes:
    - sldns_buffer*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 71
    functionName: sldns_buffer_init_frm_data
    functionSourceFile: /src/unbound/sldns/sbuffer.c
    functionUses: 5
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void sldns_buffer_init_frm_data(sldns_buffer *buffer, void *data, size_t
      size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_invariant
      Src: /src/unbound/sldns/sbuffer.c:78,1
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.c:79,1
    - Dst: realloc
      Src: /src/unbound/sldns/sbuffer.c:81,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - buffer
    - capacity
    argTypes:
    - sldns_buffer*
    - size_t
    assertStmts:
    - condition: (buffer->_position <= capacity && !buffer->_fixed)
      pos:
        line_end: 78
        line_start: 78
        source_file: /src/unbound/sldns/sbuffer.c
    constantsTouched: []
    func_position:
      end: 90
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 90
    functionName: sldns_buffer_set_capacity
    functionSourceFile: /src/unbound/sldns/sbuffer.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_invariant
    - assert
    - realloc
    linkageType: ''
    returnType: int
    signature: int sldns_buffer_set_capacity(sldns_buffer *buffer, size_t capacity)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_invariant
      Src: /src/unbound/sldns/sbuffer.c:95,1
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.c:96,1
    - Dst: sldns_buffer_set_capacity
      Src: /src/unbound/sldns/sbuffer.c:103,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - buffer
    - amount
    argTypes:
    - sldns_buffer*
    - size_t
    assertStmts:
    - condition: (!buffer->_fixed)
      pos:
        line_end: 95
        line_start: 95
        source_file: /src/unbound/sldns/sbuffer.c
    constantsTouched: []
    func_position:
      end: 110
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 110
    functionName: sldns_buffer_reserve
    functionSourceFile: /src/unbound/sldns/sbuffer.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_invariant
    - sldns_buffer_set_capacity
    - assert
    linkageType: ''
    returnType: int
    signature: int sldns_buffer_reserve(sldns_buffer *buffer, size_t amount)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_status_ok
      Src: /src/unbound/sldns/sbuffer.c:119,1
    - Dst: sldns_buffer_invariant
      Src: /src/unbound/sldns/sbuffer.c:120,1
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.c:121,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/sldns/sbuffer.c:123,1
    - Dst: va_start
      Src: /src/unbound/sldns/sbuffer.c:124,1
    - Dst: vsnprintf
      Src: /src/unbound/sldns/sbuffer.c:125,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/sldns/sbuffer.c:125,1
    - Dst: va_end
      Src: /src/unbound/sldns/sbuffer.c:127,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - buffer
    - format
    argTypes:
    - sldns_buffer*
    - char*
    assertStmts:
    - condition: (buffer->_limit == buffer->_capacity)
      pos:
        line_end: 120
        line_start: 120
        source_file: /src/unbound/sldns/sbuffer.c
    constantsTouched: []
    func_position:
      end: 135
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 135
    functionName: sldns_buffer_printf
    functionSourceFile: /src/unbound/sldns/sbuffer.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_status_ok
    - sldns_buffer_invariant
    - vsnprintf
    - va_start
    - va_end
    - assert
    - sldns_buffer_current
    linkageType: ''
    returnType: int
    signature: int sldns_buffer_printf(sldns_buffer *buffer, const char *format, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/sldns/sbuffer.c:145,1
    - Dst: free
      Src: /src/unbound/sldns/sbuffer.c:147,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 148
    functionName: sldns_buffer_free
    functionSourceFile: /src/unbound/sldns/sbuffer.c
    functionUses: 3
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void sldns_buffer_free(sldns_buffer *buffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/sldns/sbuffer.c:153,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/sldns/sbuffer.c:155,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/sldns/sbuffer.c:156,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/sldns/sbuffer.c:157,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/sldns/sbuffer.c:158,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/sldns/sbuffer.c:158,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/sldns/sbuffer.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - result
    - from
    argTypes:
    - sldns_buffer*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 160
    functionName: sldns_buffer_copy
    functionSourceFile: /src/unbound/sldns/sbuffer.c
    functionUses: 2
    functionsReached:
    - sldns_buffer_capacity
    - sldns_buffer_write
    - sldns_buffer_flip
    - sldns_buffer_limit
    - sldns_buffer_clear
    - sldns_buffer_begin
    linkageType: ''
    returnType: void
    signature: void sldns_buffer_copy(sldns_buffer* result, sldns_buffer* from)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_pkt_buf
      Src: /src/unbound/sldns/wire2str.c:271,1
    - Dst: malloc
      Src: /src/unbound/sldns/wire2str.c:272,1
    - Dst: sldns_wire2str_pkt_buf
      Src: /src/unbound/sldns/wire2str.c:274,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 276
    functionName: sldns_wire2str_pkt
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - malloc
    - sldns_wire2str_pkt_buf
    linkageType: ''
    returnType: char
    signature: char * sldns_wire2str_pkt(uint8_t* data, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_rr_buf
      Src: /src/unbound/sldns/wire2str.c:280,1
    - Dst: malloc
      Src: /src/unbound/sldns/wire2str.c:281,1
    - Dst: sldns_wire2str_rr_buf
      Src: /src/unbound/sldns/wire2str.c:283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - rr
    - len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 285
    functionName: sldns_wire2str_rr
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - malloc
    - sldns_wire2str_rr_buf
    linkageType: ''
    returnType: char
    signature: char * sldns_wire2str_rr(uint8_t* rr, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/sldns/wire2str.c:290,1
    - Dst: strdup
      Src: /src/unbound/sldns/wire2str.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rrtype
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 292
    functionName: sldns_wire2str_type
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 6
    functionsReached:
    - sldns_wire2str_type_buf
    - strdup
    linkageType: ''
    returnType: char
    signature: char * sldns_wire2str_type(uint16_t rrtype)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_class_buf
      Src: /src/unbound/sldns/wire2str.c:297,1
    - Dst: strdup
      Src: /src/unbound/sldns/wire2str.c:298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rrclass
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 294
    functionDepth: 1
    functionLinenumber: 294
    functionLinenumberEnd: 299
    functionName: sldns_wire2str_class
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 7
    functionsReached:
    - sldns_wire2str_class_buf
    - strdup
    linkageType: ''
    returnType: char
    signature: char * sldns_wire2str_class(uint16_t rrclass)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_dname_buf
      Src: /src/unbound/sldns/wire2str.c:303,1
    - Dst: malloc
      Src: /src/unbound/sldns/wire2str.c:304,1
    - Dst: sldns_wire2str_dname_buf
      Src: /src/unbound/sldns/wire2str.c:306,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - dname
    - dname_len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 301
    functionDepth: 1
    functionLinenumber: 301
    functionLinenumberEnd: 308
    functionName: sldns_wire2str_dname
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - malloc
    - sldns_wire2str_dname_buf
    linkageType: ''
    returnType: char
    signature: char * sldns_wire2str_dname(uint8_t* dname, size_t dname_len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_rcode_buf
      Src: /src/unbound/sldns/wire2str.c:313,1
    - Dst: strdup
      Src: /src/unbound/sldns/wire2str.c:314,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - rcode
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 315
    functionName: sldns_wire2str_rcode
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_rcode_buf
    - strdup
    linkageType: ''
    returnType: char
    signature: char * sldns_wire2str_rcode(int rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_pkt_scan
      Src: /src/unbound/sldns/wire2str.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - d
    - dlen
    - s
    - slen
    argTypes:
    - uint8_t*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 317
    functionDepth: 1
    functionLinenumber: 317
    functionLinenumberEnd: 321
    functionName: sldns_wire2str_pkt_buf
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - sldns_wire2str_pkt_scan
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_pkt_buf(uint8_t* d, size_t dlen, char* s, size_t
      slen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_rr_scan
      Src: /src/unbound/sldns/wire2str.c:326,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - d
    - dlen
    - s
    - slen
    argTypes:
    - uint8_t*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 323
    functionDepth: 1
    functionLinenumber: 323
    functionLinenumberEnd: 327
    functionName: sldns_wire2str_rr_buf
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - sldns_wire2str_rr_scan
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_rr_buf(uint8_t* d, size_t dlen, char* s, size_t
      slen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_rrquestion_scan
      Src: /src/unbound/sldns/wire2str.c:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - d
    - dlen
    - s
    - slen
    argTypes:
    - uint8_t*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 329
    functionDepth: 1
    functionLinenumber: 329
    functionLinenumberEnd: 333
    functionName: sldns_wire2str_rrquestion_buf
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_rrquestion_scan
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_rrquestion_buf(uint8_t* d, size_t dlen, char* s,
      size_t slen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_rdata_scan
      Src: /src/unbound/sldns/wire2str.c:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - rdata
    - rdata_len
    - str
    - str_len
    - rrtype
    argTypes:
    - uint8_t*
    - size_t
    - char*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 341
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 341
    functionName: sldns_wire2str_rdata_buf
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_rdata_scan
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_rdata_buf(uint8_t* rdata, size_t rdata_len, char*
      str,\n\tsize_t str_len, uint16_t rrtype)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_rr_unknown_scan
      Src: /src/unbound/sldns/wire2str.c:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - d
    - dlen
    - s
    - slen
    argTypes:
    - uint8_t*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 343
    functionDepth: 1
    functionLinenumber: 343
    functionLinenumberEnd: 347
    functionName: sldns_wire2str_rr_unknown_buf
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_rr_unknown_scan
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_rr_unknown_buf(uint8_t* d, size_t dlen, char* s,
      size_t slen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/sldns/wire2str.c:352,1
    - Dst: sldns_wire2str_rr_comment_print
      Src: /src/unbound/sldns/wire2str.c:353,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - rr
    - rrlen
    - dname_len
    - s
    - slen
    argTypes:
    - uint8_t*
    - size_t
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 349
    functionDepth: 2
    functionLinenumber: 349
    functionLinenumberEnd: 355
    functionName: sldns_wire2str_rr_comment_buf
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_rr_comment_print
    - sldns_wirerr_get_type
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_rr_comment_buf(uint8_t* rr, size_t rrlen, size_t
      dname_len,\n\tchar* s, size_t slen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_type_print
      Src: /src/unbound/sldns/wire2str.c:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rrtype
    - s
    - slen
    argTypes:
    - uint16_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 361
    functionName: sldns_wire2str_type_buf
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 3
    functionsReached:
    - sldns_wire2str_type_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_type_buf(uint16_t rrtype, char* s, size_t slen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_class_print
      Src: /src/unbound/sldns/wire2str.c:366,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rrclass
    - s
    - slen
    argTypes:
    - uint16_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 367
    functionName: sldns_wire2str_class_buf
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 3
    functionsReached:
    - sldns_wire2str_class_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_class_buf(uint16_t rrclass, char* s, size_t slen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_rcode_print
      Src: /src/unbound/sldns/wire2str.c:372,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - rcode
    - s
    - slen
    argTypes:
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 369
    functionDepth: 1
    functionLinenumber: 369
    functionLinenumberEnd: 373
    functionName: sldns_wire2str_rcode_buf
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 3
    functionsReached:
    - sldns_wire2str_rcode_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_rcode_buf(int rcode, char* s, size_t slen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_opcode_print
      Src: /src/unbound/sldns/wire2str.c:378,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - opcode
    - s
    - slen
    argTypes:
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 379
    functionName: sldns_wire2str_opcode_buf
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_opcode_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_opcode_buf(int opcode, char* s, size_t slen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_dname_scan
      Src: /src/unbound/sldns/wire2str.c:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - d
    - dlen
    - s
    - slen
    argTypes:
    - uint8_t*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 381
    functionDepth: 1
    functionLinenumber: 381
    functionLinenumberEnd: 385
    functionName: sldns_wire2str_dname_buf
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 5
    functionsReached:
    - sldns_wire2str_dname_scan
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_dname_buf(uint8_t* d, size_t dlen, char* s, size_t
      slen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: vsnprintf
      Src: /src/unbound/sldns/wire2str.c:389,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - str
    - slen
    - format
    - args
    argTypes:
    - char**
    - size_t*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 401
      start: 387
    functionDepth: 1
    functionLinenumber: 387
    functionLinenumberEnd: 401
    functionName: sldns_str_vprint
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - vsnprintf
    linkageType: ''
    returnType: int
    signature: int sldns_str_vprint(char** str, size_t* slen, const char* format,
      va_list args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/sldns/wire2str.c:407,1
    - Dst: sldns_str_vprint
      Src: /src/unbound/sldns/wire2str.c:408,1
    - Dst: va_end
      Src: /src/unbound/sldns/wire2str.c:409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - str
    - slen
    - format
    argTypes:
    - char**
    - size_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 403
    functionDepth: 2
    functionLinenumber: 403
    functionLinenumberEnd: 411
    functionName: sldns_str_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - va_end
    - sldns_str_vprint
    - va_start
    linkageType: ''
    returnType: int
    signature: int sldns_str_print(char** str, size_t* slen, const char* format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:419,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - s
    - slen
    - buf
    - len
    argTypes:
    - char**
    - size_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 414
    functionDepth: 3
    functionLinenumber: 414
    functionLinenumberEnd: 423
    functionName: print_hex_buf
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int print_hex_buf(char** s, size_t* slen, uint8_t* buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:430,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:431,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - pref
    - d
    - dlen
    - s
    - slen
    argTypes:
    - char*
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 426
    functionDepth: 4
    functionLinenumber: 426
    functionLinenumberEnd: 435
    functionName: print_remainder_hex
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - print_hex_buf
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: "int print_remainder_hex(const char* pref, uint8_t** d, size_t* dlen,\n\tchar**
      s, size_t* slen)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/sldns/wire2str.c:444,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/sldns/wire2str.c:445,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/sldns/wire2str.c:446,1
    - Dst: LDNS_ARCOUNT
      Src: /src/unbound/sldns/wire2str.c:447,1
    - Dst: sldns_wire2str_header_scan
      Src: /src/unbound/sldns/wire2str.c:451,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:452,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:453,1
    - Dst: sldns_wire2str_rrquestion_scan
      Src: /src/unbound/sldns/wire2str.c:455,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:459,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:460,1
    - Dst: sldns_wire2str_rr_scan
      Src: /src/unbound/sldns/wire2str.c:462,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:465,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:466,1
    - Dst: sldns_wire2str_rr_scan
      Src: /src/unbound/sldns/wire2str.c:468,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:471,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:472,1
    - Dst: sldns_wire2str_rr_scan
      Src: /src/unbound/sldns/wire2str.c:474,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:478,1
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:480,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:482,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 44
    argCount: 4
    argNames:
    - d
    - dlen
    - s
    - slen
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 437
    functionDepth: 5
    functionLinenumber: 437
    functionLinenumberEnd: 485
    functionName: sldns_wire2str_pkt_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - LDNS_ANCOUNT
    - print_remainder_hex
    - sldns_wire2str_rr_scan
    - LDNS_QDCOUNT
    - LDNS_NSCOUNT
    - sldns_str_print
    - sldns_wire2str_rrquestion_scan
    - sldns_wire2str_header_scan
    - LDNS_ARCOUNT
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_pkt_scan(uint8_t** d, size_t* dlen, char** s, size_t*
      slen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:495,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:498,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:499,1
    - Dst: sldns_wire2str_class_print
      Src: /src/unbound/sldns/wire2str.c:502,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:503,1
    - Dst: sldns_wire2str_type_print
      Src: /src/unbound/sldns/wire2str.c:504,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:506,1
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:507,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:510,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:511,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/sldns/wire2str.c:512,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:515,1
    - Dst: sldns_wire2str_class_print
      Src: /src/unbound/sldns/wire2str.c:516,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:517,1
    - Dst: sldns_wire2str_type_print
      Src: /src/unbound/sldns/wire2str.c:518,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 488
    functionDepth: 5
    functionLinenumber: 488
    functionLinenumberEnd: 520
    functionName: sldns_rr_tcttl_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - print_remainder_hex
    - sldns_wire2str_type_print
    - sldns_str_print
    - sldns_read_uint16
    - sldns_read_uint32
    - sldns_wire2str_class_print
    linkageType: ''
    returnType: int
    signature: int sldns_rr_tcttl_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:531,1
    - Dst: sldns_wire2str_edns_scan
      Src: /src/unbound/sldns/wire2str.c:533,1
    - Dst: sldns_wire2str_dname_scan
      Src: /src/unbound/sldns/wire2str.c:538,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:539,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:543,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:544,1
    - Dst: sldns_wire2str_class_print
      Src: /src/unbound/sldns/wire2str.c:547,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:548,1
    - Dst: sldns_wire2str_type_print
      Src: /src/unbound/sldns/wire2str.c:549,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:550,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:555,1
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:556,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:557,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:559,1
    - Dst: sldns_rr_tcttl_scan
      Src: /src/unbound/sldns/wire2str.c:560,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:561,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:566,1
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:567,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:569,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:571,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:576,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:578,1
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:579,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:580,1
    - Dst: sldns_wire2str_rdata_scan
      Src: /src/unbound/sldns/wire2str.c:582,1
    - Dst: sldns_wire2str_rr_comment_print
      Src: /src/unbound/sldns/wire2str.c:587,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:589,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 47
    argCount: 7
    argNames:
    - d
    - dlen
    - s
    - slen
    - pkt
    - pktlen
    - comprloop
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    - uint8_t*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 522
    functionDepth: 6
    functionLinenumber: 522
    functionLinenumberEnd: 591
    functionName: sldns_wire2str_rr_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - print_remainder_hex
    - sldns_wire2str_rr_comment_print
    - sldns_wire2str_type_print
    - sldns_str_print
    - sldns_wire2str_rdata_scan
    - sldns_rr_tcttl_scan
    - sldns_read_uint16
    - sldns_wire2str_dname_scan
    - sldns_wire2str_edns_scan
    - sldns_wire2str_class_print
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_rr_scan(uint8_t** d, size_t* dlen, char** s, size_t*
      slen,\n\tuint8_t* pkt, size_t pktlen, int* comprloop)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_dname_scan
      Src: /src/unbound/sldns/wire2str.c:598,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:599,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:602,1
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:603,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:604,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:606,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:607,1
    - Dst: sldns_wire2str_class_print
      Src: /src/unbound/sldns/wire2str.c:610,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:611,1
    - Dst: sldns_wire2str_type_print
      Src: /src/unbound/sldns/wire2str.c:612,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:613,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 7
    argNames:
    - d
    - dlen
    - s
    - slen
    - pkt
    - pktlen
    - comprloop
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    - uint8_t*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 593
    functionDepth: 5
    functionLinenumber: 593
    functionLinenumberEnd: 615
    functionName: sldns_wire2str_rrquestion_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - print_remainder_hex
    - sldns_wire2str_type_print
    - sldns_str_print
    - sldns_read_uint16
    - sldns_wire2str_dname_scan
    - sldns_wire2str_class_print
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_rrquestion_scan(uint8_t** d, size_t* dlen, char**
      s,\n\tsize_t* slen, uint8_t* pkt, size_t pktlen, int* comprloop)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_dname_scan
      Src: /src/unbound/sldns/wire2str.c:622,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:623,1
    - Dst: sldns_rr_tcttl_scan
      Src: /src/unbound/sldns/wire2str.c:624,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:625,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:628,1
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:629,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:631,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:633,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:638,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:640,1
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:641,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:642,1
    - Dst: sldns_wire2str_rdata_unknown_scan
      Src: /src/unbound/sldns/wire2str.c:644,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:646,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 7
    argNames:
    - d
    - dlen
    - s
    - slen
    - pkt
    - pktlen
    - comprloop
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    - uint8_t*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 617
    functionDepth: 6
    functionLinenumber: 617
    functionLinenumberEnd: 648
    functionName: sldns_wire2str_rr_unknown_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - print_remainder_hex
    - sldns_wire2str_rdata_unknown_scan
    - sldns_str_print
    - sldns_rr_tcttl_scan
    - sldns_read_uint16
    - sldns_wire2str_dname_scan
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_rr_unknown_scan(uint8_t** d, size_t* dlen, char**
      s,\n\tsize_t* slen, uint8_t* pkt, size_t pktlen, int* comprloop)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:658,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:662,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:663,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:666,1
    - Dst: sldns_calc_keytag_raw
      Src: /src/unbound/sldns/wire2str.c:667,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:672,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:673,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:678,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:679,1
    - Dst: sldns_rr_dnskey_key_size_raw
      Src: /src/unbound/sldns/wire2str.c:680,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:684,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 5
    argNames:
    - s
    - slen
    - rr
    - rrlen
    - dname_off
    argTypes:
    - char**
    - size_t*
    - uint8_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 686
      start: 651
    functionDepth: 3
    functionLinenumber: 651
    functionLinenumberEnd: 686
    functionName: rr_comment_dnskey
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_calc_keytag_raw
    - sldns_rr_dnskey_key_size_raw
    - sldns_read_uint16
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: "int rr_comment_dnskey(char** s, size_t* slen, uint8_t* rr,\n\tsize_t
      rrlen, size_t dname_off)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:695,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:699,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:700,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 5
    argNames:
    - s
    - slen
    - rr
    - rrlen
    - dname_off
    argTypes:
    - char**
    - size_t*
    - uint8_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 701
      start: 689
    functionDepth: 3
    functionLinenumber: 689
    functionLinenumberEnd: 701
    functionName: rr_comment_rrsig
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_read_uint16
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: "int rr_comment_rrsig(char** s, size_t* slen, uint8_t* rr,\n\tsize_t
      rrlen, size_t dname_off)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:711,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:716,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 5
    argNames:
    - s
    - slen
    - rr
    - rrlen
    - dname_off
    argTypes:
    - char**
    - size_t*
    - uint8_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 704
    functionDepth: 3
    functionLinenumber: 704
    functionLinenumberEnd: 718
    functionName: rr_comment_nsec3
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_read_uint16
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: "int rr_comment_nsec3(char** s, size_t* slen, uint8_t* rr,\n\tsize_t
      rrlen, size_t dname_off)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rr_comment_dnskey
      Src: /src/unbound/sldns/wire2str.c:724,1
    - Dst: rr_comment_rrsig
      Src: /src/unbound/sldns/wire2str.c:726,1
    - Dst: rr_comment_nsec3
      Src: /src/unbound/sldns/wire2str.c:728,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 6
    argNames:
    - s
    - slen
    - rr
    - rrlen
    - dname_off
    - rrtype
    argTypes:
    - char**
    - size_t*
    - uint8_t*
    - size_t
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 720
    functionDepth: 4
    functionLinenumber: 720
    functionLinenumberEnd: 731
    functionName: sldns_wire2str_rr_comment_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - rr_comment_nsec3
    - rr_comment_dnskey
    - rr_comment_rrsig
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_rr_comment_print(char** s, size_t* slen, uint8_t*
      rr,\n\tsize_t rrlen, size_t dname_off, uint16_t rrtype)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:738,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:740,1
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:742,1
    - Dst: LDNS_OPCODE_WIRE
      Src: /src/unbound/sldns/wire2str.c:743,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/sldns/wire2str.c:744,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:745,1
    - Dst: sldns_wire2str_opcode_print
      Src: /src/unbound/sldns/wire2str.c:746,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:747,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:748,1
    - Dst: sldns_wire2str_rcode_print
      Src: /src/unbound/sldns/wire2str.c:749,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:750,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:751,1
    - Dst: LDNS_ID_WIRE
      Src: /src/unbound/sldns/wire2str.c:751,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:752,1
    - Dst: LDNS_QR_WIRE
      Src: /src/unbound/sldns/wire2str.c:753,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:753,1
    - Dst: LDNS_AA_WIRE
      Src: /src/unbound/sldns/wire2str.c:754,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:754,1
    - Dst: LDNS_TC_WIRE
      Src: /src/unbound/sldns/wire2str.c:755,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:755,1
    - Dst: LDNS_RD_WIRE
      Src: /src/unbound/sldns/wire2str.c:756,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:756,1
    - Dst: LDNS_CD_WIRE
      Src: /src/unbound/sldns/wire2str.c:757,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:757,1
    - Dst: LDNS_RA_WIRE
      Src: /src/unbound/sldns/wire2str.c:758,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:758,1
    - Dst: LDNS_AD_WIRE
      Src: /src/unbound/sldns/wire2str.c:759,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:759,1
    - Dst: LDNS_Z_WIRE
      Src: /src/unbound/sldns/wire2str.c:760,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:760,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:761,1
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:763,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:764,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/sldns/wire2str.c:764,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:765,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/sldns/wire2str.c:765,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:766,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/sldns/wire2str.c:766,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:767,1
    - Dst: LDNS_ARCOUNT
      Src: /src/unbound/sldns/wire2str.c:767,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 4
    argNames:
    - d
    - dlen
    - s
    - slen
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 733
    functionDepth: 5
    functionLinenumber: 733
    functionLinenumberEnd: 771
    functionName: sldns_wire2str_header_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - LDNS_ANCOUNT
    - sldns_wire2str_rcode_print
    - LDNS_AA_WIRE
    - LDNS_RA_WIRE
    - LDNS_OPCODE_WIRE
    - LDNS_RD_WIRE
    - LDNS_QR_WIRE
    - LDNS_Z_WIRE
    - LDNS_ARCOUNT
    - LDNS_AD_WIRE
    - sldns_str_print
    - LDNS_NSCOUNT
    - LDNS_CD_WIRE
    - LDNS_ID_WIRE
    - LDNS_TC_WIRE
    - print_remainder_hex
    - sldns_wire2str_opcode_print
    - LDNS_QDCOUNT
    - LDNS_RCODE_WIRE
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_header_scan(uint8_t** d, size_t* dlen, char** s,\n\tsize_t*
      slen)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sldns_rr_descript
      Src: /src/unbound/sldns/wire2str.c:785,1
    - Dst: sldns_wire2str_rdata_unknown_scan
      Src: /src/unbound/sldns/wire2str.c:787,1
    - Dst: sldns_rr_descriptor_maximum
      Src: /src/unbound/sldns/wire2str.c:790,1
    - Dst: sldns_rr_descriptor_minimum
      Src: /src/unbound/sldns/wire2str.c:793,1
    - Dst: sldns_rr_descriptor_field_type
      Src: /src/unbound/sldns/wire2str.c:797,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:799,1
    - Dst: sldns_wire2str_rdf_scan
      Src: /src/unbound/sldns/wire2str.c:800,1
    - Dst: sldns_wire2str_rdata_unknown_scan
      Src: /src/unbound/sldns/wire2str.c:807,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 8
    argNames:
    - d
    - dlen
    - s
    - slen
    - rrtype
    - pkt
    - pktlen
    - comprloop
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    - uint16_t
    - uint8_t*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 773
    functionDepth: 3
    functionLinenumber: 773
    functionLinenumberEnd: 816
    functionName: sldns_wire2str_rdata_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - sldns_rr_descript
    - sldns_wire2str_rdata_unknown_scan
    - sldns_rr_descriptor_maximum
    - sldns_rr_descriptor_field_type
    - sldns_str_print
    - sldns_wire2str_rdf_scan
    - sldns_rr_descriptor_minimum
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_rdata_scan(uint8_t** d, size_t* dlen, char** s,\n\tsize_t*
      slen, uint16_t rrtype, uint8_t* pkt, size_t pktlen,\n\tint* comprloop)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:824,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:828,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:829,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - d
    - dlen
    - s
    - slen
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 818
    functionDepth: 4
    functionLinenumber: 818
    functionLinenumberEnd: 833
    functionName: sldns_wire2str_rdata_unknown_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 3
    functionsReached:
    - print_hex_buf
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_rdata_unknown_scan(uint8_t** d, size_t* dlen, char**
      s,\n\tsize_t* slen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:839,1
    - Dst: isascii
      Src: /src/unbound/sldns/wire2str.c:840,1
    - Dst: isgraph
      Src: /src/unbound/sldns/wire2str.c:840,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:841,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 11
    argCount: 3
    argNames:
    - s
    - slen
    - c
    argTypes:
    - char**
    - size_t*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 836
    functionDepth: 3
    functionLinenumber: 836
    functionLinenumberEnd: 849
    functionName: dname_char_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - isascii
    - sldns_str_print
    - isgraph
    linkageType: ''
    returnType: int
    signature: int dname_char_print(char** s, size_t* slen, uint8_t c)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:867,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:871,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:883,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:886,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:892,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:897,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:905,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:922,1
    - Dst: dname_char_print
      Src: /src/unbound/sldns/wire2str.c:927,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:934,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:939,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 71
    argCount: 7
    argNames:
    - d
    - dlen
    - s
    - slen
    - pkt
    - pktlen
    - comprloop
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    - uint8_t*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 941
      start: 851
    functionDepth: 4
    functionLinenumber: 851
    functionLinenumberEnd: 941
    functionName: sldns_wire2str_dname_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 4
    functionsReached:
    - dname_char_print
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_dname_scan(uint8_t** d, size_t* dlen, char** s,
      size_t* slen,\n\tuint8_t* pkt, size_t pktlen, int* comprloop)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/sldns/wire2str.c:945,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:947,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:949,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - s
    - slen
    - opcode
    argTypes:
    - char**
    - size_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 950
      start: 943
    functionDepth: 3
    functionLinenumber: 943
    functionLinenumberEnd: 950
    functionName: sldns_wire2str_opcode_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - sldns_lookup_by_id
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_opcode_print(char** s, size_t* slen, int opcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/sldns/wire2str.c:954,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:956,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:958,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - s
    - slen
    - rcode
    argTypes:
    - char**
    - size_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 952
    functionDepth: 3
    functionLinenumber: 952
    functionLinenumberEnd: 959
    functionName: sldns_wire2str_rcode_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - sldns_lookup_by_id
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_rcode_print(char** s, size_t* slen, int rcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/sldns/wire2str.c:963,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:966,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:968,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - s
    - slen
    - rrclass
    argTypes:
    - char**
    - size_t*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 961
    functionDepth: 3
    functionLinenumber: 961
    functionLinenumberEnd: 969
    functionName: sldns_wire2str_class_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 4
    functionsReached:
    - sldns_lookup_by_id
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_class_print(char** s, size_t* slen, uint16_t rrclass)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_rr_descript
      Src: /src/unbound/sldns/wire2str.c:973,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:975,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:977,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - s
    - slen
    - rrtype
    argTypes:
    - char**
    - size_t*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 971
    functionDepth: 3
    functionLinenumber: 971
    functionLinenumberEnd: 978
    functionName: sldns_wire2str_type_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 4
    functionsReached:
    - sldns_str_print
    - sldns_rr_descript
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_type_print(char** s, size_t* slen, uint16_t rrtype)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/sldns/wire2str.c:983,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:986,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:988,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - s
    - slen
    - opcode
    argTypes:
    - char**
    - size_t*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 980
    functionDepth: 3
    functionLinenumber: 980
    functionLinenumberEnd: 989
    functionName: sldns_wire2str_edns_option_code_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_lookup_by_id
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_edns_option_code_print(char** s, size_t* slen,\n\tuint16_t
      opcode)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:995,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:996,1
    - Dst: sldns_wire2str_class_print
      Src: /src/unbound/sldns/wire2str.c:999,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - d
    - dlen
    - s
    - slen
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1000
      start: 991
    functionDepth: 5
    functionLinenumber: 991
    functionLinenumberEnd: 1000
    functionName: sldns_wire2str_class_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_read_uint16
    - print_remainder_hex
    - sldns_wire2str_class_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_class_scan(uint8_t** d, size_t* dlen, char** s,
      size_t* slen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:1006,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:1007,1
    - Dst: sldns_wire2str_type_print
      Src: /src/unbound/sldns/wire2str.c:1010,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - d
    - dlen
    - s
    - slen
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1011
      start: 1002
    functionDepth: 5
    functionLinenumber: 1002
    functionLinenumberEnd: 1011
    functionName: sldns_wire2str_type_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_read_uint16
    - print_remainder_hex
    - sldns_wire2str_type_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_type_scan(uint8_t** d, size_t* dlen, char** s, size_t*
      slen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:1017,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/sldns/wire2str.c:1018,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1021,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - d
    - dlen
    - s
    - slen
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 1013
    functionDepth: 5
    functionLinenumber: 1013
    functionLinenumberEnd: 1022
    functionName: sldns_wire2str_ttl_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_read_uint32
    - print_remainder_hex
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_ttl_scan(uint8_t** d, size_t* dlen, char** s, size_t*
      slen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1028,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1031,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - s
    - slen
    - svcparamkey
    argTypes:
    - char**
    - size_t*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 1024
    functionDepth: 3
    functionLinenumber: 1024
    functionLinenumberEnd: 1033
    functionName: sldns_print_svcparamkey
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_print_svcparamkey(char** s, size_t* slen, uint16_t svcparamkey)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1042,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:1042,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - s
    - slen
    - data_len
    - data
    argTypes:
    - char**
    - size_t*
    - uint16_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1045
      start: 1035
    functionDepth: 3
    functionLinenumber: 1035
    functionLinenumberEnd: 1045
    functionName: sldns_wire2str_svcparam_port2str
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_read_uint16
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_svcparam_port2str(char** s,\n\tsize_t* slen, uint16_t
      data_len, uint8_t* data)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/wire2str.c:1054,1
    - Dst: inet_ntop
      Src: /src/unbound/sldns/wire2str.c:1057,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1060,1
    - Dst: inet_ntop
      Src: /src/unbound/sldns/wire2str.c:1064,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1067,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - s
    - slen
    - data_len
    - data
    argTypes:
    - char**
    - size_t*
    - uint16_t
    - uint8_t*
    assertStmts:
    - condition: (data_len > 0)
      pos:
        line_end: 1053
        line_start: 1053
        source_file: /src/unbound/sldns/wire2str.c
    constantsTouched: []
    func_position:
      end: 1074
      start: 1047
    functionDepth: 3
    functionLinenumber: 1047
    functionLinenumberEnd: 1074
    functionName: sldns_wire2str_svcparam_ipv4hint2str
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - assert
    - inet_ntop
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_svcparam_ipv4hint2str(char** s,\n\tsize_t* slen,
      uint16_t data_len, uint8_t* data)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/wire2str.c:1083,1
    - Dst: inet_ntop
      Src: /src/unbound/sldns/wire2str.c:1086,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1089,1
    - Dst: inet_ntop
      Src: /src/unbound/sldns/wire2str.c:1093,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1096,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - s
    - slen
    - data_len
    - data
    argTypes:
    - char**
    - size_t*
    - uint16_t
    - uint8_t*
    assertStmts:
    - condition: (data_len > 0)
      pos:
        line_end: 1082
        line_start: 1082
        source_file: /src/unbound/sldns/wire2str.c
    constantsTouched: []
    func_position:
      end: 1103
      start: 1076
    functionDepth: 3
    functionLinenumber: 1076
    functionLinenumberEnd: 1103
    functionName: sldns_wire2str_svcparam_ipv6hint2str
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - assert
    - inet_ntop
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_svcparam_ipv6hint2str(char** s,\n\tsize_t* slen,
      uint16_t data_len, uint8_t* data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/wire2str.c:1110,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1114,1
    - Dst: sldns_print_svcparamkey
      Src: /src/unbound/sldns/wire2str.c:1115,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:1115,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1119,1
    - Dst: sldns_print_svcparamkey
      Src: /src/unbound/sldns/wire2str.c:1120,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:1120,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - s
    - slen
    - data_len
    - data
    argTypes:
    - char**
    - size_t*
    - uint16_t
    - uint8_t*
    assertStmts:
    - condition: (data_len > 0)
      pos:
        line_end: 1109
        line_start: 1109
        source_file: /src/unbound/sldns/wire2str.c
    constantsTouched: []
    func_position:
      end: 1125
      start: 1105
    functionDepth: 4
    functionLinenumber: 1105
    functionLinenumberEnd: 1125
    functionName: sldns_wire2str_svcparam_mandatory2str
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - assert
    - sldns_read_uint16
    - sldns_str_print
    - sldns_print_svcparamkey
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_svcparam_mandatory2str(char** s,\n\tsize_t* slen,
      uint16_t data_len, uint8_t* data)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/wire2str.c:1133,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1135,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1145,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1148,1
    - Dst: isprint
      Src: /src/unbound/sldns/wire2str.c:1150,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1151,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1154,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1158,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1160,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 4
    argNames:
    - s
    - slen
    - data_len
    - data
    argTypes:
    - char**
    - size_t*
    - uint16_t
    - uint8_t*
    assertStmts:
    - condition: (data_len > 0)
      pos:
        line_end: 1132
        line_start: 1132
        source_file: /src/unbound/sldns/wire2str.c
    constantsTouched: []
    func_position:
      end: 1163
      start: 1127
    functionDepth: 3
    functionLinenumber: 1127
    functionLinenumberEnd: 1163
    functionName: sldns_wire2str_svcparam_alpn2str
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - assert
    - isprint
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_svcparam_alpn2str(char** s,\n\tsize_t* slen, uint16_t
      data_len, uint8_t* data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/wire2str.c:1171,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1173,1
    - Dst: sldns_b64_ntop
      Src: /src/unbound/sldns/wire2str.c:1175,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - s
    - slen
    - data_len
    - data
    argTypes:
    - char**
    - size_t*
    - uint16_t
    - uint8_t*
    assertStmts:
    - condition: (data_len > 0)
      pos:
        line_end: 1170
        line_start: 1170
        source_file: /src/unbound/sldns/wire2str.c
    constantsTouched: []
    func_position:
      end: 1184
      start: 1165
    functionDepth: 3
    functionLinenumber: 1165
    functionLinenumberEnd: 1184
    functionName: sldns_wire2str_svcparam_ech2str
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_b64_ntop
    - assert
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_svcparam_ech2str(char** s,\n\tsize_t* slen, uint16_t
      data_len, uint8_t* data)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:1197,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:1198,1
    - Dst: sldns_print_svcparamkey
      Src: /src/unbound/sldns/wire2str.c:1206,1
    - Dst: sldns_wire2str_svcparam_port2str
      Src: /src/unbound/sldns/wire2str.c:1225,1
    - Dst: sldns_wire2str_svcparam_ipv4hint2str
      Src: /src/unbound/sldns/wire2str.c:1228,1
    - Dst: sldns_wire2str_svcparam_ipv6hint2str
      Src: /src/unbound/sldns/wire2str.c:1231,1
    - Dst: sldns_wire2str_svcparam_mandatory2str
      Src: /src/unbound/sldns/wire2str.c:1234,1
    - Dst: sldns_wire2str_svcparam_alpn2str
      Src: /src/unbound/sldns/wire2str.c:1239,1
    - Dst: sldns_wire2str_svcparam_ech2str
      Src: /src/unbound/sldns/wire2str.c:1242,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1248,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1254,1
    - Dst: isprint
      Src: /src/unbound/sldns/wire2str.c:1256,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1257,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1260,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1263,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 62
    argCount: 4
    argNames:
    - d
    - dlen
    - s
    - slen
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1273
      start: 1186
    functionDepth: 5
    functionLinenumber: 1186
    functionLinenumberEnd: 1273
    functionName: sldns_wire2str_svcparam_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - isprint
    - sldns_wire2str_svcparam_port2str
    - sldns_wire2str_svcparam_alpn2str
    - sldns_wire2str_svcparam_mandatory2str
    - sldns_wire2str_svcparam_ipv6hint2str
    - sldns_wire2str_svcparam_ipv4hint2str
    - sldns_str_print
    - sldns_print_svcparamkey
    - sldns_read_uint16
    - sldns_wire2str_svcparam_ech2str
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_svcparam_scan(uint8_t** d, size_t* dlen, char**
      s, size_t* slen)
  - BBCount: 41
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_dname_scan
      Src: /src/unbound/sldns/wire2str.c:1283,1
    - Dst: sldns_wire2str_int8_scan
      Src: /src/unbound/sldns/wire2str.c:1285,1
    - Dst: sldns_wire2str_int16_scan
      Src: /src/unbound/sldns/wire2str.c:1287,1
    - Dst: sldns_wire2str_int32_scan
      Src: /src/unbound/sldns/wire2str.c:1289,1
    - Dst: sldns_wire2str_period_scan
      Src: /src/unbound/sldns/wire2str.c:1291,1
    - Dst: sldns_wire2str_tsigtime_scan
      Src: /src/unbound/sldns/wire2str.c:1293,1
    - Dst: sldns_wire2str_a_scan
      Src: /src/unbound/sldns/wire2str.c:1295,1
    - Dst: sldns_wire2str_aaaa_scan
      Src: /src/unbound/sldns/wire2str.c:1297,1
    - Dst: sldns_wire2str_str_scan
      Src: /src/unbound/sldns/wire2str.c:1299,1
    - Dst: sldns_wire2str_apl_scan
      Src: /src/unbound/sldns/wire2str.c:1301,1
    - Dst: sldns_wire2str_b32_ext_scan
      Src: /src/unbound/sldns/wire2str.c:1303,1
    - Dst: sldns_wire2str_b64_scan
      Src: /src/unbound/sldns/wire2str.c:1305,1
    - Dst: sldns_wire2str_hex_scan
      Src: /src/unbound/sldns/wire2str.c:1307,1
    - Dst: sldns_wire2str_nsec_scan
      Src: /src/unbound/sldns/wire2str.c:1309,1
    - Dst: sldns_wire2str_nsec3_salt_scan
      Src: /src/unbound/sldns/wire2str.c:1311,1
    - Dst: sldns_wire2str_type_scan
      Src: /src/unbound/sldns/wire2str.c:1313,1
    - Dst: sldns_wire2str_class_scan
      Src: /src/unbound/sldns/wire2str.c:1315,1
    - Dst: sldns_wire2str_cert_alg_scan
      Src: /src/unbound/sldns/wire2str.c:1317,1
    - Dst: sldns_wire2str_alg_scan
      Src: /src/unbound/sldns/wire2str.c:1319,1
    - Dst: sldns_wire2str_unknown_scan
      Src: /src/unbound/sldns/wire2str.c:1321,1
    - Dst: sldns_wire2str_time_scan
      Src: /src/unbound/sldns/wire2str.c:1323,1
    - Dst: sldns_wire2str_loc_scan
      Src: /src/unbound/sldns/wire2str.c:1325,1
    - Dst: sldns_wire2str_wks_scan
      Src: /src/unbound/sldns/wire2str.c:1328,1
    - Dst: sldns_wire2str_nsap_scan
      Src: /src/unbound/sldns/wire2str.c:1330,1
    - Dst: sldns_wire2str_atma_scan
      Src: /src/unbound/sldns/wire2str.c:1332,1
    - Dst: sldns_wire2str_ipseckey_scan
      Src: /src/unbound/sldns/wire2str.c:1334,1
    - Dst: sldns_wire2str_hip_scan
      Src: /src/unbound/sldns/wire2str.c:1337,1
    - Dst: sldns_wire2str_int16_data_scan
      Src: /src/unbound/sldns/wire2str.c:1339,1
    - Dst: sldns_wire2str_b32_ext_scan
      Src: /src/unbound/sldns/wire2str.c:1341,1
    - Dst: sldns_wire2str_ilnp64_scan
      Src: /src/unbound/sldns/wire2str.c:1343,1
    - Dst: sldns_wire2str_eui48_scan
      Src: /src/unbound/sldns/wire2str.c:1345,1
    - Dst: sldns_wire2str_eui64_scan
      Src: /src/unbound/sldns/wire2str.c:1347,1
    - Dst: sldns_wire2str_unquoted_scan
      Src: /src/unbound/sldns/wire2str.c:1349,1
    - Dst: sldns_wire2str_tag_scan
      Src: /src/unbound/sldns/wire2str.c:1351,1
    - Dst: sldns_wire2str_long_str_scan
      Src: /src/unbound/sldns/wire2str.c:1353,1
    - Dst: sldns_wire2str_svcparam_scan
      Src: /src/unbound/sldns/wire2str.c:1355,1
    - Dst: sldns_wire2str_tsigerror_scan
      Src: /src/unbound/sldns/wire2str.c:1357,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 83
    argCount: 8
    argNames:
    - d
    - dlen
    - s
    - slen
    - rdftype
    - pkt
    - pktlen
    - comprloop
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    - int
    - uint8_t*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1361
      start: 1275
    functionDepth: 6
    functionLinenumber: 1275
    functionLinenumberEnd: 1361
    functionName: sldns_wire2str_rdf_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - sldns_wire2str_unquoted_scan
    - sldns_wire2str_unknown_scan
    - sldns_wire2str_tag_scan
    - sldns_wire2str_tsigtime_scan
    - sldns_wire2str_type_scan
    - sldns_wire2str_tsigerror_scan
    - sldns_wire2str_loc_scan
    - sldns_wire2str_eui48_scan
    - sldns_wire2str_time_scan
    - sldns_wire2str_a_scan
    - sldns_wire2str_b64_scan
    - sldns_wire2str_long_str_scan
    - sldns_wire2str_int32_scan
    - sldns_wire2str_aaaa_scan
    - sldns_wire2str_apl_scan
    - sldns_wire2str_svcparam_scan
    - sldns_wire2str_str_scan
    - sldns_wire2str_int16_scan
    - sldns_wire2str_int16_data_scan
    - sldns_wire2str_nsec_scan
    - sldns_wire2str_b32_ext_scan
    - sldns_wire2str_int8_scan
    - sldns_wire2str_ipseckey_scan
    - sldns_wire2str_atma_scan
    - sldns_wire2str_cert_alg_scan
    - sldns_wire2str_alg_scan
    - sldns_wire2str_hex_scan
    - sldns_wire2str_class_scan
    - sldns_wire2str_hip_scan
    - sldns_wire2str_nsap_scan
    - sldns_wire2str_eui64_scan
    - sldns_wire2str_period_scan
    - sldns_wire2str_nsec3_salt_scan
    - sldns_wire2str_wks_scan
    - sldns_wire2str_ilnp64_scan
    - sldns_wire2str_dname_scan
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_rdf_scan(uint8_t** d, size_t* dlen, char** s, size_t*
      slen,\n\tint rdftype, uint8_t* pkt, size_t pktlen, int* comprloop)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1367,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1371
      start: 1363
    functionDepth: 3
    functionLinenumber: 1363
    functionLinenumberEnd: 1371
    functionName: sldns_wire2str_int8_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_int8_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1377,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:1377,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1381
      start: 1373
    functionDepth: 3
    functionLinenumber: 1373
    functionLinenumberEnd: 1381
    functionName: sldns_wire2str_int16_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - sldns_read_uint16
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_int16_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1387,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/sldns/wire2str.c:1387,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1391
      start: 1383
    functionDepth: 3
    functionLinenumber: 1383
    functionLinenumberEnd: 1391
    functionName: sldns_wire2str_int32_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - sldns_read_uint32
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_int32_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1397,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/sldns/wire2str.c:1397,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1401
      start: 1393
    functionDepth: 3
    functionLinenumber: 1393
    functionLinenumberEnd: 1401
    functionName: sldns_wire2str_period_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - sldns_read_uint32
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_period_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1418,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1420,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1425
      start: 1403
    functionDepth: 3
    functionLinenumber: 1403
    functionLinenumberEnd: 1425
    functionName: sldns_wire2str_tsigtime_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_tsigtime_scan(uint8_t** d, size_t* dl, char** s,
      size_t* sl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/unbound/sldns/wire2str.c:1432,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1434,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1438
      start: 1427
    functionDepth: 3
    functionLinenumber: 1427
    functionLinenumberEnd: 1438
    functionName: sldns_wire2str_a_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - inet_ntop
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_a_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/unbound/sldns/wire2str.c:1446,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1448,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1455
      start: 1440
    functionDepth: 3
    functionLinenumber: 1440
    functionLinenumberEnd: 1455
    functionName: sldns_wire2str_aaaa_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - inet_ntop
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_aaaa_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isprint
      Src: /src/unbound/sldns/wire2str.c:1460,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1462,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1470,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - s
    - sl
    - c
    argTypes:
    - char**
    - size_t*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1471
      start: 1458
    functionDepth: 3
    functionLinenumber: 1458
    functionLinenumberEnd: 1471
    functionName: str_char_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - isprint
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int str_char_print(char** s, size_t* sl, uint8_t c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1482,1
    - Dst: str_char_print
      Src: /src/unbound/sldns/wire2str.c:1484,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1485,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1489
      start: 1473
    functionDepth: 4
    functionLinenumber: 1473
    functionLinenumberEnd: 1489
    functionName: sldns_wire2str_str_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - sldns_str_print
    - str_char_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_str_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:1497,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1505,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1506,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1512,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1514,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1515,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1522,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1524,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1525,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1528,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1532
      start: 1491
    functionDepth: 3
    functionLinenumber: 1491
    functionLinenumberEnd: 1532
    functionName: sldns_wire2str_apl_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - sldns_read_uint16
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_apl_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_b32_ntop_calculate_size
      Src: /src/unbound/sldns/wire2str.c:1541,1
    - Dst: sldns_b32_ntop_extended_hex
      Src: /src/unbound/sldns/wire2str.c:1548,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1554
      start: 1534
    functionDepth: 1
    functionLinenumber: 1534
    functionLinenumberEnd: 1554
    functionName: sldns_wire2str_b32_ext_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - sldns_b32_ntop_extended_hex
    - sldns_b32_ntop_calculate_size
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_b32_ext_scan(uint8_t** d, size_t* dl, char** s,
      size_t* sl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_b64_ntop_calculate_size
      Src: /src/unbound/sldns/wire2str.c:1561,1
    - Dst: sldns_b64_ntop
      Src: /src/unbound/sldns/wire2str.c:1568,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - d
    - dl
    - s
    - sl
    - num
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1557
    functionDepth: 1
    functionLinenumber: 1557
    functionLinenumberEnd: 1574
    functionName: sldns_wire2str_b64_scan_num
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_b64_ntop
    - sldns_b64_ntop_calculate_size
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_b64_scan_num(uint8_t** d, size_t* dl, char** s,\n\tsize_t*
      sl, size_t num)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1579,1
    - Dst: sldns_wire2str_b64_scan_num
      Src: /src/unbound/sldns/wire2str.c:1581,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1582
      start: 1576
    functionDepth: 3
    functionLinenumber: 1576
    functionLinenumberEnd: 1582
    functionName: sldns_wire2str_b64_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - sldns_wire2str_b64_scan_num
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_b64_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1587,1
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:1589,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1590
      start: 1584
    functionDepth: 5
    functionLinenumber: 1584
    functionLinenumberEnd: 1590
    functionName: sldns_wire2str_hex_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - print_remainder_hex
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_hex_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1624,1
    - Dst: sldns_wire2str_type_print
      Src: /src/unbound/sldns/wire2str.c:1625,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1636
      start: 1592
    functionDepth: 4
    functionLinenumber: 1592
    functionLinenumberEnd: 1636
    functionName: sldns_wire2str_nsec_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - sldns_wire2str_type_print
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_nsec_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1648,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:1650,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1654
      start: 1638
    functionDepth: 4
    functionLinenumber: 1638
    functionLinenumberEnd: 1654
    functionName: sldns_wire2str_nsec3_salt_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - print_hex_buf
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_nsec3_salt_scan(uint8_t** d, size_t* dl, char**
      s, size_t* sl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:1661,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/sldns/wire2str.c:1662,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1664,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1665,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1669
      start: 1656
    functionDepth: 3
    functionLinenumber: 1656
    functionLinenumberEnd: 1669
    functionName: sldns_wire2str_cert_alg_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - sldns_read_uint16
    - sldns_lookup_by_id
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_cert_alg_scan(uint8_t** d, size_t* dl, char** s,
      size_t* sl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_int8_scan
      Src: /src/unbound/sldns/wire2str.c:1675,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1676
      start: 1671
    functionDepth: 4
    functionLinenumber: 1671
    functionLinenumberEnd: 1676
    functionName: sldns_wire2str_alg_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - sldns_wire2str_int8_scan
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_alg_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_rdata_unknown_scan
      Src: /src/unbound/sldns/wire2str.c:1680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1681
      start: 1678
    functionDepth: 5
    functionLinenumber: 1678
    functionLinenumberEnd: 1681
    functionName: sldns_wire2str_unknown_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - sldns_wire2str_rdata_unknown_scan
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_unknown_scan(uint8_t** d, size_t* dl, char** s,
      size_t* sl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/sldns/wire2str.c:1689,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/sldns/wire2str.c:1691,1
    - Dst: sldns_serial_arithmetics_gmtime_r
      Src: /src/unbound/sldns/wire2str.c:1693,1
    - Dst: time
      Src: /src/unbound/sldns/wire2str.c:1693,1
    - Dst: strftime
      Src: /src/unbound/sldns/wire2str.c:1694,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1697,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1700
      start: 1683
    functionDepth: 3
    functionLinenumber: 1683
    functionLinenumberEnd: 1700
    functionName: sldns_wire2str_time_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - strftime
    - time
    - sldns_str_print
    - sldns_serial_arithmetics_gmtime_r
    - memset
    - sldns_read_uint32
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_time_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1711,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1714,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1716,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - str
    - sl
    - mantissa
    - exponent
    argTypes:
    - char**
    - size_t*
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1718
      start: 1702
    functionDepth: 3
    functionLinenumber: 1702
    functionLinenumberEnd: 1718
    functionName: loc_cm_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int loc_cm_print(char** str, size_t* sl, uint8_t mantissa, uint8_t
      exponent)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_hex_scan
      Src: /src/unbound/sldns/wire2str.c:1741,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/sldns/wire2str.c:1746,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/sldns/wire2str.c:1747,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/sldns/wire2str.c:1748,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1762,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1777,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1784,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1786,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1788,1
    - Dst: loc_cm_print
      Src: /src/unbound/sldns/wire2str.c:1790,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1791,1
    - Dst: loc_cm_print
      Src: /src/unbound/sldns/wire2str.c:1793,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1795,1
    - Dst: loc_cm_print
      Src: /src/unbound/sldns/wire2str.c:1797,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1799,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 53
    argCount: 4
    argNames:
    - d
    - dl
    - str
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1804
      start: 1720
    functionDepth: 6
    functionLinenumber: 1720
    functionLinenumberEnd: 1804
    functionName: sldns_wire2str_loc_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - loc_cm_print
    - sldns_read_uint32
    - sldns_str_print
    - sldns_wire2str_hex_scan
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_loc_scan(uint8_t** d, size_t* dl, char** str, size_t*
      sl)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: getprotobynumber
      Src: /src/unbound/sldns/wire2str.c:1825,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1827,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1830,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1832,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1834,1
    - Dst: getservbyport
      Src: /src/unbound/sldns/wire2str.c:1848,1
    - Dst: htons
      Src: /src/unbound/sldns/wire2str.c:1849,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1851,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1853,1
    - Dst: endservent
      Src: /src/unbound/sldns/wire2str.c:1859,1
    - Dst: endprotoent
      Src: /src/unbound/sldns/wire2str.c:1862,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 39
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1867
      start: 1806
    functionDepth: 3
    functionLinenumber: 1806
    functionLinenumberEnd: 1867
    functionName: sldns_wire2str_wks_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - endprotoent
    - getservbyport
    - getprotobynumber
    - htons
    - endservent
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_wks_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:1871,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1872
      start: 1869
    functionDepth: 5
    functionLinenumber: 1869
    functionLinenumberEnd: 1872
    functionName: sldns_wire2str_nsap_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - print_remainder_hex
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_nsap_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:1887,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1890,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1894,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1903
      start: 1874
    functionDepth: 5
    functionLinenumber: 1874
    functionLinenumberEnd: 1903
    functionName: sldns_wire2str_atma_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - print_remainder_hex
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_atma_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1921,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1926,1
    - Dst: sldns_wire2str_a_scan
      Src: /src/unbound/sldns/wire2str.c:1929,1
    - Dst: sldns_wire2str_aaaa_scan
      Src: /src/unbound/sldns/wire2str.c:1932,1
    - Dst: sldns_wire2str_dname_scan
      Src: /src/unbound/sldns/wire2str.c:1935,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1943,1
    - Dst: sldns_wire2str_b64_scan_num
      Src: /src/unbound/sldns/wire2str.c:1944,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 7
    argNames:
    - d
    - dl
    - s
    - sl
    - pkt
    - pktlen
    - comprloop
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    - uint8_t*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1946
      start: 1906
    functionDepth: 5
    functionLinenumber: 1906
    functionLinenumberEnd: 1946
    functionName: sldns_wire2str_ipseckey_scan_internal
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_b64_scan_num
    - sldns_wire2str_a_scan
    - sldns_wire2str_aaaa_scan
    - sldns_str_print
    - sldns_wire2str_dname_scan
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_ipseckey_scan_internal(uint8_t** d, size_t* dl,\n\tchar**
      s, size_t* sl, uint8_t* pkt, size_t pktlen, int* comprloop)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_ipseckey_scan_internal
      Src: /src/unbound/sldns/wire2str.c:1954,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 7
    argNames:
    - d
    - dl
    - s
    - sl
    - pkt
    - pktlen
    - comprloop
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    - uint8_t*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1963
      start: 1948
    functionDepth: 6
    functionLinenumber: 1948
    functionLinenumberEnd: 1963
    functionName: sldns_wire2str_ipseckey_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - sldns_wire2str_ipseckey_scan_internal
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_ipseckey_scan(uint8_t** d, size_t* dl, char** s,
      size_t* sl,\n\tuint8_t* pkt, size_t pktlen, int* comprloop)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:1976,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1981,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:1982,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:1983,1
    - Dst: sldns_wire2str_b64_scan_num
      Src: /src/unbound/sldns/wire2str.c:1986,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1988
      start: 1965
    functionDepth: 4
    functionLinenumber: 1965
    functionLinenumberEnd: 1988
    functionName: sldns_wire2str_hip_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - print_hex_buf
    - sldns_read_uint16
    - sldns_wire2str_b64_scan_num
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_hip_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:1996,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2002,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2004,1
    - Dst: sldns_wire2str_b64_scan_num
      Src: /src/unbound/sldns/wire2str.c:2005,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2007
      start: 1990
    functionDepth: 3
    functionLinenumber: 1990
    functionLinenumberEnd: 2007
    functionName: sldns_wire2str_int16_data_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - sldns_read_uint16
    - sldns_wire2str_b64_scan_num
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_int16_data_scan(uint8_t** d, size_t* dl, char**
      s, size_t* sl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_b32_ext_scan
      Src: /src/unbound/sldns/wire2str.c:2012,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2013
      start: 2009
    functionDepth: 2
    functionLinenumber: 2009
    functionLinenumberEnd: 2013
    functionName: sldns_wire2str_nsec3_next_owner_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_b32_ext_scan
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_nsec3_next_owner_scan(uint8_t** d, size_t* dl,
      char** s,\n\tsize_t* sl)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2020,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:2021,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:2021,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:2022,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:2022,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2026
      start: 2015
    functionDepth: 3
    functionLinenumber: 2015
    functionLinenumberEnd: 2026
    functionName: sldns_wire2str_ilnp64_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - sldns_read_uint16
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_ilnp64_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2033,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2038
      start: 2028
    functionDepth: 3
    functionLinenumber: 2028
    functionLinenumberEnd: 2038
    functionName: sldns_wire2str_eui48_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_eui48_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2045,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2051
      start: 2040
    functionDepth: 3
    functionLinenumber: 2040
    functionLinenumberEnd: 2051
    functionName: sldns_wire2str_eui64_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_eui64_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/sldns/wire2str.c:2063,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2065,1
    - Dst: str_char_print
      Src: /src/unbound/sldns/wire2str.c:2066,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2071
      start: 2053
    functionDepth: 4
    functionLinenumber: 2053
    functionLinenumberEnd: 2071
    functionName: sldns_wire2str_unquoted_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - isspace
    - sldns_str_print
    - str_char_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_unquoted_scan(uint8_t** d, size_t* dl, char** s,
      size_t* sl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isalnum
      Src: /src/unbound/sldns/wire2str.c:2083,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2086,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2090
      start: 2073
    functionDepth: 3
    functionLinenumber: 2073
    functionLinenumberEnd: 2090
    functionName: sldns_wire2str_tag_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - isalnum
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_tag_scan(uint8_t** d, size_t* dl, char** s, size_t*
      sl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2096,1
    - Dst: str_char_print
      Src: /src/unbound/sldns/wire2str.c:2098,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2099,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2103
      start: 2092
    functionDepth: 4
    functionLinenumber: 2092
    functionLinenumberEnd: 2103
    functionName: sldns_wire2str_long_str_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - sldns_str_print
    - str_char_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_long_str_scan(uint8_t** d, size_t* dl, char** s,
      size_t* sl)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:2110,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/sldns/wire2str.c:2111,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2113,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2114,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - d
    - dl
    - s
    - sl
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2118
      start: 2105
    functionDepth: 3
    functionLinenumber: 2105
    functionLinenumberEnd: 2118
    functionName: sldns_wire2str_tsigerror_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 2
    functionsReached:
    - sldns_read_uint16
    - sldns_lookup_by_id
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: int sldns_wire2str_tsigerror_scan(uint8_t** d, size_t* dl, char** s,
      size_t* sl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2136,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:2137,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:2140,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:2141,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:2142,1
    - Dst: memmove
      Src: /src/unbound/sldns/wire2str.c:2143,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/sldns/wire2str.c:2144,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2147,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2149,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2150,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2152,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2153,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2155,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2158,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 4
    argNames:
    - s
    - sl
    - data
    - len
    argTypes:
    - char**
    - size_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2162
      start: 2120
    functionDepth: 4
    functionLinenumber: 2120
    functionLinenumberEnd: 2162
    functionName: sldns_wire2str_edns_llq_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - memmove
    - sldns_str_print
    - print_hex_buf
    - sldns_read_uint16
    - sldns_read_uint32
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_edns_llq_print(char** s, size_t* sl, uint8_t* data,\n\tsize_t
      len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2170,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:2171,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/sldns/wire2str.c:2174,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - s
    - sl
    - data
    - len
    argTypes:
    - char**
    - size_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2177
      start: 2164
    functionDepth: 4
    functionLinenumber: 2164
    functionLinenumberEnd: 2177
    functionName: sldns_wire2str_edns_ul_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - print_hex_buf
    - sldns_read_uint32
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_edns_ul_print(char** s, size_t* sl, uint8_t* data,\n\tsize_t
      len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:2184,1
    - Dst: isprint
      Src: /src/unbound/sldns/wire2str.c:2186,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2188,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2191,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2195,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - s
    - sl
    - data
    - len
    argTypes:
    - char**
    - size_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2197
      start: 2179
    functionDepth: 4
    functionLinenumber: 2179
    functionLinenumberEnd: 2197
    functionName: sldns_wire2str_edns_nsid_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - print_hex_buf
    - isprint
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_edns_nsid_print(char** s, size_t* sl, uint8_t*
      data,\n\tsize_t len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/sldns/wire2str.c:2206,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2208,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2209,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - s
    - sl
    - data
    - len
    argTypes:
    - char**
    - size_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2212
      start: 2199
    functionDepth: 3
    functionLinenumber: 2199
    functionLinenumberEnd: 2212
    functionName: sldns_wire2str_edns_dau_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - sldns_lookup_by_id
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_edns_dau_print(char** s, size_t* sl, uint8_t* data,\n\tsize_t
      len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/sldns/wire2str.c:2221,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2223,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2224,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - s
    - sl
    - data
    - len
    argTypes:
    - char**
    - size_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2227
      start: 2214
    functionDepth: 3
    functionLinenumber: 2214
    functionLinenumberEnd: 2227
    functionName: sldns_wire2str_edns_dhu_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - sldns_lookup_by_id
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_edns_dhu_print(char** s, size_t* sl, uint8_t* data,\n\tsize_t
      len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2236,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2237,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - s
    - sl
    - data
    - len
    argTypes:
    - char**
    - size_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2240
      start: 2229
    functionDepth: 3
    functionLinenumber: 2229
    functionLinenumberEnd: 2240
    functionName: sldns_wire2str_edns_n3u_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_edns_n3u_print(char** s, size_t* sl, uint8_t* data,\n\tsize_t
      len)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2249,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:2250,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:2253,1
    - Dst: memset
      Src: /src/unbound/sldns/wire2str.c:2260,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2262,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:2263,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2264,1
    - Dst: memmove
      Src: /src/unbound/sldns/wire2str.c:2267,1
    - Dst: inet_ntop
      Src: /src/unbound/sldns/wire2str.c:2268,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2269,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:2270,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2272,1
    - Dst: memset
      Src: /src/unbound/sldns/wire2str.c:2278,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2280,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:2281,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2282,1
    - Dst: memmove
      Src: /src/unbound/sldns/wire2str.c:2285,1
    - Dst: inet_ntop
      Src: /src/unbound/sldns/wire2str.c:2287,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2288,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:2289,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2291,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:2294,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2298,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:2300,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2302,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 47
    argCount: 4
    argNames:
    - s
    - sl
    - data
    - len
    argTypes:
    - char**
    - size_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2304
      start: 2242
    functionDepth: 4
    functionLinenumber: 2242
    functionLinenumberEnd: 2304
    functionName: sldns_wire2str_edns_subnet_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - inet_ntop
    - memmove
    - sldns_str_print
    - print_hex_buf
    - memset
    - sldns_read_uint16
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_edns_subnet_print(char** s, size_t* sl, uint8_t*
      data,\n\tsize_t len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2312,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:2313,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2317,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:2319,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2320,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - s
    - sl
    - data
    - len
    argTypes:
    - char**
    - size_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2323
      start: 2306
    functionDepth: 4
    functionLinenumber: 2306
    functionLinenumberEnd: 2323
    functionName: sldns_wire2str_edns_keepalive_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - print_hex_buf
    - sldns_read_uint16
    - sldns_str_print
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_edns_keepalive_print(char** s, size_t* sl,\n\tuint8_t*
      data, size_t len)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2335,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:2336,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:2340,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/sldns/wire2str.c:2341,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2343,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2344,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2349,1
    - Dst: isprint
      Src: /src/unbound/sldns/wire2str.c:2354,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2360,1
    - Dst: str_char_print
      Src: /src/unbound/sldns/wire2str.c:2362,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2364,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:2366,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 4
    argNames:
    - s
    - sl
    - data
    - len
    argTypes:
    - char**
    - size_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2369
      start: 2325
    functionDepth: 4
    functionLinenumber: 2325
    functionLinenumberEnd: 2369
    functionName: sldns_wire2str_edns_ede_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - isprint
    - str_char_print
    - sldns_str_print
    - print_hex_buf
    - sldns_read_uint16
    - sldns_lookup_by_id
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_edns_ede_print(char** s, size_t* sl,\n\tuint8_t*
      data, size_t len)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_edns_option_code_print
      Src: /src/unbound/sldns/wire2str.c:2375,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2376,1
    - Dst: sldns_wire2str_edns_llq_print
      Src: /src/unbound/sldns/wire2str.c:2379,1
    - Dst: sldns_wire2str_edns_ul_print
      Src: /src/unbound/sldns/wire2str.c:2382,1
    - Dst: sldns_wire2str_edns_nsid_print
      Src: /src/unbound/sldns/wire2str.c:2385,1
    - Dst: sldns_wire2str_edns_dau_print
      Src: /src/unbound/sldns/wire2str.c:2388,1
    - Dst: sldns_wire2str_edns_dhu_print
      Src: /src/unbound/sldns/wire2str.c:2391,1
    - Dst: sldns_wire2str_edns_n3u_print
      Src: /src/unbound/sldns/wire2str.c:2394,1
    - Dst: sldns_wire2str_edns_subnet_print
      Src: /src/unbound/sldns/wire2str.c:2397,1
    - Dst: sldns_wire2str_edns_keepalive_print
      Src: /src/unbound/sldns/wire2str.c:2400,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:2403,1
    - Dst: sldns_wire2str_edns_ede_print
      Src: /src/unbound/sldns/wire2str.c:2406,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:2410,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 39
    argCount: 5
    argNames:
    - s
    - sl
    - option_code
    - optdata
    - optlen
    argTypes:
    - char**
    - size_t*
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2414
      start: 2371
    functionDepth: 5
    functionLinenumber: 2371
    functionLinenumberEnd: 2414
    functionName: sldns_wire2str_edns_option_print
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_edns_keepalive_print
    - sldns_wire2str_edns_option_code_print
    - sldns_wire2str_edns_n3u_print
    - sldns_wire2str_edns_dau_print
    - sldns_wire2str_edns_ede_print
    - sldns_wire2str_edns_dhu_print
    - sldns_wire2str_edns_ul_print
    - sldns_wire2str_edns_nsid_print
    - sldns_wire2str_edns_llq_print
    - sldns_str_print
    - print_hex_buf
    - sldns_wire2str_edns_subnet_print
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_edns_option_print(char** s, size_t* sl,\n\tuint16_t
      option_code, uint8_t* optdata, size_t optlen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2425,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:2426,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:2429,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:2430,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2436,1
    - Dst: sldns_wire2str_edns_option_code_print
      Src: /src/unbound/sldns/wire2str.c:2437,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2439,1
    - Dst: print_hex_buf
      Src: /src/unbound/sldns/wire2str.c:2440,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2443,1
    - Dst: sldns_wire2str_edns_option_print
      Src: /src/unbound/sldns/wire2str.c:2444,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 4
    argNames:
    - s
    - sl
    - rdata
    - rdatalen
    argTypes:
    - char**
    - size_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2450
      start: 2417
    functionDepth: 6
    functionLinenumber: 2417
    functionLinenumberEnd: 2450
    functionName: print_edns_opts
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_edns_option_code_print
    - sldns_str_print
    - print_hex_buf
    - sldns_read_uint16
    - sldns_wire2str_edns_option_print
    linkageType: ''
    returnType: int
    signature: int print_edns_opts(char** s, size_t* sl, uint8_t* rdata, size_t rdatalen)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2458,1
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:2462,1
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:2465,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:2472,1
    - Dst: print_remainder_hex
      Src: /src/unbound/sldns/wire2str.c:2473,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:2476,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:2479,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/wire2str.c:2480,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2484,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2486,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2488,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2490,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/sldns/wire2str.c:2496,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2497,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2499,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2503,1
    - Dst: print_edns_opts
      Src: /src/unbound/sldns/wire2str.c:2507,1
    - Dst: sldns_str_print
      Src: /src/unbound/sldns/wire2str.c:2511,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 42
    argCount: 6
    argNames:
    - data
    - data_len
    - str
    - str_len
    - pkt
    - pktlen
    argTypes:
    - uint8_t**
    - size_t*
    - char**
    - size_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2513
      start: 2452
    functionDepth: 7
    functionLinenumber: 2452
    functionLinenumberEnd: 2513
    functionName: sldns_wire2str_edns_scan
    functionSourceFile: /src/unbound/sldns/wire2str.c
    functionUses: 1
    functionsReached:
    - print_remainder_hex
    - LDNS_RCODE_WIRE
    - print_edns_opts
    - sldns_str_print
    - sldns_read_uint16
    linkageType: ''
    returnType: int
    signature: "int sldns_wire2str_edns_scan(uint8_t** data, size_t* data_len, char**
      str,\n        size_t* str_len, uint8_t* pkt, size_t pktlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/unbound/sldns/parseutil.c:25,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - table
    - name
    argTypes:
    - sldns_lookup_table*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 30
    functionName: sldns_lookup_by_name
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 4
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: sldns_lookup_table
    signature: 'sldns_lookup_table *

      sldns_lookup_by_name(sldns_lookup_table *table, const char *name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - table
    - id
    argTypes:
    - sldns_lookup_table*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 41
    functionName: sldns_lookup_by_id
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: sldns_lookup_table
    signature: 'sldns_lookup_table *

      sldns_lookup_by_id(sldns_lookup_table *table, int id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: LDNS_MOD
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_MOD(x,y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: LDNS_DIV
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_DIV(x,y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_MOD
      Src: /src/unbound/sldns/parseutil.c:54,1
    - Dst: LDNS_MOD
      Src: /src/unbound/sldns/parseutil.c:54,1
    - Dst: LDNS_MOD
      Src: /src/unbound/sldns/parseutil.c:55,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 1
    argNames:
    - year
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 56
    functionName: is_leap_year
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached:
    - LDNS_MOD
    linkageType: ''
    returnType: int
    signature: int is_leap_year(int year)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_DIV
      Src: /src/unbound/sldns/parseutil.c:63,1
    - Dst: LDNS_DIV
      Src: /src/unbound/sldns/parseutil.c:63,1
    - Dst: LDNS_DIV
      Src: /src/unbound/sldns/parseutil.c:64,1
    - Dst: LDNS_DIV
      Src: /src/unbound/sldns/parseutil.c:64,1
    - Dst: LDNS_DIV
      Src: /src/unbound/sldns/parseutil.c:65,1
    - Dst: LDNS_DIV
      Src: /src/unbound/sldns/parseutil.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - y1
    - y2
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 58
    functionDepth: 1
    functionLinenumber: 58
    functionLinenumberEnd: 66
    functionName: leap_days
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached:
    - LDNS_DIV
    linkageType: ''
    returnType: int
    signature: int leap_days(int y1, int y2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: leap_days
      Src: /src/unbound/sldns/parseutil.c:75,1
    - Dst: is_leap_year
      Src: /src/unbound/sldns/parseutil.c:84,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - tm
    argTypes:
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 71
    functionDepth: 2
    functionLinenumber: 71
    functionLinenumberEnd: 94
    functionName: sldns_mktime_from_utc
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 1
    functionsReached:
    - is_leap_year
    - leap_days
    linkageType: ''
    returnType: time_t
    signature: time_t sldns_mktime_from_utc(const struct tm *tm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: is_leap_year
      Src: /src/unbound/sldns/parseutil.c:104,1
    - Dst: LDNS_DIV
      Src: /src/unbound/sldns/parseutil.c:105,1
    - Dst: leap_days
      Src: /src/unbound/sldns/parseutil.c:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - days
    - result
    argTypes:
    - int64_t
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 112
    functionName: sldns_year_and_yday_from_days_since_epoch
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached:
    - LDNS_DIV
    - is_leap_year
    - leap_days
    linkageType: ''
    returnType: void
    signature: void sldns_year_and_yday_from_days_since_epoch(int64_t days, struct
      tm *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: is_leap_year
      Src: /src/unbound/sldns/parseutil.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 119
    functionDepth: 2
    functionLinenumber: 119
    functionLinenumberEnd: 131
    functionName: sldns_mon_and_mday_from_year_and_yday
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached:
    - is_leap_year
    linkageType: ''
    returnType: void
    signature: void sldns_mon_and_mday_from_year_and_yday(struct tm *result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_MOD
      Src: /src/unbound/sldns/parseutil.c:137,1
    - Dst: LDNS_MOD
      Src: /src/unbound/sldns/parseutil.c:137,1
    - Dst: leap_days
      Src: /src/unbound/sldns/parseutil.c:138,1
    - Dst: LDNS_MOD
      Src: /src/unbound/sldns/parseutil.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 133
    functionDepth: 2
    functionLinenumber: 133
    functionLinenumberEnd: 144
    functionName: sldns_wday_from_year_and_yday
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached:
    - leap_days
    - LDNS_MOD
    linkageType: ''
    returnType: void
    signature: void sldns_wday_from_year_and_yday(struct tm *result)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_MOD
      Src: /src/unbound/sldns/parseutil.c:150,1
    - Dst: LDNS_DIV
      Src: /src/unbound/sldns/parseutil.c:151,1
    - Dst: LDNS_MOD
      Src: /src/unbound/sldns/parseutil.c:152,1
    - Dst: LDNS_DIV
      Src: /src/unbound/sldns/parseutil.c:153,1
    - Dst: LDNS_MOD
      Src: /src/unbound/sldns/parseutil.c:154,1
    - Dst: LDNS_DIV
      Src: /src/unbound/sldns/parseutil.c:155,1
    - Dst: sldns_year_and_yday_from_days_since_epoch
      Src: /src/unbound/sldns/parseutil.c:157,1
    - Dst: sldns_mon_and_mday_from_year_and_yday
      Src: /src/unbound/sldns/parseutil.c:158,1
    - Dst: sldns_wday_from_year_and_yday
      Src: /src/unbound/sldns/parseutil.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 2
    argNames:
    - clock
    - result
    argTypes:
    - int64_t
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 146
    functionDepth: 3
    functionLinenumber: 146
    functionLinenumberEnd: 163
    functionName: sldns_gmtime64_r
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached:
    - sldns_year_and_yday_from_days_since_epoch
    - sldns_mon_and_mday_from_year_and_yday
    - sldns_wday_from_year_and_yday
    - LDNS_DIV
    - LDNS_MOD
    linkageType: ''
    returnType: struct tm
    signature: 'struct tm *

      sldns_gmtime64_r(int64_t clock, struct tm *result)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - time
    - now
    argTypes:
    - int32_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 172
    functionName: sldns_serial_arithmetics_time
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int64_t
    signature: int64_t sldns_serial_arithmetics_time(int32_t time, time_t now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_serial_arithmetics_time
      Src: /src/unbound/sldns/parseutil.c:178,1
    - Dst: sldns_gmtime64_r
      Src: /src/unbound/sldns/parseutil.c:179,1
    - Dst: sldns_serial_arithmetics_time
      Src: /src/unbound/sldns/parseutil.c:181,1
    - Dst: gmtime_r
      Src: /src/unbound/sldns/parseutil.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - time
    - now
    - result
    argTypes:
    - int32_t
    - time_t
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 174
    functionDepth: 4
    functionLinenumber: 174
    functionLinenumberEnd: 184
    functionName: sldns_serial_arithmetics_gmtime_r
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 1
    functionsReached:
    - sldns_serial_arithmetics_time
    - gmtime_r
    - sldns_gmtime64_r
    linkageType: ''
    returnType: struct tm
    signature: 'struct tm *

      sldns_serial_arithmetics_gmtime_r(int32_t time, time_t now, struct tm *result)'
  - BBCount: 24
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 43
    argCount: 1
    argNames:
    - ch
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 186
    functionDepth: 0
    functionLinenumber: 186
    functionLinenumberEnd: 209
    functionName: sldns_hexdigit_to_int
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sldns_hexdigit_to_int(char ch)
  - BBCount: 36
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 98
    argCount: 3
    argNames:
    - nptr
    - endptr
    - overflow
    argTypes:
    - char*
    - char**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 318
    functionName: sldns_str2period
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t sldns_str2period(const char *nptr, const char **endptr, int*
      overflow)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/unbound/sldns/parseutil.c:325,1
    - Dst: isdigit
      Src: /src/unbound/sldns/parseutil.c:326,1
    - Dst: isdigit
      Src: /src/unbound/sldns/parseutil.c:327,1
    - Dst: isdigit
      Src: /src/unbound/sldns/parseutil.c:340,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 2
    argNames:
    - ch_p
    - str_p
    argTypes:
    - uint8_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 348
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 348
    functionName: sldns_parse_escape
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 1
    functionsReached:
    - isdigit
    linkageType: ''
    returnType: int
    signature: int sldns_parse_escape(uint8_t *ch_p, const char** str_p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_parse_escape
      Src: /src/unbound/sldns/parseutil.c:359,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - ch_p
    - str_p
    argTypes:
    - uint8_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 364
    functionName: sldns_parse_char
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 3
    functionsReached:
    - sldns_parse_escape
    linkageType: ''
    returnType: int
    signature: int sldns_parse_char(uint8_t *ch_p, const char** str_p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - src_data_length
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 366
    functionDepth: 0
    functionLinenumber: 366
    functionLinenumberEnd: 369
    functionName: sldns_b32_ntop_calculate_size
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sldns_b32_ntop_calculate_size(size_t src_data_length)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - src_data_length
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 374
      start: 371
    functionDepth: 0
    functionLinenumber: 371
    functionLinenumberEnd: 374
    functionName: sldns_b32_ntop_calculate_size_no_padding
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sldns_b32_ntop_calculate_size_no_padding(size_t src_data_length)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_b32_ntop_calculate_size
      Src: /src/unbound/sldns/parseutil.c:389,1
    - Dst: sldns_b32_ntop_calculate_size_no_padding
      Src: /src/unbound/sldns/parseutil.c:390,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 37
    argCount: 6
    argNames:
    - src
    - src_sz
    - dst
    - dst_sz
    - extended_hex
    - add_padding
    argTypes:
    - uint8_t*
    - size_t
    - char*
    - size_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 376
    functionDepth: 1
    functionLinenumber: 376
    functionLinenumberEnd: 479
    functionName: sldns_b32_ntop_base
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached:
    - sldns_b32_ntop_calculate_size
    - sldns_b32_ntop_calculate_size_no_padding
    linkageType: ''
    returnType: int
    signature: "int sldns_b32_ntop_base(const uint8_t* src, size_t src_sz, char* dst,
      size_t dst_sz,\n\tint extended_hex, int add_padding)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_b32_ntop_base
      Src: /src/unbound/sldns/parseutil.c:484,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - src
    - src_sz
    - dst
    - dst_sz
    argTypes:
    - uint8_t*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 481
    functionDepth: 2
    functionLinenumber: 481
    functionLinenumberEnd: 485
    functionName: sldns_b32_ntop
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached:
    - sldns_b32_ntop_base
    linkageType: ''
    returnType: int
    signature: int sldns_b32_ntop(const uint8_t* src, size_t src_sz, char* dst, size_t
      dst_sz)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_b32_ntop_base
      Src: /src/unbound/sldns/parseutil.c:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - src
    - src_sz
    - dst
    - dst_sz
    argTypes:
    - uint8_t*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 487
    functionDepth: 2
    functionLinenumber: 487
    functionLinenumberEnd: 492
    functionName: sldns_b32_ntop_extended_hex
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 1
    functionsReached:
    - sldns_b32_ntop_base
    linkageType: ''
    returnType: int
    signature: "int sldns_b32_ntop_extended_hex(const uint8_t* src, size_t src_sz,\n\t\tchar*
      dst, size_t dst_sz)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - src_text_length
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 497
    functionName: sldns_b32_pton_calculate_size
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sldns_b32_pton_calculate_size(size_t src_text_length)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/sldns/parseutil.c:516,1
    - Dst: isspace
      Src: /src/unbound/sldns/parseutil.c:627,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 64
    argCount: 6
    argNames:
    - src
    - src_sz
    - dst
    - dst_sz
    - extended_hex
    - check_padding
    argTypes:
    - char*
    - size_t
    - uint8_t*
    - size_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 635
    functionName: sldns_b32_pton_base
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached:
    - isspace
    linkageType: ''
    returnType: int
    signature: "int sldns_b32_pton_base(const char* src, size_t src_sz, uint8_t* dst,
      size_t dst_sz,\n\tint extended_hex, int check_padding)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_b32_pton_base
      Src: /src/unbound/sldns/parseutil.c:640,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - src
    - src_sz
    - dst
    - dst_sz
    argTypes:
    - char*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 637
    functionDepth: 1
    functionLinenumber: 637
    functionLinenumberEnd: 641
    functionName: sldns_b32_pton
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached:
    - sldns_b32_pton_base
    linkageType: ''
    returnType: int
    signature: int sldns_b32_pton(const char* src, size_t src_sz, uint8_t* dst, size_t
      dst_sz)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_b32_pton_base
      Src: /src/unbound/sldns/parseutil.c:647,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - src
    - src_sz
    - dst
    - dst_sz
    argTypes:
    - char*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 648
      start: 643
    functionDepth: 1
    functionLinenumber: 643
    functionLinenumberEnd: 648
    functionName: sldns_b32_pton_extended_hex
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 1
    functionsReached:
    - sldns_b32_pton_base
    linkageType: ''
    returnType: int
    signature: "int sldns_b32_pton_extended_hex(const char* src, size_t src_sz, \n\t\tuint8_t*
      dst, size_t dst_sz)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - srcsize
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 653
      start: 650
    functionDepth: 0
    functionLinenumber: 650
    functionLinenumberEnd: 653
    functionName: sldns_b64_ntop_calculate_size
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sldns_b64_ntop_calculate_size(size_t srcsize)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: sldns_b64_ntop_calculate_size
      Src: /src/unbound/sldns/parseutil.c:677,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 47
    argCount: 6
    argNames:
    - src
    - srclength
    - target
    - targsize
    - base64url
    - padding
    argTypes:
    - uint8_t*
    - size_t
    - char*
    - size_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 665
    functionDepth: 1
    functionLinenumber: 665
    functionLinenumberEnd: 726
    functionName: sldns_b64_ntop_base
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached:
    - sldns_b64_ntop_calculate_size
    linkageType: ''
    returnType: int
    signature: "int sldns_b64_ntop_base(uint8_t const *src, size_t srclength,\n\tchar
      *target, size_t targsize, int base64url, int padding)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_b64_ntop_base
      Src: /src/unbound/sldns/parseutil.c:731,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - src
    - srclength
    - target
    - targsize
    argTypes:
    - uint8_t*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 728
    functionDepth: 2
    functionLinenumber: 728
    functionLinenumberEnd: 733
    functionName: sldns_b64_ntop
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 2
    functionsReached:
    - sldns_b64_ntop_base
    linkageType: ''
    returnType: int
    signature: "int sldns_b64_ntop(uint8_t const *src, size_t srclength, char *target,\n\tsize_t
      targsize)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_b64_ntop_base
      Src: /src/unbound/sldns/parseutil.c:738,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - src
    - srclength
    - target
    - targsize
    argTypes:
    - uint8_t*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 735
    functionDepth: 2
    functionLinenumber: 735
    functionLinenumberEnd: 740
    functionName: sldns_b64url_ntop
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached:
    - sldns_b64_ntop_base
    linkageType: ''
    returnType: int
    signature: "int sldns_b64url_ntop(uint8_t const *src, size_t srclength, char *target,\n\tsize_t
      targsize)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - srcsize
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 742
    functionDepth: 0
    functionLinenumber: 742
    functionLinenumberEnd: 745
    functionName: sldns_b64_pton_calculate_size
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sldns_b64_pton_calculate_size(size_t srcsize)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/parseutil.c:792,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 52
    argCount: 5
    argNames:
    - src
    - srcsize
    - target
    - targsize
    - base64url
    argTypes:
    - char*
    - size_t
    - uint8_t*
    - size_t
    - int
    assertStmts:
    - condition: (!check_padding || incount==4)
      pos:
        line_end: 791
        line_start: 791
        source_file: /src/unbound/sldns/parseutil.c
    constantsTouched: []
    func_position:
      end: 821
      start: 748
    functionDepth: 0
    functionLinenumber: 748
    functionLinenumberEnd: 821
    functionName: sldns_b64_pton_base
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: int
    signature: "int sldns_b64_pton_base(char const *src, size_t srcsize, uint8_t *target,\n\tsize_t
      targsize, int base64url)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_b64_pton_base
      Src: /src/unbound/sldns/parseutil.c:825,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - src
    - target
    - targsize
    argTypes:
    - char*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 823
    functionDepth: 1
    functionLinenumber: 823
    functionLinenumberEnd: 826
    functionName: sldns_b64_pton
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 3
    functionsReached:
    - sldns_b64_pton_base
    linkageType: ''
    returnType: int
    signature: int sldns_b64_pton(char const *src, uint8_t *target, size_t targsize)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_b64_pton_base
      Src: /src/unbound/sldns/parseutil.c:834,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - src
    - srcsize
    - target
    - targsize
    argTypes:
    - char*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 828
    functionDepth: 1
    functionLinenumber: 828
    functionLinenumberEnd: 835
    functionName: sldns_b64url_pton
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached:
    - sldns_b64_pton_base
    linkageType: ''
    returnType: int
    signature: "int sldns_b64url_pton(char const *src, size_t srcsize, uint8_t *target,\n\tsize_t
      targsize)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - src
    - srcsize
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 850
      start: 837
    functionDepth: 0
    functionLinenumber: 837
    functionLinenumberEnd: 850
    functionName: sldns_b64_contains_nonurl
    functionSourceFile: /src/unbound/sldns/parseutil.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int sldns_b64_contains_nonurl(char const *src, size_t srcsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_fget_token_l
      Src: /src/unbound/sldns/parse.c:29,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - f
    - token
    - delim
    - limit
    argTypes:
    - FILE*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 30
      start: 26
    functionDepth: 1
    functionLinenumber: 26
    functionLinenumberEnd: 30
    functionName: sldns_fget_token
    functionSourceFile: /src/unbound/sldns/parse.c
    functionUses: 0
    functionsReached:
    - sldns_fget_token_l
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t sldns_fget_token(FILE *f, char *token, const char *delim, size_t
      limit)
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: getc
      Src: /src/unbound/sldns/parse.c:61,1
    - Dst: sldns_fskipcs_l
      Src: /src/unbound/sldns/parse.c:216,1
    - Dst: sldns_fskipcs_l
      Src: /src/unbound/sldns/parse.c:217,1
    CyclomaticComplexity: 71
    EdgeCount: 71
    ICount: 145
    argCount: 5
    argNames:
    - f
    - token
    - delim
    - limit
    - line_nr
    argTypes:
    - FILE*
    - char*
    - char*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 32
    functionDepth: 1
    functionLinenumber: 32
    functionLinenumberEnd: 224
    functionName: sldns_fget_token_l
    functionSourceFile: /src/unbound/sldns/parse.c
    functionUses: 2
    functionsReached:
    - getc
    - sldns_fskipcs_l
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t sldns_fget_token_l(FILE *f, char *token, const char *delim,
      size_t limit, int *line_nr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_fget_keyword_data_l
      Src: /src/unbound/sldns/parse.c:230,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - f
    - keyword
    - k_del
    - data
    - d_del
    - data_limit
    argTypes:
    - FILE*
    - char*
    - char*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 232
    functionName: sldns_fget_keyword_data
    functionSourceFile: /src/unbound/sldns/parse.c
    functionUses: 0
    functionsReached:
    - sldns_fget_keyword_data_l
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t sldns_fget_keyword_data(FILE *f, const char *keyword, const
      char *k_del, char *data,\n               const char *d_del, size_t data_limit)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/sldns/parse.c:242,1
    - Dst: malloc
      Src: /src/unbound/sldns/parse.c:244,1
    - Dst: sldns_fget_token
      Src: /src/unbound/sldns/parse.c:248,1
    - Dst: free
      Src: /src/unbound/sldns/parse.c:250,1
    - Dst: strncmp
      Src: /src/unbound/sldns/parse.c:255,1
    - Dst: sldns_fget_token_l
      Src: /src/unbound/sldns/parse.c:258,1
    - Dst: free
      Src: /src/unbound/sldns/parse.c:259,1
    - Dst: free
      Src: /src/unbound/sldns/parse.c:263,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 7
    argNames:
    - f
    - keyword
    - k_del
    - data
    - d_del
    - data_limit
    - line_nr
    argTypes:
    - FILE*
    - char*
    - char*
    - char*
    - char*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 266
    functionName: sldns_fget_keyword_data_l
    functionSourceFile: /src/unbound/sldns/parse.c
    functionUses: 1
    functionsReached:
    - strncmp
    - sldns_fget_token
    - sldns_fget_token_l
    - malloc
    - free
    - strlen
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t sldns_fget_keyword_data_l(FILE *f, const char *keyword, const
      char *k_del, char *data,\n               const char *d_del, size_t data_limit,
      int *line_nr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_available_at
      Src: /src/unbound/sldns/parse.c:271,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/sldns/parse.c:272,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/sldns/parse.c:272,1
    - Dst: sldns_buffer_read_u8
      Src: /src/unbound/sldns/parse.c:276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 268
    functionDepth: 1
    functionLinenumber: 268
    functionLinenumberEnd: 277
    functionName: sldns_bgetc
    functionSourceFile: /src/unbound/sldns/parse.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_set_position
    - sldns_buffer_read_u8
    - sldns_buffer_available_at
    - sldns_buffer_limit
    linkageType: ''
    returnType: int
    signature: int sldns_bgetc(sldns_buffer *buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_bget_token_par
      Src: /src/unbound/sldns/parse.c:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - b
    - token
    - delim
    - limit
    argTypes:
    - sldns_buffer*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 279
    functionDepth: 1
    functionLinenumber: 279
    functionLinenumberEnd: 283
    functionName: sldns_bget_token
    functionSourceFile: /src/unbound/sldns/parse.c
    functionUses: 9
    functionsReached:
    - sldns_bget_token_par
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t sldns_bget_token(sldns_buffer *b, char *token, const char *delim,
      size_t limit)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: sldns_bgetc
      Src: /src/unbound/sldns/parse.c:315,1
    - Dst: strchr
      Src: /src/unbound/sldns/parse.c:371,1
    - Dst: strchr
      Src: /src/unbound/sldns/parse.c:371,1
    - Dst: strchr
      Src: /src/unbound/sldns/parse.c:385,1
    - Dst: sldns_bskipcs
      Src: /src/unbound/sldns/parse.c:426,1
    - Dst: sldns_bskipcs
      Src: /src/unbound/sldns/parse.c:427,1
    CyclomaticComplexity: 61
    EdgeCount: 61
    ICount: 112
    argCount: 6
    argNames:
    - b
    - token
    - delim
    - limit
    - par
    - skipw
    argTypes:
    - sldns_buffer*
    - char*
    - char*
    - size_t
    - int*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 285
    functionDepth: 2
    functionLinenumber: 285
    functionLinenumberEnd: 434
    functionName: sldns_bget_token_par
    functionSourceFile: /src/unbound/sldns/parse.c
    functionUses: 3
    functionsReached:
    - strchr
    - sldns_bskipcs
    - sldns_bgetc
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t sldns_bget_token_par(sldns_buffer *b, char *token, const char
      *delim,\n\tsize_t limit, int* par, const char* skipw)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_available_at
      Src: /src/unbound/sldns/parse.c:444,1
    - Dst: sldns_buffer_read_u8_at
      Src: /src/unbound/sldns/parse.c:445,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - buffer
    - s
    argTypes:
    - sldns_buffer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 437
    functionDepth: 1
    functionLinenumber: 437
    functionLinenumberEnd: 458
    functionName: sldns_bskipcs
    functionSourceFile: /src/unbound/sldns/parse.c
    functionUses: 1
    functionsReached:
    - sldns_buffer_available_at
    - sldns_buffer_read_u8_at
    linkageType: ''
    returnType: void
    signature: void sldns_bskipcs(sldns_buffer *buffer, const char *s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_fskipcs_l
      Src: /src/unbound/sldns/parse.c:463,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - fp
    - s
    argTypes:
    - FILE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 464
    functionName: sldns_fskipcs
    functionSourceFile: /src/unbound/sldns/parse.c
    functionUses: 0
    functionsReached:
    - sldns_fskipcs_l
    linkageType: ''
    returnType: void
    signature: void sldns_fskipcs(FILE *fp, const char *s)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fgetc
      Src: /src/unbound/sldns/parse.c:473,1
    - Dst: ungetc
      Src: /src/unbound/sldns/parse.c:485,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - fp
    - s
    - line_nr
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 466
    functionDepth: 0
    functionLinenumber: 466
    functionLinenumberEnd: 489
    functionName: sldns_fskipcs_l
    functionSourceFile: /src/unbound/sldns/parse.c
    functionUses: 2
    functionsReached:
    - fgetc
    - ungetc
    linkageType: ''
    returnType: void
    signature: void sldns_fskipcs_l(FILE *fp, const char *s, int *line_nr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/sldns/parse.c:499,1
    - Dst: malloc
      Src: /src/unbound/sldns/parse.c:501,1
    - Dst: sldns_bget_token
      Src: /src/unbound/sldns/parse.c:505,1
    - Dst: free
      Src: /src/unbound/sldns/parse.c:507,1
    - Dst: strncmp
      Src: /src/unbound/sldns/parse.c:512,1
    - Dst: strlen
      Src: /src/unbound/sldns/parse.c:512,1
    - Dst: free
      Src: /src/unbound/sldns/parse.c:513,1
    - Dst: sldns_bget_token
      Src: /src/unbound/sldns/parse.c:516,1
    - Dst: free
      Src: /src/unbound/sldns/parse.c:519,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 6
    argNames:
    - b
    - keyword
    - k_del
    - data
    - d_del
    - data_limit
    argTypes:
    - sldns_buffer*
    - char*
    - char*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 491
    functionDepth: 2
    functionLinenumber: 491
    functionLinenumberEnd: 522
    functionName: sldns_bget_keyword_data
    functionSourceFile: /src/unbound/sldns/parse.c
    functionUses: 0
    functionsReached:
    - strncmp
    - sldns_bget_token
    - malloc
    - free
    - strlen
    linkageType: ''
    returnType: ssize_t
    signature: 'ssize_t sldns_bget_keyword_data(sldns_buffer *b, const char *keyword,
      const char *k_del, char

      *data, const char *d_del, size_t data_limit)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 32
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 32
    functionName: LDNS_RD_WIRE
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_RD_WIRE(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 33
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 33
    functionName: LDNS_RD_SET
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_RD_SET(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: LDNS_RD_CLR
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_RD_CLR(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 37
    functionDepth: 0
    functionLinenumber: 37
    functionLinenumberEnd: 38
    functionName: LDNS_TC_WIRE
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_TC_WIRE(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: LDNS_TC_SET
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_TC_SET(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 40
      start: 39
    functionDepth: 0
    functionLinenumber: 39
    functionLinenumberEnd: 40
    functionName: LDNS_TC_CLR
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_TC_CLR(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: LDNS_AA_WIRE
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_AA_WIRE(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 45
    functionName: LDNS_AA_SET
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_AA_SET(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: LDNS_AA_CLR
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_AA_CLR(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: LDNS_OPCODE_WIRE
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_OPCODE_WIRE(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - wirebuf
    - ','
    - opcode
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 52
    functionName: LDNS_OPCODE_SET
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_OPCODE_SET(wirebuf, opcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 56
    functionName: LDNS_QR_WIRE
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_QR_WIRE(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 57
    functionName: LDNS_QR_SET
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_QR_SET(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: LDNS_QR_CLR
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_QR_CLR(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: LDNS_RCODE_WIRE
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_RCODE_WIRE(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - wirebuf
    - ','
    - rcode
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 65
    functionName: LDNS_RCODE_SET
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_RCODE_SET(wirebuf, rcode)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 69
    functionName: LDNS_CD_WIRE
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_CD_WIRE(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: LDNS_CD_SET
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_CD_SET(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: LDNS_CD_CLR
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_CD_CLR(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 75
    functionName: LDNS_AD_WIRE
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_AD_WIRE(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 76
    functionName: LDNS_AD_SET
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_AD_SET(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 77
    functionName: LDNS_AD_CLR
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_AD_CLR(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    functionName: LDNS_Z_WIRE
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_Z_WIRE(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 82
    functionName: LDNS_Z_SET
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_Z_SET(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: LDNS_Z_CLR
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_Z_CLR(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 87
    functionName: LDNS_RA_WIRE
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_RA_WIRE(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 88
    functionName: LDNS_RA_SET
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_RA_SET(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    functionName: LDNS_RA_CLR
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_RA_CLR(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: LDNS_ID_WIRE
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_ID_WIRE(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - wirebuf
    - ','
    - id
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 93
    functionName: LDNS_ID_SET
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_ID_SET(wirebuf, id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 100
    functionName: LDNS_QDCOUNT
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_QDCOUNT(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - wirebuf
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 101
    functionName: LDNS_QDCOUNT_SET
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_QDCOUNT_SET(wirebuf, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: LDNS_ANCOUNT
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_ANCOUNT(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - wirebuf
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 106
    functionName: LDNS_ANCOUNT_SET
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_ANCOUNT_SET(wirebuf, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 110
    functionName: LDNS_NSCOUNT
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_NSCOUNT(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - wirebuf
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 111
    functionName: LDNS_NSCOUNT_SET
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_NSCOUNT_SET(wirebuf, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - wirebuf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 114
    functionDepth: 0
    functionLinenumber: 114
    functionLinenumberEnd: 115
    functionName: LDNS_ARCOUNT
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_ARCOUNT(wirebuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - wirebuf
    - ','
    - i
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 115
    functionDepth: 0
    functionLinenumber: 115
    functionLinenumberEnd: 116
    functionName: LDNS_ARCOUNT_SET
    functionSourceFile: /src/unbound/sldns/pkthdr.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_ARCOUNT_SET(wirebuf, i)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 191
    functionName: LDNS_WIREPARSE_ERROR
    functionSourceFile: /src/unbound/sldns/str2wire.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_WIREPARSE_ERROR(e)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - e
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 192
    functionName: LDNS_WIREPARSE_OFFSET
    functionSourceFile: /src/unbound/sldns/str2wire.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LDNS_WIREPARSE_OFFSET(e)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/sldns/keyraw.c:74,1
    - Dst: ntohs
      Src: /src/unbound/sldns/keyraw.c:75,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 52
    argCount: 3
    argNames:
    - keydata
    - len
    - alg
    argTypes:
    - unsigned char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 41
    functionDepth: 1
    functionLinenumber: 41
    functionLinenumberEnd: 117
    functionName: sldns_rr_dnskey_key_size_raw
    functionSourceFile: /src/unbound/sldns/keyraw.c
    functionUses: 1
    functionsReached:
    - ntohs
    - memmove
    linkageType: ''
    returnType: size_t
    signature: "size_t sldns_rr_dnskey_key_size_raw(const unsigned char* keydata,\n\tconst
      size_t len, int alg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/sldns/keyraw.c:128,1
    - Dst: ntohs
      Src: /src/unbound/sldns/keyraw.c:130,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - key
    - keysize
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 141
    functionName: sldns_calc_keytag_raw
    functionSourceFile: /src/unbound/sldns/keyraw.c
    functionUses: 1
    functionsReached:
    - ntohs
    - memmove
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t sldns_calc_keytag_raw(uint8_t* key, size_t keysize)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: EVP_PKEY_asn1_find_str
      Src: /src/unbound/sldns/keyraw.c:158,1
    - Dst: EVP_PKEY_asn1_get0_info
      Src: /src/unbound/sldns/keyraw.c:160,1
    - Dst: ENGINE_by_id
      Src: /src/unbound/sldns/keyraw.c:165,1
    - Dst: ENGINE_load_builtin_engines
      Src: /src/unbound/sldns/keyraw.c:168,1
    - Dst: ENGINE_load_dynamic
      Src: /src/unbound/sldns/keyraw.c:169,1
    - Dst: ENGINE_by_id
      Src: /src/unbound/sldns/keyraw.c:170,1
    - Dst: ENGINE_set_default
      Src: /src/unbound/sldns/keyraw.c:176,1
    - Dst: ENGINE_finish
      Src: /src/unbound/sldns/keyraw.c:177,1
    - Dst: ENGINE_free
      Src: /src/unbound/sldns/keyraw.c:178,1
    - Dst: EVP_PKEY_asn1_find_str
      Src: /src/unbound/sldns/keyraw.c:182,1
    - Dst: ENGINE_finish
      Src: /src/unbound/sldns/keyraw.c:185,1
    - Dst: ENGINE_free
      Src: /src/unbound/sldns/keyraw.c:186,1
    - Dst: EVP_PKEY_asn1_get0_info
      Src: /src/unbound/sldns/keyraw.c:193,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 195
    functionName: sldns_key_EVP_load_gost_id
    functionSourceFile: /src/unbound/sldns/keyraw.c
    functionUses: 1
    functionsReached:
    - ENGINE_load_builtin_engines
    - EVP_PKEY_asn1_find_str
    - ENGINE_finish
    - ENGINE_load_dynamic
    - ENGINE_set_default
    - ENGINE_free
    - ENGINE_by_id
    - EVP_PKEY_asn1_get0_info
    linkageType: ''
    returnType: int
    signature: int sldns_key_EVP_load_gost_id(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ENGINE_finish
      Src: /src/unbound/sldns/keyraw.c:200,1
    - Dst: ENGINE_free
      Src: /src/unbound/sldns/keyraw.c:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 204
    functionName: sldns_key_EVP_unload_gost
    functionSourceFile: /src/unbound/sldns/keyraw.c
    functionUses: 1
    functionsReached:
    - ENGINE_finish
    - ENGINE_free
    linkageType: ''
    returnType: void
    signature: void sldns_key_EVP_unload_gost(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: BN_bin2bn
      Src: /src/unbound/sldns/keyraw.c:229,1
    - Dst: BN_bin2bn
      Src: /src/unbound/sldns/keyraw.c:232,1
    - Dst: BN_bin2bn
      Src: /src/unbound/sldns/keyraw.c:235,1
    - Dst: BN_bin2bn
      Src: /src/unbound/sldns/keyraw.c:238,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:241,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:242,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:243,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:244,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 6
    argNames:
    - key
    - len
    - p
    - q
    - g
    - y
    argTypes:
    - unsigned char*
    - size_t
    - BIGNUM**
    - BIGNUM**
    - BIGNUM**
    - BIGNUM**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 248
    functionName: sldns_key_dsa_buf_bignum
    functionSourceFile: /src/unbound/sldns/keyraw.c
    functionUses: 0
    functionsReached:
    - BN_free
    - BN_bin2bn
    linkageType: ''
    returnType: int
    signature: "int sldns_key_dsa_buf_bignum(unsigned char* key, size_t len, BIGNUM**
      p,\n\tBIGNUM** q, BIGNUM** g, BIGNUM** y)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_key_dsa_buf_bignum
      Src: /src/unbound/sldns/keyraw.c:256,1
    - Dst: DSA_new
      Src: /src/unbound/sldns/keyraw.c:260,1
    - Dst: DSA_set0_pqg
      Src: /src/unbound/sldns/keyraw.c:273,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:275,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:276,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:277,1
    - Dst: DSA_free
      Src: /src/unbound/sldns/keyraw.c:279,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:280,1
    - Dst: DSA_set0_key
      Src: /src/unbound/sldns/keyraw.c:283,1
    - Dst: DSA_free
      Src: /src/unbound/sldns/keyraw.c:285,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:286,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - key
    - len
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 292
    functionName: sldns_key_buf2dsa_raw
    functionSourceFile: /src/unbound/sldns/keyraw.c
    functionUses: 0
    functionsReached:
    - DSA_set0_pqg
    - BN_free
    - DSA_new
    - DSA_free
    - sldns_key_dsa_buf_bignum
    - DSA_set0_key
    linkageType: ''
    returnType: DSA
    signature: 'DSA *

      sldns_key_buf2dsa_raw(unsigned char* key, size_t len)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: sldns_key_dsa_buf_bignum
      Src: /src/unbound/sldns/keyraw.c:303,1
    - Dst: OSSL_PARAM_BLD_new
      Src: /src/unbound/sldns/keyraw.c:307,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:309,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:310,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:311,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:312,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/unbound/sldns/keyraw.c:315,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/unbound/sldns/keyraw.c:316,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/unbound/sldns/keyraw.c:317,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/unbound/sldns/keyraw.c:318,1
    - Dst: OSSL_PARAM_BLD_free
      Src: /src/unbound/sldns/keyraw.c:319,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:320,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:321,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:322,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:323,1
    - Dst: OSSL_PARAM_BLD_to_param
      Src: /src/unbound/sldns/keyraw.c:326,1
    - Dst: OSSL_PARAM_BLD_free
      Src: /src/unbound/sldns/keyraw.c:327,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/unbound/sldns/keyraw.c:329,1
    - Dst: OSSL_PARAM_free
      Src: /src/unbound/sldns/keyraw.c:331,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:332,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:333,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:334,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:335,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/unbound/sldns/keyraw.c:338,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/unbound/sldns/keyraw.c:339,1
    - Dst: OSSL_PARAM_free
      Src: /src/unbound/sldns/keyraw.c:340,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:341,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:342,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:343,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:344,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/unbound/sldns/keyraw.c:347,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/unbound/sldns/keyraw.c:348,1
    - Dst: OSSL_PARAM_free
      Src: /src/unbound/sldns/keyraw.c:349,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:350,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:351,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:352,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:353,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/unbound/sldns/keyraw.c:357,1
    - Dst: OSSL_PARAM_free
      Src: /src/unbound/sldns/keyraw.c:358,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:359,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:360,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:361,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:362,1
    - Dst: EVP_PKEY_new
      Src: /src/unbound/sldns/keyraw.c:366,1
    - Dst: sldns_key_buf2dsa_raw
      Src: /src/unbound/sldns/keyraw.c:370,1
    - Dst: EVP_PKEY_free
      Src: /src/unbound/sldns/keyraw.c:372,1
    - Dst: EVP_PKEY_assign_DSA
      Src: /src/unbound/sldns/keyraw.c:375,1
    - Dst: DSA_free
      Src: /src/unbound/sldns/keyraw.c:376,1
    - Dst: EVP_PKEY_free
      Src: /src/unbound/sldns/keyraw.c:377,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 70
    argCount: 2
    argNames:
    - key
    - len
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 382
    functionName: sldns_key_dsa2pkey_raw
    functionSourceFile: /src/unbound/sldns/keyraw.c
    functionUses: 0
    functionsReached:
    - EVP_PKEY_free
    - OSSL_PARAM_BLD_new
    - OSSL_PARAM_free
    - OSSL_PARAM_BLD_free
    - EVP_PKEY_fromdata_init
    - BN_free
    - EVP_PKEY_fromdata
    - EVP_PKEY_new
    - sldns_key_buf2dsa_raw
    - DSA_free
    - sldns_key_dsa_buf_bignum
    - OSSL_PARAM_BLD_push_BN
    - OSSL_PARAM_BLD_to_param
    - EVP_PKEY_CTX_free
    - EVP_PKEY_assign_DSA
    - EVP_PKEY_CTX_new_from_name
    linkageType: ''
    returnType: EVP_PKEY
    signature: EVP_PKEY *sldns_key_dsa2pkey_raw(unsigned char* key, size_t len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/sldns/keyraw.c:399,1
    - Dst: ntohs
      Src: /src/unbound/sldns/keyraw.c:400,1
    - Dst: BN_new
      Src: /src/unbound/sldns/keyraw.c:412,1
    - Dst: BN_bin2bn
      Src: /src/unbound/sldns/keyraw.c:414,1
    - Dst: BN_new
      Src: /src/unbound/sldns/keyraw.c:418,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:420,1
    - Dst: BN_bin2bn
      Src: /src/unbound/sldns/keyraw.c:424,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 4
    argNames:
    - key
    - len
    - n
    - e
    argTypes:
    - unsigned char*
    - size_t
    - BIGNUM**
    - BIGNUM**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 386
    functionDepth: 1
    functionLinenumber: 386
    functionLinenumberEnd: 426
    functionName: sldns_key_rsa_buf_bignum
    functionSourceFile: /src/unbound/sldns/keyraw.c
    functionUses: 0
    functionsReached:
    - BN_new
    - BN_bin2bn
    - memmove
    - BN_free
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int sldns_key_rsa_buf_bignum(unsigned char* key, size_t len, BIGNUM**
      n,\n\tBIGNUM** e)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_key_rsa_buf_bignum
      Src: /src/unbound/sldns/keyraw.c:435,1
    - Dst: RSA_new
      Src: /src/unbound/sldns/keyraw.c:437,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:439,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:440,1
    - Dst: RSA_set0_key
      Src: /src/unbound/sldns/keyraw.c:451,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:452,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:453,1
    - Dst: RSA_free
      Src: /src/unbound/sldns/keyraw.c:454,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - key
    - len
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 429
    functionDepth: 2
    functionLinenumber: 429
    functionLinenumberEnd: 460
    functionName: sldns_key_buf2rsa_raw
    functionSourceFile: /src/unbound/sldns/keyraw.c
    functionUses: 0
    functionsReached:
    - RSA_set0_key
    - BN_free
    - RSA_free
    - RSA_new
    - sldns_key_rsa_buf_bignum
    linkageType: ''
    returnType: RSA
    signature: 'RSA *

      sldns_key_buf2rsa_raw(unsigned char* key, size_t len)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: sldns_key_rsa_buf_bignum
      Src: /src/unbound/sldns/keyraw.c:472,1
    - Dst: OSSL_PARAM_BLD_new
      Src: /src/unbound/sldns/keyraw.c:476,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:478,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:479,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/unbound/sldns/keyraw.c:482,1
    - Dst: OSSL_PARAM_BLD_free
      Src: /src/unbound/sldns/keyraw.c:483,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:484,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:485,1
    - Dst: OSSL_PARAM_BLD_push_BN
      Src: /src/unbound/sldns/keyraw.c:488,1
    - Dst: OSSL_PARAM_BLD_free
      Src: /src/unbound/sldns/keyraw.c:489,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:490,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:491,1
    - Dst: OSSL_PARAM_BLD_to_param
      Src: /src/unbound/sldns/keyraw.c:494,1
    - Dst: OSSL_PARAM_BLD_free
      Src: /src/unbound/sldns/keyraw.c:495,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/unbound/sldns/keyraw.c:497,1
    - Dst: OSSL_PARAM_free
      Src: /src/unbound/sldns/keyraw.c:499,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:500,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:501,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/unbound/sldns/keyraw.c:504,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/unbound/sldns/keyraw.c:505,1
    - Dst: OSSL_PARAM_free
      Src: /src/unbound/sldns/keyraw.c:506,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:507,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:508,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/unbound/sldns/keyraw.c:511,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/unbound/sldns/keyraw.c:512,1
    - Dst: OSSL_PARAM_free
      Src: /src/unbound/sldns/keyraw.c:513,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:514,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:515,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/unbound/sldns/keyraw.c:519,1
    - Dst: OSSL_PARAM_free
      Src: /src/unbound/sldns/keyraw.c:520,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:521,1
    - Dst: BN_free
      Src: /src/unbound/sldns/keyraw.c:522,1
    - Dst: EVP_PKEY_new
      Src: /src/unbound/sldns/keyraw.c:526,1
    - Dst: sldns_key_buf2rsa_raw
      Src: /src/unbound/sldns/keyraw.c:530,1
    - Dst: EVP_PKEY_free
      Src: /src/unbound/sldns/keyraw.c:532,1
    - Dst: EVP_PKEY_assign_RSA
      Src: /src/unbound/sldns/keyraw.c:535,1
    - Dst: RSA_free
      Src: /src/unbound/sldns/keyraw.c:536,1
    - Dst: EVP_PKEY_free
      Src: /src/unbound/sldns/keyraw.c:537,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 64
    argCount: 2
    argNames:
    - key
    - len
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 463
    functionDepth: 3
    functionLinenumber: 463
    functionLinenumberEnd: 542
    functionName: sldns_key_rsa2pkey_raw
    functionSourceFile: /src/unbound/sldns/keyraw.c
    functionUses: 0
    functionsReached:
    - EVP_PKEY_free
    - OSSL_PARAM_BLD_new
    - OSSL_PARAM_free
    - OSSL_PARAM_BLD_free
    - EVP_PKEY_fromdata_init
    - BN_free
    - EVP_PKEY_fromdata
    - EVP_PKEY_new
    - EVP_PKEY_assign_RSA
    - RSA_free
    - sldns_key_buf2rsa_raw
    - OSSL_PARAM_BLD_push_BN
    - OSSL_PARAM_BLD_to_param
    - EVP_PKEY_CTX_free
    - EVP_PKEY_CTX_new_from_name
    - sldns_key_rsa_buf_bignum
    linkageType: ''
    returnType: EVP_PKEY
    signature: EVP_PKEY * sldns_key_rsa2pkey_raw(unsigned char* key, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/sldns/keyraw.c:561,1
    - Dst: memmove
      Src: /src/unbound/sldns/keyraw.c:562,1
    - Dst: d2i_PUBKEY
      Src: /src/unbound/sldns/keyraw.c:565,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - key
    - keylen
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 545
    functionDepth: 1
    functionLinenumber: 545
    functionLinenumberEnd: 566
    functionName: sldns_gost2pkey_raw
    functionSourceFile: /src/unbound/sldns/keyraw.c
    functionUses: 0
    functionsReached:
    - d2i_PUBKEY
    - memmove
    linkageType: ''
    returnType: EVP_PKEY
    signature: 'EVP_PKEY *

      sldns_gost2pkey_raw(unsigned char* key, size_t keylen)'
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/sldns/keyraw.c:596,1
    - Dst: OSSL_PARAM_BLD_new
      Src: /src/unbound/sldns/keyraw.c:598,1
    - Dst: OSSL_PARAM_BLD_push_utf8_string
      Src: /src/unbound/sldns/keyraw.c:602,1
    - Dst: OSSL_PARAM_BLD_push_octet_string
      Src: /src/unbound/sldns/keyraw.c:603,1
    - Dst: OSSL_PARAM_BLD_free
      Src: /src/unbound/sldns/keyraw.c:604,1
    - Dst: OSSL_PARAM_BLD_to_param
      Src: /src/unbound/sldns/keyraw.c:607,1
    - Dst: OSSL_PARAM_BLD_free
      Src: /src/unbound/sldns/keyraw.c:608,1
    - Dst: EVP_PKEY_CTX_new_from_name
      Src: /src/unbound/sldns/keyraw.c:610,1
    - Dst: OSSL_PARAM_free
      Src: /src/unbound/sldns/keyraw.c:612,1
    - Dst: EVP_PKEY_fromdata_init
      Src: /src/unbound/sldns/keyraw.c:615,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/unbound/sldns/keyraw.c:616,1
    - Dst: OSSL_PARAM_free
      Src: /src/unbound/sldns/keyraw.c:617,1
    - Dst: EVP_PKEY_fromdata
      Src: /src/unbound/sldns/keyraw.c:620,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/unbound/sldns/keyraw.c:621,1
    - Dst: OSSL_PARAM_free
      Src: /src/unbound/sldns/keyraw.c:622,1
    - Dst: EVP_PKEY_CTX_free
      Src: /src/unbound/sldns/keyraw.c:625,1
    - Dst: OSSL_PARAM_free
      Src: /src/unbound/sldns/keyraw.c:626,1
    - Dst: EC_KEY_new_by_curve_name
      Src: /src/unbound/sldns/keyraw.c:636,1
    - Dst: EC_KEY_new_by_curve_name
      Src: /src/unbound/sldns/keyraw.c:639,1
    - Dst: EC_KEY_free
      Src: /src/unbound/sldns/keyraw.c:643,1
    - Dst: memmove
      Src: /src/unbound/sldns/keyraw.c:649,1
    - Dst: o2i_ECPublicKey
      Src: /src/unbound/sldns/keyraw.c:650,1
    - Dst: EC_KEY_free
      Src: /src/unbound/sldns/keyraw.c:651,1
    - Dst: EVP_PKEY_new
      Src: /src/unbound/sldns/keyraw.c:654,1
    - Dst: EC_KEY_free
      Src: /src/unbound/sldns/keyraw.c:656,1
    - Dst: EVP_PKEY_assign_EC_KEY
      Src: /src/unbound/sldns/keyraw.c:659,1
    - Dst: EVP_PKEY_free
      Src: /src/unbound/sldns/keyraw.c:660,1
    - Dst: EC_KEY_free
      Src: /src/unbound/sldns/keyraw.c:661,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 80
    argCount: 3
    argNames:
    - key
    - keylen
    - algo
    argTypes:
    - unsigned char*
    - size_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 570
    functionDepth: 1
    functionLinenumber: 570
    functionLinenumberEnd: 666
    functionName: sldns_ecdsa2pkey_raw
    functionSourceFile: /src/unbound/sldns/keyraw.c
    functionUses: 0
    functionsReached:
    - o2i_ECPublicKey
    - OSSL_PARAM_BLD_new
    - EVP_PKEY_free
    - OSSL_PARAM_BLD_push_octet_string
    - EC_KEY_new_by_curve_name
    - memmove
    - EVP_PKEY_assign_EC_KEY
    - OSSL_PARAM_free
    - OSSL_PARAM_BLD_free
    - EVP_PKEY_fromdata_init
    - EVP_PKEY_fromdata
    - EVP_PKEY_new
    - EC_KEY_free
    - OSSL_PARAM_BLD_to_param
    - EVP_PKEY_CTX_free
    - OSSL_PARAM_BLD_push_utf8_string
    - EVP_PKEY_CTX_new_from_name
    linkageType: ''
    returnType: EVP_PKEY
    signature: 'EVP_PKEY *

      sldns_ecdsa2pkey_raw(unsigned char* key, size_t keylen, uint8_t algo)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/sldns/keyraw.c:683,1
    - Dst: memmove
      Src: /src/unbound/sldns/keyraw.c:684,1
    - Dst: d2i_PUBKEY
      Src: /src/unbound/sldns/keyraw.c:685,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - key
    - keylen
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 670
    functionDepth: 1
    functionLinenumber: 670
    functionLinenumberEnd: 687
    functionName: sldns_ed255192pkey_raw
    functionSourceFile: /src/unbound/sldns/keyraw.c
    functionUses: 0
    functionsReached:
    - d2i_PUBKEY
    - memmove
    linkageType: ''
    returnType: EVP_PKEY
    signature: 'EVP_PKEY *

      sldns_ed255192pkey_raw(const unsigned char* key, size_t keylen)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/sldns/keyraw.c:704,1
    - Dst: memmove
      Src: /src/unbound/sldns/keyraw.c:705,1
    - Dst: d2i_PUBKEY
      Src: /src/unbound/sldns/keyraw.c:706,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - key
    - keylen
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 708
    functionName: sldns_ed4482pkey_raw
    functionSourceFile: /src/unbound/sldns/keyraw.c
    functionUses: 0
    functionsReached:
    - d2i_PUBKEY
    - memmove
    linkageType: ''
    returnType: EVP_PKEY
    signature: 'EVP_PKEY *

      sldns_ed4482pkey_raw(const unsigned char* key, size_t keylen)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MD_CTX_create
      Src: /src/unbound/sldns/keyraw.c:716,1
    - Dst: EVP_DigestInit_ex
      Src: /src/unbound/sldns/keyraw.c:719,1
    - Dst: EVP_DigestUpdate
      Src: /src/unbound/sldns/keyraw.c:720,1
    - Dst: EVP_DigestFinal_ex
      Src: /src/unbound/sldns/keyraw.c:721,1
    - Dst: EVP_MD_CTX_destroy
      Src: /src/unbound/sldns/keyraw.c:722,1
    - Dst: EVP_MD_CTX_destroy
      Src: /src/unbound/sldns/keyraw.c:725,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - data
    - len
    - dest
    - md
    argTypes:
    - unsigned char*
    - unsigned int
    - unsigned char*
    - EVP_MD*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 711
    functionDepth: 0
    functionLinenumber: 711
    functionLinenumberEnd: 727
    functionName: sldns_digest_evp
    functionSourceFile: /src/unbound/sldns/keyraw.c
    functionUses: 0
    functionsReached:
    - EVP_DigestFinal_ex
    - EVP_DigestUpdate
    - EVP_DigestInit_ex
    - EVP_MD_CTX_create
    - EVP_MD_CTX_destroy
    linkageType: ''
    returnType: int
    signature: "int sldns_digest_evp(unsigned char* data, unsigned int len, unsigned
      char* dest,\n\tconst EVP_MD* md)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/sldns/sbuffer.h:38,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - src
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 34
    functionDepth: 0
    functionLinenumber: 34
    functionLinenumberEnd: 43
    functionName: sldns_read_uint16
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 33
    functionsReached:
    - ntohs
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_read_uint16(const void *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohl
      Src: /src/unbound/sldns/sbuffer.h:49,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - src
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 57
    functionName: sldns_read_uint32
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 11
    functionsReached:
    - ntohl
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_read_uint32(const void *src)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/unbound/sldns/sbuffer.h:67,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dst
    - data
    argTypes:
    - void*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 73
    functionName: sldns_write_uint16
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 19
    functionsReached:
    - htons
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_write_uint16(void *dst, uint16_t data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/unbound/sldns/sbuffer.h:79,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - dst
    - data
    argTypes:
    - void*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 87
    functionName: sldns_write_uint32
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 6
    functionsReached:
    - htonl
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_write_uint32(void *dst, uint32_t data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - dst
    - data
    argTypes:
    - void*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 100
    functionName: sldns_write_uint48
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_write_uint48(void *dst, uint64_t data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED(buffer)
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 144
    functionName: sldns_buffer_invariant
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_invariant(sldns_buffer *ATTR_UNUSED(buffer))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:149,1
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:150,1
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:151,1
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:152,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - sldns_buffer*
    assertStmts:
    - condition: (buffer != NULL)
      pos:
        line_end: 148
        line_start: 148
        source_file: /src/unbound/sldns/sbuffer.h
    - condition: (buffer->_position <= buffer->_limit)
      pos:
        line_end: 149
        line_start: 149
        source_file: /src/unbound/sldns/sbuffer.h
    - condition: (buffer->_limit <= buffer->_capacity)
      pos:
        line_end: 150
        line_start: 150
        source_file: /src/unbound/sldns/sbuffer.h
    - condition: (buffer->_data != NULL)
      pos:
        line_end: 151
        line_start: 151
        source_file: /src/unbound/sldns/sbuffer.h
    constantsTouched: []
    func_position:
      end: 153
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 153
    functionName: sldns_buffer_invariant
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 5
    functionsReached:
    - assert
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_invariant(sldns_buffer *buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_invariant
      Src: /src/unbound/sldns/sbuffer.h:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 197
    functionName: sldns_buffer_clear
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 4
    functionsReached:
    - sldns_buffer_invariant
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_clear(sldns_buffer *buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_invariant
      Src: /src/unbound/sldns/sbuffer.h:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 212
    functionName: sldns_buffer_flip
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 4
    functionsReached:
    - sldns_buffer_invariant
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_flip(sldns_buffer *buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_invariant
      Src: /src/unbound/sldns/sbuffer.h:221,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 224
    functionName: sldns_buffer_rewind
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 1
    functionsReached:
    - sldns_buffer_invariant
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_rewind(sldns_buffer *buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 235
    functionName: sldns_buffer_position
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_position(sldns_buffer *buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - mark
    argTypes:
    - sldns_buffer*
    - size_t
    assertStmts:
    - condition: (mark <= buffer->_limit)
      pos:
        line_end: 245
        line_start: 245
        source_file: /src/unbound/sldns/sbuffer.h
    constantsTouched: []
    func_position:
      end: 248
      start: 243
    functionDepth: 0
    functionLinenumber: 243
    functionLinenumberEnd: 248
    functionName: sldns_buffer_set_position
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 4
    functionsReached:
    - assert
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_set_position(sldns_buffer *buffer, size_t mark)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:260,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - count
    argTypes:
    - sldns_buffer*
    - ssize_t
    assertStmts:
    - condition: (buffer->_position + count <= buffer->_limit)
      pos:
        line_end: 259
        line_start: 259
        source_file: /src/unbound/sldns/sbuffer.h
    constantsTouched: []
    func_position:
      end: 262
      start: 257
    functionDepth: 0
    functionLinenumber: 257
    functionLinenumberEnd: 262
    functionName: sldns_buffer_skip
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 4
    functionsReached:
    - assert
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_skip(sldns_buffer *buffer, ssize_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 273
    functionName: sldns_buffer_limit
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_limit(sldns_buffer *buffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - buffer
    - limit
    argTypes:
    - sldns_buffer*
    - size_t
    assertStmts:
    - condition: (limit <= buffer->_capacity)
      pos:
        line_end: 283
        line_start: 283
        source_file: /src/unbound/sldns/sbuffer.h
    constantsTouched: []
    func_position:
      end: 288
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 288
    functionName: sldns_buffer_set_limit
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_set_limit(sldns_buffer *buffer, size_t limit)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 299
    functionName: sldns_buffer_capacity
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_capacity(sldns_buffer *buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:332,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - at
    argTypes:
    - sldns_buffer*
    - size_t
    assertStmts:
    - condition: (at <= buffer->_limit)
      pos:
        line_end: 331
        line_start: 331
        source_file: /src/unbound/sldns/sbuffer.h
    constantsTouched: []
    func_position:
      end: 334
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 334
    functionName: sldns_buffer_at
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 0
    functionsReached:
    - assert
    linkageType: ''
    returnType: INLINE
    signature: 'INLINE *

      sldns_buffer_at(const sldns_buffer *buffer, size_t at)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_at
      Src: /src/unbound/sldns/sbuffer.h:345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 346
    functionName: sldns_buffer_begin
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 19
    functionsReached:
    - sldns_buffer_at
    linkageType: ''
    returnType: INLINE
    signature: 'INLINE *

      sldns_buffer_begin(const sldns_buffer *buffer)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_at
      Src: /src/unbound/sldns/sbuffer.h:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 354
    functionDepth: 1
    functionLinenumber: 354
    functionLinenumberEnd: 358
    functionName: sldns_buffer_end
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 0
    functionsReached:
    - sldns_buffer_at
    linkageType: ''
    returnType: INLINE
    signature: 'INLINE *

      sldns_buffer_end(sldns_buffer *buffer)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_at
      Src: /src/unbound/sldns/sbuffer.h:368,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 369
    functionName: sldns_buffer_current
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 5
    functionsReached:
    - sldns_buffer_at
    linkageType: ''
    returnType: INLINE
    signature: 'INLINE *

      sldns_buffer_current(sldns_buffer *buffer)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_invariant
      Src: /src/unbound/sldns/sbuffer.h:381,1
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:382,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - buffer
    - at
    argTypes:
    - sldns_buffer*
    - size_t
    assertStmts:
    - condition: (at <= buffer->_limit)
      pos:
        line_end: 381
        line_start: 381
        source_file: /src/unbound/sldns/sbuffer.h
    constantsTouched: []
    func_position:
      end: 384
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 384
    functionName: sldns_buffer_remaining_at
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 0
    functionsReached:
    - sldns_buffer_invariant
    - assert
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_remaining_at(sldns_buffer *buffer, size_t at)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_remaining_at
      Src: /src/unbound/sldns/sbuffer.h:395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 392
    functionDepth: 2
    functionLinenumber: 392
    functionLinenumberEnd: 396
    functionName: sldns_buffer_remaining
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 5
    functionsReached:
    - sldns_buffer_remaining_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_remaining(sldns_buffer *buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_remaining_at
      Src: /src/unbound/sldns/sbuffer.h:410,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buffer
    - at
    - count
    argTypes:
    - sldns_buffer*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 407
    functionDepth: 2
    functionLinenumber: 407
    functionLinenumberEnd: 411
    functionName: sldns_buffer_available_at
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 2
    functionsReached:
    - sldns_buffer_remaining_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_available_at(sldns_buffer *buffer, size_t at, size_t
      count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_available_at
      Src: /src/unbound/sldns/sbuffer.h:422,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - count
    argTypes:
    - sldns_buffer*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 423
      start: 419
    functionDepth: 3
    functionLinenumber: 419
    functionLinenumberEnd: 423
    functionName: sldns_buffer_available
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 1
    functionsReached:
    - sldns_buffer_available_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_available(sldns_buffer *buffer, size_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:435,1
    - Dst: sldns_buffer_available_at
      Src: /src/unbound/sldns/sbuffer.h:435,1
    - Dst: memcpy
      Src: /src/unbound/sldns/sbuffer.h:436,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - buffer
    - at
    - data
    - count
    argTypes:
    - sldns_buffer*
    - size_t
    - void*
    - size_t
    assertStmts:
    - condition: (sldns_buffer_available_at(buffer, at, count))
      pos:
        line_end: 434
        line_start: 434
        source_file: /src/unbound/sldns/sbuffer.h
    constantsTouched: []
    func_position:
      end: 437
      start: 432
    functionDepth: 3
    functionLinenumber: 432
    functionLinenumberEnd: 437
    functionName: sldns_buffer_write_at
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 0
    functionsReached:
    - assert
    - memcpy
    - sldns_buffer_available_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_write_at(sldns_buffer *buffer, size_t at, const
      void *data, size_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:450,1
    - Dst: sldns_buffer_available_at
      Src: /src/unbound/sldns/sbuffer.h:450,1
    - Dst: memset
      Src: /src/unbound/sldns/sbuffer.h:451,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - buffer
    - at
    - c
    - count
    argTypes:
    - sldns_buffer*
    - size_t
    - int
    - size_t
    assertStmts:
    - condition: (sldns_buffer_available_at(buffer, at, count))
      pos:
        line_end: 449
        line_start: 449
        source_file: /src/unbound/sldns/sbuffer.h
    constantsTouched: []
    func_position:
      end: 452
      start: 447
    functionDepth: 3
    functionLinenumber: 447
    functionLinenumberEnd: 452
    functionName: sldns_buffer_set_at
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 0
    functionsReached:
    - memset
    - assert
    - sldns_buffer_available_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_set_at(sldns_buffer *buffer, size_t at, int c,
      size_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_write_at
      Src: /src/unbound/sldns/sbuffer.h:464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - buffer
    - data
    - count
    argTypes:
    - sldns_buffer*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 461
    functionDepth: 4
    functionLinenumber: 461
    functionLinenumberEnd: 466
    functionName: sldns_buffer_write
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 2
    functionsReached:
    - sldns_buffer_write_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_write(sldns_buffer *buffer, const void *data, size_t
      count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_write_at
      Src: /src/unbound/sldns/sbuffer.h:477,1
    - Dst: strlen
      Src: /src/unbound/sldns/sbuffer.h:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buffer
    - at
    - str
    argTypes:
    - sldns_buffer*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 474
    functionDepth: 4
    functionLinenumber: 474
    functionLinenumberEnd: 478
    functionName: sldns_buffer_write_string_at
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 0
    functionsReached:
    - strlen
    - sldns_buffer_write_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_write_string_at(sldns_buffer *buffer, size_t at,
      const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_write
      Src: /src/unbound/sldns/sbuffer.h:488,1
    - Dst: strlen
      Src: /src/unbound/sldns/sbuffer.h:488,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - buffer
    - str
    argTypes:
    - sldns_buffer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 485
    functionDepth: 5
    functionLinenumber: 485
    functionLinenumberEnd: 489
    functionName: sldns_buffer_write_string
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 0
    functionsReached:
    - sldns_buffer_write
    - strlen
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_write_string(sldns_buffer *buffer, const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:500,1
    - Dst: sldns_buffer_available_at
      Src: /src/unbound/sldns/sbuffer.h:500,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - buffer
    - at
    - data
    argTypes:
    - sldns_buffer*
    - size_t
    - uint8_t
    assertStmts:
    - condition: (sldns_buffer_available_at(buffer, at, sizeof(data)))
      pos:
        line_end: 499
        line_start: 499
        source_file: /src/unbound/sldns/sbuffer.h
    constantsTouched: []
    func_position:
      end: 502
      start: 497
    functionDepth: 3
    functionLinenumber: 497
    functionLinenumberEnd: 502
    functionName: sldns_buffer_write_u8_at
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 0
    functionsReached:
    - assert
    - sldns_buffer_available_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_write_u8_at(sldns_buffer *buffer, size_t at, uint8_t
      data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_write_u8_at
      Src: /src/unbound/sldns/sbuffer.h:512,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - data
    argTypes:
    - sldns_buffer*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 509
    functionDepth: 4
    functionLinenumber: 509
    functionLinenumberEnd: 514
    functionName: sldns_buffer_write_u8
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 2
    functionsReached:
    - sldns_buffer_write_u8_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_write_u8(sldns_buffer *buffer, uint8_t data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:525,1
    - Dst: sldns_buffer_available_at
      Src: /src/unbound/sldns/sbuffer.h:525,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/sldns/sbuffer.h:526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - buffer
    - at
    - data
    argTypes:
    - sldns_buffer*
    - size_t
    - uint16_t
    assertStmts:
    - condition: (sldns_buffer_available_at(buffer, at, sizeof(data)))
      pos:
        line_end: 524
        line_start: 524
        source_file: /src/unbound/sldns/sbuffer.h
    constantsTouched: []
    func_position:
      end: 527
      start: 522
    functionDepth: 3
    functionLinenumber: 522
    functionLinenumberEnd: 527
    functionName: sldns_buffer_write_u16_at
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 2
    functionsReached:
    - sldns_write_uint16
    - assert
    - sldns_buffer_available_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_write_u16_at(sldns_buffer *buffer, size_t at, uint16_t
      data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/sldns/sbuffer.h:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - data
    argTypes:
    - sldns_buffer*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 534
    functionDepth: 4
    functionLinenumber: 534
    functionLinenumberEnd: 539
    functionName: sldns_buffer_write_u16
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 2
    functionsReached:
    - sldns_buffer_write_u16_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_write_u16(sldns_buffer *buffer, uint16_t data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:550,1
    - Dst: sldns_buffer_available_at
      Src: /src/unbound/sldns/sbuffer.h:550,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/sldns/sbuffer.h:551,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - buffer
    - at
    - data
    argTypes:
    - sldns_buffer*
    - size_t
    - uint32_t
    assertStmts:
    - condition: (sldns_buffer_available_at(buffer, at, sizeof(data)))
      pos:
        line_end: 549
        line_start: 549
        source_file: /src/unbound/sldns/sbuffer.h
    constantsTouched: []
    func_position:
      end: 552
      start: 547
    functionDepth: 3
    functionLinenumber: 547
    functionLinenumberEnd: 552
    functionName: sldns_buffer_write_u32_at
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 0
    functionsReached:
    - sldns_write_uint32
    - assert
    - sldns_buffer_available_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_write_u32_at(sldns_buffer *buffer, size_t at, uint32_t
      data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:563,1
    - Dst: sldns_buffer_available_at
      Src: /src/unbound/sldns/sbuffer.h:563,1
    - Dst: sldns_write_uint48
      Src: /src/unbound/sldns/sbuffer.h:564,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - buffer
    - at
    - data
    argTypes:
    - sldns_buffer*
    - size_t
    - uint64_t
    assertStmts:
    - condition: (sldns_buffer_available_at(buffer, at, 6))
      pos:
        line_end: 562
        line_start: 562
        source_file: /src/unbound/sldns/sbuffer.h
    constantsTouched: []
    func_position:
      end: 565
      start: 560
    functionDepth: 3
    functionLinenumber: 560
    functionLinenumberEnd: 565
    functionName: sldns_buffer_write_u48_at
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 0
    functionsReached:
    - sldns_write_uint48
    - assert
    - sldns_buffer_available_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_write_u48_at(sldns_buffer *buffer, size_t at, uint64_t
      data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_write_u32_at
      Src: /src/unbound/sldns/sbuffer.h:575,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - data
    argTypes:
    - sldns_buffer*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 572
    functionDepth: 4
    functionLinenumber: 572
    functionLinenumberEnd: 577
    functionName: sldns_buffer_write_u32
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 2
    functionsReached:
    - sldns_buffer_write_u32_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_write_u32(sldns_buffer *buffer, uint32_t data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_write_u48_at
      Src: /src/unbound/sldns/sbuffer.h:587,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - data
    argTypes:
    - sldns_buffer*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 584
    functionDepth: 4
    functionLinenumber: 584
    functionLinenumberEnd: 589
    functionName: sldns_buffer_write_u48
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 0
    functionsReached:
    - sldns_buffer_write_u48_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_write_u48(sldns_buffer *buffer, uint64_t data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:601,1
    - Dst: sldns_buffer_available_at
      Src: /src/unbound/sldns/sbuffer.h:601,1
    - Dst: memcpy
      Src: /src/unbound/sldns/sbuffer.h:602,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - buffer
    - at
    - data
    - count
    argTypes:
    - sldns_buffer*
    - size_t
    - void*
    - size_t
    assertStmts:
    - condition: (sldns_buffer_available_at(buffer, at, count))
      pos:
        line_end: 600
        line_start: 600
        source_file: /src/unbound/sldns/sbuffer.h
    constantsTouched: []
    func_position:
      end: 603
      start: 598
    functionDepth: 3
    functionLinenumber: 598
    functionLinenumberEnd: 603
    functionName: sldns_buffer_read_at
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 0
    functionsReached:
    - assert
    - memcpy
    - sldns_buffer_available_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_read_at(sldns_buffer *buffer, size_t at, void *data,
      size_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_read_at
      Src: /src/unbound/sldns/sbuffer.h:614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - buffer
    - data
    - count
    argTypes:
    - sldns_buffer*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 611
    functionDepth: 4
    functionLinenumber: 611
    functionLinenumberEnd: 616
    functionName: sldns_buffer_read
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 0
    functionsReached:
    - sldns_buffer_read_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_read(sldns_buffer *buffer, void *data, size_t count)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:627,1
    - Dst: sldns_buffer_available_at
      Src: /src/unbound/sldns/sbuffer.h:627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - at
    argTypes:
    - sldns_buffer*
    - size_t
    assertStmts:
    - condition: (sldns_buffer_available_at(buffer, at, sizeof(uint8_t)))
      pos:
        line_end: 626
        line_start: 626
        source_file: /src/unbound/sldns/sbuffer.h
    constantsTouched: []
    func_position:
      end: 629
      start: 624
    functionDepth: 3
    functionLinenumber: 624
    functionLinenumberEnd: 629
    functionName: sldns_buffer_read_u8_at
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 1
    functionsReached:
    - assert
    - sldns_buffer_available_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_read_u8_at(sldns_buffer *buffer, size_t at)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_read_u8_at
      Src: /src/unbound/sldns/sbuffer.h:639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 636
    functionDepth: 4
    functionLinenumber: 636
    functionLinenumberEnd: 642
    functionName: sldns_buffer_read_u8
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 1
    functionsReached:
    - sldns_buffer_read_u8_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_read_u8(sldns_buffer *buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:653,1
    - Dst: sldns_buffer_available_at
      Src: /src/unbound/sldns/sbuffer.h:653,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/sldns/sbuffer.h:654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - at
    argTypes:
    - sldns_buffer*
    - size_t
    assertStmts:
    - condition: (sldns_buffer_available_at(buffer, at, sizeof(uint16_t)))
      pos:
        line_end: 652
        line_start: 652
        source_file: /src/unbound/sldns/sbuffer.h
    constantsTouched: []
    func_position:
      end: 655
      start: 650
    functionDepth: 3
    functionLinenumber: 650
    functionLinenumberEnd: 655
    functionName: sldns_buffer_read_u16_at
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 4
    functionsReached:
    - assert
    - sldns_buffer_available_at
    - sldns_read_uint16
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_read_u16_at(sldns_buffer *buffer, size_t at)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/sldns/sbuffer.h:665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 668
      start: 662
    functionDepth: 4
    functionLinenumber: 662
    functionLinenumberEnd: 668
    functionName: sldns_buffer_read_u16
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 1
    functionsReached:
    - sldns_buffer_read_u16_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_read_u16(sldns_buffer *buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/sldns/sbuffer.h:679,1
    - Dst: sldns_buffer_available_at
      Src: /src/unbound/sldns/sbuffer.h:679,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/sldns/sbuffer.h:680,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - buffer
    - at
    argTypes:
    - sldns_buffer*
    - size_t
    assertStmts:
    - condition: (sldns_buffer_available_at(buffer, at, sizeof(uint32_t)))
      pos:
        line_end: 678
        line_start: 678
        source_file: /src/unbound/sldns/sbuffer.h
    constantsTouched: []
    func_position:
      end: 681
      start: 676
    functionDepth: 3
    functionLinenumber: 676
    functionLinenumberEnd: 681
    functionName: sldns_buffer_read_u32_at
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 0
    functionsReached:
    - assert
    - sldns_read_uint32
    - sldns_buffer_available_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_read_u32_at(sldns_buffer *buffer, size_t at)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_read_u32_at
      Src: /src/unbound/sldns/sbuffer.h:691,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 688
    functionDepth: 4
    functionLinenumber: 688
    functionLinenumberEnd: 694
    functionName: sldns_buffer_read_u32
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 0
    functionsReached:
    - sldns_buffer_read_u32_at
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_read_u32(sldns_buffer *buffer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 701
    functionDepth: 0
    functionLinenumber: 701
    functionLinenumberEnd: 705
    functionName: sldns_buffer_status
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_status(sldns_buffer *buffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_status
      Src: /src/unbound/sldns/sbuffer.h:716,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - buffer
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 720
      start: 712
    functionDepth: 1
    functionLinenumber: 712
    functionLinenumberEnd: 720
    functionName: sldns_buffer_status_ok
    functionSourceFile: /src/unbound/sldns/sbuffer.h
    functionUses: 1
    functionsReached:
    - sldns_buffer_status
    linkageType: ''
    returnType: INLINE
    signature: INLINE sldns_buffer_status_ok(sldns_buffer *buffer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/validator/autotrust.c:77,1
    - Dst: rbtree_init
      Src: /src/unbound/validator/autotrust.c:80,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 82
    functionName: autr_global_create
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - malloc
    - rbtree_init
    linkageType: ''
    returnType: struct autr_global_data
    signature: struct autr_global_data * autr_global_create(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - global
    argTypes:
    - struct autr_global_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 90
    functionName: autr_global_delete
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void autr_global_delete(struct autr_global_data* global)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/autotrust.c:96,1
    - Dst: anchor_cmp
      Src: /src/unbound/validator/autotrust.c:102,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 103
    functionName: probetree_cmp
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - log_assert
    - anchor_cmp
    linkageType: ''
    returnType: int
    signature: int probetree_cmp(const void* x, const void* y)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:111,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:114,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - anchors
    argTypes:
    - struct val_anchors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 116
    functionName: autr_get_num_anchors
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 1
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: size_t
    signature: size_t autr_get_num_anchors(struct val_anchors* anchors)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/unbound/validator/autotrust.c:122,1
    - Dst: strlen
      Src: /src/unbound/validator/autotrust.c:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - str
    - sub
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 126
    functionName: position_in_string
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - strstr
    - strlen
    linkageType: ''
    returnType: int
    signature: int position_in_string(char *str, const char* sub)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/validator/autotrust.c:144,1
    - Dst: sldns_wire2str_dname
      Src: /src/unbound/validator/autotrust.c:146,1
    - Dst: sldns_calc_keytag_raw
      Src: /src/unbound/validator/autotrust.c:147,1
    - Dst: sldns_wirerr_get_rdata
      Src: /src/unbound/validator/autotrust.c:147,1
    - Dst: sldns_wirerr_get_rdatalen
      Src: /src/unbound/validator/autotrust.c:149,1
    - Dst: vsnprintf
      Src: /src/unbound/validator/autotrust.c:152,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:153,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:154,1
    - Dst: va_end
      Src: /src/unbound/validator/autotrust.c:156,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - ta
    - level
    - format
    argTypes:
    - struct autr_ta*
    - enum verbosity_value
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 157
    functionName: verbose_key
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - sldns_wirerr_get_rdata
    - vsnprintf
    - va_start
    - verbose
    - va_end
    - free
    - sldns_calc_keytag_raw
    - sldns_wire2str_dname
    - sldns_wirerr_get_rdatalen
    linkageType: ''
    returnType: void
    signature: "void verbose_key(struct autr_ta* ta, enum verbosity_value level, \n\tconst
      char* format, ...)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/validator/autotrust.c:170,1
    - Dst: malloc
      Src: /src/unbound/validator/autotrust.c:171,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:174,1
    - Dst: position_in_string
      Src: /src/unbound/validator/autotrust.c:194,1
    - Dst: strlen
      Src: /src/unbound/validator/autotrust.c:195,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:197,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:198,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:206,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:208,1
    - Dst: verbose_key
      Src: /src/unbound/validator/autotrust.c:225,1
    - Dst: position_in_string
      Src: /src/unbound/validator/autotrust.c:232,1
    - Dst: strlen
      Src: /src/unbound/validator/autotrust.c:233,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:235,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:236,1
    - Dst: atoi
      Src: /src/unbound/validator/autotrust.c:244,1
    - Dst: position_in_string
      Src: /src/unbound/validator/autotrust.c:248,1
    - Dst: strlen
      Src: /src/unbound/validator/autotrust.c:249,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:251,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:252,1
    - Dst: atoi
      Src: /src/unbound/validator/autotrust.c:258,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:265,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 71
    argCount: 3
    argNames:
    - str
    - ta
    - header_seen
    argTypes:
    - char*
    - struct autr_ta*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 167
    functionDepth: 3
    functionLinenumber: 167
    functionLinenumberEnd: 267
    functionName: parse_comments
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - log_err
    - malloc
    - free
    - atoi
    - strlen
    - verbose_key
    - position_in_string
    linkageType: ''
    returnType: int
    signature: int parse_comments(char* str, struct autr_ta* ta, int header_seen)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - str
    - comment
    argTypes:
    - char*
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 281
    functionName: str_contains_data
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int str_contains_data(char* str, char comment)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/validator/autotrust.c:293,1
    - Dst: ntohs
      Src: /src/unbound/validator/autotrust.c:294,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - t
    - rdata
    - len
    argTypes:
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 285
    functionDepth: 1
    functionLinenumber: 285
    functionLinenumberEnd: 296
    functionName: dnskey_flags
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - ntohs
    - memmove
    linkageType: ''
    returnType: int
    signature: int dnskey_flags(uint16_t t, uint8_t* rdata, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnskey_flags
      Src: /src/unbound/validator/autotrust.c:303,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - t
    - rdata
    - len
    argTypes:
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 304
      start: 300
    functionDepth: 2
    functionLinenumber: 300
    functionLinenumberEnd: 304
    functionName: rr_is_dnskey_sep
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - dnskey_flags
    linkageType: ''
    returnType: int
    signature: int rr_is_dnskey_sep(uint16_t t, uint8_t* rdata, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnskey_flags
      Src: /src/unbound/validator/autotrust.c:310,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/validator/autotrust.c:311,1
    - Dst: sldns_wirerr_get_rdata
      Src: /src/unbound/validator/autotrust.c:312,1
    - Dst: sldns_wirerr_get_rdatalen
      Src: /src/unbound/validator/autotrust.c:313,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ta
    argTypes:
    - struct autr_ta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 307
    functionDepth: 2
    functionLinenumber: 307
    functionLinenumberEnd: 315
    functionName: ta_is_dnskey_sep
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - sldns_wirerr_get_rdata
    - dnskey_flags
    - sldns_wirerr_get_rdatalen
    - sldns_wirerr_get_type
    linkageType: ''
    returnType: int
    signature: int ta_is_dnskey_sep(struct autr_ta* ta)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnskey_flags
      Src: /src/unbound/validator/autotrust.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - t
    - rdata
    - len
    argTypes:
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 319
    functionDepth: 2
    functionLinenumber: 319
    functionLinenumberEnd: 323
    functionName: rr_is_dnskey_revoked
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - dnskey_flags
    linkageType: ''
    returnType: int
    signature: int rr_is_dnskey_revoked(uint16_t t, uint8_t* rdata, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/validator/autotrust.c:329,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - rr
    - rr_len
    - dname_len
    argTypes:
    - uint8_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 338
    functionName: autr_ta_create
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - free
    - calloc
    linkageType: ''
    returnType: struct autr_ta
    signature: 'struct autr_ta *

      autr_ta_create(uint8_t* rr, size_t rr_len, size_t dname_len)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/validator/autotrust.c:345,1
    - Dst: memdup
      Src: /src/unbound/validator/autotrust.c:347,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:349,1
    - Dst: dname_count_labels
      Src: /src/unbound/validator/autotrust.c:353,1
    - Dst: calloc
      Src: /src/unbound/validator/autotrust.c:356,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:358,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:359,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:364,1
    - Dst: rbtree_insert
      Src: /src/unbound/validator/autotrust.c:365,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:367,1
    - Dst: dname_str
      Src: /src/unbound/validator/autotrust.c:368,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:369,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:370,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:371,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:372,1
    - Dst: rbtree_insert
      Src: /src/unbound/validator/autotrust.c:375,1
    - Dst: rbtree_delete
      Src: /src/unbound/validator/autotrust.c:377,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:378,1
    - Dst: dname_str
      Src: /src/unbound/validator/autotrust.c:379,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:380,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:381,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:382,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:383,1
    - Dst: lock_basic_init
      Src: /src/unbound/validator/autotrust.c:386,1
    - Dst: lock_protect
      Src: /src/unbound/validator/autotrust.c:387,1
    - Dst: lock_protect
      Src: /src/unbound/validator/autotrust.c:388,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:389,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 44
    argCount: 4
    argNames:
    - anchors
    - own
    - own_len
    - dc
    argTypes:
    - struct val_anchors*
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 341
    functionDepth: 1
    functionLinenumber: 341
    functionLinenumberEnd: 391
    functionName: autr_tp_create
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - log_err
    - rbtree_delete
    - lock_basic_unlock
    - dname_str
    - lock_basic_init
    - free
    - lock_protect
    - calloc
    - lock_basic_lock
    - rbtree_insert
    - memdup
    - dname_count_labels
    linkageType: ''
    returnType: struct trust_anchor
    signature: "struct trust_anchor *\nautr_tp_create(struct val_anchors* anchors,
      uint8_t* own, size_t own_len,\n\tuint16_t dc)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:398,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:399,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:400,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 394
    functionDepth: 1
    functionLinenumber: 394
    functionLinenumberEnd: 402
    functionName: autr_rrset_delete
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void autr_rrset_delete(struct ub_packed_rrset_key* r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:409,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:410,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ta
    argTypes:
    - struct autr_ta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 405
    functionDepth: 1
    functionLinenumber: 405
    functionLinenumberEnd: 411
    functionName: autr_ta_delete
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void autr_ta_delete(struct autr_ta* ta)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_unprotect
      Src: /src/unbound/validator/autotrust.c:417,1
    - Dst: lock_unprotect
      Src: /src/unbound/validator/autotrust.c:418,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/validator/autotrust.c:419,1
    - Dst: autr_rrset_delete
      Src: /src/unbound/validator/autotrust.c:420,1
    - Dst: autr_rrset_delete
      Src: /src/unbound/validator/autotrust.c:421,1
    - Dst: autr_ta_delete
      Src: /src/unbound/validator/autotrust.c:426,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:429,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:430,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:432,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:433,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - tp
    argTypes:
    - struct trust_anchor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 413
    functionDepth: 2
    functionLinenumber: 413
    functionLinenumberEnd: 434
    functionName: autr_point_delete
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - autr_ta_delete
    - autr_rrset_delete
    - lock_unprotect
    - free
    - lock_basic_destroy
    linkageType: ''
    returnType: void
    signature: void autr_point_delete(struct trust_anchor* tp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: anchor_find
      Src: /src/unbound/validator/autotrust.c:442,1
    - Dst: dname_count_labels
      Src: /src/unbound/validator/autotrust.c:442,1
    - Dst: sldns_wirerr_get_class
      Src: /src/unbound/validator/autotrust.c:443,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:446,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:447,1
    - Dst: autr_tp_create
      Src: /src/unbound/validator/autotrust.c:452,1
    - Dst: sldns_wirerr_get_class
      Src: /src/unbound/validator/autotrust.c:452,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:456,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - anchors
    - rr
    - rr_len
    - dname_len
    argTypes:
    - struct val_anchors*
    - uint8_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 437
    functionDepth: 2
    functionLinenumber: 437
    functionLinenumberEnd: 458
    functionName: find_add_tp
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - log_err
    - anchor_find
    - lock_basic_unlock
    - lock_basic_lock
    - autr_tp_create
    - dname_count_labels
    - sldns_wirerr_get_class
    linkageType: ''
    returnType: struct trust_anchor
    signature: "struct trust_anchor *\nfind_add_tp(struct val_anchors* anchors, uint8_t*
      rr, size_t rr_len,\n\tsize_t dname_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: autr_ta_create
      Src: /src/unbound/validator/autotrust.c:465,1
    - Dst: find_add_tp
      Src: /src/unbound/validator/autotrust.c:468,1
    - Dst: autr_ta_delete
      Src: /src/unbound/validator/autotrust.c:470,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:476,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - anchors
    - rr
    - rr_len
    - dname_len
    - tp
    argTypes:
    - struct val_anchors*
    - uint8_t*
    - size_t
    - size_t
    - struct trust_anchor**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 461
    functionDepth: 3
    functionLinenumber: 461
    functionLinenumberEnd: 478
    functionName: add_trustanchor_frm_rr
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - autr_ta_delete
    - lock_basic_unlock
    - find_add_tp
    - autr_ta_create
    linkageType: ''
    returnType: struct autr_ta
    signature: "struct autr_ta *\nadd_trustanchor_frm_rr(struct val_anchors* anchors,
      uint8_t* rr, size_t rr_len,\n        size_t dname_len, struct trust_anchor**
      tp)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: str_contains_data
      Src: /src/unbound/validator/autotrust.c:501,1
    - Dst: sldns_str2wire_rr_buf
      Src: /src/unbound/validator/autotrust.c:505,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:508,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/validator/autotrust.c:509,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/validator/autotrust.c:510,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:513,1
    - Dst: memdup
      Src: /src/unbound/validator/autotrust.c:514,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:517,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/validator/autotrust.c:520,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/validator/autotrust.c:521,1
    - Dst: memdup
      Src: /src/unbound/validator/autotrust.c:525,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:527,1
    - Dst: add_trustanchor_frm_rr
      Src: /src/unbound/validator/autotrust.c:530,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 8
    argNames:
    - anchors
    - str
    - tp
    - origin
    - origin_len
    - prev
    - prev_len
    - skip
    argTypes:
    - struct val_anchors*
    - char*
    - struct trust_anchor**
    - uint8_t*
    - size_t
    - uint8_t**
    - size_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 492
    functionDepth: 7
    functionLinenumber: 492
    functionLinenumberEnd: 531
    functionName: add_trustanchor_frm_str
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - log_err
    - add_trustanchor_frm_rr
    - sldns_str2wire_rr_buf
    - str_contains_data
    - LDNS_WIREPARSE_OFFSET
    - free
    - sldns_get_errorstr_parse
    - sldns_wirerr_get_type
    - memdup
    linkageType: ''
    returnType: struct autr_ta
    signature: "struct autr_ta *\nadd_trustanchor_frm_str(struct val_anchors* anchors,
      char* str, \n\tstruct trust_anchor** tp, uint8_t* origin, size_t origin_len,\n\tuint8_t**
      prev, size_t* prev_len, int* skip)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: add_trustanchor_frm_str
      Src: /src/unbound/validator/autotrust.c:555,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:559,1
    - Dst: parse_comments
      Src: /src/unbound/validator/autotrust.c:560,1
    - Dst: log_assert
      Src: /src/unbound/validator/autotrust.c:562,1
    - Dst: autr_ta_delete
      Src: /src/unbound/validator/autotrust.c:564,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:565,1
    - Dst: strdup
      Src: /src/unbound/validator/autotrust.c:569,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:571,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:572,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:576,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 9
    argNames:
    - anchors
    - str
    - fname
    - origin
    - origin_len
    - prev
    - prev_len
    - skip
    - header_seen
    argTypes:
    - struct val_anchors*
    - char*
    - char*
    - uint8_t*
    - size_t
    - uint8_t**
    - size_t*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 547
    functionDepth: 8
    functionLinenumber: 547
    functionLinenumberEnd: 578
    functionName: load_trustanchor
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - autr_ta_delete
    - log_err
    - add_trustanchor_frm_str
    - lock_basic_unlock
    - parse_comments
    - log_assert
    - lock_basic_lock
    - strdup
    linkageType: ''
    returnType: struct trust_anchor
    signature: "struct trust_anchor *\nload_trustanchor(struct val_anchors* anchors,
      char* str, const char* fname,\n\tuint8_t* origin, size_t origin_len, uint8_t**
      prev, size_t* prev_len,\n\tint* skip, int header_seen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/validator/autotrust.c:586,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - list
    - rr
    - rr_len
    - dname_len
    argTypes:
    - struct autr_ta**
    - uint8_t**
    - size_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 581
    functionDepth: 2
    functionLinenumber: 581
    functionLinenumberEnd: 597
    functionName: assemble_iterate_ds
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - sldns_wirerr_get_type
    linkageType: ''
    returnType: int
    signature: "int assemble_iterate_ds(struct autr_ta** list, uint8_t** rr, size_t*
      rr_len,\n\tsize_t* dname_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/validator/autotrust.c:605,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - list
    - rr
    - rr_len
    - dname_len
    argTypes:
    - struct autr_ta**
    - uint8_t**
    - size_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 600
    functionDepth: 2
    functionLinenumber: 600
    functionLinenumberEnd: 618
    functionName: assemble_iterate_dnskey
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - sldns_wirerr_get_type
    linkageType: ''
    returnType: int
    signature: "int assemble_iterate_dnskey(struct autr_ta** list, uint8_t** rr, size_t*
      rr_len,\n\tsize_t* dname_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iter
      Src: /src/unbound/validator/autotrust.c:627,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - iter
    - list
    argTypes:
    - int
    - struct autr_ta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 621
    functionDepth: 0
    functionLinenumber: 621
    functionLinenumberEnd: 628
    functionName: assemble_iterate_hasfirst
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - iter
    linkageType: ''
    returnType: int
    signature: "int assemble_iterate_hasfirst(int iter(struct autr_ta**, uint8_t**,
      size_t*,\n\tsize_t*), struct autr_ta* list)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: iter
      Src: /src/unbound/validator/autotrust.c:637,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - iter
    - list
    argTypes:
    - int
    - struct autr_ta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 631
    functionDepth: 0
    functionLinenumber: 631
    functionLinenumberEnd: 641
    functionName: assemble_iterate_count
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - iter
    linkageType: ''
    returnType: size_t
    signature: "size_t assemble_iterate_count(int iter(struct autr_ta**, uint8_t**,
      size_t*,\n\tsize_t*), struct autr_ta* list)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: iter
      Src: /src/unbound/validator/autotrust.c:659,1
    - Dst: calloc
      Src: /src/unbound/validator/autotrust.c:661,1
    - Dst: htons
      Src: /src/unbound/validator/autotrust.c:664,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/validator/autotrust.c:664,1
    - Dst: htons
      Src: /src/unbound/validator/autotrust.c:665,1
    - Dst: sldns_wirerr_get_class
      Src: /src/unbound/validator/autotrust.c:665,1
    - Dst: memdup
      Src: /src/unbound/validator/autotrust.c:667,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:669,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - iter
    - list
    argTypes:
    - int
    - struct autr_ta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 652
    functionDepth: 2
    functionLinenumber: 652
    functionLinenumberEnd: 673
    functionName: ub_packed_rrset_heap_key
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - htons
    - free
    - calloc
    - sldns_wirerr_get_type
    - iter
    - memdup
    - sldns_wirerr_get_class
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: "struct ub_packed_rrset_key * \nub_packed_rrset_heap_key(int iter(struct
      autr_ta**, uint8_t**, size_t*,\n\tsize_t*), struct autr_ta* list)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: iter
      Src: /src/unbound/validator/autotrust.c:694,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/validator/autotrust.c:695,1
    - Dst: sldns_wirerr_get_rdatalen
      Src: /src/unbound/validator/autotrust.c:700,1
    - Dst: sldns_wirerr_get_ttl
      Src: /src/unbound/validator/autotrust.c:701,1
    - Dst: calloc
      Src: /src/unbound/validator/autotrust.c:710,1
    - Dst: iter
      Src: /src/unbound/validator/autotrust.c:727,1
    - Dst: sldns_wirerr_get_ttl
      Src: /src/unbound/validator/autotrust.c:728,1
    - Dst: sldns_wirerr_get_rdatalen
      Src: /src/unbound/validator/autotrust.c:733,1
    - Dst: iter
      Src: /src/unbound/validator/autotrust.c:746,1
    - Dst: log_assert
      Src: /src/unbound/validator/autotrust.c:747,1
    - Dst: memmove
      Src: /src/unbound/validator/autotrust.c:748,1
    - Dst: sldns_wirerr_get_rdatawl
      Src: /src/unbound/validator/autotrust.c:749,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 48
    argCount: 2
    argNames:
    - iter
    - list
    argTypes:
    - int
    - struct autr_ta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 681
    functionDepth: 2
    functionLinenumber: 681
    functionLinenumberEnd: 759
    functionName: packed_rrset_heap_data
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - sldns_wirerr_get_ttl
    - memmove
    - sldns_wirerr_get_rdatawl
    - calloc
    - log_assert
    - sldns_wirerr_get_type
    - iter
    - sldns_wirerr_get_rdatalen
    linkageType: ''
    returnType: struct packed_rrset_data
    signature: "struct packed_rrset_data * \npacked_rrset_heap_data(int iter(struct
      autr_ta**, uint8_t**, size_t*,\n\tsize_t*), struct autr_ta* list)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: assemble_iterate_hasfirst
      Src: /src/unbound/validator/autotrust.c:776,1
    - Dst: ub_packed_rrset_heap_key
      Src: /src/unbound/validator/autotrust.c:777,1
    - Dst: packed_rrset_heap_data
      Src: /src/unbound/validator/autotrust.c:781,1
    - Dst: assemble_iterate_hasfirst
      Src: /src/unbound/validator/autotrust.c:788,1
    - Dst: ub_packed_rrset_heap_key
      Src: /src/unbound/validator/autotrust.c:789,1
    - Dst: packed_rrset_heap_data
      Src: /src/unbound/validator/autotrust.c:793,1
    - Dst: autr_rrset_delete
      Src: /src/unbound/validator/autotrust.c:797,1
    - Dst: autr_rrset_delete
      Src: /src/unbound/validator/autotrust.c:798,1
    - Dst: autr_rrset_delete
      Src: /src/unbound/validator/autotrust.c:808,1
    - Dst: autr_rrset_delete
      Src: /src/unbound/validator/autotrust.c:809,1
    - Dst: assemble_iterate_count
      Src: /src/unbound/validator/autotrust.c:814,1
    - Dst: assemble_iterate_count
      Src: /src/unbound/validator/autotrust.c:816,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 1
    argNames:
    - tp
    argTypes:
    - struct trust_anchor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 819
      start: 768
    functionDepth: 3
    functionLinenumber: 768
    functionLinenumberEnd: 819
    functionName: autr_assemble
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - autr_rrset_delete
    - assemble_iterate_hasfirst
    - ub_packed_rrset_heap_key
    - packed_rrset_heap_data
    - assemble_iterate_count
    linkageType: ''
    returnType: int
    signature: int autr_assemble(struct trust_anchor* tp)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/unbound/validator/autotrust.c:826,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - line
    - ret
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 833
      start: 822
    functionDepth: 0
    functionLinenumber: 822
    functionLinenumberEnd: 833
    functionName: parse_int
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - strtol
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int parse_int(char* line, int* ret)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/validator/autotrust.c:845,1
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/validator/autotrust.c:849,1
    - Dst: parse_int
      Src: /src/unbound/validator/autotrust.c:854,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:856,1
    - Dst: autr_tp_create
      Src: /src/unbound/validator/autotrust.c:861,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:862,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - anchors
    - line
    argTypes:
    - struct val_anchors*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 836
    functionDepth: 4
    functionLinenumber: 836
    functionLinenumberEnd: 864
    functionName: parse_id
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - parse_int
    - free
    - sldns_str2wire_dname
    - strchr
    - autr_tp_create
    linkageType: ''
    returnType: struct trust_anchor
    signature: 'struct trust_anchor *

      parse_id(struct val_anchors* anchors, char* line)'
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/unbound/validator/autotrust.c:883,1
    - Dst: parse_id
      Src: /src/unbound/validator/autotrust.c:885,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:887,1
    - Dst: strdup
      Src: /src/unbound/validator/autotrust.c:889,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:891,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:892,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:896,1
    - Dst: strncmp
      Src: /src/unbound/validator/autotrust.c:898,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:900,1
    - Dst: strncmp
      Src: /src/unbound/validator/autotrust.c:904,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:906,1
    - Dst: parse_int
      Src: /src/unbound/validator/autotrust.c:907,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:908,1
    - Dst: strncmp
      Src: /src/unbound/validator/autotrust.c:909,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:911,1
    - Dst: parse_int
      Src: /src/unbound/validator/autotrust.c:912,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:913,1
    - Dst: strncmp
      Src: /src/unbound/validator/autotrust.c:914,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:916,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:917,1
    - Dst: rbtree_delete
      Src: /src/unbound/validator/autotrust.c:918,1
    - Dst: parse_int
      Src: /src/unbound/validator/autotrust.c:919,1
    - Dst: rbtree_insert
      Src: /src/unbound/validator/autotrust.c:920,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:921,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:922,1
    - Dst: strncmp
      Src: /src/unbound/validator/autotrust.c:923,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:925,1
    - Dst: parse_int
      Src: /src/unbound/validator/autotrust.c:926,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:927,1
    - Dst: strncmp
      Src: /src/unbound/validator/autotrust.c:928,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:930,1
    - Dst: parse_int
      Src: /src/unbound/validator/autotrust.c:931,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:932,1
    - Dst: strncmp
      Src: /src/unbound/validator/autotrust.c:933,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:935,1
    - Dst: parse_int
      Src: /src/unbound/validator/autotrust.c:936,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:937,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 73
    argCount: 5
    argNames:
    - line
    - anchors
    - anchor
    - header_seen
    - nm
    argTypes:
    - char*
    - struct val_anchors*
    - struct trust_anchor**
    - int*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 940
      start: 877
    functionDepth: 5
    functionLinenumber: 877
    functionLinenumberEnd: 940
    functionName: parse_var_line
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - parse_int
    - log_err
    - strncmp
    - rbtree_delete
    - lock_basic_unlock
    - parse_id
    - lock_basic_lock
    - rbtree_insert
    - strdup
    linkageType: ''
    returnType: int
    signature: "int parse_var_line(char* line, struct val_anchors* anchors, \n\tstruct
      trust_anchor** anchor, int* header_seen, const char* nm)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/validator/autotrust.c:947,1
    - Dst: strncmp
      Src: /src/unbound/validator/autotrust.c:949,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:951,1
    - Dst: isspace
      Src: /src/unbound/validator/autotrust.c:953,1
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/validator/autotrust.c:955,1
    - Dst: log_warn
      Src: /src/unbound/validator/autotrust.c:958,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - line
    - origin
    - origin_len
    argTypes:
    - char*
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 943
    functionDepth: 4
    functionLinenumber: 943
    functionLinenumberEnd: 960
    functionName: handle_origin
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - strncmp
    - isspace
    - free
    - sldns_str2wire_dname
    - log_warn
    linkageType: ''
    returnType: int
    signature: int handle_origin(char* line, uint8_t** origin, size_t* origin_len)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: fgets
      Src: /src/unbound/validator/autotrust.c:970,1
    - Dst: strlen
      Src: /src/unbound/validator/autotrust.c:971,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:982,1
    - Dst: strchr
      Src: /src/unbound/validator/autotrust.c:999,1
    - Dst: strchr
      Src: /src/unbound/validator/autotrust.c:1000,1
    - Dst: strlen
      Src: /src/unbound/validator/autotrust.c:1003,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1008,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1017,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 4
    argNames:
    - buf
    - len
    - in
    - linenr
    argTypes:
    - char*
    - size_t
    - FILE*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 963
    functionDepth: 1
    functionLinenumber: 963
    functionLinenumberEnd: 1023
    functionName: read_multiline
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - strchr
    - fgets
    - strlen
    - log_err
    linkageType: ''
    returnType: int
    signature: int read_multiline(char* buf, size_t len, FILE* in, int* linenr)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/validator/autotrust.c:1041,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1042,1
    - Dst: strerror
      Src: /src/unbound/validator/autotrust.c:1043,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:1046,1
    - Dst: read_multiline
      Src: /src/unbound/validator/autotrust.c:1047,1
    - Dst: parse_var_line
      Src: /src/unbound/validator/autotrust.c:1048,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1049,1
    - Dst: fclose
      Src: /src/unbound/validator/autotrust.c:1051,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:1052,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:1053,1
    - Dst: log_warn
      Src: /src/unbound/validator/autotrust.c:1058,1
    - Dst: fclose
      Src: /src/unbound/validator/autotrust.c:1059,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:1060,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:1061,1
    - Dst: str_contains_data
      Src: /src/unbound/validator/autotrust.c:1064,1
    - Dst: handle_origin
      Src: /src/unbound/validator/autotrust.c:1066,1
    - Dst: load_trustanchor
      Src: /src/unbound/validator/autotrust.c:1069,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1071,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1077,1
    - Dst: fclose
      Src: /src/unbound/validator/autotrust.c:1080,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:1081,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:1082,1
    - Dst: fclose
      Src: /src/unbound/validator/autotrust.c:1087,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:1088,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:1089,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1091,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:1096,1
    - Dst: autr_assemble
      Src: /src/unbound/validator/autotrust.c:1097,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:1098,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1099,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:1102,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 58
    argCount: 2
    argNames:
    - anchors
    - nm
    argTypes:
    - struct val_anchors*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1025
    functionDepth: 9
    functionLinenumber: 1025
    functionLinenumberEnd: 1104
    functionName: autr_read_file
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - load_trustanchor
    - log_err
    - handle_origin
    - autr_assemble
    - read_multiline
    - verbose
    - fclose
    - str_contains_data
    - lock_basic_unlock
    - free
    - fopen
    - strerror
    - log_warn
    - parse_var_line
    - lock_basic_lock
    linkageType: ''
    returnType: int
    signature: int autr_read_file(struct val_anchors* anchors, const char* nm)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - s
    argTypes:
    - autr_state_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1107
    functionDepth: 0
    functionLinenumber: 1107
    functionLinenumberEnd: 1119
    functionName: trustanchor_state2str
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      trustanchor_state2str(autr_state_type s)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ctime_r
      Src: /src/unbound/validator/autotrust.c:1124,1
    - Dst: strlen
      Src: /src/unbound/validator/autotrust.c:1126,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - t
    - s
    argTypes:
    - time_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1122
    functionDepth: 1
    functionLinenumber: 1122
    functionLinenumberEnd: 1130
    functionName: autr_ctime_r
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - ctime_r
    - strlen
    linkageType: ''
    returnType: char
    signature: char * autr_ctime_r(time_t* t, char* s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_dname
      Src: /src/unbound/validator/autotrust.c:1136,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1138,1
    - Dst: fprintf
      Src: /src/unbound/validator/autotrust.c:1141,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1142,1
    - Dst: strerror
      Src: /src/unbound/validator/autotrust.c:1142,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:1143,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:1146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - out
    - fname
    - nm
    - nmlen
    - dclass
    argTypes:
    - FILE*
    - char*
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 1133
    functionDepth: 2
    functionLinenumber: 1133
    functionLinenumberEnd: 1148
    functionName: print_id
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - log_err
    - free
    - sldns_wire2str_dname
    - strerror
    - fprintf
    linkageType: ''
    returnType: int
    signature: int print_id(FILE* out, char* fname, uint8_t* nm, size_t nmlen, uint16_t
      dclass)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/unbound/validator/autotrust.c:1158,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1159,1
    - Dst: strerror
      Src: /src/unbound/validator/autotrust.c:1159,1
    - Dst: fprintf
      Src: /src/unbound/validator/autotrust.c:1163,1
    - Dst: fprintf
      Src: /src/unbound/validator/autotrust.c:1164,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1169,1
    - Dst: strerror
      Src: /src/unbound/validator/autotrust.c:1169,1
    - Dst: print_id
      Src: /src/unbound/validator/autotrust.c:1173,1
    - Dst: fprintf
      Src: /src/unbound/validator/autotrust.c:1176,1
    - Dst: autr_ctime_r
      Src: /src/unbound/validator/autotrust.c:1178,1
    - Dst: fprintf
      Src: /src/unbound/validator/autotrust.c:1179,1
    - Dst: autr_ctime_r
      Src: /src/unbound/validator/autotrust.c:1181,1
    - Dst: fprintf
      Src: /src/unbound/validator/autotrust.c:1182,1
    - Dst: autr_ctime_r
      Src: /src/unbound/validator/autotrust.c:1184,1
    - Dst: fprintf
      Src: /src/unbound/validator/autotrust.c:1185,1
    - Dst: fprintf
      Src: /src/unbound/validator/autotrust.c:1186,1
    - Dst: fprintf
      Src: /src/unbound/validator/autotrust.c:1188,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1189,1
    - Dst: strerror
      Src: /src/unbound/validator/autotrust.c:1189,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/validator/autotrust.c:1201,1
    - Dst: sldns_wire2str_rr
      Src: /src/unbound/validator/autotrust.c:1204,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:1206,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1207,1
    - Dst: strlen
      Src: /src/unbound/validator/autotrust.c:1210,1
    - Dst: fprintf
      Src: /src/unbound/validator/autotrust.c:1211,1
    - Dst: trustanchor_state2str
      Src: /src/unbound/validator/autotrust.c:1213,1
    - Dst: autr_ctime_r
      Src: /src/unbound/validator/autotrust.c:1215,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1216,1
    - Dst: strerror
      Src: /src/unbound/validator/autotrust.c:1216,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:1217,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:1220,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 40
    argCount: 3
    argNames:
    - out
    - fn
    - tp
    argTypes:
    - FILE*
    - char*
    - struct trust_anchor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1223
      start: 1150
    functionDepth: 3
    functionLinenumber: 1150
    functionLinenumberEnd: 1223
    functionName: autr_write_contents
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - log_err
    - trustanchor_state2str
    - free
    - sldns_wire2str_rr
    - strerror
    - sldns_wirerr_get_type
    - print_id
    - strlen
    - fprintf
    - autr_ctime_r
    linkageType: ''
    returnType: int
    signature: int autr_write_contents(FILE* out, char* fn, struct trust_anchor* tp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/autotrust.c:1233,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1235,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1240,1
    - Dst: snprintf
      Src: /src/unbound/validator/autotrust.c:1252,1
    - Dst: getpid
      Src: /src/unbound/validator/autotrust.c:1252,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:1255,1
    - Dst: fopen
      Src: /src/unbound/validator/autotrust.c:1256,1
    - Dst: fatal_exit
      Src: /src/unbound/validator/autotrust.c:1258,1
    - Dst: strerror
      Src: /src/unbound/validator/autotrust.c:1259,1
    - Dst: autr_write_contents
      Src: /src/unbound/validator/autotrust.c:1262,1
    - Dst: fclose
      Src: /src/unbound/validator/autotrust.c:1264,1
    - Dst: unlink
      Src: /src/unbound/validator/autotrust.c:1265,1
    - Dst: fatal_exit
      Src: /src/unbound/validator/autotrust.c:1266,1
    - Dst: fflush
      Src: /src/unbound/validator/autotrust.c:1269,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1270,1
    - Dst: strerror
      Src: /src/unbound/validator/autotrust.c:1270,1
    - Dst: fsync
      Src: /src/unbound/validator/autotrust.c:1272,1
    - Dst: fileno
      Src: /src/unbound/validator/autotrust.c:1272,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1273,1
    - Dst: strerror
      Src: /src/unbound/validator/autotrust.c:1273,1
    - Dst: FlushFileBuffers
      Src: /src/unbound/validator/autotrust.c:1275,1
    - Dst: _get_osfhandle
      Src: /src/unbound/validator/autotrust.c:1275,1
    - Dst: _fileno
      Src: /src/unbound/validator/autotrust.c:1275,1
    - Dst: fclose
      Src: /src/unbound/validator/autotrust.c:1277,1
    - Dst: fatal_exit
      Src: /src/unbound/validator/autotrust.c:1278,1
    - Dst: strerror
      Src: /src/unbound/validator/autotrust.c:1279,1
    - Dst: unlink
      Src: /src/unbound/validator/autotrust.c:1280,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:1284,1
    - Dst: unlink
      Src: /src/unbound/validator/autotrust.c:1286,1
    - Dst: rename
      Src: /src/unbound/validator/autotrust.c:1288,1
    - Dst: fatal_exit
      Src: /src/unbound/validator/autotrust.c:1289,1
    - Dst: strerror
      Src: /src/unbound/validator/autotrust.c:1289,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 40
    argCount: 2
    argNames:
    - env
    - tp
    argTypes:
    - struct module_env*
    - struct trust_anchor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1225
    functionDepth: 4
    functionLinenumber: 1225
    functionLinenumberEnd: 1291
    functionName: autr_write_file
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - log_err
    - fileno
    - _fileno
    - verbose
    - snprintf
    - autr_write_contents
    - fclose
    - rename
    - fatal_exit
    - FlushFileBuffers
    - fsync
    - _get_osfhandle
    - log_assert
    - getpid
    - fopen
    - strerror
    - unlink
    - fflush
    linkageType: ''
    returnType: void
    signature: void autr_write_file(struct module_env* env, struct trust_anchor* tp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: val_verify_DNSKEY_with_TA
      Src: /src/unbound/validator/autotrust.c:1311,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:1318,1
    - Dst: sec_status_to_string
      Src: /src/unbound/validator/autotrust.c:1319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - env
    - ve
    - tp
    - rrset
    - qstate
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct trust_anchor*
    - struct ub_packed_rrset_key*
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 1302
    functionDepth: 1
    functionLinenumber: 1302
    functionLinenumberEnd: 1321
    functionName: verify_dnskey
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - val_verify_DNSKEY_with_TA
    - verbose
    - sec_status_to_string
    linkageType: ''
    returnType: int
    signature: "int verify_dnskey(struct module_env* env, struct val_env* ve,\n        struct
      trust_anchor* tp, struct ub_packed_rrset_key* rrset,\n\tstruct module_qstate*
      qstate)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint32
      Src: /src/unbound/validator/autotrust.c:1329,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - d
    - len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1330
      start: 1323
    functionDepth: 1
    functionLinenumber: 1323
    functionLinenumberEnd: 1330
    functionName: rrsig_get_expiry
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - sldns_read_uint32
    linkageType: ''
    returnType: int32_t
    signature: int32_t rrsig_get_expiry(uint8_t* d, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rrsig_get_expiry
      Src: /src/unbound/validator/autotrust.c:1339,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - env
    - dd
    argTypes:
    - struct module_env*
    - struct packed_rrset_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1347
      start: 1333
    functionDepth: 2
    functionLinenumber: 1333
    functionLinenumberEnd: 1347
    functionName: min_expiry
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - rrsig_get_expiry
    linkageType: ''
    returnType: time_t
    signature: time_t min_expiry(struct module_env* env, struct packed_rrset_data*
      dd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:1357,1
    - Dst: dnskey_verify_rrset
      Src: /src/unbound/validator/autotrust.c:1361,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 5
    argNames:
    - env
    - ve
    - dnskey_rrset
    - i
    - qstate
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key*
    - size_t
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1364
      start: 1350
    functionDepth: 1
    functionLinenumber: 1350
    functionLinenumberEnd: 1364
    functionName: rr_is_selfsigned_revoked
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - dnskey_verify_rrset
    - verbose
    linkageType: ''
    returnType: int
    signature: "int rr_is_selfsigned_revoked(struct module_env* env, struct val_env*
      ve,\n\tstruct ub_packed_rrset_key* dnskey_rrset, size_t i,\n\tstruct module_qstate*
      qstate)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ta
    - seen
    argTypes:
    - struct autr_ta*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1373
      start: 1367
    functionDepth: 0
    functionLinenumber: 1367
    functionLinenumberEnd: 1373
    functionName: seen_trustanchor
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void seen_trustanchor(struct autr_ta* ta, uint8_t seen)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ta
    - revoked
    argTypes:
    - struct autr_ta*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1376
    functionDepth: 0
    functionLinenumber: 1376
    functionLinenumberEnd: 1380
    functionName: seen_revoked_trustanchor
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void seen_revoked_trustanchor(struct autr_ta* ta, uint8_t revoked)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/validator/autotrust.c:1388,1
    - Dst: sldns_wirerr_get_rdatalen
      Src: /src/unbound/validator/autotrust.c:1391,1
    - Dst: sldns_wirerr_get_rdata
      Src: /src/unbound/validator/autotrust.c:1393,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/validator/autotrust.c:1394,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/validator/autotrust.c:1399,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - ta
    - 'off'
    argTypes:
    - struct autr_ta*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1400
      start: 1383
    functionDepth: 2
    functionLinenumber: 1383
    functionLinenumberEnd: 1400
    functionName: revoke_dnskey
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - sldns_wirerr_get_rdata
    - sldns_write_uint16
    - sldns_wirerr_get_type
    - sldns_wirerr_get_rdatalen
    - sldns_read_uint16
    linkageType: ''
    returnType: void
    signature: void revoke_dnskey(struct autr_ta* ta, int off)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - a
    - a_len
    - b
    - b_len
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1403
    functionDepth: 0
    functionLinenumber: 1403
    functionLinenumberEnd: 1424
    functionName: dnskey_compare_skip_revbit
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dnskey_compare_skip_revbit(uint8_t* a, size_t a_len, uint8_t* b,
      size_t b_len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/validator/autotrust.c:1433,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/validator/autotrust.c:1434,1
    - Dst: dnskey_compare_skip_revbit
      Src: /src/unbound/validator/autotrust.c:1437,1
    - Dst: sldns_wirerr_get_rdata
      Src: /src/unbound/validator/autotrust.c:1438,1
    - Dst: sldns_wirerr_get_rdatalen
      Src: /src/unbound/validator/autotrust.c:1439,1
    - Dst: sldns_wirerr_get_rdatalen
      Src: /src/unbound/validator/autotrust.c:1443,1
    - Dst: memcmp
      Src: /src/unbound/validator/autotrust.c:1446,1
    - Dst: sldns_wirerr_get_rdata
      Src: /src/unbound/validator/autotrust.c:1446,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 4
    argNames:
    - a
    - t
    - b
    - b_len
    argTypes:
    - struct autr_ta*
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1450
      start: 1428
    functionDepth: 2
    functionLinenumber: 1428
    functionLinenumberEnd: 1450
    functionName: ta_compare
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - sldns_wirerr_get_rdata
    - sldns_wirerr_get_type
    - memcmp
    - dnskey_compare_skip_revbit
    - sldns_wirerr_get_rdatalen
    linkageType: ''
    returnType: int
    signature: int ta_compare(struct autr_ta* a, uint16_t t, uint8_t* b, size_t b_len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ta_compare
      Src: /src/unbound/validator/autotrust.c:1471,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 5
    argNames:
    - tp
    - t
    - rdata
    - rdata_len
    - result
    argTypes:
    - struct trust_anchor*
    - uint16_t
    - uint8_t*
    - size_t
    - struct autr_ta**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1461
    functionDepth: 3
    functionLinenumber: 1461
    functionLinenumberEnd: 1478
    functionName: find_key
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - ta_compare
    linkageType: ''
    returnType: int
    signature: "int find_key(struct trust_anchor* tp, uint16_t t, uint8_t* rdata,
      size_t rdata_len,\n\tstruct autr_ta** result)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/unbound/validator/autotrust.c:1487,1
    - Dst: htons
      Src: /src/unbound/validator/autotrust.c:1488,1
    - Dst: htons
      Src: /src/unbound/validator/autotrust.c:1489,1
    - Dst: htonl
      Src: /src/unbound/validator/autotrust.c:1491,1
    - Dst: malloc
      Src: /src/unbound/validator/autotrust.c:1493,1
    - Dst: memmove
      Src: /src/unbound/validator/autotrust.c:1495,1
    - Dst: memmove
      Src: /src/unbound/validator/autotrust.c:1496,1
    - Dst: memmove
      Src: /src/unbound/validator/autotrust.c:1497,1
    - Dst: memmove
      Src: /src/unbound/validator/autotrust.c:1498,1
    - Dst: memmove
      Src: /src/unbound/validator/autotrust.c:1499,1
    - Dst: memmove
      Src: /src/unbound/validator/autotrust.c:1500,1
    - Dst: autr_ta_create
      Src: /src/unbound/validator/autotrust.c:1501,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 4
    argNames:
    - tp
    - ttl
    - rdata
    - rdata_len
    argTypes:
    - struct trust_anchor*
    - uint32_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1510
      start: 1481
    functionDepth: 2
    functionLinenumber: 1481
    functionLinenumberEnd: 1510
    functionName: add_key
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - memmove
    - htons
    - malloc
    - autr_ta_create
    - htonl
    linkageType: ''
    returnType: struct autr_ta
    signature: 'struct autr_ta *

      add_key(struct trust_anchor* tp, uint32_t ttl, uint8_t* rdata, size_t rdata_len)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - k
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1518
      start: 1513
    functionDepth: 0
    functionLinenumber: 1513
    functionLinenumberEnd: 1518
    functionName: key_ttl
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t key_ttl(struct ub_packed_rrset_key* k)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:1555,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:1556,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:1558,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 4
    argNames:
    - tp
    - rrsig_exp_interval
    - origttl
    - changed
    argTypes:
    - struct trust_anchor*
    - time_t
    - time_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1562
      start: 1521
    functionDepth: 1
    functionLinenumber: 1521
    functionLinenumberEnd: 1562
    functionName: set_tp_times
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - verbose
    linkageType: ''
    returnType: void
    signature: "void set_tp_times(struct trust_anchor* tp, time_t rrsig_exp_interval,
      \n\ttime_t origttl, int* changed)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - tp
    argTypes:
    - struct trust_anchor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1572
      start: 1565
    functionDepth: 0
    functionLinenumber: 1565
    functionLinenumberEnd: 1572
    functionName: init_events
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void init_events(struct trust_anchor* tp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/autotrust.c:1583,1
    - Dst: ntohs
      Src: /src/unbound/validator/autotrust.c:1583,1
    - Dst: rr_is_dnskey_sep
      Src: /src/unbound/validator/autotrust.c:1586,1
    - Dst: ntohs
      Src: /src/unbound/validator/autotrust.c:1586,1
    - Dst: rr_is_dnskey_revoked
      Src: /src/unbound/validator/autotrust.c:1588,1
    - Dst: ntohs
      Src: /src/unbound/validator/autotrust.c:1588,1
    - Dst: find_key
      Src: /src/unbound/validator/autotrust.c:1591,1
    - Dst: ntohs
      Src: /src/unbound/validator/autotrust.c:1591,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:1593,1
    - Dst: rr_is_selfsigned_revoked
      Src: /src/unbound/validator/autotrust.c:1598,1
    - Dst: log_assert
      Src: /src/unbound/validator/autotrust.c:1602,1
    - Dst: dnskey_calc_keytag
      Src: /src/unbound/validator/autotrust.c:1602,1
    - Dst: sldns_calc_keytag_raw
      Src: /src/unbound/validator/autotrust.c:1603,1
    - Dst: sldns_wirerr_get_rdata
      Src: /src/unbound/validator/autotrust.c:1603,1
    - Dst: sldns_wirerr_get_rdatalen
      Src: /src/unbound/validator/autotrust.c:1605,1
    - Dst: dnskey_calc_keytag
      Src: /src/unbound/validator/autotrust.c:1607,1
    - Dst: sldns_calc_keytag_raw
      Src: /src/unbound/validator/autotrust.c:1608,1
    - Dst: sldns_wirerr_get_rdata
      Src: /src/unbound/validator/autotrust.c:1608,1
    - Dst: sldns_wirerr_get_rdatalen
      Src: /src/unbound/validator/autotrust.c:1610,1
    - Dst: verbose_key
      Src: /src/unbound/validator/autotrust.c:1612,1
    - Dst: seen_revoked_trustanchor
      Src: /src/unbound/validator/autotrust.c:1615,1
    - Dst: do_revoked
      Src: /src/unbound/validator/autotrust.c:1616,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 6
    argNames:
    - env
    - ve
    - tp
    - dnskey_rrset
    - changed
    - qstate
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct trust_anchor*
    - struct ub_packed_rrset_key*
    - int*
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1619
      start: 1575
    functionDepth: 4
    functionLinenumber: 1575
    functionLinenumberEnd: 1619
    functionName: check_contains_revoked
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - log_err
    - rr_is_selfsigned_revoked
    - sldns_wirerr_get_rdata
    - rr_is_dnskey_revoked
    - seen_revoked_trustanchor
    - sldns_wirerr_get_rdatalen
    - dnskey_calc_keytag
    - do_revoked
    - sldns_calc_keytag_raw
    - log_assert
    - find_key
    - verbose_key
    - rr_is_dnskey_sep
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void check_contains_revoked(struct module_env* env, struct val_env*
      ve,\n\tstruct trust_anchor* tp, struct ub_packed_rrset_key* dnskey_rrset,\n\tint*
      changed, struct module_qstate* qstate)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: val_favorite_ds_algo
      Src: /src/unbound/validator/autotrust.c:1630,1
    - Dst: ds_digest_algo_is_supported
      Src: /src/unbound/validator/autotrust.c:1633,1
    - Dst: ds_key_algo_is_supported
      Src: /src/unbound/validator/autotrust.c:1634,1
    - Dst: dnskey_size_is_supported
      Src: /src/unbound/validator/autotrust.c:1635,1
    - Dst: ds_get_digest_algo
      Src: /src/unbound/validator/autotrust.c:1636,1
    - Dst: ds_get_key_algo
      Src: /src/unbound/validator/autotrust.c:1638,1
    - Dst: dnskey_get_algo
      Src: /src/unbound/validator/autotrust.c:1639,1
    - Dst: dnskey_calc_keytag
      Src: /src/unbound/validator/autotrust.c:1640,1
    - Dst: ds_get_keytag
      Src: /src/unbound/validator/autotrust.c:1641,1
    - Dst: ds_digest_match_dnskey
      Src: /src/unbound/validator/autotrust.c:1644,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:1646,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 16
    argCount: 5
    argNames:
    - env
    - ve
    - dnskey_rrset
    - key_idx
    - ds_rrset
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key*
    - size_t
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1664
      start: 1622
    functionDepth: 1
    functionLinenumber: 1622
    functionLinenumberEnd: 1664
    functionName: key_matches_a_ds
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - ds_key_algo_is_supported
    - verbose
    - dnskey_get_algo
    - ds_get_key_algo
    - ds_digest_match_dnskey
    - dnskey_calc_keytag
    - ds_get_keytag
    - ds_digest_algo_is_supported
    - ds_get_digest_algo
    - val_favorite_ds_algo
    - dnskey_size_is_supported
    linkageType: ''
    returnType: int
    signature: "int key_matches_a_ds(struct module_env* env, struct val_env* ve,\n\tstruct
      ub_packed_rrset_key* dnskey_rrset, size_t key_idx,\n\tstruct ub_packed_rrset_key*
      ds_rrset)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/autotrust.c:1675,1
    - Dst: ntohs
      Src: /src/unbound/validator/autotrust.c:1675,1
    - Dst: init_events
      Src: /src/unbound/validator/autotrust.c:1676,1
    - Dst: rr_is_dnskey_sep
      Src: /src/unbound/validator/autotrust.c:1679,1
    - Dst: ntohs
      Src: /src/unbound/validator/autotrust.c:1679,1
    - Dst: rr_is_dnskey_revoked
      Src: /src/unbound/validator/autotrust.c:1682,1
    - Dst: ntohs
      Src: /src/unbound/validator/autotrust.c:1682,1
    - Dst: dnskey_algo_is_supported
      Src: /src/unbound/validator/autotrust.c:1690,1
    - Dst: dnskey_size_is_supported
      Src: /src/unbound/validator/autotrust.c:1691,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/autotrust.c:1693,1
    - Dst: find_key
      Src: /src/unbound/validator/autotrust.c:1700,1
    - Dst: ntohs
      Src: /src/unbound/validator/autotrust.c:1700,1
    - Dst: add_key
      Src: /src/unbound/validator/autotrust.c:1705,1
    - Dst: key_matches_a_ds
      Src: /src/unbound/validator/autotrust.c:1709,1
    - Dst: verbose_key
      Src: /src/unbound/validator/autotrust.c:1711,1
    - Dst: seen_trustanchor
      Src: /src/unbound/validator/autotrust.c:1718,1
    - Dst: verbose_key
      Src: /src/unbound/validator/autotrust.c:1719,1
    - Dst: set_tp_times
      Src: /src/unbound/validator/autotrust.c:1721,1
    - Dst: min_expiry
      Src: /src/unbound/validator/autotrust.c:1721,1
    - Dst: key_ttl
      Src: /src/unbound/validator/autotrust.c:1721,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 32
    argCount: 5
    argNames:
    - env
    - ve
    - tp
    - dnskey_rrset
    - changed
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct trust_anchor*
    - struct ub_packed_rrset_key*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1723
      start: 1667
    functionDepth: 4
    functionLinenumber: 1667
    functionLinenumberEnd: 1723
    functionName: update_events
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - log_nametypeclass
    - key_matches_a_ds
    - rr_is_dnskey_revoked
    - add_key
    - min_expiry
    - set_tp_times
    - key_ttl
    - log_assert
    - dnskey_algo_is_supported
    - find_key
    - seen_trustanchor
    - init_events
    - dnskey_size_is_supported
    - verbose_key
    - rr_is_dnskey_sep
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int update_events(struct module_env* env, struct val_env* ve, \n\tstruct
      trust_anchor* tp, struct ub_packed_rrset_key* dnskey_rrset, \n\tint* changed)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_warn
      Src: /src/unbound/validator/autotrust.c:1740,1
    - Dst: verbose_key
      Src: /src/unbound/validator/autotrust.c:1747,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - env
    - ta
    - holddown
    argTypes:
    - struct module_env*
    - struct autr_ta*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1750
      start: 1734
    functionDepth: 3
    functionLinenumber: 1734
    functionLinenumberEnd: 1750
    functionName: check_holddown
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - verbose_key
    - log_warn
    linkageType: ''
    returnType: time_t
    signature: "time_t check_holddown(struct module_env* env, struct autr_ta* ta,\n\tunsigned
      int holddown)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - env
    - ta
    - changed
    argTypes:
    - struct module_env*
    - struct autr_ta*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1759
      start: 1754
    functionDepth: 0
    functionLinenumber: 1754
    functionLinenumberEnd: 1759
    functionName: reset_holddown
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void reset_holddown(struct module_env* env, struct autr_ta* ta, int*
      changed)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose_key
      Src: /src/unbound/validator/autotrust.c:1766,1
    - Dst: trustanchor_state2str
      Src: /src/unbound/validator/autotrust.c:1767,1
    - Dst: trustanchor_state2str
      Src: /src/unbound/validator/autotrust.c:1767,1
    - Dst: reset_holddown
      Src: /src/unbound/validator/autotrust.c:1769,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - env
    - ta
    - changed
    - s
    argTypes:
    - struct module_env*
    - struct autr_ta*
    - int*
    - autr_state_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1770
      start: 1762
    functionDepth: 3
    functionLinenumber: 1762
    functionLinenumberEnd: 1770
    functionName: set_trustanchor_state
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - trustanchor_state2str
    - verbose_key
    - reset_holddown
    linkageType: ''
    returnType: void
    signature: "void set_trustanchor_state(struct module_env* env, struct autr_ta*
      ta, int* changed,\n\tautr_state_type s)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: set_trustanchor_state
      Src: /src/unbound/validator/autotrust.c:1778,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - env
    - anchor
    - c
    argTypes:
    - struct module_env*
    - struct autr_ta*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1779
      start: 1774
    functionDepth: 4
    functionLinenumber: 1774
    functionLinenumberEnd: 1779
    functionName: do_newkey
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - set_trustanchor_state
    linkageType: ''
    returnType: void
    signature: void do_newkey(struct module_env* env, struct autr_ta* anchor, int*
      c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: check_holddown
      Src: /src/unbound/validator/autotrust.c:1788,1
    - Dst: verbose_key
      Src: /src/unbound/validator/autotrust.c:1790,1
    - Dst: set_trustanchor_state
      Src: /src/unbound/validator/autotrust.c:1794,1
    - Dst: verbose_key
      Src: /src/unbound/validator/autotrust.c:1798,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - env
    - anchor
    - c
    argTypes:
    - struct module_env*
    - struct autr_ta*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1801
      start: 1782
    functionDepth: 4
    functionLinenumber: 1782
    functionLinenumberEnd: 1801
    functionName: do_addtime
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - check_holddown
    - verbose_key
    - set_trustanchor_state
    linkageType: ''
    returnType: void
    signature: void do_addtime(struct module_env* env, struct autr_ta* anchor, int*
      c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_holddown
      Src: /src/unbound/validator/autotrust.c:1807,1
    - Dst: verbose_key
      Src: /src/unbound/validator/autotrust.c:1809,1
    - Dst: set_trustanchor_state
      Src: /src/unbound/validator/autotrust.c:1811,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - env
    - anchor
    - c
    argTypes:
    - struct module_env*
    - struct autr_ta*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1813
      start: 1804
    functionDepth: 4
    functionLinenumber: 1804
    functionLinenumberEnd: 1813
    functionName: do_remtime
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - check_holddown
    - verbose_key
    - set_trustanchor_state
    linkageType: ''
    returnType: void
    signature: void do_remtime(struct module_env* env, struct autr_ta* anchor, int*
      c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: set_trustanchor_state
      Src: /src/unbound/validator/autotrust.c:1820,1
    - Dst: set_trustanchor_state
      Src: /src/unbound/validator/autotrust.c:1823,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - env
    - anchor
    - c
    argTypes:
    - struct module_env*
    - struct autr_ta*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1824
      start: 1816
    functionDepth: 4
    functionLinenumber: 1816
    functionLinenumberEnd: 1824
    functionName: do_keyrem
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - set_trustanchor_state
    linkageType: ''
    returnType: void
    signature: void do_keyrem(struct module_env* env, struct autr_ta* anchor, int*
      c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: set_trustanchor_state
      Src: /src/unbound/validator/autotrust.c:1831,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - env
    - anchor
    - c
    argTypes:
    - struct module_env*
    - struct autr_ta*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1832
      start: 1827
    functionDepth: 4
    functionLinenumber: 1827
    functionLinenumberEnd: 1832
    functionName: do_keypres
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - set_trustanchor_state
    linkageType: ''
    returnType: void
    signature: void do_keypres(struct module_env* env, struct autr_ta* anchor, int*
      c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: set_trustanchor_state
      Src: /src/unbound/validator/autotrust.c:1839,1
    - Dst: verbose_key
      Src: /src/unbound/validator/autotrust.c:1840,1
    - Dst: revoke_dnskey
      Src: /src/unbound/validator/autotrust.c:1841,1
    - Dst: verbose_key
      Src: /src/unbound/validator/autotrust.c:1842,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - env
    - anchor
    - c
    argTypes:
    - struct module_env*
    - struct autr_ta*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1844
      start: 1835
    functionDepth: 4
    functionLinenumber: 1835
    functionLinenumberEnd: 1844
    functionName: do_revoked
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 1
    functionsReached:
    - revoke_dnskey
    - verbose_key
    - set_trustanchor_state
    linkageType: ''
    returnType: void
    signature: void do_revoked(struct module_env* env, struct autr_ta* anchor, int*
      c)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/autotrust.c:1850,1
    - Dst: do_newkey
      Src: /src/unbound/validator/autotrust.c:1856,1
    - Dst: do_keyrem
      Src: /src/unbound/validator/autotrust.c:1862,1
    - Dst: do_addtime
      Src: /src/unbound/validator/autotrust.c:1864,1
    - Dst: do_revoked
      Src: /src/unbound/validator/autotrust.c:1870,1
    - Dst: do_keyrem
      Src: /src/unbound/validator/autotrust.c:1873,1
    - Dst: verbose_key
      Src: /src/unbound/validator/autotrust.c:1875,1
    - Dst: reset_holddown
      Src: /src/unbound/validator/autotrust.c:1876,1
    - Dst: do_revoked
      Src: /src/unbound/validator/autotrust.c:1883,1
    - Dst: do_keypres
      Src: /src/unbound/validator/autotrust.c:1886,1
    - Dst: reset_holddown
      Src: /src/unbound/validator/autotrust.c:1891,1
    - Dst: do_remtime
      Src: /src/unbound/validator/autotrust.c:1893,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 37
    argCount: 3
    argNames:
    - env
    - anchor
    - c
    argTypes:
    - struct module_env*
    - struct autr_ta*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1900
      start: 1847
    functionDepth: 5
    functionLinenumber: 1847
    functionLinenumberEnd: 1900
    functionName: anchor_state_update
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - do_remtime
    - do_keyrem
    - do_addtime
    - do_newkey
    - reset_holddown
    - do_revoked
    - do_keypres
    - log_assert
    - verbose_key
    linkageType: ''
    returnType: void
    signature: void anchor_state_update(struct module_env* env, struct autr_ta* anchor,
      int* c)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/validator/autotrust.c:1912,1
    - Dst: ta_is_dnskey_sep
      Src: /src/unbound/validator/autotrust.c:1915,1
    - Dst: ta_is_dnskey_sep
      Src: /src/unbound/validator/autotrust.c:1922,1
    - Dst: verbose_key
      Src: /src/unbound/validator/autotrust.c:1924,1
    - Dst: set_trustanchor_state
      Src: /src/unbound/validator/autotrust.c:1926,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 3
    argNames:
    - env
    - tp
    - changed
    argTypes:
    - struct module_env*
    - struct trust_anchor*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1932
      start: 1903
    functionDepth: 4
    functionLinenumber: 1903
    functionLinenumberEnd: 1932
    functionName: init_zsk_to_ksk
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - ta_is_dnskey_sep
    - verbose_key
    - set_trustanchor_state
    - sldns_wirerr_get_type
    linkageType: ''
    returnType: int
    signature: int init_zsk_to_ksk(struct module_env* env, struct trust_anchor* tp,
      int* changed)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ta_is_dnskey_sep
      Src: /src/unbound/validator/autotrust.c:1945,1
    - Dst: init_zsk_to_ksk
      Src: /src/unbound/validator/autotrust.c:1958,1
    - Dst: ta_is_dnskey_sep
      Src: /src/unbound/validator/autotrust.c:1968,1
    - Dst: verbose_key
      Src: /src/unbound/validator/autotrust.c:1970,1
    - Dst: set_trustanchor_state
      Src: /src/unbound/validator/autotrust.c:1972,1
    - Dst: check_holddown
      Src: /src/unbound/validator/autotrust.c:1983,1
    - Dst: verbose_key
      Src: /src/unbound/validator/autotrust.c:1987,1
    - Dst: set_trustanchor_state
      Src: /src/unbound/validator/autotrust.c:1990,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 32
    argCount: 3
    argNames:
    - env
    - tp
    - changed
    argTypes:
    - struct module_env*
    - struct trust_anchor*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1994
      start: 1935
    functionDepth: 5
    functionLinenumber: 1935
    functionLinenumberEnd: 1994
    functionName: remove_missing_trustanchors
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - check_holddown
    - ta_is_dnskey_sep
    - set_trustanchor_state
    - init_zsk_to_ksk
    - verbose_key
    linkageType: ''
    returnType: void
    signature: "void remove_missing_trustanchors(struct module_env* env, struct trust_anchor*
      tp,\n\tint* changed)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ta_is_dnskey_sep
      Src: /src/unbound/validator/autotrust.c:2003,1
    - Dst: anchor_state_update
      Src: /src/unbound/validator/autotrust.c:2005,1
    - Dst: remove_missing_trustanchors
      Src: /src/unbound/validator/autotrust.c:2007,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - env
    - tp
    - changed
    argTypes:
    - struct module_env*
    - struct trust_anchor*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2009
      start: 1997
    functionDepth: 6
    functionLinenumber: 1997
    functionLinenumberEnd: 2009
    functionName: do_statetable
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - ta_is_dnskey_sep
    - anchor_state_update
    - remove_missing_trustanchors
    linkageType: ''
    returnType: int
    signature: int do_statetable(struct module_env* env, struct trust_anchor* tp,
      int* changed)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ta_is_dnskey_sep
      Src: /src/unbound/validator/autotrust.c:2017,1
    - Dst: do_addtime
      Src: /src/unbound/validator/autotrust.c:2019,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 3
    argNames:
    - env
    - tp
    - c
    argTypes:
    - struct module_env*
    - struct trust_anchor*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2021
      start: 2012
    functionDepth: 5
    functionLinenumber: 2012
    functionLinenumberEnd: 2021
    functionName: autr_holddown_exceed
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - do_addtime
    - ta_is_dnskey_sep
    linkageType: ''
    returnType: void
    signature: void autr_holddown_exceed(struct module_env* env, struct trust_anchor*
      tp, int* c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/validator/autotrust.c:2033,1
    - Dst: autr_ta_delete
      Src: /src/unbound/validator/autotrust.c:2037,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - tp
    argTypes:
    - struct trust_anchor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2049
      start: 2024
    functionDepth: 2
    functionLinenumber: 2024
    functionLinenumberEnd: 2049
    functionName: autr_cleanup_keys
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - autr_ta_delete
    - sldns_wirerr_get_type
    linkageType: ''
    returnType: void
    signature: void autr_cleanup_keys(struct trust_anchor* tp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ub_random_max
      Src: /src/unbound/validator/autotrust.c:2065,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - env
    - wait
    argTypes:
    - struct module_env*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2067
      start: 2052
    functionDepth: 1
    functionLinenumber: 2052
    functionLinenumberEnd: 2067
    functionName: calc_next_probe
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - ub_random_max
    linkageType: ''
    returnType: time_t
    signature: time_t calc_next_probe(struct module_env* env, time_t wait)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_first
      Src: /src/unbound/validator/autotrust.c:2073,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - anchors
    argTypes:
    - struct val_anchors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2077
      start: 2070
    functionDepth: 1
    functionLinenumber: 2070
    functionLinenumberEnd: 2077
    functionName: wait_probe_time
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - rbtree_first
    linkageType: ''
    returnType: time_t
    signature: time_t wait_probe_time(struct val_anchors* anchors)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: comm_timer_set
      Src: /src/unbound/validator/autotrust.c:2095,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:2096,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - env
    - next
    argTypes:
    - struct module_env*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2097
      start: 2080
    functionDepth: 1
    functionLinenumber: 2080
    functionLinenumberEnd: 2097
    functionName: reset_worker_timer_at
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - verbose
    - comm_timer_set
    linkageType: ''
    returnType: void
    signature: void reset_worker_timer_at(struct module_env* env, time_t next)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:2107,1
    - Dst: wait_probe_time
      Src: /src/unbound/validator/autotrust.c:2108,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:2109,1
    - Dst: reset_worker_timer_at
      Src: /src/unbound/validator/autotrust.c:2110,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - env
    argTypes:
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2111
      start: 2101
    functionDepth: 2
    functionLinenumber: 2101
    functionLinenumberEnd: 2111
    functionName: reset_worker_timer
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - reset_worker_timer_at
    - lock_basic_lock
    - wait_probe_time
    linkageType: ''
    returnType: void
    signature: void reset_worker_timer(struct module_env* env)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/validator/autotrust.c:2124,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:2126,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:2129,1
    - Dst: rbtree_search
      Src: /src/unbound/validator/autotrust.c:2130,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:2132,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:2133,1
    - Dst: log_assert
      Src: /src/unbound/validator/autotrust.c:2136,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:2137,1
    - Dst: wait_probe_time
      Src: /src/unbound/validator/autotrust.c:2140,1
    - Dst: rbtree_delete
      Src: /src/unbound/validator/autotrust.c:2141,1
    - Dst: calc_next_probe
      Src: /src/unbound/validator/autotrust.c:2142,1
    - Dst: rbtree_insert
      Src: /src/unbound/validator/autotrust.c:2144,1
    - Dst: wait_probe_time
      Src: /src/unbound/validator/autotrust.c:2145,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:2147,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:2148,1
    - Dst: reset_worker_timer_at
      Src: /src/unbound/validator/autotrust.c:2151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 3
    argNames:
    - env
    - tp
    - dnskey_rrset
    argTypes:
    - struct module_env*
    - struct trust_anchor*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2154
      start: 2114
    functionDepth: 2
    functionLinenumber: 2114
    functionLinenumberEnd: 2154
    functionName: set_next_probe
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - rbtree_delete
    - lock_basic_unlock
    - verbose
    - reset_worker_timer_at
    - calc_next_probe
    - wait_probe_time
    - log_assert
    - lock_basic_lock
    - rbtree_insert
    - dname_count_labels
    - rbtree_search
    linkageType: ''
    returnType: int
    signature: "int set_next_probe(struct module_env* env, struct trust_anchor* tp,\n\tstruct
      ub_packed_rrset_key* dnskey_rrset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/autotrust.c:2166,1
    - Dst: memset
      Src: /src/unbound/validator/autotrust.c:2171,1
    - Dst: memset
      Src: /src/unbound/validator/autotrust.c:2172,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:2183,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:2186,1
    - Dst: rbtree_delete
      Src: /src/unbound/validator/autotrust.c:2187,1
    - Dst: wait_probe_time
      Src: /src/unbound/validator/autotrust.c:2188,1
    - Dst: rbtree_delete
      Src: /src/unbound/validator/autotrust.c:2189,1
    - Dst: wait_probe_time
      Src: /src/unbound/validator/autotrust.c:2190,1
    - Dst: anchors_init_parents_locked
      Src: /src/unbound/validator/autotrust.c:2191,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:2192,1
    - Dst: autr_write_file
      Src: /src/unbound/validator/autotrust.c:2200,1
    - Dst: autr_point_delete
      Src: /src/unbound/validator/autotrust.c:2203,1
    - Dst: reset_worker_timer_at
      Src: /src/unbound/validator/autotrust.c:2206,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 29
    argCount: 3
    argNames:
    - env
    - tp
    - dnskey_rrset
    argTypes:
    - struct module_env*
    - struct trust_anchor*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2208
      start: 2157
    functionDepth: 5
    functionLinenumber: 2157
    functionLinenumberEnd: 2208
    functionName: autr_tp_remove
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - autr_write_file
    - anchors_init_parents_locked
    - log_nametypeclass
    - rbtree_delete
    - lock_basic_unlock
    - reset_worker_timer_at
    - autr_point_delete
    - lock_basic_lock
    - memset
    - wait_probe_time
    linkageType: ''
    returnType: void
    signature: "void autr_tp_remove(struct module_env* env, struct trust_anchor* tp,\n\tstruct
      ub_packed_rrset_key* dnskey_rrset)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/autotrust.c:2215,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/autotrust.c:2222,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:2225,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/autotrust.c:2232,1
    - Dst: autr_holddown_exceed
      Src: /src/unbound/validator/autotrust.c:2235,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:2237,1
    - Dst: autr_assemble
      Src: /src/unbound/validator/autotrust.c:2238,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:2239,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:2245,1
    - Dst: check_contains_revoked
      Src: /src/unbound/validator/autotrust.c:2253,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:2255,1
    - Dst: autr_assemble
      Src: /src/unbound/validator/autotrust.c:2256,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:2257,1
    - Dst: autr_tp_remove
      Src: /src/unbound/validator/autotrust.c:2264,1
    - Dst: verify_dnskey
      Src: /src/unbound/validator/autotrust.c:2269,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:2270,1
    - Dst: autr_write_file
      Src: /src/unbound/validator/autotrust.c:2275,1
    - Dst: update_events
      Src: /src/unbound/validator/autotrust.c:2288,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:2289,1
    - Dst: do_statetable
      Src: /src/unbound/validator/autotrust.c:2297,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:2298,1
    - Dst: autr_cleanup_keys
      Src: /src/unbound/validator/autotrust.c:2303,1
    - Dst: set_next_probe
      Src: /src/unbound/validator/autotrust.c:2304,1
    - Dst: autr_write_file
      Src: /src/unbound/validator/autotrust.c:2306,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:2308,1
    - Dst: autr_assemble
      Src: /src/unbound/validator/autotrust.c:2309,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:2310,1
    - Dst: autr_tp_remove
      Src: /src/unbound/validator/autotrust.c:2315,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:2318,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 69
    argCount: 5
    argNames:
    - env
    - ve
    - tp
    - dnskey_rrset
    - qstate
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct trust_anchor*
    - struct ub_packed_rrset_key*
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2321
      start: 2210
    functionDepth: 7
    functionLinenumber: 2210
    functionLinenumberEnd: 2321
    functionName: autr_process_prime
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - autr_write_file
    - log_err
    - log_nametypeclass
    - autr_assemble
    - verbose
    - lock_basic_unlock
    - do_statetable
    - set_next_probe
    - update_events
    - autr_cleanup_keys
    - verify_dnskey
    - log_assert
    - autr_tp_remove
    - autr_holddown_exceed
    - check_contains_revoked
    linkageType: ''
    returnType: int
    signature: "int autr_process_prime(struct module_env* env, struct val_env* ve,\n\tstruct
      trust_anchor* tp, struct ub_packed_rrset_key* dnskey_rrset,\n\tstruct module_qstate*
      qstate)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_rr
      Src: /src/unbound/validator/autotrust.c:2328,1
    - Dst: log_info
      Src: /src/unbound/validator/autotrust.c:2330,1
    - Dst: strlen
      Src: /src/unbound/validator/autotrust.c:2333,1
    - Dst: autr_ctime_r
      Src: /src/unbound/validator/autotrust.c:2334,1
    - Dst: strlen
      Src: /src/unbound/validator/autotrust.c:2335,1
    - Dst: log_info
      Src: /src/unbound/validator/autotrust.c:2336,1
    - Dst: trustanchor_state2str
      Src: /src/unbound/validator/autotrust.c:2337,1
    - Dst: free
      Src: /src/unbound/validator/autotrust.c:2339,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - ta
    argTypes:
    - struct autr_ta*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2340
      start: 2324
    functionDepth: 2
    functionLinenumber: 2324
    functionLinenumberEnd: 2340
    functionName: autr_debug_print_ta
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - trustanchor_state2str
    - log_info
    - free
    - sldns_wire2str_rr
    - strlen
    - autr_ctime_r
    linkageType: ''
    returnType: void
    signature: void autr_debug_print_ta(struct autr_ta* ta)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dname_str
      Src: /src/unbound/validator/autotrust.c:2352,1
    - Dst: log_info
      Src: /src/unbound/validator/autotrust.c:2353,1
    - Dst: log_info
      Src: /src/unbound/validator/autotrust.c:2354,1
    - Dst: log_packed_rrset
      Src: /src/unbound/validator/autotrust.c:2357,1
    - Dst: log_packed_rrset
      Src: /src/unbound/validator/autotrust.c:2360,1
    - Dst: log_info
      Src: /src/unbound/validator/autotrust.c:2362,1
    - Dst: autr_ctime_r
      Src: /src/unbound/validator/autotrust.c:2363,1
    - Dst: strlen
      Src: /src/unbound/validator/autotrust.c:2364,1
    - Dst: log_info
      Src: /src/unbound/validator/autotrust.c:2365,1
    - Dst: autr_ctime_r
      Src: /src/unbound/validator/autotrust.c:2366,1
    - Dst: strlen
      Src: /src/unbound/validator/autotrust.c:2367,1
    - Dst: log_info
      Src: /src/unbound/validator/autotrust.c:2368,1
    - Dst: autr_ctime_r
      Src: /src/unbound/validator/autotrust.c:2369,1
    - Dst: strlen
      Src: /src/unbound/validator/autotrust.c:2370,1
    - Dst: log_info
      Src: /src/unbound/validator/autotrust.c:2371,1
    - Dst: log_info
      Src: /src/unbound/validator/autotrust.c:2373,1
    - Dst: log_info
      Src: /src/unbound/validator/autotrust.c:2374,1
    - Dst: log_info
      Src: /src/unbound/validator/autotrust.c:2375,1
    - Dst: autr_debug_print_ta
      Src: /src/unbound/validator/autotrust.c:2378,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 1
    argNames:
    - tp
    argTypes:
    - struct trust_anchor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2380
      start: 2343
    functionDepth: 3
    functionLinenumber: 2343
    functionLinenumberEnd: 2380
    functionName: autr_debug_print_tp
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - autr_debug_print_ta
    - log_info
    - dname_str
    - log_packed_rrset
    - strlen
    - autr_ctime_r
    linkageType: ''
    returnType: void
    signature: void autr_debug_print_tp(struct trust_anchor* tp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:2386,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:2388,1
    - Dst: autr_debug_print_tp
      Src: /src/unbound/validator/autotrust.c:2389,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:2390,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:2392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - anchors
    argTypes:
    - struct val_anchors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2393
      start: 2382
    functionDepth: 4
    functionLinenumber: 2382
    functionLinenumberEnd: 2393
    functionName: autr_debug_print
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    - autr_debug_print_tp
    linkageType: ''
    returnType: void
    signature: void autr_debug_print(struct val_anchors* anchors)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:2388,1
    - Dst: autr_debug_print_tp
      Src: /src/unbound/validator/autotrust.c:2389,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:2390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - tree
    argTypes:
    - anchors
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2391
      start: 2387
    functionDepth: 4
    functionLinenumber: 2387
    functionLinenumberEnd: 2391
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    - autr_debug_print_tp
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(tp, struct trust_anchor*, anchors->tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:2410,1
    - Dst: reset_worker_timer
      Src: /src/unbound/validator/autotrust.c:2411,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 6
    argNames:
    - arg
    - ATTR_UNUSED
    - ATTR_UNUSED(buf)
    - ATTR_UNUSED
    - ATTR_UNUSED(why_bogus)
    - ATTR_UNUSED
    argTypes:
    - void*
    - int
    - sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2412
      start: 2395
    functionDepth: 3
    functionLinenumber: 2395
    functionLinenumberEnd: 2412
    functionName: probe_answer_cb
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - verbose
    - reset_worker_timer
    linkageType: ''
    returnType: void
    signature: "void probe_answer_cb(void* arg, int ATTR_UNUSED(rcode), \n\tsldns_buffer*
      ATTR_UNUSED(buf), enum sec_status ATTR_UNUSED(sec),\n\tchar* ATTR_UNUSED(why_bogus),
      int ATTR_UNUSED(was_ratelimited))"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_init
      Src: /src/unbound/validator/autotrust.c:2422,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:2424,1
    - Dst: log_query_info
      Src: /src/unbound/validator/autotrust.c:2431,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:2432,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/validator/autotrust.c:2444,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/validator/autotrust.c:2445,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:2449,1
    - Dst: rrset_cache_remove
      Src: /src/unbound/validator/autotrust.c:2454,1
    - Dst: key_cache_remove
      Src: /src/unbound/validator/autotrust.c:2456,1
    - Dst: mesh_new_callback
      Src: /src/unbound/validator/autotrust.c:2459,1
    - Dst: log_err
      Src: /src/unbound/validator/autotrust.c:2461,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 31
    argCount: 2
    argNames:
    - env
    - tp
    argTypes:
    - struct module_env*
    - struct trust_anchor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2463
      start: 2415
    functionDepth: 1
    functionLinenumber: 2415
    functionLinenumberEnd: 2463
    functionName: probe_anchor
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - log_err
    - key_cache_remove
    - verbose
    - log_query_info
    - lock_basic_unlock
    - rrset_cache_remove
    - regional_alloc_init
    - mesh_new_callback
    linkageType: ''
    returnType: void
    signature: void probe_anchor(struct module_env* env, struct trust_anchor* tp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:2472,1
    - Dst: rbtree_first
      Src: /src/unbound/validator/autotrust.c:2473,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:2475,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/autotrust.c:2481,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:2487,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:2488,1
    - Dst: rbtree_delete
      Src: /src/unbound/validator/autotrust.c:2493,1
    - Dst: calc_next_probe
      Src: /src/unbound/validator/autotrust.c:2494,1
    - Dst: rbtree_insert
      Src: /src/unbound/validator/autotrust.c:2495,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/autotrust.c:2496,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - env
    - next
    argTypes:
    - struct module_env*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2499
      start: 2466
    functionDepth: 2
    functionLinenumber: 2466
    functionLinenumberEnd: 2499
    functionName: todo_probe
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 0
    functionsReached:
    - rbtree_delete
    - lock_basic_unlock
    - lock_basic_lock
    - rbtree_first
    - rbtree_insert
    - calc_next_probe
    linkageType: ''
    returnType: struct trust_anchor
    signature: 'struct trust_anchor *

      todo_probe(struct module_env* env, time_t* next)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:2508,1
    - Dst: todo_probe
      Src: /src/unbound/validator/autotrust.c:2510,1
    - Dst: probe_anchor
      Src: /src/unbound/validator/autotrust.c:2512,1
    - Dst: regional_free_all
      Src: /src/unbound/validator/autotrust.c:2515,1
    - Dst: verbose
      Src: /src/unbound/validator/autotrust.c:2518,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - env
    argTypes:
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2520
      start: 2501
    functionDepth: 3
    functionLinenumber: 2501
    functionLinenumberEnd: 2520
    functionName: autr_probe_timer
    functionSourceFile: /src/unbound/validator/autotrust.c
    functionUses: 1
    functionsReached:
    - probe_anchor
    - verbose
    - regional_free_all
    - todo_probe
    linkageType: ''
    returnType: time_t
    signature: time_t autr_probe_timer(struct module_env* env)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ERR_error_string_n
      Src: /src/unbound/validator/val_secalgo.c:94,1
    - Dst: log_err
      Src: /src/unbound/validator/val_secalgo.c:97,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - str
    - e
    argTypes:
    - char*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 98
    functionName: log_crypto_error
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - log_err
    - ERR_error_string_n
    linkageType: ''
    returnType: void
    signature: void log_crypto_error(const char* str, unsigned long e)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ERR_error_string_n
      Src: /src/unbound/validator/val_secalgo.c:111,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - level
    - str
    - e
    argTypes:
    - enum verbosity_value
    - char*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 115
    functionName: log_crypto_verbose
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - verbose
    - ERR_error_string_n
    linkageType: ''
    returnType: void
    signature: void log_crypto_verbose(enum verbosity_value level, const char* str,
      unsigned long e)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - id
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 127
    functionName: nsec3_hash_algo_size_supported
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t nsec3_hash_algo_size_supported(int id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_digest_evp
      Src: /src/unbound/validator/val_secalgo.c:137,1
    - Dst: EVP_sha1
      Src: /src/unbound/validator/val_secalgo.c:137,1
    - Dst: log_crypto_error
      Src: /src/unbound/validator/val_secalgo.c:138,1
    - Dst: ERR_get_error
      Src: /src/unbound/validator/val_secalgo.c:139,1
    - Dst: SHA1
      Src: /src/unbound/validator/val_secalgo.c:141,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - algo
    - buf
    - len
    - res
    argTypes:
    - int
    - unsigned char*
    - size_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 130
    functionDepth: 2
    functionLinenumber: 130
    functionLinenumberEnd: 147
    functionName: secalgo_nsec3_hash
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - ERR_get_error
    - SHA1
    - sldns_digest_evp
    - log_crypto_error
    - EVP_sha1
    linkageType: ''
    returnType: int
    signature: "int secalgo_nsec3_hash(int algo, unsigned char* buf, size_t len,\n
      \       unsigned char* res)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_digest_evp
      Src: /src/unbound/validator/val_secalgo.c:153,1
    - Dst: EVP_sha256
      Src: /src/unbound/validator/val_secalgo.c:153,1
    - Dst: log_crypto_error
      Src: /src/unbound/validator/val_secalgo.c:154,1
    - Dst: ERR_get_error
      Src: /src/unbound/validator/val_secalgo.c:155,1
    - Dst: SHA256
      Src: /src/unbound/validator/val_secalgo.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - buf
    - len
    - res
    argTypes:
    - unsigned char*
    - size_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 149
    functionDepth: 2
    functionLinenumber: 149
    functionLinenumberEnd: 159
    functionName: secalgo_hash_sha256
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - ERR_get_error
    - SHA256
    - EVP_sha256
    - sldns_digest_evp
    - log_crypto_error
    linkageType: ''
    returnType: void
    signature: void secalgo_hash_sha256(unsigned char* buf, size_t len, unsigned char*
      res)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/validator/val_secalgo.c:173,1
    - Dst: EVP_MD_CTX_create
      Src: /src/unbound/validator/val_secalgo.c:176,1
    - Dst: free
      Src: /src/unbound/validator/val_secalgo.c:178,1
    - Dst: EVP_DigestInit_ex
      Src: /src/unbound/validator/val_secalgo.c:181,1
    - Dst: EVP_MD_CTX_destroy
      Src: /src/unbound/validator/val_secalgo.c:182,1
    - Dst: free
      Src: /src/unbound/validator/val_secalgo.c:183,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - md
    argTypes:
    - EVP_MD*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 168
    functionDepth: 1
    functionLinenumber: 168
    functionLinenumberEnd: 187
    functionName: secalgo_hash_create_md
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - EVP_DigestInit_ex
    - free
    - calloc
    - EVP_MD_CTX_create
    - EVP_MD_CTX_destroy
    linkageType: ''
    returnType: struct secalgo_hash
    signature: struct secalgo_hash * secalgo_hash_create_md(const EVP_MD* md)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: secalgo_hash_create_md
      Src: /src/unbound/validator/val_secalgo.c:191,1
    - Dst: EVP_sha384
      Src: /src/unbound/validator/val_secalgo.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 189
    functionDepth: 2
    functionLinenumber: 189
    functionLinenumberEnd: 192
    functionName: secalgo_hash_create_sha384
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - EVP_sha384
    - secalgo_hash_create_md
    linkageType: ''
    returnType: struct secalgo_hash
    signature: struct secalgo_hash * secalgo_hash_create_sha384(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: secalgo_hash_create_md
      Src: /src/unbound/validator/val_secalgo.c:196,1
    - Dst: EVP_sha512
      Src: /src/unbound/validator/val_secalgo.c:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: secalgo_hash_create_sha512
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - EVP_sha512
    - secalgo_hash_create_md
    linkageType: ''
    returnType: struct secalgo_hash
    signature: struct secalgo_hash * secalgo_hash_create_sha512(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_DigestUpdate
      Src: /src/unbound/validator/val_secalgo.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - hash
    - data
    - len
    argTypes:
    - struct secalgo_hash*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 199
    functionDepth: 0
    functionLinenumber: 199
    functionLinenumberEnd: 203
    functionName: secalgo_hash_update
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - EVP_DigestUpdate
    linkageType: ''
    returnType: int
    signature: int secalgo_hash_update(struct secalgo_hash* hash, uint8_t* data, size_t
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MD_CTX_size
      Src: /src/unbound/validator/val_secalgo.c:208,1
    - Dst: log_err
      Src: /src/unbound/validator/val_secalgo.c:210,1
    - Dst: EVP_MD_CTX_size
      Src: /src/unbound/validator/val_secalgo.c:213,1
    - Dst: EVP_DigestFinal_ex
      Src: /src/unbound/validator/val_secalgo.c:214,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - hash
    - result
    - maxlen
    - resultlen
    argTypes:
    - struct secalgo_hash*
    - uint8_t*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 215
    functionName: secalgo_hash_final
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - EVP_MD_CTX_size
    - EVP_DigestFinal_ex
    - log_err
    linkageType: ''
    returnType: int
    signature: "int secalgo_hash_final(struct secalgo_hash* hash, uint8_t* result,\n
      \       size_t maxlen, size_t* resultlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MD_CTX_destroy
      Src: /src/unbound/validator/val_secalgo.c:220,1
    - Dst: free
      Src: /src/unbound/validator/val_secalgo.c:221,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - hash
    argTypes:
    - struct secalgo_hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 217
    functionDepth: 1
    functionLinenumber: 217
    functionLinenumberEnd: 222
    functionName: secalgo_hash_delete
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - free
    - EVP_MD_CTX_destroy
    linkageType: ''
    returnType: void
    signature: void secalgo_hash_delete(struct secalgo_hash* hash)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: EVP_default_properties_is_fips_enabled
      Src: /src/unbound/validator/val_secalgo.c:236,1
    - Dst: sldns_key_EVP_load_gost_id
      Src: /src/unbound/validator/val_secalgo.c:251,1
    - Dst: EVP_get_digestbyname
      Src: /src/unbound/validator/val_secalgo.c:252,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - algo
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 263
    functionName: ds_digest_size_supported
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - EVP_default_properties_is_fips_enabled
    - sldns_key_EVP_load_gost_id
    - EVP_get_digestbyname
    linkageType: ''
    returnType: size_t
    signature: size_t ds_digest_size_supported(int algo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: EVP_get_digestbyname
      Src: /src/unbound/validator/val_secalgo.c:270,1
    - Dst: sldns_digest_evp
      Src: /src/unbound/validator/val_secalgo.c:273,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - data
    - len
    - dest
    argTypes:
    - unsigned char*
    - size_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 267
    functionDepth: 1
    functionLinenumber: 267
    functionLinenumberEnd: 274
    functionName: do_gost94
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - sldns_digest_evp
    - EVP_get_digestbyname
    linkageType: ''
    returnType: int
    signature: int do_gost94(unsigned char* data, size_t len, unsigned char* dest)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: sldns_digest_evp
      Src: /src/unbound/validator/val_secalgo.c:285,1
    - Dst: EVP_sha1
      Src: /src/unbound/validator/val_secalgo.c:285,1
    - Dst: log_crypto_error
      Src: /src/unbound/validator/val_secalgo.c:286,1
    - Dst: ERR_get_error
      Src: /src/unbound/validator/val_secalgo.c:287,1
    - Dst: SHA1
      Src: /src/unbound/validator/val_secalgo.c:289,1
    - Dst: sldns_digest_evp
      Src: /src/unbound/validator/val_secalgo.c:296,1
    - Dst: EVP_sha256
      Src: /src/unbound/validator/val_secalgo.c:296,1
    - Dst: log_crypto_error
      Src: /src/unbound/validator/val_secalgo.c:297,1
    - Dst: ERR_get_error
      Src: /src/unbound/validator/val_secalgo.c:298,1
    - Dst: SHA256
      Src: /src/unbound/validator/val_secalgo.c:300,1
    - Dst: do_gost94
      Src: /src/unbound/validator/val_secalgo.c:306,1
    - Dst: sldns_digest_evp
      Src: /src/unbound/validator/val_secalgo.c:313,1
    - Dst: EVP_sha384
      Src: /src/unbound/validator/val_secalgo.c:313,1
    - Dst: log_crypto_error
      Src: /src/unbound/validator/val_secalgo.c:314,1
    - Dst: ERR_get_error
      Src: /src/unbound/validator/val_secalgo.c:315,1
    - Dst: SHA384
      Src: /src/unbound/validator/val_secalgo.c:317,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:322,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 4
    argNames:
    - algo
    - buf
    - len
    - res
    argTypes:
    - int
    - unsigned char*
    - size_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 277
    functionDepth: 2
    functionLinenumber: 277
    functionLinenumberEnd: 327
    functionName: secalgo_ds_digest
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - EVP_sha384
    - SHA384
    - verbose
    - ERR_get_error
    - SHA256
    - EVP_sha256
    - do_gost94
    - SHA1
    - sldns_digest_evp
    - log_crypto_error
    - EVP_sha1
    linkageType: ''
    returnType: int
    signature: "int secalgo_ds_digest(int algo, unsigned char* buf, size_t len,\n\tunsigned
      char* res)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: EVP_default_properties_is_fips_enabled
      Src: /src/unbound/validator/val_secalgo.c:350,1
    - Dst: EVP_default_properties_is_fips_enabled
      Src: /src/unbound/validator/val_secalgo.c:380,1
    - Dst: sldns_key_EVP_load_gost_id
      Src: /src/unbound/validator/val_secalgo.c:389,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 1
    argNames:
    - id
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 330
    functionDepth: 1
    functionLinenumber: 330
    functionLinenumberEnd: 394
    functionName: dnskey_algo_id_is_supported
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - EVP_default_properties_is_fips_enabled
    - sldns_key_EVP_load_gost_id
    linkageType: ''
    returnType: int
    signature: int dnskey_algo_id_is_supported(int id)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: BN_new
      Src: /src/unbound/validator/val_secalgo.c:416,1
    - Dst: BN_bin2bn
      Src: /src/unbound/validator/val_secalgo.c:418,1
    - Dst: BN_new
      Src: /src/unbound/validator/val_secalgo.c:419,1
    - Dst: BN_bin2bn
      Src: /src/unbound/validator/val_secalgo.c:421,1
    - Dst: DSA_SIG_new
      Src: /src/unbound/validator/val_secalgo.c:422,1
    - Dst: DSA_SIG_set0
      Src: /src/unbound/validator/val_secalgo.c:426,1
    - Dst: DSA_SIG_free
      Src: /src/unbound/validator/val_secalgo.c:427,1
    - Dst: i2d_DSA_SIG
      Src: /src/unbound/validator/val_secalgo.c:437,1
    - Dst: DSA_SIG_free
      Src: /src/unbound/validator/val_secalgo.c:439,1
    - Dst: free
      Src: /src/unbound/validator/val_secalgo.c:440,1
    - Dst: DSA_SIG_free
      Src: /src/unbound/validator/val_secalgo.c:444,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 2
    argNames:
    - sig
    - len
    argTypes:
    - unsigned char**
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 446
    functionName: setup_dsa_sig
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - BN_new
    - BN_bin2bn
    - DSA_SIG_set0
    - DSA_SIG_new
    - free
    - i2d_DSA_SIG
    - DSA_SIG_free
    linkageType: ''
    returnType: int
    signature: int setup_dsa_sig(unsigned char** sig, unsigned int* len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/validator/val_secalgo.c:491,1
    - Dst: memmove
      Src: /src/unbound/validator/val_secalgo.c:504,1
    - Dst: memmove
      Src: /src/unbound/validator/val_secalgo.c:506,1
    - Dst: memmove
      Src: /src/unbound/validator/val_secalgo.c:514,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 2
    argNames:
    - sig
    - len
    argTypes:
    - unsigned char**
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 458
    functionDepth: 1
    functionLinenumber: 458
    functionLinenumberEnd: 517
    functionName: setup_ecdsa_sig
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - malloc
    - memmove
    linkageType: ''
    returnType: int
    signature: int setup_ecdsa_sig(unsigned char** sig, unsigned int* len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: EVP_sha256
      Src: /src/unbound/validator/val_secalgo.c:527,1
    - Dst: EVP_sha384
      Src: /src/unbound/validator/val_secalgo.c:531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 534
    functionName: ecdsa_evp_workaround_init
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - EVP_sha384
    - EVP_sha256
    linkageType: ''
    returnType: void
    signature: void ecdsa_evp_workaround_init(void)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: sldns_key_dsa2pkey_raw
      Src: /src/unbound/validator/val_secalgo.c:555,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:557,1
    - Dst: EVP_dss1
      Src: /src/unbound/validator/val_secalgo.c:561,1
    - Dst: EVP_sha1
      Src: /src/unbound/validator/val_secalgo.c:563,1
    - Dst: sldns_key_rsa2pkey_raw
      Src: /src/unbound/validator/val_secalgo.c:580,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:582,1
    - Dst: EVP_sha256
      Src: /src/unbound/validator/val_secalgo.c:589,1
    - Dst: EVP_sha512
      Src: /src/unbound/validator/val_secalgo.c:594,1
    - Dst: EVP_sha1
      Src: /src/unbound/validator/val_secalgo.c:598,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:600,1
    - Dst: sldns_key_rsa2pkey_raw
      Src: /src/unbound/validator/val_secalgo.c:606,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:608,1
    - Dst: EVP_md5
      Src: /src/unbound/validator/val_secalgo.c:611,1
    - Dst: sldns_gost2pkey_raw
      Src: /src/unbound/validator/val_secalgo.c:616,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:618,1
    - Dst: EVP_get_digestbyname
      Src: /src/unbound/validator/val_secalgo.c:622,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:624,1
    - Dst: sldns_ecdsa2pkey_raw
      Src: /src/unbound/validator/val_secalgo.c:632,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:635,1
    - Dst: EVP_sha256
      Src: /src/unbound/validator/val_secalgo.c:642,1
    - Dst: sldns_ecdsa2pkey_raw
      Src: /src/unbound/validator/val_secalgo.c:646,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:649,1
    - Dst: EVP_sha384
      Src: /src/unbound/validator/val_secalgo.c:656,1
    - Dst: sldns_ed255192pkey_raw
      Src: /src/unbound/validator/val_secalgo.c:662,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:664,1
    - Dst: sldns_ed4482pkey_raw
      Src: /src/unbound/validator/val_secalgo.c:673,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:675,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:683,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 89
    argCount: 5
    argNames:
    - algo
    - evp_key
    - digest_type
    - key
    - keylen
    argTypes:
    - int
    - EVP_PKEY**
    - EVP_MD**
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 547
    functionDepth: 4
    functionLinenumber: 547
    functionLinenumberEnd: 688
    functionName: setup_key_digest
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - sldns_ecdsa2pkey_raw
    - EVP_sha384
    - verbose
    - sldns_gost2pkey_raw
    - EVP_md5
    - EVP_sha256
    - EVP_sha512
    - sldns_ed255192pkey_raw
    - sldns_ed4482pkey_raw
    - EVP_dss1
    - sldns_key_dsa2pkey_raw
    - sldns_key_rsa2pkey_raw
    - EVP_sha1
    - EVP_get_digestbyname
    linkageType: ''
    returnType: int
    signature: "int setup_key_digest(int algo, EVP_PKEY** evp_key, const EVP_MD**
      digest_type, \n\tunsigned char* key, size_t keylen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MD_CTX_destroy
      Src: /src/unbound/validator/val_secalgo.c:695,1
    - Dst: EVP_MD_CTX_cleanup
      Src: /src/unbound/validator/val_secalgo.c:697,1
    - Dst: free
      Src: /src/unbound/validator/val_secalgo.c:698,1
    - Dst: EVP_PKEY_free
      Src: /src/unbound/validator/val_secalgo.c:700,1
    - Dst: free
      Src: /src/unbound/validator/val_secalgo.c:701,1
    - Dst: OPENSSL_free
      Src: /src/unbound/validator/val_secalgo.c:702,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 5
    argNames:
    - ctx
    - evp_key
    - sigblock
    - dofree
    - docrypto_free
    argTypes:
    - EVP_MD_CTX*
    - EVP_PKEY*
    - unsigned char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 690
    functionDepth: 1
    functionLinenumber: 690
    functionLinenumberEnd: 703
    functionName: digest_ctx_free
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - EVP_PKEY_free
    - EVP_MD_CTX_cleanup
    - OPENSSL_free
    - free
    - EVP_MD_CTX_destroy
    linkageType: ''
    returnType: void
    signature: "void digest_ctx_free(EVP_MD_CTX* ctx, EVP_PKEY *evp_key,\n\tunsigned
      char* sigblock, int dofree, int docrypto_free)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ERR_get_error
      Src: /src/unbound/validator/val_secalgo.c:708,1
    - Dst: ERR_GET_LIB
      Src: /src/unbound/validator/val_secalgo.c:710,1
    - Dst: ERR_GET_REASON
      Src: /src/unbound/validator/val_secalgo.c:711,1
    - Dst: log_crypto_verbose
      Src: /src/unbound/validator/val_secalgo.c:712,1
    - Dst: log_crypto_verbose
      Src: /src/unbound/validator/val_secalgo.c:716,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 705
    functionDepth: 2
    functionLinenumber: 705
    functionLinenumberEnd: 718
    functionName: digest_error_status
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - ERR_get_error
    - log_crypto_verbose
    - ERR_GET_REASON
    - ERR_GET_LIB
    linkageType: ''
    returnType: enum sec_status
    signature: enum sec_status digest_error_status(const char *str)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: setup_key_digest
      Src: /src/unbound/validator/val_secalgo.c:751,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:752,1
    - Dst: EVP_PKEY_free
      Src: /src/unbound/validator/val_secalgo.c:754,1
    - Dst: setup_dsa_sig
      Src: /src/unbound/validator/val_secalgo.c:761,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:762,1
    - Dst: EVP_PKEY_free
      Src: /src/unbound/validator/val_secalgo.c:764,1
    - Dst: setup_ecdsa_sig
      Src: /src/unbound/validator/val_secalgo.c:776,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:777,1
    - Dst: EVP_PKEY_free
      Src: /src/unbound/validator/val_secalgo.c:779,1
    - Dst: EVP_MD_CTX_new
      Src: /src/unbound/validator/val_secalgo.c:788,1
    - Dst: malloc
      Src: /src/unbound/validator/val_secalgo.c:790,1
    - Dst: EVP_MD_CTX_init
      Src: /src/unbound/validator/val_secalgo.c:791,1
    - Dst: log_err
      Src: /src/unbound/validator/val_secalgo.c:794,1
    - Dst: EVP_PKEY_free
      Src: /src/unbound/validator/val_secalgo.c:795,1
    - Dst: free
      Src: /src/unbound/validator/val_secalgo.c:796,1
    - Dst: OPENSSL_free
      Src: /src/unbound/validator/val_secalgo.c:797,1
    - Dst: EVP_DigestInit
      Src: /src/unbound/validator/val_secalgo.c:801,1
    - Dst: digest_error_status
      Src: /src/unbound/validator/val_secalgo.c:803,1
    - Dst: digest_ctx_free
      Src: /src/unbound/validator/val_secalgo.c:804,1
    - Dst: EVP_DigestUpdate
      Src: /src/unbound/validator/val_secalgo.c:808,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_secalgo.c:808,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/validator/val_secalgo.c:809,1
    - Dst: log_crypto_verbose
      Src: /src/unbound/validator/val_secalgo.c:810,1
    - Dst: ERR_get_error
      Src: /src/unbound/validator/val_secalgo.c:811,1
    - Dst: digest_ctx_free
      Src: /src/unbound/validator/val_secalgo.c:812,1
    - Dst: EVP_VerifyFinal
      Src: /src/unbound/validator/val_secalgo.c:817,1
    - Dst: EVP_DigestVerifyInit
      Src: /src/unbound/validator/val_secalgo.c:819,1
    - Dst: digest_error_status
      Src: /src/unbound/validator/val_secalgo.c:821,1
    - Dst: digest_ctx_free
      Src: /src/unbound/validator/val_secalgo.c:822,1
    - Dst: EVP_DigestVerify
      Src: /src/unbound/validator/val_secalgo.c:826,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_secalgo.c:827,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/validator/val_secalgo.c:828,1
    - Dst: digest_ctx_free
      Src: /src/unbound/validator/val_secalgo.c:830,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:836,1
    - Dst: log_crypto_error
      Src: /src/unbound/validator/val_secalgo.c:841,1
    - Dst: ERR_get_error
      Src: /src/unbound/validator/val_secalgo.c:841,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 70
    argCount: 7
    argNames:
    - buf
    - algo
    - sigblock
    - sigblock_len
    - key
    - keylen
    - reason
    argTypes:
    - sldns_buffer*
    - int
    - unsigned char*
    - unsigned int
    - unsigned char*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 843
      start: 734
    functionDepth: 5
    functionLinenumber: 734
    functionLinenumberEnd: 843
    functionName: verify_canonrrset
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - EVP_MD_CTX_new
    - setup_ecdsa_sig
    - log_err
    - EVP_DigestVerify
    - sldns_buffer_begin
    - digest_error_status
    - EVP_PKEY_free
    - digest_ctx_free
    - setup_key_digest
    - EVP_DigestInit
    - verbose
    - ERR_get_error
    - EVP_VerifyFinal
    - malloc
    - free
    - log_crypto_error
    - EVP_DigestUpdate
    - setup_dsa_sig
    - EVP_MD_CTX_init
    - OPENSSL_free
    - sldns_buffer_limit
    - EVP_DigestVerifyInit
    - log_crypto_verbose
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status verify_canonrrset(sldns_buffer* buf, int algo, unsigned
      char* sigblock,\n\tunsigned int sigblock_len, unsigned char* key, unsigned int
      keylen,\n\tchar** reason)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - id
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 858
    functionDepth: 0
    functionLinenumber: 858
    functionLinenumberEnd: 867
    functionName: nsec3_hash_algo_size_supported
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t nsec3_hash_algo_size_supported(int id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: HASH_HashBuf
      Src: /src/unbound/validator/val_secalgo.c:876,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - algo
    - buf
    - len
    - res
    argTypes:
    - int
    - unsigned char*
    - size_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 881
      start: 870
    functionDepth: 0
    functionLinenumber: 870
    functionLinenumberEnd: 881
    functionName: secalgo_nsec3_hash
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - HASH_HashBuf
    linkageType: ''
    returnType: int
    signature: "int secalgo_nsec3_hash(int algo, unsigned char* buf, size_t len,\n
      \       unsigned char* res)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HASH_HashBuf
      Src: /src/unbound/validator/val_secalgo.c:886,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - len
    - res
    argTypes:
    - unsigned char*
    - size_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 883
    functionDepth: 0
    functionLinenumber: 883
    functionLinenumberEnd: 887
    functionName: secalgo_hash_sha256
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - HASH_HashBuf
    linkageType: ''
    returnType: void
    signature: void secalgo_hash_sha256(unsigned char* buf, size_t len, unsigned char*
      res)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/validator/val_secalgo.c:898,1
    - Dst: HASH_Create
      Src: /src/unbound/validator/val_secalgo.c:901,1
    - Dst: free
      Src: /src/unbound/validator/val_secalgo.c:903,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - tp
    argTypes:
    - HASH_HashType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 907
      start: 896
    functionDepth: 1
    functionLinenumber: 896
    functionLinenumberEnd: 907
    functionName: secalgo_hash_create_type
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - HASH_Create
    - calloc
    - free
    linkageType: ''
    returnType: struct secalgo_hash
    signature: struct secalgo_hash * secalgo_hash_create_type(HASH_HashType tp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: secalgo_hash_create_type
      Src: /src/unbound/validator/val_secalgo.c:911,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 909
    functionDepth: 2
    functionLinenumber: 909
    functionLinenumberEnd: 912
    functionName: secalgo_hash_create_sha384
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - secalgo_hash_create_type
    linkageType: ''
    returnType: struct secalgo_hash
    signature: struct secalgo_hash * secalgo_hash_create_sha384(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: secalgo_hash_create_type
      Src: /src/unbound/validator/val_secalgo.c:916,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 917
      start: 914
    functionDepth: 2
    functionLinenumber: 914
    functionLinenumberEnd: 917
    functionName: secalgo_hash_create_sha512
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - secalgo_hash_create_type
    linkageType: ''
    returnType: struct secalgo_hash
    signature: struct secalgo_hash * secalgo_hash_create_sha512(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: HASH_Update
      Src: /src/unbound/validator/val_secalgo.c:921,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - hash
    - data
    - len
    argTypes:
    - struct secalgo_hash*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 919
    functionDepth: 0
    functionLinenumber: 919
    functionLinenumberEnd: 923
    functionName: secalgo_hash_update
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - HASH_Update
    linkageType: ''
    returnType: int
    signature: int secalgo_hash_update(struct secalgo_hash* hash, uint8_t* data, size_t
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HASH_ResultLenContext
      Src: /src/unbound/validator/val_secalgo.c:929,1
    - Dst: log_err
      Src: /src/unbound/validator/val_secalgo.c:931,1
    - Dst: HASH_End
      Src: /src/unbound/validator/val_secalgo.c:934,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - hash
    - result
    - maxlen
    - resultlen
    argTypes:
    - struct secalgo_hash*
    - uint8_t*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 925
    functionDepth: 1
    functionLinenumber: 925
    functionLinenumberEnd: 938
    functionName: secalgo_hash_final
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - HASH_ResultLenContext
    - log_err
    - HASH_End
    linkageType: ''
    returnType: int
    signature: "int secalgo_hash_final(struct secalgo_hash* hash, uint8_t* result,\n
      \       size_t maxlen, size_t* resultlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: HASH_Destroy
      Src: /src/unbound/validator/val_secalgo.c:943,1
    - Dst: free
      Src: /src/unbound/validator/val_secalgo.c:944,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - hash
    argTypes:
    - struct secalgo_hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 940
    functionDepth: 1
    functionLinenumber: 940
    functionLinenumberEnd: 945
    functionName: secalgo_hash_delete
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - free
    - HASH_Destroy
    linkageType: ''
    returnType: void
    signature: void secalgo_hash_delete(struct secalgo_hash* hash)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - algo
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 969
      start: 947
    functionDepth: 0
    functionLinenumber: 947
    functionLinenumberEnd: 969
    functionName: ds_digest_size_supported
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t ds_digest_size_supported(int algo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: HASH_HashBuf
      Src: /src/unbound/validator/val_secalgo.c:979,1
    - Dst: HASH_HashBuf
      Src: /src/unbound/validator/val_secalgo.c:984,1
    - Dst: HASH_HashBuf
      Src: /src/unbound/validator/val_secalgo.c:989,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:994,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - algo
    - buf
    - len
    - res
    argTypes:
    - int
    - unsigned char*
    - size_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 971
    functionDepth: 1
    functionLinenumber: 971
    functionLinenumberEnd: 999
    functionName: secalgo_ds_digest
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - HASH_HashBuf
    - verbose
    linkageType: ''
    returnType: int
    signature: "int secalgo_ds_digest(int algo, unsigned char* buf, size_t len,\n\tunsigned
      char* res)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: PK11_TokenExists
      Src: /src/unbound/validator/val_secalgo.c:1030,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - id
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 1001
    functionDepth: 0
    functionLinenumber: 1001
    functionLinenumberEnd: 1036
    functionName: dnskey_algo_id_is_supported
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - PK11_TokenExists
    linkageType: ''
    returnType: int
    signature: int dnskey_algo_id_is_supported(int id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PORT_NewArena
      Src: /src/unbound/validator/val_secalgo.c:1042,1
    - Dst: log_err
      Src: /src/unbound/validator/val_secalgo.c:1044,1
    - Dst: PORT_ArenaZNew
      Src: /src/unbound/validator/val_secalgo.c:1047,1
    - Dst: log_err
      Src: /src/unbound/validator/val_secalgo.c:1049,1
    - Dst: PORT_FreeArena
      Src: /src/unbound/validator/val_secalgo.c:1050,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - ktype
    argTypes:
    - KeyType
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1058
      start: 1039
    functionDepth: 1
    functionLinenumber: 1039
    functionLinenumberEnd: 1058
    functionName: nss_key_create
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - PORT_FreeArena
    - log_err
    - PORT_NewArena
    - PORT_ArenaZNew
    linkageType: ''
    returnType: SECKEYPublicKey
    signature: SECKEYPublicKey * nss_key_create(KeyType ktype)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/validator/val_secalgo.c:1087,1
    - Dst: nss_key_create
      Src: /src/unbound/validator/val_secalgo.c:1098,1
    - Dst: SECITEM_CopyItem
      Src: /src/unbound/validator/val_secalgo.c:1102,1
    - Dst: SECKEY_DestroyPublicKey
      Src: /src/unbound/validator/val_secalgo.c:1103,1
    - Dst: SECITEM_CopyItem
      Src: /src/unbound/validator/val_secalgo.c:1106,1
    - Dst: SECKEY_DestroyPublicKey
      Src: /src/unbound/validator/val_secalgo.c:1107,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 3
    argNames:
    - key
    - len
    - algo
    argTypes:
    - unsigned char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1112
      start: 1060
    functionDepth: 2
    functionLinenumber: 1060
    functionLinenumberEnd: 1112
    functionName: nss_buf2ecdsa
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - SECKEY_DestroyPublicKey
    - SECITEM_CopyItem
    - nss_key_create
    - memmove
    linkageType: ''
    returnType: SECKEYPublicKey
    signature: SECKEYPublicKey * nss_buf2ecdsa(unsigned char* key, size_t len, int
      algo)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: nss_key_create
      Src: /src/unbound/validator/val_secalgo.c:1154,1
    - Dst: SECITEM_CopyItem
      Src: /src/unbound/validator/val_secalgo.c:1157,1
    - Dst: SECKEY_DestroyPublicKey
      Src: /src/unbound/validator/val_secalgo.c:1158,1
    - Dst: SECITEM_CopyItem
      Src: /src/unbound/validator/val_secalgo.c:1161,1
    - Dst: SECKEY_DestroyPublicKey
      Src: /src/unbound/validator/val_secalgo.c:1162,1
    - Dst: SECITEM_CopyItem
      Src: /src/unbound/validator/val_secalgo.c:1165,1
    - Dst: SECKEY_DestroyPublicKey
      Src: /src/unbound/validator/val_secalgo.c:1166,1
    - Dst: SECITEM_CopyItem
      Src: /src/unbound/validator/val_secalgo.c:1169,1
    - Dst: SECKEY_DestroyPublicKey
      Src: /src/unbound/validator/val_secalgo.c:1170,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 2
    argNames:
    - key
    - len
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1115
    functionDepth: 2
    functionLinenumber: 1115
    functionLinenumberEnd: 1174
    functionName: nss_buf2dsa
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - SECITEM_CopyItem
    - SECKEY_DestroyPublicKey
    - nss_key_create
    linkageType: ''
    returnType: SECKEYPublicKey
    signature: SECKEYPublicKey * nss_buf2dsa(unsigned char* key, size_t len)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/validator/val_secalgo.c:1191,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_secalgo.c:1192,1
    - Dst: nss_key_create
      Src: /src/unbound/validator/val_secalgo.c:1209,1
    - Dst: SECITEM_CopyItem
      Src: /src/unbound/validator/val_secalgo.c:1212,1
    - Dst: SECKEY_DestroyPublicKey
      Src: /src/unbound/validator/val_secalgo.c:1213,1
    - Dst: SECITEM_CopyItem
      Src: /src/unbound/validator/val_secalgo.c:1216,1
    - Dst: SECKEY_DestroyPublicKey
      Src: /src/unbound/validator/val_secalgo.c:1217,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 2
    argNames:
    - key
    - len
    argTypes:
    - unsigned char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1221
      start: 1177
    functionDepth: 2
    functionLinenumber: 1177
    functionLinenumberEnd: 1221
    functionName: nss_buf2rsa
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - memmove
    - nss_key_create
    - SECKEY_DestroyPublicKey
    - SECITEM_CopyItem
    - ntohs
    linkageType: ''
    returnType: SECKEYPublicKey
    signature: SECKEYPublicKey * nss_buf2rsa(unsigned char* key, size_t len)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: nss_buf2dsa
      Src: /src/unbound/validator/val_secalgo.c:1265,1
    - Dst: log_err
      Src: /src/unbound/validator/val_secalgo.c:1267,1
    - Dst: nss_buf2rsa
      Src: /src/unbound/validator/val_secalgo.c:1284,1
    - Dst: log_err
      Src: /src/unbound/validator/val_secalgo.c:1286,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:1312,1
    - Dst: nss_buf2rsa
      Src: /src/unbound/validator/val_secalgo.c:1321,1
    - Dst: log_err
      Src: /src/unbound/validator/val_secalgo.c:1323,1
    - Dst: nss_buf2ecdsa
      Src: /src/unbound/validator/val_secalgo.c:1333,1
    - Dst: log_err
      Src: /src/unbound/validator/val_secalgo.c:1336,1
    - Dst: nss_buf2ecdsa
      Src: /src/unbound/validator/val_secalgo.c:1343,1
    - Dst: log_err
      Src: /src/unbound/validator/val_secalgo.c:1346,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:1355,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 70
    argCount: 7
    argNames:
    - algo
    - pubkey
    - htype
    - key
    - keylen
    - prefix
    - prefixlen
    argTypes:
    - int
    - SECKEYPublicKey**
    - HASH_HashType*
    - unsigned char*
    - size_t
    - unsigned char**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1360
      start: 1235
    functionDepth: 3
    functionLinenumber: 1235
    functionLinenumberEnd: 1360
    functionName: nss_setup_key_digest
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - log_err
    - nss_buf2rsa
    - nss_buf2ecdsa
    - verbose
    - nss_buf2dsa
    linkageType: ''
    returnType: int
    signature: "int nss_setup_key_digest(int algo, SECKEYPublicKey** pubkey, HASH_HashType*
      htype,\n\tunsigned char* key, size_t keylen, unsigned char** prefix,\n\tsize_t*
      prefixlen)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: nss_setup_key_digest
      Src: /src/unbound/validator/val_secalgo.c:1393,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:1395,1
    - Dst: SECKEY_DestroyPublicKey
      Src: /src/unbound/validator/val_secalgo.c:1397,1
    - Dst: DSAU_DecodeDerSig
      Src: /src/unbound/validator/val_secalgo.c:1408,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:1410,1
    - Dst: SECKEY_DestroyPublicKey
      Src: /src/unbound/validator/val_secalgo.c:1412,1
    - Dst: SECITEM_CopyItem
      Src: /src/unbound/validator/val_secalgo.c:1415,1
    - Dst: log_err
      Src: /src/unbound/validator/val_secalgo.c:1416,1
    - Dst: SECKEY_DestroyPublicKey
      Src: /src/unbound/validator/val_secalgo.c:1417,1
    - Dst: SECITEM_FreeItem
      Src: /src/unbound/validator/val_secalgo.c:1418,1
    - Dst: SECITEM_FreeItem
      Src: /src/unbound/validator/val_secalgo.c:1421,1
    - Dst: HASH_ResultLen
      Src: /src/unbound/validator/val_secalgo.c:1428,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:1430,1
    - Dst: SECKEY_DestroyPublicKey
      Src: /src/unbound/validator/val_secalgo.c:1431,1
    - Dst: HASH_HashBuf
      Src: /src/unbound/validator/val_secalgo.c:1434,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_secalgo.c:1434,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/validator/val_secalgo.c:1435,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:1436,1
    - Dst: SECKEY_DestroyPublicKey
      Src: /src/unbound/validator/val_secalgo.c:1437,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:1443,1
    - Dst: SECKEY_DestroyPublicKey
      Src: /src/unbound/validator/val_secalgo.c:1444,1
    - Dst: memcpy
      Src: /src/unbound/validator/val_secalgo.c:1449,1
    - Dst: memmove
      Src: /src/unbound/validator/val_secalgo.c:1450,1
    - Dst: PK11_Verify
      Src: /src/unbound/validator/val_secalgo.c:1454,1
    - Dst: SECKEY_DestroyPublicKey
      Src: /src/unbound/validator/val_secalgo.c:1455,1
    - Dst: PORT_GetError
      Src: /src/unbound/validator/val_secalgo.c:1460,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:1463,1
    - Dst: PORT_ErrorToString
      Src: /src/unbound/validator/val_secalgo.c:1464,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:1475,1
    - Dst: PORT_ErrorToString
      Src: /src/unbound/validator/val_secalgo.c:1476,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 65
    argCount: 7
    argNames:
    - buf
    - algo
    - sigblock
    - sigblock_len
    - key
    - keylen
    - reason
    argTypes:
    - sldns_buffer*
    - int
    - unsigned char*
    - unsigned int
    - unsigned char*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1479
      start: 1375
    functionDepth: 4
    functionLinenumber: 1375
    functionLinenumberEnd: 1479
    functionName: verify_canonrrset
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - log_err
    - HASH_HashBuf
    - memcpy
    - SECITEM_FreeItem
    - memmove
    - verbose
    - sldns_buffer_limit
    - PORT_ErrorToString
    - PK11_Verify
    - sldns_buffer_begin
    - SECKEY_DestroyPublicKey
    - DSAU_DecodeDerSig
    - HASH_ResultLen
    - nss_setup_key_digest
    - SECITEM_CopyItem
    - PORT_GetError
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status verify_canonrrset(sldns_buffer* buf, int algo, unsigned
      char* sigblock, \n\tunsigned int sigblock_len, unsigned char* key, unsigned
      int keylen,\n\tchar** reason)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sha1_init
      Src: /src/unbound/validator/val_secalgo.c:1508,1
    - Dst: sha1_update
      Src: /src/unbound/validator/val_secalgo.c:1509,1
    - Dst: sha1_digest
      Src: /src/unbound/validator/val_secalgo.c:1510,1
    - Dst: sha256_init
      Src: /src/unbound/validator/val_secalgo.c:1516,1
    - Dst: sha256_update
      Src: /src/unbound/validator/val_secalgo.c:1517,1
    - Dst: sha256_digest
      Src: /src/unbound/validator/val_secalgo.c:1518,1
    - Dst: sha384_init
      Src: /src/unbound/validator/val_secalgo.c:1524,1
    - Dst: sha384_update
      Src: /src/unbound/validator/val_secalgo.c:1525,1
    - Dst: sha384_digest
      Src: /src/unbound/validator/val_secalgo.c:1526,1
    - Dst: sha512_init
      Src: /src/unbound/validator/val_secalgo.c:1532,1
    - Dst: sha512_update
      Src: /src/unbound/validator/val_secalgo.c:1533,1
    - Dst: sha512_digest
      Src: /src/unbound/validator/val_secalgo.c:1534,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 30
    argCount: 4
    argNames:
    - algo
    - buf
    - len
    - res
    argTypes:
    - int
    - uint8_t*
    - size_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1541
      start: 1500
    functionDepth: 0
    functionLinenumber: 1500
    functionLinenumberEnd: 1541
    functionName: _digest_nettle
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - sha512_digest
    - sha1_update
    - sha512_update
    - sha384_digest
    - sha1_digest
    - sha512_init
    - sha256_init
    - sha384_init
    - sha384_update
    - sha256_digest
    - sha1_init
    - sha256_update
    linkageType: ''
    returnType: int
    signature: "int _digest_nettle(int algo, uint8_t* buf, size_t len,\n\tunsigned
      char* res)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - id
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1553
      start: 1544
    functionDepth: 0
    functionLinenumber: 1544
    functionLinenumberEnd: 1553
    functionName: nsec3_hash_algo_size_supported
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t nsec3_hash_algo_size_supported(int id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _digest_nettle
      Src: /src/unbound/validator/val_secalgo.c:1562,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - algo
    - buf
    - len
    - res
    argTypes:
    - int
    - unsigned char*
    - size_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1556
    functionDepth: 1
    functionLinenumber: 1556
    functionLinenumberEnd: 1567
    functionName: secalgo_nsec3_hash
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - _digest_nettle
    linkageType: ''
    returnType: int
    signature: "int secalgo_nsec3_hash(int algo, unsigned char* buf, size_t len,\n
      \       unsigned char* res)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _digest_nettle
      Src: /src/unbound/validator/val_secalgo.c:1572,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - buf
    - len
    - res
    argTypes:
    - unsigned char*
    - size_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1573
      start: 1569
    functionDepth: 1
    functionLinenumber: 1569
    functionLinenumberEnd: 1573
    functionName: secalgo_hash_sha256
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - _digest_nettle
    linkageType: ''
    returnType: void
    signature: void secalgo_hash_sha256(unsigned char* buf, size_t len, unsigned char*
      res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/validator/val_secalgo.c:1587,1
    - Dst: sha384_init
      Src: /src/unbound/validator/val_secalgo.c:1591,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1593
      start: 1585
    functionDepth: 1
    functionLinenumber: 1585
    functionLinenumberEnd: 1593
    functionName: secalgo_hash_create_sha384
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - calloc
    - sha384_init
    linkageType: ''
    returnType: struct secalgo_hash
    signature: struct secalgo_hash * secalgo_hash_create_sha384(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/validator/val_secalgo.c:1597,1
    - Dst: sha512_init
      Src: /src/unbound/validator/val_secalgo.c:1601,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1603
      start: 1595
    functionDepth: 1
    functionLinenumber: 1595
    functionLinenumberEnd: 1603
    functionName: secalgo_hash_create_sha512
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - sha512_init
    - calloc
    linkageType: ''
    returnType: struct secalgo_hash
    signature: struct secalgo_hash * secalgo_hash_create_sha512(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sha384_update
      Src: /src/unbound/validator/val_secalgo.c:1608,1
    - Dst: sha512_update
      Src: /src/unbound/validator/val_secalgo.c:1610,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - hash
    - data
    - len
    argTypes:
    - struct secalgo_hash*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1615
      start: 1605
    functionDepth: 0
    functionLinenumber: 1605
    functionLinenumberEnd: 1615
    functionName: secalgo_hash_update
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - sha512_update
    - sha384_update
    linkageType: ''
    returnType: int
    signature: int secalgo_hash_update(struct secalgo_hash* hash, uint8_t* data, size_t
      len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/validator/val_secalgo.c:1623,1
    - Dst: sha384_digest
      Src: /src/unbound/validator/val_secalgo.c:1627,1
    - Dst: log_err
      Src: /src/unbound/validator/val_secalgo.c:1632,1
    - Dst: sha512_digest
      Src: /src/unbound/validator/val_secalgo.c:1636,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 4
    argNames:
    - hash
    - result
    - maxlen
    - resultlen
    argTypes:
    - struct secalgo_hash*
    - uint8_t*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1643
      start: 1617
    functionDepth: 1
    functionLinenumber: 1617
    functionLinenumberEnd: 1643
    functionName: secalgo_hash_final
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - log_err
    - sha512_digest
    - sha384_digest
    linkageType: ''
    returnType: int
    signature: "int secalgo_hash_final(struct secalgo_hash* hash, uint8_t* result,\n
      \       size_t maxlen, size_t* resultlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/validator/val_secalgo.c:1648,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - hash
    argTypes:
    - struct secalgo_hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1649
      start: 1645
    functionDepth: 1
    functionLinenumber: 1645
    functionLinenumberEnd: 1649
    functionName: secalgo_hash_delete
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void secalgo_hash_delete(struct secalgo_hash* hash)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - algo
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1681
      start: 1656
    functionDepth: 0
    functionLinenumber: 1656
    functionLinenumberEnd: 1681
    functionName: ds_digest_size_supported
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t ds_digest_size_supported(int algo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: _digest_nettle
      Src: /src/unbound/validator/val_secalgo.c:1690,1
    - Dst: _digest_nettle
      Src: /src/unbound/validator/val_secalgo.c:1694,1
    - Dst: _digest_nettle
      Src: /src/unbound/validator/val_secalgo.c:1698,1
    - Dst: verbose
      Src: /src/unbound/validator/val_secalgo.c:1703,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - algo
    - buf
    - len
    - res
    argTypes:
    - int
    - unsigned char*
    - size_t
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1708
      start: 1683
    functionDepth: 1
    functionLinenumber: 1683
    functionLinenumberEnd: 1708
    functionName: secalgo_ds_digest
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - verbose
    - _digest_nettle
    linkageType: ''
    returnType: int
    signature: "int secalgo_ds_digest(int algo, unsigned char* buf, size_t len,\n\tunsigned
      char* res)"
  - BBCount: 15
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - id
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1710
    functionDepth: 0
    functionLinenumber: 1710
    functionLinenumberEnd: 1749
    functionName: dnskey_algo_id_is_supported
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dnskey_algo_id_is_supported(int id)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: nettle_dsa_signature_init
      Src: /src/unbound/validator/val_secalgo.c:1765,1
    - Dst: nettle_mpz_set_str_256_u
      Src: /src/unbound/validator/val_secalgo.c:1770,1
    - Dst: nettle_mpz_set_str_256_u
      Src: /src/unbound/validator/val_secalgo.c:1771,1
    - Dst: asn1_der_iterator_first
      Src: /src/unbound/validator/val_secalgo.c:1776,1
    - Dst: asn1_der_decode_constructed
      Src: /src/unbound/validator/val_secalgo.c:1781,1
    - Dst: asn1_der_get_bignum
      Src: /src/unbound/validator/val_secalgo.c:1784,1
    - Dst: asn1_der_iterator_next
      Src: /src/unbound/validator/val_secalgo.c:1786,1
    - Dst: asn1_der_get_bignum
      Src: /src/unbound/validator/val_secalgo.c:1789,1
    - Dst: asn1_der_iterator_next
      Src: /src/unbound/validator/val_secalgo.c:1791,1
    - Dst: nettle_dsa_public_key_init
      Src: /src/unbound/validator/val_secalgo.c:1816,1
    - Dst: nettle_mpz_set_str_256_u
      Src: /src/unbound/validator/val_secalgo.c:1818,1
    - Dst: nettle_mpz_set_str_256_u
      Src: /src/unbound/validator/val_secalgo.c:1820,1
    - Dst: nettle_mpz_set_str_256_u
      Src: /src/unbound/validator/val_secalgo.c:1822,1
    - Dst: nettle_mpz_set_str_256_u
      Src: /src/unbound/validator/val_secalgo.c:1824,1
    - Dst: _digest_nettle
      Src: /src/unbound/validator/val_secalgo.c:1827,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_secalgo.c:1827,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/validator/val_secalgo.c:1828,1
    - Dst: dsa_sha1_verify_digest
      Src: /src/unbound/validator/val_secalgo.c:1829,1
    - Dst: nettle_dsa_signature_clear
      Src: /src/unbound/validator/val_secalgo.c:1832,1
    - Dst: nettle_dsa_public_key_clear
      Src: /src/unbound/validator/val_secalgo.c:1833,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 5
    argNames:
    - buf
    - sigblock
    - sigblock_len
    - key
    - keylen
    argTypes:
    - sldns_buffer*
    - unsigned char*
    - unsigned int
    - unsigned char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1838
      start: 1752
    functionDepth: 2
    functionLinenumber: 1752
    functionLinenumberEnd: 1838
    functionName: _verify_nettle_dsa
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - asn1_der_decode_constructed
    - asn1_der_get_bignum
    - asn1_der_iterator_first
    - nettle_dsa_signature_clear
    - nettle_mpz_set_str_256_u
    - nettle_dsa_public_key_init
    - _digest_nettle
    - sldns_buffer_limit
    - nettle_dsa_signature_init
    - nettle_dsa_public_key_clear
    - sldns_buffer_begin
    - dsa_sha1_verify_digest
    - asn1_der_iterator_next
    linkageType: ''
    returnType: char
    signature: "char *\n_verify_nettle_dsa(sldns_buffer* buf, unsigned char* sigblock,\n\tunsigned
      int sigblock_len, unsigned char* key, unsigned int keylen)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: READ_UINT16
      Src: /src/unbound/validator/val_secalgo.c:1864,1
    - Dst: nettle_rsa_public_key_init
      Src: /src/unbound/validator/val_secalgo.c:1874,1
    - Dst: nettle_mpz_set_str_256_u
      Src: /src/unbound/validator/val_secalgo.c:1875,1
    - Dst: nettle_mpz_set_str_256_u
      Src: /src/unbound/validator/val_secalgo.c:1876,1
    - Dst: nettle_mpz_sizeinbase_256_u
      Src: /src/unbound/validator/val_secalgo.c:1877,1
    - Dst: nettle_mpz_init_set_str_256_u
      Src: /src/unbound/validator/val_secalgo.c:1880,1
    - Dst: _digest_nettle
      Src: /src/unbound/validator/val_secalgo.c:1885,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_secalgo.c:1885,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/validator/val_secalgo.c:1886,1
    - Dst: rsa_sha1_verify_digest
      Src: /src/unbound/validator/val_secalgo.c:1887,1
    - Dst: _digest_nettle
      Src: /src/unbound/validator/val_secalgo.c:1893,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_secalgo.c:1893,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/validator/val_secalgo.c:1894,1
    - Dst: rsa_sha256_verify_digest
      Src: /src/unbound/validator/val_secalgo.c:1895,1
    - Dst: _digest_nettle
      Src: /src/unbound/validator/val_secalgo.c:1901,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_secalgo.c:1901,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/validator/val_secalgo.c:1902,1
    - Dst: rsa_sha512_verify_digest
      Src: /src/unbound/validator/val_secalgo.c:1903,1
    - Dst: nettle_rsa_public_key_clear
      Src: /src/unbound/validator/val_secalgo.c:1911,1
    - Dst: mpz_clear
      Src: /src/unbound/validator/val_secalgo.c:1912,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 6
    argNames:
    - buf
    - digest_size
    - sigblock
    - sigblock_len
    - key
    - keylen
    argTypes:
    - sldns_buffer*
    - unsigned int
    - char*
    - unsigned int
    - uint8_t*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1918
      start: 1841
    functionDepth: 2
    functionLinenumber: 1841
    functionLinenumberEnd: 1918
    functionName: _verify_nettle_rsa
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - nettle_rsa_public_key_init
    - rsa_sha512_verify_digest
    - READ_UINT16
    - nettle_mpz_set_str_256_u
    - nettle_mpz_sizeinbase_256_u
    - nettle_mpz_init_set_str_256_u
    - _digest_nettle
    - sldns_buffer_limit
    - rsa_sha1_verify_digest
    - rsa_sha256_verify_digest
    - nettle_rsa_public_key_clear
    - sldns_buffer_begin
    - mpz_clear
    linkageType: ''
    returnType: char
    signature: "char *\n_verify_nettle_rsa(sldns_buffer* buf, unsigned int digest_size,
      char* sigblock,\n\tunsigned int sigblock_len, uint8_t* key, unsigned int keylen)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nettle_dsa_signature_init
      Src: /src/unbound/validator/val_secalgo.c:1935,1
    - Dst: nettle_ecc_point_init
      Src: /src/unbound/validator/val_secalgo.c:1941,1
    - Dst: nettle_get_secp_256r1
      Src: /src/unbound/validator/val_secalgo.c:1941,1
    - Dst: nettle_mpz_init_set_str_256_u
      Src: /src/unbound/validator/val_secalgo.c:1942,1
    - Dst: nettle_mpz_init_set_str_256_u
      Src: /src/unbound/validator/val_secalgo.c:1943,1
    - Dst: nettle_mpz_set_str_256_u
      Src: /src/unbound/validator/val_secalgo.c:1944,1
    - Dst: nettle_mpz_set_str_256_u
      Src: /src/unbound/validator/val_secalgo.c:1945,1
    - Dst: _digest_nettle
      Src: /src/unbound/validator/val_secalgo.c:1946,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_secalgo.c:1946,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/validator/val_secalgo.c:1947,1
    - Dst: nettle_ecc_point_set
      Src: /src/unbound/validator/val_secalgo.c:1948,1
    - Dst: nettle_ecdsa_verify
      Src: /src/unbound/validator/val_secalgo.c:1949,1
    - Dst: mpz_clear
      Src: /src/unbound/validator/val_secalgo.c:1950,1
    - Dst: mpz_clear
      Src: /src/unbound/validator/val_secalgo.c:1951,1
    - Dst: nettle_ecc_point_clear
      Src: /src/unbound/validator/val_secalgo.c:1952,1
    - Dst: nettle_ecc_point_init
      Src: /src/unbound/validator/val_secalgo.c:1959,1
    - Dst: nettle_get_secp_384r1
      Src: /src/unbound/validator/val_secalgo.c:1959,1
    - Dst: nettle_mpz_init_set_str_256_u
      Src: /src/unbound/validator/val_secalgo.c:1960,1
    - Dst: nettle_mpz_init_set_str_256_u
      Src: /src/unbound/validator/val_secalgo.c:1961,1
    - Dst: nettle_mpz_set_str_256_u
      Src: /src/unbound/validator/val_secalgo.c:1962,1
    - Dst: nettle_mpz_set_str_256_u
      Src: /src/unbound/validator/val_secalgo.c:1963,1
    - Dst: _digest_nettle
      Src: /src/unbound/validator/val_secalgo.c:1964,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_secalgo.c:1964,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/validator/val_secalgo.c:1965,1
    - Dst: nettle_ecc_point_set
      Src: /src/unbound/validator/val_secalgo.c:1966,1
    - Dst: nettle_ecdsa_verify
      Src: /src/unbound/validator/val_secalgo.c:1967,1
    - Dst: mpz_clear
      Src: /src/unbound/validator/val_secalgo.c:1968,1
    - Dst: mpz_clear
      Src: /src/unbound/validator/val_secalgo.c:1969,1
    - Dst: nettle_ecc_point_clear
      Src: /src/unbound/validator/val_secalgo.c:1970,1
    - Dst: nettle_dsa_signature_clear
      Src: /src/unbound/validator/val_secalgo.c:1978,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 41
    argCount: 6
    argNames:
    - buf
    - digest_size
    - sigblock
    - sigblock_len
    - key
    - keylen
    argTypes:
    - sldns_buffer*
    - unsigned int
    - unsigned char*
    - unsigned int
    - unsigned char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1921
    functionDepth: 2
    functionLinenumber: 1921
    functionLinenumberEnd: 1983
    functionName: _verify_nettle_ecdsa
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - nettle_dsa_signature_clear
    - nettle_get_secp_256r1
    - nettle_mpz_init_set_str_256_u
    - nettle_mpz_set_str_256_u
    - _digest_nettle
    - sldns_buffer_limit
    - nettle_dsa_signature_init
    - nettle_ecc_point_clear
    - nettle_ecc_point_init
    - sldns_buffer_begin
    - nettle_ecdsa_verify
    - nettle_ecc_point_set
    - mpz_clear
    - nettle_get_secp_384r1
    linkageType: ''
    returnType: char
    signature: "char *\n_verify_nettle_ecdsa(sldns_buffer* buf, unsigned int digest_size,
      unsigned char* sigblock,\n\tunsigned int sigblock_len, unsigned char* key, unsigned
      int keylen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ed25519_sha512_verify
      Src: /src/unbound/validator/val_secalgo.c:2000,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/validator/val_secalgo.c:2000,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_secalgo.c:2001,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - buf
    - sigblock
    - sigblock_len
    - key
    - keylen
    argTypes:
    - sldns_buffer*
    - unsigned char*
    - unsigned int
    - unsigned char*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2007
      start: 1987
    functionDepth: 2
    functionLinenumber: 1987
    functionLinenumberEnd: 2007
    functionName: _verify_nettle_ed25519
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - ed25519_sha512_verify
    - sldns_buffer_limit
    - sldns_buffer_begin
    linkageType: ''
    returnType: char
    signature: "char *\n_verify_nettle_ed25519(sldns_buffer* buf, unsigned char* sigblock,\n\tunsigned
      int sigblock_len, unsigned char* key, unsigned int keylen)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: _verify_nettle_dsa
      Src: /src/unbound/validator/val_secalgo.c:2048,1
    - Dst: _verify_nettle_rsa
      Src: /src/unbound/validator/val_secalgo.c:2073,1
    - Dst: _verify_nettle_ecdsa
      Src: /src/unbound/validator/val_secalgo.c:2087,1
    - Dst: _verify_nettle_ed25519
      Src: /src/unbound/validator/val_secalgo.c:2096,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 42
    argCount: 7
    argNames:
    - buf
    - algo
    - sigblock
    - sigblock_len
    - key
    - keylen
    - reason
    argTypes:
    - sldns_buffer*
    - int
    - unsigned char*
    - unsigned int
    - unsigned char*
    - unsigned int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2109
      start: 2023
    functionDepth: 3
    functionLinenumber: 2023
    functionLinenumberEnd: 2109
    functionName: verify_canonrrset
    functionSourceFile: /src/unbound/validator/val_secalgo.c
    functionUses: 0
    functionsReached:
    - _verify_nettle_ecdsa
    - _verify_nettle_dsa
    - _verify_nettle_rsa
    - _verify_nettle_ed25519
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status verify_canonrrset(sldns_buffer* buf, int algo, unsigned
      char* sigblock,\n\tunsigned int sigblock_len, unsigned char* key, unsigned int
      keylen,\n\tchar** reason)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_lab_cmp
      Src: /src/unbound/validator/val_anchor.c:71,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - k1
    - k2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 73
    functionName: anchor_cmp
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 1
    functionsReached:
    - dname_lab_cmp
    linkageType: ''
    returnType: int
    signature: int anchor_cmp(const void* k1, const void* k2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/validator/val_anchor.c:78,1
    - Dst: rbtree_create
      Src: /src/unbound/validator/val_anchor.c:81,1
    - Dst: anchors_delete
      Src: /src/unbound/validator/val_anchor.c:83,1
    - Dst: autr_global_create
      Src: /src/unbound/validator/val_anchor.c:86,1
    - Dst: anchors_delete
      Src: /src/unbound/validator/val_anchor.c:88,1
    - Dst: lock_basic_init
      Src: /src/unbound/validator/val_anchor.c:91,1
    - Dst: lock_protect
      Src: /src/unbound/validator/val_anchor.c:92,1
    - Dst: lock_protect
      Src: /src/unbound/validator/val_anchor.c:93,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 95
    functionName: anchors_create
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 1
    functionsReached:
    - anchors_delete
    - lock_basic_init
    - lock_protect
    - calloc
    - autr_global_create
    - rbtree_create
    linkageType: ''
    returnType: struct val_anchors
    signature: "struct val_anchors * \nanchors_create(void)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:105,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:106,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:107,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:108,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:110,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:111,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - pkey
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 112
    functionName: assembled_rrset_delete
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void assembled_rrset_delete(struct ub_packed_rrset_key* pkey)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: autr_point_delete
      Src: /src/unbound/validator/val_anchor.c:121,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/validator/val_anchor.c:124,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:125,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:129,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:130,1
    - Dst: assembled_rrset_delete
      Src: /src/unbound/validator/val_anchor.c:133,1
    - Dst: assembled_rrset_delete
      Src: /src/unbound/validator/val_anchor.c:134,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:135,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - elem
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 115
    functionDepth: 3
    functionLinenumber: 115
    functionLinenumberEnd: 137
    functionName: anchors_delfunc
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - free
    - lock_basic_destroy
    - autr_point_delete
    - assembled_rrset_delete
    linkageType: ''
    returnType: void
    signature: void anchors_delfunc(rbnode_type* elem, void* ATTR_UNUSED(arg))
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_unprotect
      Src: /src/unbound/validator/val_anchor.c:144,1
    - Dst: lock_unprotect
      Src: /src/unbound/validator/val_anchor.c:145,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/validator/val_anchor.c:146,1
    - Dst: traverse_postorder
      Src: /src/unbound/validator/val_anchor.c:148,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:149,1
    - Dst: autr_global_delete
      Src: /src/unbound/validator/val_anchor.c:150,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:151,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - anchors
    argTypes:
    - struct val_anchors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 139
    functionDepth: 2
    functionLinenumber: 139
    functionLinenumberEnd: 152
    functionName: anchors_delete
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 2
    functionsReached:
    - lock_unprotect
    - free
    - autr_global_delete
    - lock_basic_destroy
    - traverse_postorder
    linkageType: ''
    returnType: void
    signature: void anchors_delete(struct val_anchors* anchors)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:162,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:166,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/validator/val_anchor.c:169,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:182,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - anchors
    argTypes:
    - struct val_anchors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 185
    functionName: anchors_init_parents_locked
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 1
    functionsReached:
    - dname_lab_cmp
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: void anchors_init_parents_locked(struct val_anchors* anchors)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:162,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:166,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/validator/val_anchor.c:169,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:182,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - tree
    argTypes:
    - anchors
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 184
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - dname_lab_cmp
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(node, struct trust_anchor*, anchors->tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:191,1
    - Dst: anchors_init_parents_locked
      Src: /src/unbound/validator/val_anchor.c:192,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - anchors
    argTypes:
    - struct val_anchors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 188
    functionDepth: 2
    functionLinenumber: 188
    functionLinenumberEnd: 194
    functionName: init_parents
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 2
    functionsReached:
    - lock_basic_unlock
    - anchors_init_parents_locked
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: void init_parents(struct val_anchors* anchors)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:208,1
    - Dst: rbtree_search
      Src: /src/unbound/validator/val_anchor.c:209,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:211,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:213,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 5
    argNames:
    - anchors
    - name
    - namelabs
    - namelen
    - dclass
    argTypes:
    - struct val_anchors*
    - uint8_t*
    - int
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 217
    functionName: anchor_find
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 5
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    - rbtree_search
    linkageType: ''
    returnType: struct trust_anchor
    signature: "struct trust_anchor *\nanchor_find(struct val_anchors* anchors, uint8_t*
      name, int namelabs,\n\tsize_t namelen, uint16_t dclass)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/validator/val_anchor.c:227,1
    - Dst: memset
      Src: /src/unbound/validator/val_anchor.c:231,1
    - Dst: memdup
      Src: /src/unbound/validator/val_anchor.c:233,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:235,1
    - Dst: lock_basic_init
      Src: /src/unbound/validator/val_anchor.c:241,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:243,1
    - Dst: rbtree_insert
      Src: /src/unbound/validator/val_anchor.c:250,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:252,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_anchor.c:254,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 6
    argNames:
    - anchors
    - name
    - namelabs
    - namelen
    - dclass
    - lockit
    argTypes:
    - struct val_anchors*
    - uint8_t*
    - int
    - size_t
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 256
    functionName: anchor_new_ta
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_basic_init
    - malloc
    - free
    - log_assert
    - lock_basic_lock
    - memset
    - rbtree_insert
    - memdup
    linkageType: ''
    returnType: struct trust_anchor
    signature: "struct trust_anchor *\nanchor_new_ta(struct val_anchors* anchors,
      uint8_t* name, int namelabs,\n\tsize_t namelen, uint16_t dclass, int lockit)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/validator/val_anchor.c:266,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 4
    argNames:
    - ta
    - rdata
    - rdata_len
    - type
    argTypes:
    - struct trust_anchor*
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 270
    functionName: anchor_find_key
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: struct ta_key
    signature: "struct ta_key *\nanchor_find_key(struct trust_anchor* ta, uint8_t*
      rdata, size_t rdata_len,\n\tuint16_t type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/validator/val_anchor.c:276,1
    - Dst: memset
      Src: /src/unbound/validator/val_anchor.c:279,1
    - Dst: memdup
      Src: /src/unbound/validator/val_anchor.c:280,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - rdata
    - rdata_len
    - type
    argTypes:
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 288
    functionName: anchor_new_ta_key
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - malloc
    - memset
    - memdup
    - free
    linkageType: ''
    returnType: struct ta_key
    signature: 'struct ta_key *

      anchor_new_ta_key(uint8_t* rdata, size_t rdata_len, uint16_t type)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_size_labels
      Src: /src/unbound/validator/val_anchor.c:311,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:313,1
    - Dst: anchor_find
      Src: /src/unbound/validator/val_anchor.c:317,1
    - Dst: anchor_new_ta
      Src: /src/unbound/validator/val_anchor.c:319,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:322,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:325,1
    - Dst: anchor_find_key
      Src: /src/unbound/validator/val_anchor.c:329,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:330,1
    - Dst: anchor_new_ta_key
      Src: /src/unbound/validator/val_anchor.c:333,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:335,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:344,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 6
    argNames:
    - anchors
    - name
    - type
    - dclass
    - rdata
    - rdata_len
    argTypes:
    - struct val_anchors*
    - uint8_t*
    - uint16_t
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 303
    functionDepth: 2
    functionLinenumber: 303
    functionLinenumberEnd: 346
    functionName: anchor_store_new_key
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - anchor_new_ta_key
    - log_err
    - anchor_find
    - lock_basic_unlock
    - dname_count_size_labels
    - lock_basic_lock
    - anchor_find_key
    - anchor_new_ta
    linkageType: ''
    returnType: struct trust_anchor
    signature: "struct trust_anchor *\nanchor_store_new_key(struct val_anchors* anchors,
      uint8_t* name, uint16_t type,\n\tuint16_t dclass, uint8_t* rdata, size_t rdata_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: anchor_store_new_key
      Src: /src/unbound/validator/val_anchor.c:361,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/validator/val_anchor.c:362,1
    - Dst: sldns_wirerr_get_class
      Src: /src/unbound/validator/val_anchor.c:363,1
    - Dst: sldns_wirerr_get_rdatawl
      Src: /src/unbound/validator/val_anchor.c:364,1
    - Dst: sldns_wirerr_get_rdatalen
      Src: /src/unbound/validator/val_anchor.c:365,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/val_anchor.c:368,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/validator/val_anchor.c:369,1
    - Dst: sldns_wirerr_get_class
      Src: /src/unbound/validator/val_anchor.c:370,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - anchors
    - rr
    - rl
    - dl
    argTypes:
    - struct val_anchors*
    - uint8_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 356
    functionDepth: 3
    functionLinenumber: 356
    functionLinenumberEnd: 372
    functionName: anchor_store_new_rr
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - log_nametypeclass
    - sldns_wirerr_get_rdatawl
    - anchor_store_new_key
    - sldns_wirerr_get_type
    - sldns_wirerr_get_rdatalen
    - sldns_wirerr_get_class
    linkageType: ''
    returnType: struct trust_anchor
    signature: "struct trust_anchor *\nanchor_store_new_rr(struct val_anchors* anchors,
      uint8_t* rr, size_t rl,\n\tsize_t dl)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/validator/val_anchor.c:385,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:387,1
    - Dst: anchor_store_new_key
      Src: /src/unbound/validator/val_anchor.c:390,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:392,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - anchors
    - str
    argTypes:
    - struct val_anchors*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 380
    functionDepth: 4
    functionLinenumber: 380
    functionLinenumberEnd: 394
    functionName: anchor_insert_insecure
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - anchor_store_new_key
    - log_err
    - sldns_str2wire_dname
    - free
    linkageType: ''
    returnType: struct trust_anchor
    signature: 'struct trust_anchor *

      anchor_insert_insecure(struct val_anchors* anchors, const char* str)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_anchor.c:401,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/validator/val_anchor.c:402,1
    - Dst: sldns_str2wire_rr_buf
      Src: /src/unbound/validator/val_anchor.c:403,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:406,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/validator/val_anchor.c:407,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/validator/val_anchor.c:408,1
    - Dst: anchor_store_new_rr
      Src: /src/unbound/validator/val_anchor.c:411,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:412,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - anchors
    - buffer
    - str
    argTypes:
    - struct val_anchors*
    - sldns_buffer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 396
    functionDepth: 7
    functionLinenumber: 396
    functionLinenumberEnd: 416
    functionName: anchor_store_str
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - log_err
    - sldns_str2wire_rr_buf
    - LDNS_WIREPARSE_OFFSET
    - sldns_get_errorstr_parse
    - sldns_buffer_begin
    - anchor_store_new_rr
    linkageType: ''
    returnType: struct trust_anchor
    signature: "struct trust_anchor *\nanchor_store_str(struct val_anchors* anchors,
      sldns_buffer* buffer,\n\tconst char* str)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_anchor.c:434,1
    - Dst: fopen
      Src: /src/unbound/validator/val_anchor.c:436,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:438,1
    - Dst: strerror
      Src: /src/unbound/validator/val_anchor.c:438,1
    - Dst: memset
      Src: /src/unbound/validator/val_anchor.c:441,1
    - Dst: feof
      Src: /src/unbound/validator/val_anchor.c:444,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/validator/val_anchor.c:445,1
    - Dst: sldns_fp2wire_rr_buf
      Src: /src/unbound/validator/val_anchor.c:447,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:451,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/validator/val_anchor.c:452,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/validator/val_anchor.c:453,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/validator/val_anchor.c:457,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/validator/val_anchor.c:458,1
    - Dst: anchor_store_new_rr
      Src: /src/unbound/validator/val_anchor.c:462,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:463,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:468,1
    - Dst: fclose
      Src: /src/unbound/validator/val_anchor.c:477,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 40
    argCount: 4
    argNames:
    - anchors
    - buffer
    - fname
    - onlyone
    argTypes:
    - struct val_anchors*
    - sldns_buffer*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 426
    functionDepth: 8
    functionLinenumber: 426
    functionLinenumberEnd: 482
    functionName: anchor_read_file
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - log_err
    - sldns_fp2wire_rr_buf
    - fclose
    - feof
    - LDNS_WIREPARSE_OFFSET
    - sldns_get_errorstr_parse
    - fopen
    - strerror
    - sldns_buffer_begin
    - sldns_wirerr_get_type
    - memset
    - anchor_store_new_rr
    linkageType: ''
    returnType: struct trust_anchor
    signature: "struct trust_anchor *\nanchor_read_file(struct val_anchors* anchors,
      sldns_buffer* buffer,\n\tconst char* fname, int onlyone)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getc
      Src: /src/unbound/validator/val_anchor.c:488,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - in
    - c
    argTypes:
    - FILE*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 492
    functionName: skip_to_eol
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - getc
    linkageType: ''
    returnType: void
    signature: void skip_to_eol(FILE* in, int *c)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - c
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 506
    functionName: is_bind_special
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int is_bind_special(int c)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: getc
      Src: /src/unbound/validator/val_anchor.c:534,1
    - Dst: skip_to_eol
      Src: /src/unbound/validator/val_anchor.c:536,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:538,1
    - Dst: sldns_buffer_read_u8_at
      Src: /src/unbound/validator/val_anchor.c:544,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/validator/val_anchor.c:545,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/validator/val_anchor.c:546,1
    - Dst: skip_to_eol
      Src: /src/unbound/validator/val_anchor.c:548,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:550,1
    - Dst: sldns_buffer_read_u8_at
      Src: /src/unbound/validator/val_anchor.c:556,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/validator/val_anchor.c:557,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/validator/val_anchor.c:558,1
    - Dst: getc
      Src: /src/unbound/validator/val_anchor.c:561,1
    - Dst: getc
      Src: /src/unbound/validator/val_anchor.c:563,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:570,1
    - Dst: isspace
      Src: /src/unbound/validator/val_anchor.c:578,1
    - Dst: ungetc
      Src: /src/unbound/validator/val_anchor.c:579,1
    - Dst: is_bind_special
      Src: /src/unbound/validator/val_anchor.c:582,1
    - Dst: ungetc
      Src: /src/unbound/validator/val_anchor.c:583,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/validator/val_anchor.c:592,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:593,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/validator/val_anchor.c:596,1
    - Dst: isspace
      Src: /src/unbound/validator/val_anchor.c:598,1
    - Dst: getc
      Src: /src/unbound/validator/val_anchor.c:600,1
    - Dst: isspace
      Src: /src/unbound/validator/val_anchor.c:603,1
    - Dst: ungetc
      Src: /src/unbound/validator/val_anchor.c:604,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:609,1
    - Dst: is_bind_special
      Src: /src/unbound/validator/val_anchor.c:614,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 78
    argCount: 4
    argNames:
    - in
    - buf
    - line
    - comments
    argTypes:
    - FILE*
    - sldns_buffer*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 529
    functionDepth: 5
    functionLinenumber: 529
    functionLinenumberEnd: 618
    functionName: readkeyword_bindfile
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - log_err
    - sldns_buffer_remaining
    - isspace
    - sldns_buffer_read_u8_at
    - is_bind_special
    - sldns_buffer_skip
    - ungetc
    - skip_to_eol
    - getc
    - sldns_buffer_write_u8
    linkageType: ''
    returnType: int
    signature: int readkeyword_bindfile(FILE* in, sldns_buffer* buf, int* line, int
      comments)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_clear
      Src: /src/unbound/validator/val_anchor.c:625,1
    - Dst: readkeyword_bindfile
      Src: /src/unbound/validator/val_anchor.c:626,1
    - Dst: isspace
      Src: /src/unbound/validator/val_anchor.c:627,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_anchor.c:627,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/validator/val_anchor.c:628,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_anchor.c:631,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/validator/val_anchor.c:632,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:633,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:639,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 4
    argNames:
    - in
    - buf
    - line
    - spec
    argTypes:
    - FILE*
    - sldns_buffer*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 621
    functionDepth: 6
    functionLinenumber: 621
    functionLinenumberEnd: 641
    functionName: skip_to_special
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - log_err
    - isspace
    - sldns_buffer_clear
    - sldns_buffer_begin
    - sldns_buffer_write_u8
    - readkeyword_bindfile
    linkageType: ''
    returnType: int
    signature: int skip_to_special(FILE* in, sldns_buffer* buf, int* line, int spec)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_clear
      Src: /src/unbound/validator/val_anchor.c:665,1
    - Dst: readkeyword_bindfile
      Src: /src/unbound/validator/val_anchor.c:666,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/validator/val_anchor.c:667,1
    - Dst: isspace
      Src: /src/unbound/validator/val_anchor.c:668,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_anchor.c:668,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/validator/val_anchor.c:670,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/validator/val_anchor.c:672,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/validator/val_anchor.c:678,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/validator/val_anchor.c:680,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:681,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_anchor.c:684,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/validator/val_anchor.c:690,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/validator/val_anchor.c:693,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:694,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/validator/val_anchor.c:697,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/validator/val_anchor.c:698,1
    - Dst: strdup
      Src: /src/unbound/validator/val_anchor.c:699,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_anchor.c:699,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:701,1
    - Dst: anchor_store_str
      Src: /src/unbound/validator/val_anchor.c:704,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:705,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:706,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:709,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/validator/val_anchor.c:710,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/validator/val_anchor.c:715,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/validator/val_anchor.c:717,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:718,1
    - Dst: isspace
      Src: /src/unbound/validator/val_anchor.c:723,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/validator/val_anchor.c:723,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/validator/val_anchor.c:729,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:730,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_anchor.c:733,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:738,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 73
    argCount: 4
    argNames:
    - anchors
    - buf
    - line
    - in
    argTypes:
    - struct val_anchors*
    - sldns_buffer*
    - int*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 651
    functionDepth: 8
    functionLinenumber: 651
    functionLinenumberEnd: 740
    functionName: process_bind_contents
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_remaining
    - log_err
    - isspace
    - sldns_buffer_write
    - sldns_buffer_skip
    - anchor_store_str
    - sldns_buffer_clear
    - free
    - sldns_buffer_begin
    - sldns_buffer_current
    - sldns_buffer_write_u8
    - strdup
    - readkeyword_bindfile
    linkageType: ''
    returnType: int
    signature: "int process_bind_contents(struct val_anchors* anchors, sldns_buffer*
      buf, \n\tint* line, FILE* in)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/validator/val_anchor.c:754,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:757,1
    - Dst: strerror
      Src: /src/unbound/validator/val_anchor.c:757,1
    - Dst: verbose
      Src: /src/unbound/validator/val_anchor.c:760,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/validator/val_anchor.c:762,1
    - Dst: readkeyword_bindfile
      Src: /src/unbound/validator/val_anchor.c:763,1
    - Dst: strncmp
      Src: /src/unbound/validator/val_anchor.c:764,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_anchor.c:764,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/validator/val_anchor.c:766,1
    - Dst: skip_to_special
      Src: /src/unbound/validator/val_anchor.c:770,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:771,1
    - Dst: fclose
      Src: /src/unbound/validator/val_anchor.c:772,1
    - Dst: process_bind_contents
      Src: /src/unbound/validator/val_anchor.c:776,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:777,1
    - Dst: fclose
      Src: /src/unbound/validator/val_anchor.c:778,1
    - Dst: skip_to_special
      Src: /src/unbound/validator/val_anchor.c:781,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:782,1
    - Dst: fclose
      Src: /src/unbound/validator/val_anchor.c:783,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/validator/val_anchor.c:786,1
    - Dst: fclose
      Src: /src/unbound/validator/val_anchor.c:788,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - anchors
    - buffer
    - fname
    argTypes:
    - struct val_anchors*
    - sldns_buffer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 749
    functionDepth: 9
    functionLinenumber: 749
    functionLinenumberEnd: 790
    functionName: anchor_read_bind_file
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - process_bind_contents
    - log_err
    - strncmp
    - verbose
    - skip_to_special
    - fclose
    - sldns_buffer_clear
    - fopen
    - strerror
    - sldns_buffer_begin
    - readkeyword_bindfile
    linkageType: ''
    returnType: int
    signature: "int anchor_read_bind_file(struct val_anchors* anchors, sldns_buffer*
      buffer,\n\tconst char* fname)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/validator/val_anchor.c:808,1
    - Dst: strchr
      Src: /src/unbound/validator/val_anchor.c:808,1
    - Dst: strchr
      Src: /src/unbound/validator/val_anchor.c:808,1
    - Dst: strchr
      Src: /src/unbound/validator/val_anchor.c:809,1
    - Dst: strchr
      Src: /src/unbound/validator/val_anchor.c:809,1
    - Dst: anchor_read_bind_file
      Src: /src/unbound/validator/val_anchor.c:810,1
    - Dst: verbose
      Src: /src/unbound/validator/val_anchor.c:812,1
    - Dst: memset
      Src: /src/unbound/validator/val_anchor.c:827,1
    - Dst: glob
      Src: /src/unbound/validator/val_anchor.c:828,1
    - Dst: verbose
      Src: /src/unbound/validator/val_anchor.c:832,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:836,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:839,1
    - Dst: strerror
      Src: /src/unbound/validator/val_anchor.c:840,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:842,1
    - Dst: strerror
      Src: /src/unbound/validator/val_anchor.c:843,1
    - Dst: anchor_read_bind_file
      Src: /src/unbound/validator/val_anchor.c:850,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:851,1
    - Dst: globfree
      Src: /src/unbound/validator/val_anchor.c:853,1
    - Dst: globfree
      Src: /src/unbound/validator/val_anchor.c:857,1
    - Dst: anchor_read_bind_file
      Src: /src/unbound/validator/val_anchor.c:860,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 3
    argNames:
    - anchors
    - buffer
    - pat
    argTypes:
    - struct val_anchors*
    - sldns_buffer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 800
    functionDepth: 10
    functionLinenumber: 800
    functionLinenumberEnd: 862
    functionName: anchor_read_bind_file_wild
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - glob
    - log_err
    - globfree
    - verbose
    - strerror
    - anchor_read_bind_file
    - strchr
    - memset
    linkageType: ''
    returnType: int
    signature: "int anchor_read_bind_file_wild(struct val_anchors* anchors, sldns_buffer*
      buffer,\n\tconst char* pat)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/validator/val_anchor.c:875,1
    - Dst: memset
      Src: /src/unbound/validator/val_anchor.c:881,1
    - Dst: memdup
      Src: /src/unbound/validator/val_anchor.c:882,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:884,1
    - Dst: htons
      Src: /src/unbound/validator/val_anchor.c:889,1
    - Dst: htons
      Src: /src/unbound/validator/val_anchor.c:890,1
    - Dst: malloc
      Src: /src/unbound/validator/val_anchor.c:893,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:895,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:896,1
    - Dst: memset
      Src: /src/unbound/validator/val_anchor.c:899,1
    - Dst: reallocarray
      Src: /src/unbound/validator/val_anchor.c:902,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:904,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:905,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:906,1
    - Dst: reallocarray
      Src: /src/unbound/validator/val_anchor.c:909,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:911,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:912,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:913,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:914,1
    - Dst: reallocarray
      Src: /src/unbound/validator/val_anchor.c:917,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:919,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:920,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:921,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:922,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:923,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 56
    argCount: 3
    argNames:
    - ta
    - num
    - type
    argTypes:
    - struct trust_anchor*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 871
    functionDepth: 1
    functionLinenumber: 871
    functionLinenumberEnd: 939
    functionName: assemble_it
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - reallocarray
    - malloc
    - htons
    - free
    - memset
    - memdup
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: 'struct ub_packed_rrset_key *

      assemble_it(struct trust_anchor* ta, size_t num, uint16_t type)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assemble_it
      Src: /src/unbound/validator/val_anchor.c:950,1
    - Dst: assemble_it
      Src: /src/unbound/validator/val_anchor.c:955,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - ta
    argTypes:
    - struct trust_anchor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 946
    functionDepth: 2
    functionLinenumber: 946
    functionLinenumberEnd: 961
    functionName: anchors_assemble
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - assemble_it
    linkageType: ''
    returnType: int
    signature: int anchors_assemble(struct trust_anchor* ta)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ds_digest_algo_is_supported
      Src: /src/unbound/validator/val_anchor.c:973,1
    - Dst: ds_key_algo_is_supported
      Src: /src/unbound/validator/val_anchor.c:974,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - ta
    argTypes:
    - struct trust_anchor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 968
    functionDepth: 1
    functionLinenumber: 968
    functionLinenumberEnd: 978
    functionName: anchors_ds_unsupported
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - ds_key_algo_is_supported
    - ds_digest_algo_is_supported
    linkageType: ''
    returnType: size_t
    signature: size_t anchors_ds_unsupported(struct trust_anchor* ta)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dnskey_algo_is_supported
      Src: /src/unbound/validator/val_anchor.c:990,1
    - Dst: dnskey_size_is_supported
      Src: /src/unbound/validator/val_anchor.c:991,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - ta
    argTypes:
    - struct trust_anchor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 985
    functionDepth: 1
    functionLinenumber: 985
    functionLinenumberEnd: 995
    functionName: anchors_dnskey_unsupported
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - dnskey_size_is_supported
    - dnskey_algo_is_supported
    linkageType: ''
    returnType: size_t
    signature: size_t anchors_dnskey_unsupported(struct trust_anchor* ta)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:1008,1
    - Dst: rbtree_first
      Src: /src/unbound/validator/val_anchor.c:1009,1
    - Dst: rbtree_next
      Src: /src/unbound/validator/val_anchor.c:1011,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:1012,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1014,1
    - Dst: anchors_assemble
      Src: /src/unbound/validator/val_anchor.c:1018,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:1019,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1020,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1021,1
    - Dst: anchors_ds_unsupported
      Src: /src/unbound/validator/val_anchor.c:1024,1
    - Dst: anchors_dnskey_unsupported
      Src: /src/unbound/validator/val_anchor.c:1025,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/val_anchor.c:1027,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/val_anchor.c:1032,1
    - Dst: dname_str
      Src: /src/unbound/validator/val_anchor.c:1038,1
    - Dst: log_warn
      Src: /src/unbound/validator/val_anchor.c:1039,1
    - Dst: rbtree_delete
      Src: /src/unbound/validator/val_anchor.c:1048,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1049,1
    - Dst: anchors_delfunc
      Src: /src/unbound/validator/val_anchor.c:1050,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1054,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1057,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 1
    argNames:
    - anchors
    argTypes:
    - struct val_anchors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1059
      start: 1002
    functionDepth: 4
    functionLinenumber: 1002
    functionLinenumberEnd: 1059
    functionName: anchors_assemble_rrsets
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - log_err
    - anchors_ds_unsupported
    - log_nametypeclass
    - rbtree_delete
    - lock_basic_unlock
    - anchors_dnskey_unsupported
    - anchors_delfunc
    - anchors_assemble
    - dname_str
    - rbtree_next
    - lock_basic_lock
    - rbtree_first
    - log_warn
    linkageType: ''
    returnType: int
    signature: int anchors_assemble_rrsets(struct val_anchors* anchors)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_new
      Src: /src/unbound/validator/val_anchor.c:1067,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:1069,1
    - Dst: anchor_insert_insecure
      Src: /src/unbound/validator/val_anchor.c:1074,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:1075,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/validator/val_anchor.c:1076,1
    - Dst: anchor_insert_insecure
      Src: /src/unbound/validator/val_anchor.c:1084,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:1085,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/validator/val_anchor.c:1086,1
    - Dst: strncmp
      Src: /src/unbound/validator/val_anchor.c:1094,1
    - Dst: strlen
      Src: /src/unbound/validator/val_anchor.c:1095,1
    - Dst: strlen
      Src: /src/unbound/validator/val_anchor.c:1096,1
    - Dst: anchor_read_file
      Src: /src/unbound/validator/val_anchor.c:1097,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:1098,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/validator/val_anchor.c:1099,1
    - Dst: strncmp
      Src: /src/unbound/validator/val_anchor.c:1107,1
    - Dst: strlen
      Src: /src/unbound/validator/val_anchor.c:1108,1
    - Dst: strlen
      Src: /src/unbound/validator/val_anchor.c:1109,1
    - Dst: anchor_read_bind_file_wild
      Src: /src/unbound/validator/val_anchor.c:1110,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:1111,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/validator/val_anchor.c:1112,1
    - Dst: anchor_store_str
      Src: /src/unbound/validator/val_anchor.c:1119,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:1120,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/validator/val_anchor.c:1121,1
    - Dst: strncmp
      Src: /src/unbound/validator/val_anchor.c:1131,1
    - Dst: strlen
      Src: /src/unbound/validator/val_anchor.c:1132,1
    - Dst: strlen
      Src: /src/unbound/validator/val_anchor.c:1133,1
    - Dst: autr_read_file
      Src: /src/unbound/validator/val_anchor.c:1134,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:1135,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/validator/val_anchor.c:1137,1
    - Dst: anchors_assemble_rrsets
      Src: /src/unbound/validator/val_anchor.c:1142,1
    - Dst: init_parents
      Src: /src/unbound/validator/val_anchor.c:1143,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/validator/val_anchor.c:1144,1
    - Dst: autr_debug_print
      Src: /src/unbound/validator/val_anchor.c:1145,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 74
    argCount: 2
    argNames:
    - anchors
    - cfg
    argTypes:
    - struct val_anchors*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1061
    functionDepth: 11
    functionLinenumber: 1061
    functionLinenumberEnd: 1147
    functionName: anchors_apply_cfg
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 1
    functionsReached:
    - log_err
    - sldns_buffer_new
    - strncmp
    - anchor_insert_insecure
    - anchor_read_bind_file_wild
    - anchor_read_file
    - autr_read_file
    - init_parents
    - anchor_store_str
    - autr_debug_print
    - sldns_buffer_free
    - strlen
    - anchors_assemble_rrsets
    linkageType: ''
    returnType: int
    signature: int anchors_apply_cfg(struct val_anchors* anchors, struct config_file*
      cfg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/validator/val_anchor.c:1158,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:1161,1
    - Dst: rbtree_find_less_equal
      Src: /src/unbound/validator/val_anchor.c:1162,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1170,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/validator/val_anchor.c:1174,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:1183,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1185,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 4
    argNames:
    - anchors
    - qname
    - qname_len
    - qclass
    argTypes:
    - struct val_anchors*
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1187
      start: 1149
    functionDepth: 1
    functionLinenumber: 1149
    functionLinenumberEnd: 1187
    functionName: anchors_lookup
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - dname_lab_cmp
    - rbtree_find_less_equal
    - lock_basic_unlock
    - lock_basic_lock
    - dname_count_labels
    linkageType: ''
    returnType: struct trust_anchor
    signature: "struct trust_anchor * \nanchors_lookup(struct val_anchors* anchors,\n
      \       uint8_t* qname, size_t qname_len, uint16_t qclass)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - pkey
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1204
      start: 1190
    functionDepth: 0
    functionLinenumber: 1190
    functionLinenumberEnd: 1204
    functionName: assembled_rrset_get_mem
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t assembled_rrset_get_mem(struct ub_packed_rrset_key* pkey)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:1214,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:1216,1
    - Dst: assembled_rrset_get_mem
      Src: /src/unbound/validator/val_anchor.c:1222,1
    - Dst: assembled_rrset_get_mem
      Src: /src/unbound/validator/val_anchor.c:1223,1
    - Dst: strlen
      Src: /src/unbound/validator/val_anchor.c:1228,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1233,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1235,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 1
    argNames:
    - anchors
    argTypes:
    - struct val_anchors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1206
    functionDepth: 1
    functionLinenumber: 1206
    functionLinenumberEnd: 1237
    functionName: anchors_get_mem
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 2
    functionsReached:
    - assembled_rrset_get_mem
    - lock_basic_unlock
    - lock_basic_lock
    - strlen
    linkageType: ''
    returnType: size_t
    signature: size_t anchors_get_mem(struct val_anchors* anchors)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:1216,1
    - Dst: assembled_rrset_get_mem
      Src: /src/unbound/validator/val_anchor.c:1222,1
    - Dst: assembled_rrset_get_mem
      Src: /src/unbound/validator/val_anchor.c:1223,1
    - Dst: strlen
      Src: /src/unbound/validator/val_anchor.c:1228,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1233,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - tree
    argTypes:
    - anchors
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1234
      start: 1215
    functionDepth: 1
    functionLinenumber: 1215
    functionLinenumberEnd: 1234
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - assembled_rrset_get_mem
    - lock_basic_unlock
    - lock_basic_lock
    - strlen
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(ta, struct trust_anchor*, anchors->tree)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_size_labels
      Src: /src/unbound/validator/val_anchor.c:1245,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:1247,1
    - Dst: rbtree_search
      Src: /src/unbound/validator/val_anchor.c:1248,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1249,1
    - Dst: anchor_new_ta
      Src: /src/unbound/validator/val_anchor.c:1253,1
    - Dst: log_err
      Src: /src/unbound/validator/val_anchor.c:1254,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1255,1
    - Dst: anchors_init_parents_locked
      Src: /src/unbound/validator/val_anchor.c:1259,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1260,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 3
    argNames:
    - anchors
    - c
    - nm
    argTypes:
    - struct val_anchors*
    - uint16_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1239
    functionDepth: 2
    functionLinenumber: 1239
    functionLinenumberEnd: 1262
    functionName: anchors_add_insecure
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 3
    functionsReached:
    - log_err
    - anchors_init_parents_locked
    - lock_basic_unlock
    - dname_count_size_labels
    - lock_basic_lock
    - anchor_new_ta
    - rbtree_search
    linkageType: ''
    returnType: int
    signature: int anchors_add_insecure(struct val_anchors* anchors, uint16_t c, uint8_t*
      nm)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_size_labels
      Src: /src/unbound/validator/val_anchor.c:1272,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:1274,1
    - Dst: rbtree_search
      Src: /src/unbound/validator/val_anchor.c:1275,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1276,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:1281,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1284,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1285,1
    - Dst: rbtree_delete
      Src: /src/unbound/validator/val_anchor.c:1291,1
    - Dst: anchors_init_parents_locked
      Src: /src/unbound/validator/val_anchor.c:1292,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1293,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1296,1
    - Dst: anchors_delfunc
      Src: /src/unbound/validator/val_anchor.c:1297,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - anchors
    - c
    - nm
    argTypes:
    - struct val_anchors*
    - uint16_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1298
      start: 1264
    functionDepth: 4
    functionLinenumber: 1264
    functionLinenumberEnd: 1298
    functionName: anchors_delete_insecure
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 4
    functionsReached:
    - anchors_init_parents_locked
    - rbtree_delete
    - lock_basic_unlock
    - dname_count_size_labels
    - anchors_delfunc
    - lock_basic_lock
    - rbtree_search
    linkageType: ''
    returnType: void
    signature: "void anchors_delete_insecure(struct val_anchors* anchors, uint16_t
      c,\n        uint8_t* nm)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1309
      start: 1301
    functionDepth: 0
    functionLinenumber: 1301
    functionLinenumberEnd: 1309
    functionName: keytag_compare
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int keytag_compare(const void* x, const void* y)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ds_get_keytag
      Src: /src/unbound/validator/val_anchor.c:1322,1
    - Dst: dnskey_calc_keytag
      Src: /src/unbound/validator/val_anchor.c:1330,1
    - Dst: qsort
      Src: /src/unbound/validator/val_anchor.c:1333,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 19
    argCount: 3
    argNames:
    - ta
    - list
    - num
    argTypes:
    - struct trust_anchor*
    - uint16_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1311
    functionDepth: 1
    functionLinenumber: 1311
    functionLinenumberEnd: 1335
    functionName: anchor_list_keytags
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 2
    functionsReached:
    - ds_get_keytag
    - qsort
    - dnskey_calc_keytag
    linkageType: ''
    returnType: size_t
    signature: size_t anchor_list_keytags(struct trust_anchor* ta, uint16_t* list,
      size_t num)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: anchor_find
      Src: /src/unbound/validator/val_anchor.c:1344,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1349,1
    - Dst: calloc
      Src: /src/unbound/validator/val_anchor.c:1353,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1355,1
    - Dst: anchor_list_keytags
      Src: /src/unbound/validator/val_anchor.c:1359,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1361,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:1363,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:1369,1
    - Dst: free
      Src: /src/unbound/validator/val_anchor.c:1374,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 6
    argNames:
    - anchors
    - name
    - namelabs
    - namelen
    - dclass
    - keytag
    argTypes:
    - struct val_anchors*
    - uint8_t*
    - int
    - size_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1376
      start: 1337
    functionDepth: 2
    functionLinenumber: 1337
    functionLinenumberEnd: 1376
    functionName: anchor_has_keytag
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - anchor_find
    - lock_basic_unlock
    - free
    - calloc
    - anchor_list_keytags
    linkageType: ''
    returnType: int
    signature: "int anchor_has_keytag(struct val_anchors* anchors, uint8_t* name,
      int namelabs,\n\tsize_t namelen, uint16_t dclass, uint16_t keytag)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:1382,1
    - Dst: rbtree_first
      Src: /src/unbound/validator/val_anchor.c:1383,1
    - Dst: rbtree_next
      Src: /src/unbound/validator/val_anchor.c:1385,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_anchor.c:1386,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1389,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1392,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_anchor.c:1395,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - anchors
    argTypes:
    - struct val_anchors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1397
      start: 1378
    functionDepth: 1
    functionLinenumber: 1378
    functionLinenumberEnd: 1397
    functionName: anchors_find_any_noninsecure
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - rbtree_next
    - lock_basic_lock
    - rbtree_first
    linkageType: ''
    returnType: struct trust_anchor
    signature: 'struct trust_anchor *

      anchors_find_any_noninsecure(struct val_anchors* anchors)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - anchors
    - data
    argTypes:
    - struct val_anchors*
    - struct val_anchors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1416
      start: 1399
    functionDepth: 0
    functionLinenumber: 1399
    functionLinenumberEnd: 1416
    functionName: anchors_swap_tree
    functionSourceFile: /src/unbound/validator/val_anchor.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void anchors_swap_tree(struct val_anchors* anchors, struct val_anchors*
      data)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - rep
    - reason_bogus
    argTypes:
    - struct reply_info*
    - sldns_ede_code
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 92
    functionName: update_reason_bogus
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void update_reason_bogus(struct reply_info* rep, sldns_ede_code reason_bogus)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/validator/validator.c:101,1
    - Dst: calloc
      Src: /src/unbound/validator/validator.c:102,1
    - Dst: free
      Src: /src/unbound/validator/validator.c:104,1
    - Dst: free
      Src: /src/unbound/validator/validator.c:106,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:108,1
    - Dst: strtol
      Src: /src/unbound/validator/validator.c:112,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:114,1
    - Dst: free
      Src: /src/unbound/validator/validator.c:115,1
    - Dst: free
      Src: /src/unbound/validator/validator.c:117,1
    - Dst: strtol
      Src: /src/unbound/validator/validator.c:122,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:124,1
    - Dst: free
      Src: /src/unbound/validator/validator.c:125,1
    - Dst: free
      Src: /src/unbound/validator/validator.c:127,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:133,1
    - Dst: free
      Src: /src/unbound/validator/validator.c:135,1
    - Dst: free
      Src: /src/unbound/validator/validator.c:137,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:141,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 43
    argCount: 4
    argNames:
    - keysize
    - maxiter
    - s
    - c
    argTypes:
    - size_t**
    - size_t**
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 145
    functionName: fill_nsec3_iter
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - log_err
    - verbose
    - free
    - calloc
    - strtol
    linkageType: ''
    returnType: int
    signature: int fill_nsec3_iter(size_t** keysize, size_t** maxiter, char* s, int
      c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cfg_count_numbers
      Src: /src/unbound/validator/validator.c:152,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:154,1
    - Dst: fill_nsec3_iter
      Src: /src/unbound/validator/validator.c:159,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:160,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - val_nsec3_key_iterations
    - keysize
    - maxiter
    - keyiter_count
    argTypes:
    - char*
    - size_t**
    - size_t**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 164
    functionName: val_env_parse_key_iter
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 1
    functionsReached:
    - cfg_count_numbers
    - fill_nsec3_iter
    - log_err
    linkageType: ''
    returnType: int
    signature: "int val_env_parse_key_iter(char* val_nsec3_key_iterations, size_t**
      keysize,\n\tsize_t** maxiter, int* keyiter_count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/validator/validator.c:170,1
    - Dst: free
      Src: /src/unbound/validator/validator.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 5
    argNames:
    - val_env
    - cfg
    - keysize
    - maxiter
    - keyiter_count
    argTypes:
    - struct val_env*
    - struct config_file*
    - size_t*
    - size_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 166
    functionDepth: 1
    functionLinenumber: 166
    functionLinenumberEnd: 180
    functionName: val_env_apply_cfg
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: "void val_env_apply_cfg(struct val_env* val_env, struct config_file*
      cfg,\n\tsize_t* keysize, size_t* maxiter, int keyiter_count)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: anchors_create
      Src: /src/unbound/validator/validator.c:190,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:192,1
    - Dst: key_cache_create
      Src: /src/unbound/validator/validator.c:198,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:200,1
    - Dst: anchors_apply_cfg
      Src: /src/unbound/validator/validator.c:204,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:205,1
    - Dst: val_env_parse_key_iter
      Src: /src/unbound/validator/validator.c:208,1
    - Dst: val_env_apply_cfg
      Src: /src/unbound/validator/validator.c:212,1
    - Dst: val_neg_create
      Src: /src/unbound/validator/validator.c:216,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:219,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 3
    argNames:
    - env
    - val_env
    - cfg
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 183
    functionDepth: 12
    functionLinenumber: 183
    functionLinenumberEnd: 224
    functionName: val_apply_cfg
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - log_err
    - val_env_apply_cfg
    - key_cache_create
    - anchors_apply_cfg
    - val_neg_create
    - val_env_parse_key_iter
    - anchors_create
    linkageType: ''
    returnType: int
    signature: "int val_apply_cfg(struct module_env* env, struct val_env* val_env,
      \n\tstruct config_file* cfg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/validator/validator.c:232,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:235,1
    - Dst: lock_basic_init
      Src: /src/unbound/validator/validator.c:240,1
    - Dst: lock_protect
      Src: /src/unbound/validator/validator.c:241,1
    - Dst: ecdsa_evp_workaround_init
      Src: /src/unbound/validator/validator.c:244,1
    - Dst: val_apply_cfg
      Src: /src/unbound/validator/validator.c:246,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:247,1
    - Dst: anchors_find_any_noninsecure
      Src: /src/unbound/validator/validator.c:251,1
    - Dst: dname_str
      Src: /src/unbound/validator/validator.c:255,1
    - Dst: log_warn
      Src: /src/unbound/validator/validator.c:256,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/validator.c:257,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 229
    functionDepth: 13
    functionLinenumber: 229
    functionLinenumberEnd: 263
    functionName: val_init
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - log_err
    - lock_basic_unlock
    - ecdsa_evp_workaround_init
    - val_apply_cfg
    - lock_basic_init
    - dname_str
    - lock_protect
    - calloc
    - log_warn
    - anchors_find_any_noninsecure
    linkageType: ''
    returnType: int
    signature: int val_init(struct module_env* env, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_destroy
      Src: /src/unbound/validator/validator.c:272,1
    - Dst: anchors_delete
      Src: /src/unbound/validator/validator.c:273,1
    - Dst: key_cache_delete
      Src: /src/unbound/validator/validator.c:275,1
    - Dst: neg_cache_delete
      Src: /src/unbound/validator/validator.c:277,1
    - Dst: free
      Src: /src/unbound/validator/validator.c:279,1
    - Dst: free
      Src: /src/unbound/validator/validator.c:280,1
    - Dst: free
      Src: /src/unbound/validator/validator.c:281,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 265
    functionDepth: 3
    functionLinenumber: 265
    functionLinenumberEnd: 283
    functionName: val_deinit
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - key_cache_delete
    - anchors_delete
    - free
    - neg_cache_delete
    - lock_basic_destroy
    linkageType: ''
    returnType: void
    signature: void val_deinit(struct module_env* env, int id)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:291,1
    - Dst: regional_alloc
      Src: /src/unbound/validator/validator.c:292,1
    - Dst: regional_alloc
      Src: /src/unbound/validator/validator.c:297,1
    - Dst: memset
      Src: /src/unbound/validator/validator.c:301,1
    - Dst: regional_alloc_init
      Src: /src/unbound/validator/validator.c:311,1
    - Dst: regional_alloc
      Src: /src/unbound/validator/validator.c:320,1
    - Dst: memmove
      Src: /src/unbound/validator/validator.c:326,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - qstate
    - vq
    argTypes:
    - struct module_qstate*
    - struct val_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 331
    functionName: val_new_getmsg
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - memmove
    - verbose
    - regional_alloc
    - regional_alloc_init
    - memset
    linkageType: ''
    returnType: struct val_qstate
    signature: 'struct val_qstate *

      val_new_getmsg(struct module_qstate* qstate, struct val_qstate* vq)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/validator/validator.c:337,1
    - Dst: log_assert
      Src: /src/unbound/validator/validator.c:339,1
    - Dst: memset
      Src: /src/unbound/validator/validator.c:342,1
    - Dst: val_new_getmsg
      Src: /src/unbound/validator/validator.c:345,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 334
    functionDepth: 2
    functionLinenumber: 334
    functionLinenumberEnd: 346
    functionName: val_new
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - memset
    - log_assert
    - regional_alloc
    - val_new_getmsg
    linkageType: ''
    returnType: struct val_qstate
    signature: 'struct val_qstate *

      val_new(struct module_qstate* qstate, int id)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/validator/validator.c:357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - vq
    argTypes:
    - struct val_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 361
    functionName: val_restart
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: void val_restart(struct val_qstate* vq)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 376
    functionName: val_error
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int val_error(struct module_qstate* qstate, int id)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:411,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/validator/validator.c:418,1
    - Dst: sldns_wire2str_rcode_buf
      Src: /src/unbound/validator/validator.c:424,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:425,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:434,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 3
    argNames:
    - qstate
    - ret_rc
    - ret_msg
    argTypes:
    - struct module_qstate*
    - int
    - struct dns_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 390
    functionDepth: 2
    functionLinenumber: 390
    functionLinenumberEnd: 438
    functionName: needs_validation
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - verbose
    - FLAGS_GET_RCODE
    - sldns_wire2str_rcode_buf
    linkageType: ''
    returnType: int
    signature: "int needs_validation(struct module_qstate* qstate, int ret_rc, \n\tstruct
      dns_msg* ret_msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:451,1
    - Dst: sec_status_to_string
      Src: /src/unbound/validator/validator.c:452,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ret_msg
    argTypes:
    - struct dns_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 456
    functionName: already_validated
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - verbose
    - sec_status_to_string
    linkageType: ''
    returnType: int
    signature: int already_validated(struct dns_msg* ret_msg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_query_info
      Src: /src/unbound/validator/validator.c:486,1
    - Dst: fptr_ok
      Src: /src/unbound/validator/validator.c:491,1
    - Dst: fptr_whitelist_modenv_detect_cycle
      Src: /src/unbound/validator/validator.c:491,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:494,1
    - Dst: fptr_ok
      Src: /src/unbound/validator/validator.c:500,1
    - Dst: fptr_whitelist_modenv_add_sub
      Src: /src/unbound/validator/validator.c:500,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:504,1
    - Dst: fptr_ok
      Src: /src/unbound/validator/validator.c:509,1
    - Dst: fptr_whitelist_modenv_attach_sub
      Src: /src/unbound/validator/validator.c:509,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:513,1
    - Dst: sock_list_merge
      Src: /src/unbound/validator/validator.c:521,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 9
    argNames:
    - qstate
    - id
    - name
    - namelen
    - qtype
    - qclass
    - flags
    - newq
    - detached
    argTypes:
    - struct module_qstate*
    - int
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - uint16_t
    - struct module_qstate**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 534
    functionName: generate_request
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - log_err
    - sock_list_merge
    - fptr_whitelist_modenv_detect_cycle
    - verbose
    - log_query_info
    - fptr_whitelist_modenv_attach_sub
    - fptr_ok
    - fptr_whitelist_modenv_add_sub
    linkageType: ''
    returnType: int
    signature: "int generate_request(struct module_qstate* qstate, int id, uint8_t*
      name, \n\tsize_t namelen, uint16_t qtype, uint16_t qclass, uint16_t flags, \n\tstruct
      module_qstate** newq, int detached)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/validator/validator.c:553,1
    - Dst: strlen
      Src: /src/unbound/validator/validator.c:554,1
    - Dst: anchor_list_keytags
      Src: /src/unbound/validator/validator.c:561,1
    - Dst: snprintf
      Src: /src/unbound/validator/validator.c:568,1
    - Dst: strlen
      Src: /src/unbound/validator/validator.c:569,1
    - Dst: strlen
      Src: /src/unbound/validator/validator.c:570,1
    - Dst: sldns_str2wire_dname_buf_origin
      Src: /src/unbound/validator/validator.c:573,1
    - Dst: regional_alloc_init
      Src: /src/unbound/validator/validator.c:575,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:577,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/validator.c:581,1
    - Dst: generate_request
      Src: /src/unbound/validator/validator.c:583,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:585,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - qstate
    - id
    - ta
    argTypes:
    - struct module_qstate*
    - int
    - struct trust_anchor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 544
    functionDepth: 3
    functionLinenumber: 544
    functionLinenumberEnd: 594
    functionName: generate_keytag_query
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - log_err
    - generate_request
    - log_nametypeclass
    - sldns_str2wire_dname_buf_origin
    - snprintf
    - verbose
    - strlen
    - regional_alloc_init
    - anchor_list_keytags
    linkageType: ''
    returnType: int
    signature: "int generate_keytag_query(struct module_qstate* qstate, int id,\n\tstruct
      trust_anchor* ta)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/validator/validator.c:607,1
    - Dst: memmove
      Src: /src/unbound/validator/validator.c:610,1
    - Dst: strtol
      Src: /src/unbound/validator/validator.c:612,1
    - Dst: free
      Src: /src/unbound/validator/validator.c:614,1
    - Dst: free
      Src: /src/unbound/validator/validator.c:617,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - start
    - keytag
    argTypes:
    - char*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 603
    functionDepth: 1
    functionLinenumber: 603
    functionLinenumberEnd: 619
    functionName: sentinel_get_keytag
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - free
    - calloc
    - strtol
    - memmove
    linkageType: ''
    returnType: int
    signature: int sentinel_get_keytag(char* start, uint16_t* keytag)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: generate_request
      Src: /src/unbound/validator/validator.c:637,1
    - Dst: generate_keytag_query
      Src: /src/unbound/validator/validator.c:641,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:642,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:647,1
    - Dst: regional_alloc_init
      Src: /src/unbound/validator/validator.c:655,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:660,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 4
    argNames:
    - qstate
    - vq
    - id
    - toprime
    argTypes:
    - struct module_qstate*
    - struct val_qstate*
    - int
    - struct trust_anchor*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 632
    functionDepth: 4
    functionLinenumber: 632
    functionLinenumberEnd: 664
    functionName: prime_trust_anchor
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - log_err
    - generate_request
    - generate_keytag_query
    - verbose
    - regional_alloc_init
    linkageType: ''
    returnType: int
    signature: "int prime_trust_anchor(struct module_qstate* qstate, struct val_qstate*
      vq,\n\tint id, struct trust_anchor* toprime)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:718,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:720,1
    - Dst: dname_strict_subdomain_c
      Src: /src/unbound/validator/validator.c:722,1
    - Dst: get_cname_target
      Src: /src/unbound/validator/validator.c:730,1
    - Dst: derive_cname_from_dname
      Src: /src/unbound/validator/validator.c:732,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:736,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:737,1
    - Dst: errinf_origin
      Src: /src/unbound/validator/validator.c:738,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:740,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/validator.c:743,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:744,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:745,1
    - Dst: errinf_dname
      Src: /src/unbound/validator/validator.c:746,1
    - Dst: errinf_dname
      Src: /src/unbound/validator/validator.c:747,1
    - Dst: errinf
      Src: /src/unbound/validator/validator.c:748,1
    - Dst: errinf_origin
      Src: /src/unbound/validator/validator.c:749,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:751,1
    - Dst: val_verify_rrset_entry
      Src: /src/unbound/validator/validator.c:765,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/validator.c:771,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:773,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:773,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:774,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:775,1
    - Dst: errinf
      Src: /src/unbound/validator/validator.c:776,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:777,1
    - Dst: errinf
      Src: /src/unbound/validator/validator.c:778,1
    - Dst: errinf_origin
      Src: /src/unbound/validator/validator.c:779,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:781,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:798,1
    - Dst: val_verify_rrset_entry
      Src: /src/unbound/validator/validator.c:810,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/validator.c:816,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:818,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:818,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:819,1
    - Dst: errinf_origin
      Src: /src/unbound/validator/validator.c:820,1
    - Dst: errinf_rrset
      Src: /src/unbound/validator/validator.c:821,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:823,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:834,1
    - Dst: val_find_rrset_signer
      Src: /src/unbound/validator/validator.c:852,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/validator.c:855,1
    - Dst: val_verify_rrset_entry
      Src: /src/unbound/validator/validator.c:856,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:868,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 100
    argCount: 7
    argNames:
    - qstate
    - vq
    - env
    - ve
    - chase_reply
    - key_entry
    - suspend
    argTypes:
    - struct module_qstate*
    - struct val_qstate*
    - struct module_env*
    - struct val_env*
    - struct reply_info*
    - struct key_entry_key*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 688
    functionDepth: 1
    functionLinenumber: 688
    functionLinenumberEnd: 875
    functionName: validate_msg_signatures
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - get_cname_target
    - update_reason_bogus
    - log_nametypeclass
    - verbose
    - errinf_rrset
    - errinf_origin
    - errinf_dname
    - dname_strict_subdomain_c
    - query_dname_compare
    - derive_cname_from_dname
    - errinf_ede
    - val_verify_rrset_entry
    - val_find_rrset_signer
    - errinf
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int validate_msg_signatures(struct module_qstate* qstate, struct val_qstate*
      vq,\n\tstruct module_env* env, struct val_env* ve,\n\tstruct reply_info* chase_reply,
      struct key_entry_key* key_entry,\n\tint* suspend)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:881,1
    - Dst: mesh_run
      Src: /src/unbound/validator/validator.c:882,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 877
    functionDepth: 1
    functionLinenumber: 877
    functionLinenumberEnd: 884
    functionName: validate_suspend_timer_cb
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - verbose
    - mesh_run
    linkageType: ''
    returnType: void
    signature: void validate_suspend_timer_cb(void* arg)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:894,1
    - Dst: errinf
      Src: /src/unbound/validator/validator.c:897,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:901,1
    - Dst: comm_timer_create
      Src: /src/unbound/validator/validator.c:905,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:909,1
    - Dst: ub_random_max
      Src: /src/unbound/validator/validator.c:936,1
    - Dst: comm_timer_set
      Src: /src/unbound/validator/validator.c:940,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 4
    argNames:
    - qstate
    - vq
    - id
    - resume_state
    argTypes:
    - struct module_qstate*
    - struct val_qstate*
    - int
    - enum val_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 887
    functionDepth: 1
    functionLinenumber: 887
    functionLinenumberEnd: 942
    functionName: validate_suspend_setup_timer
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - log_err
    - ub_random_max
    - verbose
    - comm_timer_create
    - comm_timer_set
    - errinf
    linkageType: ''
    returnType: int
    signature: "int validate_suspend_setup_timer(struct module_qstate* qstate,\n\tstruct
      val_qstate* vq, int id, enum val_state resume_state)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:959,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:970,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - rep
    argTypes:
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 952
    functionDepth: 1
    functionLinenumber: 952
    functionLinenumberEnd: 972
    functionName: detect_wrongly_truncated
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - verbose
    - ntohs
    linkageType: ''
    returnType: int
    signature: int detect_wrongly_truncated(struct reply_info* rep)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1003,1
    - Dst: log_rrset_key
      Src: /src/unbound/validator/validator.c:1012,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1018,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/validator.c:1019,1
    - Dst: val_reply_remove_auth
      Src: /src/unbound/validator/validator.c:1022,1
    - Dst: val_reply_remove_auth
      Src: /src/unbound/validator/validator.c:1027,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 2
    argNames:
    - chase_reply
    - orig_reply
    argTypes:
    - struct reply_info*
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 989
    functionDepth: 1
    functionLinenumber: 989
    functionLinenumberEnd: 1028
    functionName: remove_spurious_authority
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - val_reply_remove_auth
    - query_dname_compare
    - log_rrset_key
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void remove_spurious_authority(struct reply_info* chase_reply,\n\tstruct
      reply_info* orig_reply)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: val_reply_remove_answers
      Src: /src/unbound/validator/validator.c:1048,1
    - Dst: val_reply_remove_answers
      Src: /src/unbound/validator/validator.c:1049,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - chase_reply
    - orig_reply
    - skip
    - max_rrsets
    argTypes:
    - struct reply_info*
    - struct reply_info*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1042
    functionDepth: 1
    functionLinenumber: 1042
    functionLinenumberEnd: 1051
    functionName: shorten_answer_any
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - val_reply_remove_answers
    linkageType: ''
    returnType: void
    signature: "void shorten_answer_any(struct reply_info* chase_reply,\n\tstruct
      reply_info* orig_reply, size_t skip, size_t max_rrsets)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: val_rrset_wildcard
      Src: /src/unbound/validator/validator.c:1100,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/validator.c:1101,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1103,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1103,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:1105,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1132,1
    - Dst: val_nsec_proves_positive_wildcard
      Src: /src/unbound/validator/validator.c:1133,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1141,1
    - Dst: nsec3_cache_table_init
      Src: /src/unbound/validator/validator.c:1150,1
    - Dst: nsec3_prove_wildcard
      Src: /src/unbound/validator/validator.c:1151,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1156,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1171,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:1175,1
    - Dst: rrset_cache_update_wildcard
      Src: /src/unbound/validator/validator.c:1182,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1186,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 60
    argCount: 9
    argNames:
    - env
    - ve
    - qchase
    - chase_reply
    - kkey
    - qstate
    - vq
    - nsec3_calculations
    - suspend
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct query_info*
    - struct reply_info*
    - struct key_entry_key*
    - struct module_qstate*
    - struct val_qstate*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1188
      start: 1071
    functionDepth: 1
    functionLinenumber: 1071
    functionLinenumberEnd: 1188
    functionName: validate_positive_response
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - rrset_cache_update_wildcard
    - update_reason_bogus
    - log_nametypeclass
    - verbose
    - val_nsec_proves_positive_wildcard
    - nsec3_prove_wildcard
    - nsec3_cache_table_init
    - val_rrset_wildcard
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void validate_positive_response(struct module_env* env, struct val_env*
      ve,\n\tstruct query_info* qchase, struct reply_info* chase_reply,\n\tstruct
      key_entry_key* kkey, struct module_qstate* qstate,\n\tstruct val_qstate* vq,
      int* nsec3_calculations, int* suspend)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1239,1
    - Dst: nsec_proves_nodata
      Src: /src/unbound/validator/validator.c:1240,1
    - Dst: val_nsec_proves_name_error
      Src: /src/unbound/validator/validator.c:1244,1
    - Dst: nsec_closest_encloser
      Src: /src/unbound/validator/validator.c:1245,1
    - Dst: val_nsec_proves_insecuredelegation
      Src: /src/unbound/validator/validator.c:1247,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1248,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1252,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/validator.c:1265,1
    - Dst: nsec3_cache_table_init
      Src: /src/unbound/validator/validator.c:1271,1
    - Dst: nsec3_prove_nodata
      Src: /src/unbound/validator/validator.c:1272,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1277,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1290,1
    - Dst: log_dns_msg
      Src: /src/unbound/validator/validator.c:1293,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:1295,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1299,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 52
    argCount: 9
    argNames:
    - env
    - ve
    - qchase
    - chase_reply
    - kkey
    - qstate
    - vq
    - nsec3_calculations
    - suspend
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct query_info*
    - struct reply_info*
    - struct key_entry_key*
    - struct module_qstate*
    - struct val_qstate*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1210
    functionDepth: 1
    functionLinenumber: 1210
    functionLinenumberEnd: 1301
    functionName: validate_nodata_response
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - val_nsec_proves_insecuredelegation
    - update_reason_bogus
    - val_nsec_proves_name_error
    - log_dns_msg
    - verbose
    - nsec_proves_nodata
    - nsec3_prove_nodata
    - query_dname_compare
    - nsec_closest_encloser
    - nsec3_cache_table_init
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void validate_nodata_response(struct module_env* env, struct val_env*
      ve,\n\tstruct query_info* qchase, struct reply_info* chase_reply,\n\tstruct
      key_entry_key* kkey, struct module_qstate* qstate,\n\tstruct val_qstate* vq,
      int* nsec3_calculations, int* suspend)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1344,1
    - Dst: val_nsec_proves_name_error
      Src: /src/unbound/validator/validator.c:1345,1
    - Dst: nsec_closest_encloser
      Src: /src/unbound/validator/validator.c:1347,1
    - Dst: dname_count_labels
      Src: /src/unbound/validator/validator.c:1348,1
    - Dst: val_nsec_proves_no_wc
      Src: /src/unbound/validator/validator.c:1353,1
    - Dst: val_nsec_proves_insecuredelegation
      Src: /src/unbound/validator/validator.c:1360,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1361,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1365,1
    - Dst: nsec3_cache_table_init
      Src: /src/unbound/validator/validator.c:1370,1
    - Dst: nsec3_prove_nameerror
      Src: /src/unbound/validator/validator.c:1373,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1381,1
    - Dst: sec_status_to_string
      Src: /src/unbound/validator/validator.c:1382,1
    - Dst: validate_nodata_response
      Src: /src/unbound/validator/validator.c:1392,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1395,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:1402,1
    - Dst: validate_nodata_response
      Src: /src/unbound/validator/validator.c:1408,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1411,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:1418,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1424,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 65
    argCount: 10
    argNames:
    - env
    - ve
    - qchase
    - chase_reply
    - kkey
    - rcode
    - qstate
    - vq
    - nsec3_calculations
    - suspend
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct query_info*
    - struct reply_info*
    - struct key_entry_key*
    - int*
    - struct module_qstate*
    - struct val_qstate*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1324
    functionDepth: 2
    functionLinenumber: 1324
    functionLinenumberEnd: 1426
    functionName: validate_nameerror_response
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - val_nsec_proves_no_wc
    - val_nsec_proves_insecuredelegation
    - validate_nodata_response
    - update_reason_bogus
    - val_nsec_proves_name_error
    - verbose
    - sec_status_to_string
    - nsec_closest_encloser
    - nsec3_prove_nameerror
    - nsec3_cache_table_init
    - dname_count_labels
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void validate_nameerror_response(struct module_env* env, struct val_env*
      ve,\n\tstruct query_info* qchase, struct reply_info* chase_reply,\n\tstruct
      key_entry_key* kkey, int* rcode,\n\tstruct module_qstate* qstate, struct val_qstate*
      vq,\n\tint* nsec3_calculations, int* suspend)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1451,1
    - Dst: sec_status_to_string
      Src: /src/unbound/validator/validator.c:1452,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - chase_reply
    argTypes:
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1453
      start: 1438
    functionDepth: 1
    functionLinenumber: 1438
    functionLinenumberEnd: 1453
    functionName: validate_referral_response
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - verbose
    - sec_status_to_string
    linkageType: ''
    returnType: void
    signature: void validate_referral_response(struct reply_info* chase_reply)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:1503,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:1505,1
    - Dst: val_rrset_wildcard
      Src: /src/unbound/validator/validator.c:1516,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/validator.c:1517,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1519,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1520,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:1522,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1538,1
    - Dst: val_nsec_proves_positive_wildcard
      Src: /src/unbound/validator/validator.c:1539,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1547,1
    - Dst: nsec3_cache_table_init
      Src: /src/unbound/validator/validator.c:1556,1
    - Dst: nsec3_prove_wildcard
      Src: /src/unbound/validator/validator.c:1558,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1564,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1579,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:1583,1
    - Dst: val_rrset_wildcard
      Src: /src/unbound/validator/validator.c:1589,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1597,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 57
    argCount: 9
    argNames:
    - env
    - ve
    - qchase
    - chase_reply
    - kkey
    - qstate
    - vq
    - nsec3_calculations
    - suspend
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct query_info*
    - struct reply_info*
    - struct key_entry_key*
    - struct module_qstate*
    - struct val_qstate*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1599
      start: 1485
    functionDepth: 1
    functionLinenumber: 1485
    functionLinenumberEnd: 1599
    functionName: validate_any_response
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - log_err
    - update_reason_bogus
    - log_nametypeclass
    - verbose
    - val_nsec_proves_positive_wildcard
    - nsec3_prove_wildcard
    - nsec3_cache_table_init
    - val_rrset_wildcard
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void validate_any_response(struct module_env* env, struct val_env*
      ve,\n\tstruct query_info* qchase, struct reply_info* chase_reply,\n\tstruct
      key_entry_key* kkey, struct module_qstate* qstate,\n\tstruct val_qstate* vq,
      int* nsec3_calculations, int* suspend)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: val_rrset_wildcard
      Src: /src/unbound/validator/validator.c:1646,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/validator.c:1647,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1649,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1649,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:1651,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1660,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/validator.c:1661,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1663,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1663,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:1665,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1675,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1689,1
    - Dst: val_nsec_proves_positive_wildcard
      Src: /src/unbound/validator/validator.c:1690,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1698,1
    - Dst: nsec3_cache_table_init
      Src: /src/unbound/validator/validator.c:1707,1
    - Dst: nsec3_prove_wildcard
      Src: /src/unbound/validator/validator.c:1708,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1713,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1728,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:1732,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1739,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 59
    argCount: 9
    argNames:
    - env
    - ve
    - qchase
    - chase_reply
    - kkey
    - qstate
    - vq
    - nsec3_calculations
    - suspend
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct query_info*
    - struct reply_info*
    - struct key_entry_key*
    - struct module_qstate*
    - struct val_qstate*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1741
      start: 1622
    functionDepth: 1
    functionLinenumber: 1622
    functionLinenumberEnd: 1741
    functionName: validate_cname_response
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - update_reason_bogus
    - log_nametypeclass
    - verbose
    - val_nsec_proves_positive_wildcard
    - nsec3_prove_wildcard
    - nsec3_cache_table_init
    - val_rrset_wildcard
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void validate_cname_response(struct module_env* env, struct val_env*
      ve,\n\tstruct query_info* qchase, struct reply_info* chase_reply,\n\tstruct
      key_entry_key* kkey, struct module_qstate* qstate,\n\tstruct val_qstate* vq,
      int* nsec3_calculations, int* suspend)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1790,1
    - Dst: nsec_proves_nodata
      Src: /src/unbound/validator/validator.c:1791,1
    - Dst: val_nsec_proves_name_error
      Src: /src/unbound/validator/validator.c:1795,1
    - Dst: nsec_closest_encloser
      Src: /src/unbound/validator/validator.c:1796,1
    - Dst: nsec_closest_encloser
      Src: /src/unbound/validator/validator.c:1799,1
    - Dst: dname_count_labels
      Src: /src/unbound/validator/validator.c:1800,1
    - Dst: val_nsec_proves_no_wc
      Src: /src/unbound/validator/validator.c:1805,1
    - Dst: val_nsec_proves_insecuredelegation
      Src: /src/unbound/validator/validator.c:1812,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1813,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1817,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/validator.c:1830,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1840,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:1843,1
    - Dst: nsec3_cache_table_init
      Src: /src/unbound/validator/validator.c:1847,1
    - Dst: nsec3_prove_nxornodata
      Src: /src/unbound/validator/validator.c:1849,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1854,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1869,1
    - Dst: log_dns_msg
      Src: /src/unbound/validator/validator.c:1872,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:1874,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1879,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1881,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 74
    argCount: 9
    argNames:
    - env
    - ve
    - qchase
    - chase_reply
    - kkey
    - qstate
    - vq
    - nsec3_calculations
    - suspend
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct query_info*
    - struct reply_info*
    - struct key_entry_key*
    - struct module_qstate*
    - struct val_qstate*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1884
      start: 1762
    functionDepth: 1
    functionLinenumber: 1762
    functionLinenumberEnd: 1884
    functionName: validate_cname_noanswer_response
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - val_nsec_proves_no_wc
    - val_nsec_proves_insecuredelegation
    - update_reason_bogus
    - val_nsec_proves_name_error
    - log_dns_msg
    - verbose
    - nsec_proves_nodata
    - nsec3_prove_nxornodata
    - query_dname_compare
    - nsec_closest_encloser
    - nsec3_cache_table_init
    - dname_count_labels
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void validate_cname_noanswer_response(struct module_env* env, struct
      val_env* ve,\n\tstruct query_info* qchase, struct reply_info* chase_reply,\n\tstruct
      key_entry_key* kkey, struct module_qstate* qstate,\n\tstruct val_qstate* vq,
      int* nsec3_calculations, int* suspend)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: val_classify_response
      Src: /src/unbound/validator/validator.c:1911,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1915,1
    - Dst: val_error
      Src: /src/unbound/validator/validator.c:1916,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:1920,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1922,1
    - Dst: val_classification_to_string
      Src: /src/unbound/validator/validator.c:1923,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1932,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1934,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:1944,1
    - Dst: dname_remove_label
      Src: /src/unbound/validator/validator.c:1948,1
    - Dst: val_mark_indeterminate
      Src: /src/unbound/validator/validator.c:1951,1
    - Dst: anchors_lookup
      Src: /src/unbound/validator/validator.c:1956,1
    - Dst: val_find_signer
      Src: /src/unbound/validator/validator.c:1960,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/validator.c:1963,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/validator.c:1964,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/validator.c:1969,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/validator.c:1974,1
    - Dst: dname_strict_subdomain_c
      Src: /src/unbound/validator/validator.c:1979,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/validator.c:1980,1
    - Dst: anchors_lookup
      Src: /src/unbound/validator/validator.c:1981,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1984,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:1987,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:1991,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/validator.c:1994,1
    - Dst: dname_remove_label
      Src: /src/unbound/validator/validator.c:1997,1
    - Dst: val_fill_reply
      Src: /src/unbound/validator/validator.c:2004,1
    - Dst: log_dns_msg
      Src: /src/unbound/validator/validator.c:2008,1
    - Dst: key_cache_obtain
      Src: /src/unbound/validator/validator.c:2012,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:2019,1
    - Dst: dname_strict_subdomain_c
      Src: /src/unbound/validator/validator.c:2027,1
    - Dst: val_mark_insecure
      Src: /src/unbound/validator/validator.c:2031,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/validator.c:2033,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2039,1
    - Dst: prime_trust_anchor
      Src: /src/unbound/validator/validator.c:2040,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/validator.c:2041,1
    - Dst: val_error
      Src: /src/unbound/validator/validator.c:2042,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/validator.c:2044,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/validator.c:2051,1
    - Dst: key_entry_isnull
      Src: /src/unbound/validator/validator.c:2054,1
    - Dst: val_mark_insecure
      Src: /src/unbound/validator/validator.c:2059,1
    - Dst: key_entry_isbad
      Src: /src/unbound/validator/validator.c:2064,1
    - Dst: key_entry_get_reason_bogus
      Src: /src/unbound/validator/validator.c:2066,1
    - Dst: errinf_dname
      Src: /src/unbound/validator/validator.c:2068,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:2069,1
    - Dst: errinf
      Src: /src/unbound/validator/validator.c:2070,1
    - Dst: errinf
      Src: /src/unbound/validator/validator.c:2071,1
    - Dst: key_entry_get_reason
      Src: /src/unbound/validator/validator.c:2071,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:2076,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 101
    argCount: 4
    argNames:
    - qstate
    - vq
    - ve
    - id
    argTypes:
    - struct module_qstate*
    - struct val_qstate*
    - struct val_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2085
      start: 1904
    functionDepth: 5
    functionLinenumber: 1904
    functionLinenumberEnd: 2085
    functionName: processInit
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - log_nametypeclass
    - dname_remove_label
    - val_mark_indeterminate
    - dname_strict_subdomain_c
    - val_classify_response
    - val_fill_reply
    - errinf
    - key_cache_obtain
    - dname_subdomain_c
    - update_reason_bogus
    - val_find_signer
    - val_classification_to_string
    - key_entry_isbad
    - prime_trust_anchor
    - errinf_ede
    - log_dns_msg
    - verbose
    - errinf_dname
    - key_entry_get_reason
    - query_dname_compare
    - key_entry_get_reason_bogus
    - key_entry_isnull
    - anchors_lookup
    - lock_basic_unlock
    - val_mark_insecure
    - val_error
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int processInit(struct module_qstate* qstate, struct val_qstate* vq,
      \n\tstruct val_env* ve, int id)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: log_query_info
      Src: /src/unbound/validator/validator.c:2107,1
    - Dst: log_assert
      Src: /src/unbound/validator/validator.c:2113,1
    - Dst: key_entry_isbad
      Src: /src/unbound/validator/validator.c:2113,1
    - Dst: key_entry_isnull
      Src: /src/unbound/validator/validator.c:2114,1
    - Dst: generate_request
      Src: /src/unbound/validator/validator.c:2115,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2118,1
    - Dst: val_error
      Src: /src/unbound/validator/validator.c:2119,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/validator.c:2134,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/validator.c:2143,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2146,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:2147,1
    - Dst: errinf_origin
      Src: /src/unbound/validator/validator.c:2148,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:2150,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/validator.c:2157,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/validator.c:2159,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/validator.c:2162,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2163,1
    - Dst: dname_count_labels
      Src: /src/unbound/validator/validator.c:2169,1
    - Dst: dname_count_labels
      Src: /src/unbound/validator/validator.c:2170,1
    - Dst: log_assert
      Src: /src/unbound/validator/validator.c:2171,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2172,1
    - Dst: dname_remove_labels
      Src: /src/unbound/validator/validator.c:2174,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/validator.c:2177,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/validator.c:2183,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2184,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/validator.c:2186,1
    - Dst: generate_request
      Src: /src/unbound/validator/validator.c:2188,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2191,1
    - Dst: val_error
      Src: /src/unbound/validator/validator.c:2192,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/validator.c:2197,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2212,1
    - Dst: process_ds_response
      Src: /src/unbound/validator/validator.c:2214,1
    - Dst: validate_suspend_setup_timer
      Src: /src/unbound/validator/validator.c:2218,1
    - Dst: val_error
      Src: /src/unbound/validator/validator.c:2220,1
    - Dst: val_find_DS
      Src: /src/unbound/validator/validator.c:2226,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2229,1
    - Dst: process_ds_response
      Src: /src/unbound/validator/validator.c:2230,1
    - Dst: validate_suspend_setup_timer
      Src: /src/unbound/validator/validator.c:2234,1
    - Dst: val_error
      Src: /src/unbound/validator/validator.c:2236,1
    - Dst: generate_request
      Src: /src/unbound/validator/validator.c:2241,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2244,1
    - Dst: val_error
      Src: /src/unbound/validator/validator.c:2245,1
    - Dst: generate_request
      Src: /src/unbound/validator/validator.c:2251,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2254,1
    - Dst: val_error
      Src: /src/unbound/validator/validator.c:2255,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 92
    argCount: 3
    argNames:
    - qstate
    - vq
    - id
    argTypes:
    - struct module_qstate*
    - struct val_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2259
      start: 2099
    functionDepth: 2
    functionLinenumber: 2099
    functionLinenumberEnd: 2259
    functionName: processFindKey
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    - generate_request
    - update_reason_bogus
    - log_nametypeclass
    - errinf_ede
    - verbose
    - log_query_info
    - key_entry_isbad
    - errinf_origin
    - dname_remove_labels
    - val_find_DS
    - query_dname_compare
    - log_assert
    - key_entry_isnull
    - process_ds_response
    - dname_count_labels
    - validate_suspend_setup_timer
    - val_error
    linkageType: ''
    returnType: int
    signature: int processFindKey(struct module_qstate* qstate, struct val_qstate*
      vq, int id)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2284,1
    - Dst: val_error
      Src: /src/unbound/validator/validator.c:2285,1
    - Dst: key_entry_isnull
      Src: /src/unbound/validator/validator.c:2292,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2293,1
    - Dst: val_mark_insecure
      Src: /src/unbound/validator/validator.c:2296,1
    - Dst: key_cache_insert
      Src: /src/unbound/validator/validator.c:2298,1
    - Dst: key_entry_isbad
      Src: /src/unbound/validator/validator.c:2303,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/validator.c:2304,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:2308,1
    - Dst: key_entry_get_reason_bogus
      Src: /src/unbound/validator/validator.c:2309,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:2310,1
    - Dst: key_entry_get_reason_bogus
      Src: /src/unbound/validator/validator.c:2311,1
    - Dst: key_cache_insert
      Src: /src/unbound/validator/validator.c:2313,1
    - Dst: log_query_info
      Src: /src/unbound/validator/validator.c:2321,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2323,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:2325,1
    - Dst: errinf_origin
      Src: /src/unbound/validator/validator.c:2326,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:2328,1
    - Dst: val_classify_response
      Src: /src/unbound/validator/validator.c:2331,1
    - Dst: remove_spurious_authority
      Src: /src/unbound/validator/validator.c:2334,1
    - Dst: shorten_answer_any
      Src: /src/unbound/validator/validator.c:2336,1
    - Dst: validate_msg_signatures
      Src: /src/unbound/validator/validator.c:2341,1
    - Dst: validate_suspend_setup_timer
      Src: /src/unbound/validator/validator.c:2344,1
    - Dst: val_error
      Src: /src/unbound/validator/validator.c:2346,1
    - Dst: detect_wrongly_truncated
      Src: /src/unbound/validator/validator.c:2354,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2367,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2375,1
    - Dst: validate_positive_response
      Src: /src/unbound/validator/validator.c:2376,1
    - Dst: validate_suspend_setup_timer
      Src: /src/unbound/validator/validator.c:2380,1
    - Dst: val_error
      Src: /src/unbound/validator/validator.c:2382,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2385,1
    - Dst: sec_status_to_string
      Src: /src/unbound/validator/validator.c:2386,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2391,1
    - Dst: validate_nodata_response
      Src: /src/unbound/validator/validator.c:2392,1
    - Dst: validate_suspend_setup_timer
      Src: /src/unbound/validator/validator.c:2396,1
    - Dst: val_error
      Src: /src/unbound/validator/validator.c:2398,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2401,1
    - Dst: sec_status_to_string
      Src: /src/unbound/validator/validator.c:2402,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/validator/validator.c:2407,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2408,1
    - Dst: validate_nameerror_response
      Src: /src/unbound/validator/validator.c:2409,1
    - Dst: validate_suspend_setup_timer
      Src: /src/unbound/validator/validator.c:2413,1
    - Dst: val_error
      Src: /src/unbound/validator/validator.c:2415,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2418,1
    - Dst: sec_status_to_string
      Src: /src/unbound/validator/validator.c:2419,1
    - Dst: FLAGS_SET_RCODE
      Src: /src/unbound/validator/validator.c:2421,1
    - Dst: FLAGS_SET_RCODE
      Src: /src/unbound/validator/validator.c:2422,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2426,1
    - Dst: validate_cname_response
      Src: /src/unbound/validator/validator.c:2427,1
    - Dst: validate_suspend_setup_timer
      Src: /src/unbound/validator/validator.c:2431,1
    - Dst: val_error
      Src: /src/unbound/validator/validator.c:2433,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2436,1
    - Dst: sec_status_to_string
      Src: /src/unbound/validator/validator.c:2437,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2442,1
    - Dst: validate_cname_noanswer_response
      Src: /src/unbound/validator/validator.c:2444,1
    - Dst: validate_suspend_setup_timer
      Src: /src/unbound/validator/validator.c:2448,1
    - Dst: val_error
      Src: /src/unbound/validator/validator.c:2450,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2453,1
    - Dst: sec_status_to_string
      Src: /src/unbound/validator/validator.c:2454,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2459,1
    - Dst: validate_referral_response
      Src: /src/unbound/validator/validator.c:2460,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2461,1
    - Dst: sec_status_to_string
      Src: /src/unbound/validator/validator.c:2462,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2467,1
    - Dst: validate_any_response
      Src: /src/unbound/validator/validator.c:2469,1
    - Dst: validate_suspend_setup_timer
      Src: /src/unbound/validator/validator.c:2473,1
    - Dst: val_error
      Src: /src/unbound/validator/validator.c:2475,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2478,1
    - Dst: sec_status_to_string
      Src: /src/unbound/validator/validator.c:2479,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:2484,1
    - Dst: errinf
      Src: /src/unbound/validator/validator.c:2489,1
    - Dst: errinf
      Src: /src/unbound/validator/validator.c:2490,1
    - Dst: val_classification_to_string
      Src: /src/unbound/validator/validator.c:2490,1
    - Dst: errinf
      Src: /src/unbound/validator/validator.c:2491,1
    - Dst: errinf_origin
      Src: /src/unbound/validator/validator.c:2492,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 135
    argCount: 4
    argNames:
    - qstate
    - vq
    - ve
    - id
    argTypes:
    - struct module_qstate*
    - struct val_qstate*
    - struct val_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2496
      start: 2276
    functionDepth: 3
    functionLinenumber: 2276
    functionLinenumberEnd: 2496
    functionName: processValidate
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - log_nametypeclass
    - validate_msg_signatures
    - validate_any_response
    - shorten_answer_any
    - sec_status_to_string
    - val_classify_response
    - validate_referral_response
    - validate_suspend_setup_timer
    - errinf
    - log_err
    - update_reason_bogus
    - val_classification_to_string
    - key_entry_isbad
    - remove_spurious_authority
    - detect_wrongly_truncated
    - errinf_ede
    - FLAGS_SET_RCODE
    - validate_positive_response
    - validate_nameerror_response
    - validate_nodata_response
    - verbose
    - errinf_origin
    - key_entry_get_reason_bogus
    - key_entry_isnull
    - key_cache_insert
    - FLAGS_GET_RCODE
    - validate_cname_noanswer_response
    - log_query_info
    - validate_cname_response
    - val_mark_insecure
    - val_error
    linkageType: ''
    returnType: int
    signature: "int processValidate(struct module_qstate* qstate, struct val_qstate*
      vq, \n\tstruct val_env* ve, int id)"
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: val_classify_response
      Src: /src/unbound/validator/validator.c:2512,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:2519,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:2529,1
    - Dst: val_next_unchecked
      Src: /src/unbound/validator/validator.c:2535,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2539,1
    - Dst: val_chase_cname
      Src: /src/unbound/validator/validator.c:2549,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2551,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:2553,1
    - Dst: log_query_info
      Src: /src/unbound/validator/validator.c:2556,1
    - Dst: val_check_nonsecure
      Src: /src/unbound/validator/validator.c:2570,1
    - Dst: log_query_info
      Src: /src/unbound/validator/validator.c:2572,1
    - Dst: val_neg_addreply
      Src: /src/unbound/validator/validator.c:2575,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2588,1
    - Dst: val_blacklist
      Src: /src/unbound/validator/validator.c:2590,1
    - Dst: val_restart
      Src: /src/unbound/validator/validator.c:2594,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2595,1
    - Dst: msg_cache_lookup
      Src: /src/unbound/validator/validator.c:2601,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2611,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2620,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/validator/validator.c:2635,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/validator/validator.c:2638,1
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/validator/validator.c:2643,1
    - Dst: log_query_info
      Src: /src/unbound/validator/validator.c:2651,1
    - Dst: errinf_to_str_bogus
      Src: /src/unbound/validator/validator.c:2654,1
    - Dst: log_info
      Src: /src/unbound/validator/validator.c:2657,1
    - Dst: strlen
      Src: /src/unbound/validator/validator.c:2679,1
    - Dst: dname_lab_startswith
      Src: /src/unbound/validator/validator.c:2681,1
    - Dst: sentinel_get_keytag
      Src: /src/unbound/validator/validator.c:2683,1
    - Dst: anchor_has_keytag
      Src: /src/unbound/validator/validator.c:2684,1
    - Dst: strlen
      Src: /src/unbound/validator/validator.c:2689,1
    - Dst: dname_lab_startswith
      Src: /src/unbound/validator/validator.c:2691,1
    - Dst: sentinel_get_keytag
      Src: /src/unbound/validator/validator.c:2693,1
    - Dst: anchor_has_keytag
      Src: /src/unbound/validator/validator.c:2694,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:2703,1
    - Dst: errinf_to_reason_bogus
      Src: /src/unbound/validator/validator.c:2703,1
    - Dst: dns_cache_store
      Src: /src/unbound/validator/validator.c:2718,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:2722,1
    - Dst: dns_cache_store
      Src: /src/unbound/validator/validator.c:2728,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:2732,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 114
    argCount: 4
    argNames:
    - qstate
    - vq
    - ve
    - id
    argTypes:
    - struct module_qstate*
    - struct val_qstate*
    - struct val_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2739
      start: 2508
    functionDepth: 3
    functionLinenumber: 2508
    functionLinenumberEnd: 2739
    functionName: processFinished
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - errinf_to_reason_bogus
    - log_info
    - val_neg_addreply
    - val_classify_response
    - val_check_nonsecure
    - log_err
    - update_reason_bogus
    - anchor_has_keytag
    - dname_lab_startswith
    - sentinel_get_keytag
    - strlen
    - verbose
    - lock_rw_unlock
    - PREFETCH_TTL_CALC
    - val_restart
    - msg_cache_lookup
    - errinf_to_str_bogus
    - val_chase_cname
    - log_query_info
    - val_blacklist
    - val_next_unchecked
    - dns_cache_store
    linkageType: ''
    returnType: int
    signature: "int processFinished(struct module_qstate* qstate, struct val_qstate*
      vq, \n\tstruct val_env* ve, int id)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2756,1
    - Dst: val_state_to_string
      Src: /src/unbound/validator/validator.c:2757,1
    - Dst: processInit
      Src: /src/unbound/validator/validator.c:2760,1
    - Dst: processFindKey
      Src: /src/unbound/validator/validator.c:2763,1
    - Dst: processValidate
      Src: /src/unbound/validator/validator.c:2766,1
    - Dst: processFinished
      Src: /src/unbound/validator/validator.c:2769,1
    - Dst: log_warn
      Src: /src/unbound/validator/validator.c:2772,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 4
    argNames:
    - qstate
    - vq
    - ve
    - id
    argTypes:
    - struct module_qstate*
    - struct val_qstate*
    - struct val_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2778
      start: 2750
    functionDepth: 6
    functionLinenumber: 2750
    functionLinenumberEnd: 2778
    functionName: val_handle
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - verbose
    - processInit
    - processFinished
    - val_state_to_string
    - log_warn
    - processValidate
    - processFindKey
    linkageType: ''
    returnType: void
    signature: "void val_handle(struct module_qstate* qstate, struct val_qstate* vq,
      \n\tstruct val_env* ve, int id)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2786,1
    - Dst: strextstate
      Src: /src/unbound/validator/validator.c:2787,1
    - Dst: strmodulevent
      Src: /src/unbound/validator/validator.c:2788,1
    - Dst: log_query_info
      Src: /src/unbound/validator/validator.c:2789,1
    - Dst: log_query_info
      Src: /src/unbound/validator/validator.c:2792,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2799,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2805,1
    - Dst: needs_validation
      Src: /src/unbound/validator/validator.c:2807,1
    - Dst: already_validated
      Src: /src/unbound/validator/validator.c:2818,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2823,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2833,1
    - Dst: update_reason_bogus
      Src: /src/unbound/validator/validator.c:2837,1
    - Dst: val_new
      Src: /src/unbound/validator/validator.c:2845,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:2847,1
    - Dst: val_new_getmsg
      Src: /src/unbound/validator/validator.c:2852,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:2853,1
    - Dst: val_handle
      Src: /src/unbound/validator/validator.c:2858,1
    - Dst: val_handle
      Src: /src/unbound/validator/validator.c:2864,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:2867,1
    - Dst: strmodulevent
      Src: /src/unbound/validator/validator.c:2867,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 66
    argCount: 4
    argNames:
    - qstate
    - event
    - id
    - outbound
    argTypes:
    - struct module_qstate*
    - enum module_ev
    - int
    - struct outbound_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2870
      start: 2780
    functionDepth: 7
    functionLinenumber: 2780
    functionLinenumberEnd: 2870
    functionName: val_operate
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - log_err
    - update_reason_bogus
    - needs_validation
    - val_new_getmsg
    - val_handle
    - strextstate
    - verbose
    - log_query_info
    - strmodulevent
    - val_new
    - already_validated
    linkageType: ''
    returnType: void
    signature: "void val_operate(struct module_qstate* qstate, enum module_ev event,
      int id,\n        struct outbound_entry* outbound)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: errinf_to_str_misc
      Src: /src/unbound/validator/validator.c:2901,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/validator.c:2903,1
    - Dst: snprintf
      Src: /src/unbound/validator/validator.c:2908,1
    - Dst: snprintf
      Src: /src/unbound/validator/validator.c:2910,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:2914,1
    - Dst: key_entry_create_bad
      Src: /src/unbound/validator/validator.c:2915,1
    - Dst: key_entry_create_null
      Src: /src/unbound/validator/validator.c:2918,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:2922,1
    - Dst: val_verify_new_DNSKEYs_with_ta
      Src: /src/unbound/validator/validator.c:2928,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:2932,1
    - Dst: key_entry_isgood
      Src: /src/unbound/validator/validator.c:2935,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:2939,1
    - Dst: sec_status_to_string
      Src: /src/unbound/validator/validator.c:2940,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/validator.c:2943,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:2949,1
    - Dst: key_entry_create_bad
      Src: /src/unbound/validator/validator.c:2950,1
    - Dst: key_entry_create_null
      Src: /src/unbound/validator/validator.c:2954,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:2959,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/validator.c:2965,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 44
    argCount: 5
    argNames:
    - dnskey_rrset
    - ta
    - qstate
    - id
    - sub_qstate
    argTypes:
    - struct ub_packed_rrset_key*
    - struct trust_anchor*
    - struct module_qstate*
    - int
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2968
      start: 2887
    functionDepth: 1
    functionLinenumber: 2887
    functionLinenumberEnd: 2968
    functionName: primeResponseToKE
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - log_err
    - key_entry_create_bad
    - log_nametypeclass
    - snprintf
    - errinf_to_str_misc
    - key_entry_isgood
    - verbose
    - val_verify_new_DNSKEYs_with_ta
    - key_entry_create_null
    - sec_status_to_string
    - errinf_ede
    linkageType: ''
    returnType: struct key_entry_key
    signature: "struct key_entry_key *\nprimeResponseToKE(struct ub_packed_rrset_key*
      dnskey_rrset, \n\tstruct trust_anchor* ta, struct module_qstate* qstate, int
      id,\n\tstruct module_qstate* sub_qstate)"
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_rcode_buf
      Src: /src/unbound/validator/validator.c:3007,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3009,1
    - Dst: errinf
      Src: /src/unbound/validator/validator.c:3010,1
    - Dst: errinf_to_str_misc
      Src: /src/unbound/validator/validator.c:3013,1
    - Dst: snprintf
      Src: /src/unbound/validator/validator.c:3016,1
    - Dst: errinf
      Src: /src/unbound/validator/validator.c:3017,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:3021,1
    - Dst: val_classify_response
      Src: /src/unbound/validator/validator.c:3025,1
    - Dst: reply_find_answer_rrset
      Src: /src/unbound/validator/validator.c:3029,1
    - Dst: log_warn
      Src: /src/unbound/validator/validator.c:3033,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:3036,1
    - Dst: val_verify_rrset_entry
      Src: /src/unbound/validator/validator.c:3041,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3046,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:3048,1
    - Dst: val_dsset_isusable
      Src: /src/unbound/validator/validator.c:3054,1
    - Dst: key_entry_create_null
      Src: /src/unbound/validator/validator.c:3057,1
    - Dst: ub_packed_rrset_ttl
      Src: /src/unbound/validator/validator.c:3059,1
    - Dst: log_query_info
      Src: /src/unbound/validator/validator.c:3066,1
    - Dst: key_entry_create_rrset
      Src: /src/unbound/validator/validator.c:3067,1
    - Dst: val_has_signed_nsecs
      Src: /src/unbound/validator/validator.c:3079,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3080,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:3082,1
    - Dst: val_nsec_prove_nodata_dsreply
      Src: /src/unbound/validator/validator.c:3092,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3098,1
    - Dst: key_entry_create_null
      Src: /src/unbound/validator/validator.c:3100,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3107,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3112,1
    - Dst: errinf
      Src: /src/unbound/validator/validator.c:3114,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3119,1
    - Dst: nsec3_cache_table_init
      Src: /src/unbound/validator/validator.c:3123,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:3124,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:3127,1
    - Dst: nsec3_prove_nods
      Src: /src/unbound/validator/validator.c:3130,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3141,1
    - Dst: key_entry_create_null
      Src: /src/unbound/validator/validator.c:3143,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3150,1
    - Dst: val_has_auth_nsecs
      Src: /src/unbound/validator/validator.c:3159,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3163,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:3165,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3169,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:3170,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3174,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:3176,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3187,1
    - Dst: val_classification_to_string
      Src: /src/unbound/validator/validator.c:3188,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:3190,1
    - Dst: reply_find_rrset_section_an
      Src: /src/unbound/validator/validator.c:3199,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:3204,1
    - Dst: ntohs
      Src: /src/unbound/validator/validator.c:3209,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:3215,1
    - Dst: val_verify_rrset_entry
      Src: /src/unbound/validator/validator.c:3218,1
    - Dst: val_rrset_wildcard
      Src: /src/unbound/validator/validator.c:3227,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3228,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:3230,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3273,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:3275,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3279,1
    - Dst: errinf
      Src: /src/unbound/validator/validator.c:3285,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:3286,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3289,1
    - Dst: errinf
      Src: /src/unbound/validator/validator.c:3291,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/validator/validator.c:3293,1
    - Dst: sldns_wire2str_rcode_buf
      Src: /src/unbound/validator/validator.c:3296,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/validator/validator.c:3296,1
    - Dst: errinf
      Src: /src/unbound/validator/validator.c:3298,1
    - Dst: errinf
      Src: /src/unbound/validator/validator.c:3299,1
    - Dst: val_classification_to_string
      Src: /src/unbound/validator/validator.c:3299,1
    - Dst: errinf
      Src: /src/unbound/validator/validator.c:3300,1
    - Dst: key_entry_create_bad
      Src: /src/unbound/validator/validator.c:3304,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 179
    argCount: 8
    argNames:
    - qstate
    - vq
    - id
    - rcode
    - msg
    - qinfo
    - ke
    - sub_qstate
    argTypes:
    - struct module_qstate*
    - struct val_qstate*
    - int
    - int
    - struct dns_msg*
    - struct query_info*
    - struct key_entry_key**
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3308
      start: 2993
    functionDepth: 2
    functionLinenumber: 2993
    functionLinenumberEnd: 3308
    functionName: ds_response_to_ke
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - val_has_auth_nsecs
    - reply_find_rrset_section_an
    - snprintf
    - sldns_wire2str_rcode_buf
    - key_entry_create_null
    - val_classify_response
    - errinf
    - log_err
    - val_classification_to_string
    - errinf_ede
    - key_entry_create_rrset
    - nsec3_cache_table_init
    - val_nsec_prove_nodata_dsreply
    - verbose
    - errinf_to_str_misc
    - reply_find_answer_rrset
    - nsec3_prove_nods
    - log_warn
    - val_dsset_isusable
    - val_rrset_wildcard
    - FLAGS_GET_RCODE
    - key_entry_create_bad
    - ub_packed_rrset_ttl
    - log_query_info
    - val_has_signed_nsecs
    - val_verify_rrset_entry
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int ds_response_to_ke(struct module_qstate* qstate, struct val_qstate*
      vq,\n        int id, int rcode, struct dns_msg* msg, struct query_info* qinfo,\n\tstruct
      key_entry_key** ke, struct module_qstate* sub_qstate)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3343,1
    - Dst: ds_response_to_ke
      Src: /src/unbound/validator/validator.c:3350,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:3355,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:3363,1
    - Dst: regional_alloc_init
      Src: /src/unbound/validator/validator.c:3370,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:3373,1
    - Dst: key_entry_isgood
      Src: /src/unbound/validator/validator.c:3382,1
    - Dst: key_entry_get_rrset
      Src: /src/unbound/validator/validator.c:3383,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:3385,1
    - Dst: key_entry_isbad
      Src: /src/unbound/validator/validator.c:3392,1
    - Dst: val_blacklist
      Src: /src/unbound/validator/validator.c:3395,1
    - Dst: key_entry_isbad
      Src: /src/unbound/validator/validator.c:3399,1
    - Dst: errinf_origin
      Src: /src/unbound/validator/validator.c:3400,1
    - Dst: errinf_dname
      Src: /src/unbound/validator/validator.c:3401,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 62
    argCount: 9
    argNames:
    - qstate
    - vq
    - id
    - rcode
    - msg
    - qinfo
    - origin
    - suspend
    - sub_qstate
    argTypes:
    - struct module_qstate*
    - struct val_qstate*
    - int
    - int
    - struct dns_msg*
    - struct query_info*
    - struct sock_list*
    - int*
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3410
      start: 3330
    functionDepth: 3
    functionLinenumber: 3330
    functionLinenumberEnd: 3410
    functionName: process_ds_response
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 1
    functionsReached:
    - log_err
    - verbose
    - key_entry_isgood
    - key_entry_get_rrset
    - key_entry_isbad
    - val_blacklist
    - errinf_origin
    - errinf_dname
    - regional_alloc_init
    - ds_response_to_ke
    linkageType: ''
    returnType: void
    signature: "void process_ds_response(struct module_qstate* qstate, struct val_qstate*
      vq,\n\tint id, int rcode, struct dns_msg* msg, struct query_info* qinfo,\n\tstruct
      sock_list* origin, int* suspend,\n\tstruct module_qstate* sub_qstate)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3444,1
    - Dst: reply_find_answer_rrset
      Src: /src/unbound/validator/validator.c:3453,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3459,1
    - Dst: val_blacklist
      Src: /src/unbound/validator/validator.c:3463,1
    - Dst: errinf_to_str_misc
      Src: /src/unbound/validator/validator.c:3469,1
    - Dst: snprintf
      Src: /src/unbound/validator/validator.c:3471,1
    - Dst: snprintf
      Src: /src/unbound/validator/validator.c:3473,1
    - Dst: key_entry_create_bad
      Src: /src/unbound/validator/validator.c:3477,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:3481,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:3484,1
    - Dst: errinf_origin
      Src: /src/unbound/validator/validator.c:3485,1
    - Dst: errinf_dname
      Src: /src/unbound/validator/validator.c:3486,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:3491,1
    - Dst: val_verify_new_DNSKEYs
      Src: /src/unbound/validator/validator.c:3497,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:3502,1
    - Dst: key_entry_isgood
      Src: /src/unbound/validator/validator.c:3508,1
    - Dst: key_entry_isbad
      Src: /src/unbound/validator/validator.c:3509,1
    - Dst: val_blacklist
      Src: /src/unbound/validator/validator.c:3511,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3518,1
    - Dst: errinf_ede
      Src: /src/unbound/validator/validator.c:3520,1
    - Dst: errinf_origin
      Src: /src/unbound/validator/validator.c:3521,1
    - Dst: errinf_dname
      Src: /src/unbound/validator/validator.c:3522,1
    - Dst: key_cache_insert
      Src: /src/unbound/validator/validator.c:3532,1
    - Dst: log_query_info
      Src: /src/unbound/validator/validator.c:3536,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 70
    argCount: 8
    argNames:
    - qstate
    - vq
    - id
    - rcode
    - msg
    - qinfo
    - origin
    - sub_qstate
    argTypes:
    - struct module_qstate*
    - struct val_qstate*
    - int
    - int
    - struct dns_msg*
    - struct query_info*
    - struct sock_list*
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3537
      start: 3430
    functionDepth: 1
    functionLinenumber: 3430
    functionLinenumberEnd: 3537
    functionName: process_dnskey_response
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - log_err
    - key_entry_create_bad
    - verbose
    - val_blacklist
    - reply_find_answer_rrset
    - errinf_to_str_misc
    - snprintf
    - errinf_origin
    - key_entry_isgood
    - errinf_dname
    - key_entry_isbad
    - log_query_info
    - val_verify_new_DNSKEYs
    - errinf_ede
    - key_cache_insert
    linkageType: ''
    returnType: void
    signature: "void process_dnskey_response(struct module_qstate* qstate, struct
      val_qstate* vq,\n\tint id, int rcode, struct dns_msg* msg, struct query_info*
      qinfo,\n\tstruct sock_list* origin, struct module_qstate* sub_qstate)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: anchor_find
      Src: /src/unbound/validator/validator.c:3559,1
    - Dst: reply_find_rrset_section_an
      Src: /src/unbound/validator/validator.c:3573,1
    - Dst: autr_process_prime
      Src: /src/unbound/validator/validator.c:3579,1
    - Dst: primeResponseToKE
      Src: /src/unbound/validator/validator.c:3587,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/validator.c:3589,1
    - Dst: key_entry_isbad
      Src: /src/unbound/validator/validator.c:3591,1
    - Dst: val_blacklist
      Src: /src/unbound/validator/validator.c:3593,1
    - Dst: errinf_origin
      Src: /src/unbound/validator/validator.c:3602,1
    - Dst: errinf_dname
      Src: /src/unbound/validator/validator.c:3603,1
    - Dst: key_cache_insert
      Src: /src/unbound/validator/validator.c:3605,1
    - Dst: key_entry_isnull
      Src: /src/unbound/validator/validator.c:3610,1
    - Dst: key_entry_isbad
      Src: /src/unbound/validator/validator.c:3611,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 7
    argNames:
    - qstate
    - vq
    - id
    - rcode
    - msg
    - origin
    - sub_qstate
    argTypes:
    - struct module_qstate*
    - struct val_qstate*
    - int
    - int
    - struct dns_msg*
    - struct sock_list*
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3615
      start: 3552
    functionDepth: 8
    functionLinenumber: 3552
    functionLinenumberEnd: 3615
    functionName: process_prime_response
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - autr_process_prime
    - anchor_find
    - primeResponseToKE
    - reply_find_rrset_section_an
    - lock_basic_unlock
    - val_blacklist
    - key_entry_isbad
    - errinf_origin
    - errinf_dname
    - key_entry_isnull
    - key_cache_insert
    linkageType: ''
    returnType: void
    signature: "void process_prime_response(struct module_qstate* qstate, struct val_qstate*
      vq,\n\tint id, int rcode, struct dns_msg* msg, struct sock_list* origin,\n\tstruct
      module_qstate* sub_qstate)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_query_info
      Src: /src/unbound/validator/validator.c:3629,1
    - Dst: log_query_info
      Src: /src/unbound/validator/validator.c:3631,1
    - Dst: verbose
      Src: /src/unbound/validator/validator.c:3633,1
    - Dst: process_prime_response
      Src: /src/unbound/validator/validator.c:3643,1
    - Dst: process_ds_response
      Src: /src/unbound/validator/validator.c:3649,1
    - Dst: dns_msg_deepcopy_region
      Src: /src/unbound/validator/validator.c:3665,1
    - Dst: process_dnskey_response
      Src: /src/unbound/validator/validator.c:3670,1
    - Dst: log_err
      Src: /src/unbound/validator/validator.c:3675,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 3
    argNames:
    - qstate
    - id
    - super
    argTypes:
    - struct module_qstate*
    - int
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3676
      start: 3624
    functionDepth: 9
    functionLinenumber: 3624
    functionLinenumberEnd: 3676
    functionName: val_inform_super
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - log_err
    - process_prime_response
    - verbose
    - log_query_info
    - dns_msg_deepcopy_region
    - process_dnskey_response
    - process_ds_response
    linkageType: ''
    returnType: void
    signature: "void val_inform_super(struct module_qstate* qstate, int id,\n\tstruct
      module_qstate* super)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: comm_timer_delete
      Src: /src/unbound/validator/validator.c:3687,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3692
      start: 3678
    functionDepth: 0
    functionLinenumber: 3678
    functionLinenumberEnd: 3692
    functionName: val_clear
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - comm_timer_delete
    linkageType: ''
    returnType: void
    signature: void val_clear(struct module_qstate* qstate, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: key_cache_get_mem
      Src: /src/unbound/validator/validator.c:3700,1
    - Dst: val_neg_get_mem
      Src: /src/unbound/validator/validator.c:3701,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3703
      start: 3694
    functionDepth: 1
    functionLinenumber: 3694
    functionLinenumberEnd: 3703
    functionName: val_get_mem
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached:
    - val_neg_get_mem
    - key_cache_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t val_get_mem(struct module_env* env, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3718
      start: 3714
    functionDepth: 0
    functionLinenumber: 3714
    functionLinenumberEnd: 3718
    functionName: val_get_funcblock
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct module_func_block
    signature: "struct module_func_block * \nval_get_funcblock(void)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - state
    argTypes:
    - enum val_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3730
      start: 3720
    functionDepth: 0
    functionLinenumber: 3720
    functionLinenumberEnd: 3730
    functionName: val_state_to_string
    functionSourceFile: /src/unbound/validator/validator.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char * \nval_state_to_string(enum val_state state)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_canon_lab_cmp
      Src: /src/unbound/validator/val_neg.c:77,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 78
    functionName: val_neg_data_compare
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - dname_canon_lab_cmp
    linkageType: ''
    returnType: int
    signature: int val_neg_data_compare(const void* a, const void* b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_canon_lab_cmp
      Src: /src/unbound/validator/val_neg.c:90,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 91
    functionName: val_neg_zone_compare
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - dname_canon_lab_cmp
    linkageType: ''
    returnType: int
    signature: int val_neg_zone_compare(const void* a, const void* b)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/validator/val_neg.c:95,1
    - Dst: log_err
      Src: /src/unbound/validator/val_neg.c:98,1
    - Dst: rbtree_init
      Src: /src/unbound/validator/val_neg.c:104,1
    - Dst: lock_basic_init
      Src: /src/unbound/validator/val_neg.c:105,1
    - Dst: lock_protect
      Src: /src/unbound/validator/val_neg.c:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - cfg
    - maxiter
    argTypes:
    - struct config_file*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 108
    functionName: val_neg_create
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 1
    functionsReached:
    - log_err
    - lock_basic_init
    - rbtree_init
    - lock_protect
    - calloc
    linkageType: ''
    returnType: struct val_neg_cache
    signature: struct val_neg_cache * val_neg_create(struct config_file* cfg, size_t
      maxiter)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_neg.c:113,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_neg.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - neg
    argTypes:
    - struct val_neg_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 117
    functionName: val_neg_get_mem
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 1
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: size_t
    signature: size_t val_neg_get_mem(struct val_neg_cache* neg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:124,1
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - n
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 126
    functionName: neg_clear_datas
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void neg_clear_datas(rbnode_type* n, void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: traverse_postorder
      Src: /src/unbound/validator/val_neg.c:134,1
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:135,1
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:136,1
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:137,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - n
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 138
    functionName: neg_clear_zones
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - free
    - traverse_postorder
    linkageType: ''
    returnType: void
    signature: void neg_clear_zones(rbnode_type* n, void* ATTR_UNUSED(arg))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_destroy
      Src: /src/unbound/validator/val_neg.c:143,1
    - Dst: traverse_postorder
      Src: /src/unbound/validator/val_neg.c:145,1
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - neg
    argTypes:
    - struct val_neg_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 147
    functionName: neg_cache_delete
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 1
    functionsReached:
    - free
    - lock_basic_destroy
    - traverse_postorder
    linkageType: ''
    returnType: void
    signature: void neg_cache_delete(struct val_neg_cache* neg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - neg
    - data
    argTypes:
    - struct val_neg_cache*
    - struct val_neg_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 163
    functionName: neg_lru_front
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void neg_lru_front(struct val_neg_cache* neg, \n\tstruct val_neg_data*
      data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - neg
    - data
    argTypes:
    - struct val_neg_cache*
    - struct val_neg_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 179
    functionName: neg_lru_remove
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void neg_lru_remove(struct val_neg_cache* neg, \n\tstruct val_neg_data*
      data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: neg_lru_remove
      Src: /src/unbound/validator/val_neg.c:192,1
    - Dst: neg_lru_front
      Src: /src/unbound/validator/val_neg.c:194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - neg
    - data
    argTypes:
    - struct val_neg_cache*
    - struct val_neg_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 195
    functionName: neg_lru_touch
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - neg_lru_front
    - neg_lru_remove
    linkageType: ''
    returnType: void
    signature: "void neg_lru_touch(struct val_neg_cache* neg, \n\tstruct val_neg_data*
      data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_neg.c:208,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_neg.c:209,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_neg.c:215,1
    - Dst: rbtree_delete
      Src: /src/unbound/validator/val_neg.c:224,1
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:226,1
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:227,1
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:228,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 2
    argNames:
    - neg
    - z
    argTypes:
    - struct val_neg_cache*
    - struct val_neg_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 231
    functionName: neg_delete_zone
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - free
    - log_assert
    - rbtree_delete
    linkageType: ''
    returnType: void
    signature: void neg_delete_zone(struct val_neg_cache* neg, struct val_neg_zone*
      z)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_neg.c:239,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_neg.c:240,1
    - Dst: neg_lru_remove
      Src: /src/unbound/validator/val_neg.c:244,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_neg.c:245,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_neg.c:250,1
    - Dst: rbtree_delete
      Src: /src/unbound/validator/val_neg.c:259,1
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:261,1
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:262,1
    - Dst: neg_delete_zone
      Src: /src/unbound/validator/val_neg.c:268,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - neg
    - el
    argTypes:
    - struct val_neg_cache*
    - struct val_neg_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 233
    functionDepth: 2
    functionLinenumber: 233
    functionLinenumberEnd: 270
    functionName: neg_delete_data
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - rbtree_delete
    - free
    - log_assert
    - neg_delete_zone
    - neg_lru_remove
    linkageType: ''
    returnType: void
    signature: void neg_delete_data(struct val_neg_cache* neg, struct val_neg_data*
      el)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: neg_delete_data
      Src: /src/unbound/validator/val_neg.c:283,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - neg
    - need
    argTypes:
    - struct val_neg_cache*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 279
    functionDepth: 3
    functionLinenumber: 279
    functionLinenumberEnd: 285
    functionName: neg_make_space
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - neg_delete_data
    linkageType: ''
    returnType: void
    signature: void neg_make_space(struct val_neg_cache* neg, size_t need)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/validator/val_neg.c:295,1
    - Dst: rbtree_search
      Src: /src/unbound/validator/val_neg.c:299,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - neg
    - nm
    - len
    - dclass
    argTypes:
    - struct val_neg_cache*
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 287
    functionDepth: 1
    functionLinenumber: 287
    functionLinenumberEnd: 301
    functionName: neg_find_zone
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - dname_count_labels
    - rbtree_search
    linkageType: ''
    returnType: struct val_neg_zone
    signature: "struct val_neg_zone * neg_find_zone(struct val_neg_cache* neg, \n\tuint8_t*
      nm, size_t len, uint16_t dclass)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_search
      Src: /src/unbound/validator/val_neg.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - zone
    - nm
    - len
    - labs
    argTypes:
    - struct val_neg_zone*
    - uint8_t*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 311
    functionDepth: 1
    functionLinenumber: 311
    functionLinenumberEnd: 324
    functionName: neg_find_data
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - rbtree_search
    linkageType: ''
    returnType: struct val_neg_data
    signature: "struct val_neg_data * neg_find_data(struct val_neg_zone* zone, \n\tuint8_t*
      nm, size_t len, int labs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/validator/val_neg.c:337,1
    - Dst: dname_is_root
      Src: /src/unbound/validator/val_neg.c:341,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_neg.c:342,1
    - Dst: dname_remove_label
      Src: /src/unbound/validator/val_neg.c:343,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - rep
    argTypes:
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 349
    functionName: calc_data_need
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - dname_is_root
    - log_assert
    - dname_remove_label
    - ntohs
    linkageType: ''
    returnType: size_t
    signature: size_t calc_data_need(struct reply_info* rep)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_is_root
      Src: /src/unbound/validator/val_neg.c:360,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_neg.c:361,1
    - Dst: dname_remove_label
      Src: /src/unbound/validator/val_neg.c:362,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - d
    - len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 366
    functionName: calc_zone_need
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - dname_is_root
    - log_assert
    - dname_remove_label
    linkageType: ''
    returnType: size_t
    signature: size_t calc_zone_need(uint8_t* d, size_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_find_less_equal
      Src: /src/unbound/validator/val_neg.c:388,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/validator/val_neg.c:398,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 5
    argNames:
    - neg
    - nm
    - nm_len
    - labs
    - qclass
    argTypes:
    - struct val_neg_cache*
    - uint8_t*
    - size_t
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 377
    functionDepth: 1
    functionLinenumber: 377
    functionLinenumberEnd: 407
    functionName: neg_closest_zone_parent
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - dname_lab_cmp
    - rbtree_find_less_equal
    linkageType: ''
    returnType: struct val_neg_zone
    signature: "struct val_neg_zone * neg_closest_zone_parent(struct val_neg_cache*
      neg,\n\tuint8_t* nm, size_t nm_len, int labs, uint16_t qclass)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_find_less_equal
      Src: /src/unbound/validator/val_neg.c:427,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/validator/val_neg.c:437,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - zone
    - nm
    - nm_len
    - labs
    argTypes:
    - struct val_neg_zone*
    - uint8_t*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 417
    functionDepth: 1
    functionLinenumber: 417
    functionLinenumberEnd: 446
    functionName: neg_closest_data_parent
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - dname_lab_cmp
    - rbtree_find_less_equal
    linkageType: ''
    returnType: struct val_neg_data
    signature: "struct val_neg_data * neg_closest_data_parent(\n\tstruct val_neg_zone*
      zone, uint8_t* nm, size_t nm_len, int labs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/validator/val_neg.c:460,1
    - Dst: memdup
      Src: /src/unbound/validator/val_neg.c:465,1
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:467,1
    - Dst: rbtree_init
      Src: /src/unbound/validator/val_neg.c:474,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 4
    argNames:
    - nm
    - nm_len
    - labs
    - dclass
    argTypes:
    - uint8_t*
    - size_t
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 456
    functionDepth: 1
    functionLinenumber: 456
    functionLinenumberEnd: 476
    functionName: neg_setup_zone_node
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - free
    - calloc
    - rbtree_init
    - memdup
    linkageType: ''
    returnType: struct val_neg_zone
    signature: "struct val_neg_zone * neg_setup_zone_node(\n\tuint8_t* nm, size_t
      nm_len, int labs, uint16_t dclass)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: neg_setup_zone_node
      Src: /src/unbound/validator/val_neg.c:501,1
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:507,1
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:508,1
    - Dst: dname_remove_label
      Src: /src/unbound/validator/val_neg.c:520,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 5
    argNames:
    - nm
    - nm_len
    - labs
    - dclass
    - parent
    argTypes:
    - uint8_t*
    - size_t
    - int
    - uint16_t
    - struct val_neg_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 523
      start: 489
    functionDepth: 2
    functionLinenumber: 489
    functionLinenumberEnd: 523
    functionName: neg_zone_chain
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - free
    - dname_remove_label
    - neg_setup_zone_node
    linkageType: ''
    returnType: struct val_neg_zone
    signature: "struct val_neg_zone * neg_zone_chain(\n\tuint8_t* nm, size_t nm_len,
      int labs, uint16_t dclass,\n\tstruct val_neg_zone* parent)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - zone
    argTypes:
    - struct val_neg_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 535
    functionName: val_neg_zone_take_inuse
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void val_neg_zone_take_inuse(struct val_neg_zone* zone)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/validator/val_neg.c:543,1
    - Dst: neg_closest_zone_parent
      Src: /src/unbound/validator/val_neg.c:546,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_neg.c:547,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_neg.c:550,1
    - Dst: neg_zone_chain
      Src: /src/unbound/validator/val_neg.c:551,1
    - Dst: rbtree_insert
      Src: /src/unbound/validator/val_neg.c:563,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 4
    argNames:
    - neg
    - nm
    - nm_len
    - dclass
    argTypes:
    - struct val_neg_cache*
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 537
    functionDepth: 3
    functionLinenumber: 537
    functionLinenumberEnd: 570
    functionName: neg_create_zone
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - neg_zone_chain
    - neg_closest_zone_parent
    - query_dname_compare
    - log_assert
    - rbtree_insert
    - dname_count_labels
    linkageType: ''
    returnType: struct val_neg_zone
    signature: "struct val_neg_zone * neg_create_zone(struct val_neg_cache* neg,\n\tuint8_t*
      nm, size_t nm_len, uint16_t dclass)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/validator/val_neg.c:577,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - rep
    argTypes:
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 581
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 581
    functionName: reply_find_soa
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - ntohs
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: struct ub_packed_rrset_key * reply_find_soa(struct reply_info* rep)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/validator/val_neg.c:591,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - rep
    argTypes:
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 584
    functionDepth: 0
    functionLinenumber: 584
    functionLinenumberEnd: 599
    functionName: reply_has_nsec
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - ntohs
    linkageType: ''
    returnType: int
    signature: int reply_has_nsec(struct reply_info* rep)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/validator/val_neg.c:613,1
    - Dst: memdup
      Src: /src/unbound/validator/val_neg.c:618,1
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:620,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - nm
    - nm_len
    - labs
    argTypes:
    - uint8_t*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 609
    functionDepth: 1
    functionLinenumber: 609
    functionLinenumberEnd: 626
    functionName: neg_setup_data_node
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - free
    - calloc
    - memdup
    linkageType: ''
    returnType: struct val_neg_data
    signature: "struct val_neg_data * neg_setup_data_node(\n\tuint8_t* nm, size_t
      nm_len, int labs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: neg_setup_data_node
      Src: /src/unbound/validator/val_neg.c:647,1
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:653,1
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:654,1
    - Dst: dname_remove_label
      Src: /src/unbound/validator/val_neg.c:667,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 4
    argNames:
    - nm
    - nm_len
    - labs
    - parent
    argTypes:
    - uint8_t*
    - size_t
    - int
    - struct val_neg_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 670
      start: 636
    functionDepth: 2
    functionLinenumber: 636
    functionLinenumberEnd: 670
    functionName: neg_data_chain
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - free
    - neg_setup_data_node
    - dname_remove_label
    linkageType: ''
    returnType: struct val_neg_data
    signature: "struct val_neg_data * neg_data_chain(\n\tuint8_t* nm, size_t nm_len,
      int labs, struct val_neg_data* parent)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/validator/val_neg.c:694,1
    - Dst: dname_valid
      Src: /src/unbound/validator/val_neg.c:696,1
    - Dst: dname_count_labels
      Src: /src/unbound/validator/val_neg.c:697,1
    - Dst: nsec3_get_nextowner_b32
      Src: /src/unbound/validator/val_neg.c:700,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/validator/val_neg.c:703,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/val_neg.c:707,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/val_neg.c:708,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_neg.c:712,1
    - Dst: rbtree_next
      Src: /src/unbound/validator/val_neg.c:716,1
    - Dst: dname_canon_lab_cmp
      Src: /src/unbound/validator/val_neg.c:720,1
    - Dst: rbtree_next
      Src: /src/unbound/validator/val_neg.c:724,1
    - Dst: dname_canon_lab_cmp
      Src: /src/unbound/validator/val_neg.c:730,1
    - Dst: rbtree_next
      Src: /src/unbound/validator/val_neg.c:737,1
    - Dst: neg_delete_data
      Src: /src/unbound/validator/val_neg.c:750,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 33
    argCount: 4
    argNames:
    - neg
    - zone
    - el
    - nsec
    argTypes:
    - struct val_neg_cache*
    - struct val_neg_zone*
    - struct val_neg_data*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 680
    functionDepth: 3
    functionLinenumber: 680
    functionLinenumberEnd: 753
    functionName: wipeout
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    - nsec3_get_nextowner_b32
    - dname_canon_lab_cmp
    - dname_count_size_labels
    - query_dname_compare
    - dname_valid
    - rbtree_next
    - neg_delete_data
    - dname_count_labels
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void wipeout(struct val_neg_cache* neg, struct val_neg_zone* zone,
      \n\tstruct val_neg_data* el, struct ub_packed_rrset_key* nsec)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/validator/val_neg.c:763,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/val_neg.c:769,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_neg.c:770,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_neg.c:771,1
    - Dst: neg_closest_data_parent
      Src: /src/unbound/validator/val_neg.c:774,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_neg.c:775,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_neg.c:777,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_neg.c:784,1
    - Dst: neg_data_chain
      Src: /src/unbound/validator/val_neg.c:786,1
    - Dst: log_err
      Src: /src/unbound/validator/val_neg.c:788,1
    - Dst: rbtree_insert
      Src: /src/unbound/validator/val_neg.c:801,1
    - Dst: neg_lru_front
      Src: /src/unbound/validator/val_neg.c:818,1
    - Dst: neg_lru_touch
      Src: /src/unbound/validator/val_neg.c:821,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_neg.c:825,1
    - Dst: nsec3_get_params
      Src: /src/unbound/validator/val_neg.c:829,1
    - Dst: memcmp
      Src: /src/unbound/validator/val_neg.c:834,1
    - Dst: memdup
      Src: /src/unbound/validator/val_neg.c:841,1
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:843,1
    - Dst: free
      Src: /src/unbound/validator/val_neg.c:850,1
    - Dst: wipeout
      Src: /src/unbound/validator/val_neg.c:860,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 60
    argCount: 3
    argNames:
    - neg
    - zone
    - nsec
    argTypes:
    - struct val_neg_cache*
    - struct val_neg_zone*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 861
      start: 755
    functionDepth: 4
    functionLinenumber: 755
    functionLinenumberEnd: 861
    functionName: neg_insert_data
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - log_err
    - neg_lru_front
    - log_nametypeclass
    - neg_data_chain
    - neg_closest_data_parent
    - free
    - query_dname_compare
    - log_assert
    - wipeout
    - memcmp
    - neg_lru_touch
    - nsec3_get_params
    - rbtree_insert
    - memdup
    - dname_count_labels
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void neg_insert_data(struct val_neg_cache* neg, \n\tstruct val_neg_zone*
      zone, struct ub_packed_rrset_key* nsec)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/validator/val_neg.c:871,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_neg.c:872,1
    - Dst: val_find_rrset_signer
      Src: /src/unbound/validator/val_neg.c:877,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_neg.c:880,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - rep
    - signer_len
    - dclass
    argTypes:
    - struct reply_info*
    - size_t*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 864
    functionDepth: 1
    functionLinenumber: 864
    functionLinenumberEnd: 888
    functionName: reply_nsec_signer
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - val_find_rrset_signer
    - ntohs
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t * reply_nsec_signer(struct reply_info* rep, size_t* signer_len,\n\tuint16_t*
      dclass)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: reply_has_nsec
      Src: /src/unbound/validator/val_neg.c:899,1
    - Dst: reply_find_soa
      Src: /src/unbound/validator/val_neg.c:902,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_neg.c:905,1
    - Dst: reply_nsec_signer
      Src: /src/unbound/validator/val_neg.c:910,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/val_neg.c:914,1
    - Dst: calc_data_need
      Src: /src/unbound/validator/val_neg.c:918,1
    - Dst: calc_zone_need
      Src: /src/unbound/validator/val_neg.c:919,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_neg.c:920,1
    - Dst: neg_make_space
      Src: /src/unbound/validator/val_neg.c:921,1
    - Dst: neg_find_zone
      Src: /src/unbound/validator/val_neg.c:924,1
    - Dst: neg_create_zone
      Src: /src/unbound/validator/val_neg.c:926,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_neg.c:928,1
    - Dst: log_err
      Src: /src/unbound/validator/val_neg.c:929,1
    - Dst: val_neg_zone_take_inuse
      Src: /src/unbound/validator/val_neg.c:933,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_neg.c:937,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/val_neg.c:939,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_neg.c:941,1
    - Dst: nsec_nextowner_subdomain
      Src: /src/unbound/validator/val_neg.c:942,1
    - Dst: neg_insert_data
      Src: /src/unbound/validator/val_neg.c:946,1
    - Dst: neg_delete_zone
      Src: /src/unbound/validator/val_neg.c:950,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_neg.c:952,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 2
    argNames:
    - neg
    - rep
    argTypes:
    - struct val_neg_cache*
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 890
    functionDepth: 5
    functionLinenumber: 890
    functionLinenumberEnd: 953
    functionName: val_neg_addreply
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 1
    functionsReached:
    - log_err
    - dname_subdomain_c
    - log_nametypeclass
    - reply_find_soa
    - neg_find_zone
    - lock_basic_unlock
    - calc_data_need
    - neg_insert_data
    - calc_zone_need
    - nsec_nextowner_subdomain
    - neg_make_space
    - neg_delete_zone
    - lock_basic_lock
    - reply_has_nsec
    - val_neg_zone_take_inuse
    - reply_nsec_signer
    - neg_create_zone
    - ntohs
    linkageType: ''
    returnType: void
    signature: void val_neg_addreply(struct val_neg_cache* neg, struct reply_info*
      rep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_find_less_equal
      Src: /src/unbound/validator/val_neg.c:973,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 5
    argNames:
    - zone
    - qname
    - len
    - labs
    - data
    argTypes:
    - struct val_neg_zone*
    - uint8_t*
    - size_t
    - int
    - struct val_neg_data**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 964
    functionDepth: 1
    functionLinenumber: 964
    functionLinenumberEnd: 982
    functionName: neg_closest_data
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - rbtree_find_less_equal
    linkageType: ''
    returnType: int
    signature: "int neg_closest_data(struct val_neg_zone* zone,\n\tuint8_t* qname,
      size_t len, int labs, struct val_neg_data** data)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: reply_nsec_signer
      Src: /src/unbound/validator/val_neg.c:994,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/val_neg.c:997,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/val_neg.c:1002,1
    - Dst: calc_data_need
      Src: /src/unbound/validator/val_neg.c:1006,1
    - Dst: calc_zone_need
      Src: /src/unbound/validator/val_neg.c:1006,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_neg.c:1007,1
    - Dst: neg_make_space
      Src: /src/unbound/validator/val_neg.c:1008,1
    - Dst: neg_find_zone
      Src: /src/unbound/validator/val_neg.c:1011,1
    - Dst: neg_create_zone
      Src: /src/unbound/validator/val_neg.c:1013,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_neg.c:1015,1
    - Dst: log_err
      Src: /src/unbound/validator/val_neg.c:1016,1
    - Dst: val_neg_zone_take_inuse
      Src: /src/unbound/validator/val_neg.c:1020,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_neg.c:1024,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_neg.c:1025,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/val_neg.c:1027,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_neg.c:1029,1
    - Dst: nsec_nextowner_subdomain
      Src: /src/unbound/validator/val_neg.c:1030,1
    - Dst: neg_insert_data
      Src: /src/unbound/validator/val_neg.c:1034,1
    - Dst: neg_delete_zone
      Src: /src/unbound/validator/val_neg.c:1038,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_neg.c:1040,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 34
    argCount: 3
    argNames:
    - neg
    - rep
    - zone_name
    argTypes:
    - struct val_neg_cache*
    - struct reply_info*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 984
    functionDepth: 5
    functionLinenumber: 984
    functionLinenumberEnd: 1041
    functionName: val_neg_addreferral
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    - log_err
    - log_nametypeclass
    - lock_basic_unlock
    - neg_find_zone
    - neg_insert_data
    - calc_zone_need
    - nsec_nextowner_subdomain
    - neg_make_space
    - neg_delete_zone
    - lock_basic_lock
    - calc_data_need
    - val_neg_zone_take_inuse
    - reply_nsec_signer
    - neg_create_zone
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void val_neg_addreferral(struct val_neg_cache* neg, struct reply_info*
      rep,\n\tuint8_t* zone_name)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_neg.c:1057,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - k
    - t
    argTypes:
    - struct ub_packed_rrset_key*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1052
    functionDepth: 1
    functionLinenumber: 1052
    functionLinenumberEnd: 1060
    functionName: nsec3_no_type
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - nsec3_has_type
    linkageType: ''
    returnType: int
    signature: int nsec3_no_type(struct ub_packed_rrset_key* k, uint16_t t)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rrset_cache_lookup
      Src: /src/unbound/validator/val_neg.c:1084,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/validator/val_neg.c:1093,1
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_neg.c:1098,1
    - Dst: nsec3_no_type
      Src: /src/unbound/validator/val_neg.c:1099,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/validator/val_neg.c:1101,1
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/validator/val_neg.c:1105,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/validator/val_neg.c:1107,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 10
    argNames:
    - rrset_cache
    - qname
    - qname_len
    - qtype
    - qclass
    - flags
    - region
    - checkbit
    - checktype
    - now
    argTypes:
    - struct rrset_cache*
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - uint32_t
    - struct regional*
    - int
    - uint16_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1078
    functionDepth: 2
    functionLinenumber: 1078
    functionLinenumberEnd: 1109
    functionName: grab_nsec
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - nsec3_no_type
    - lock_rw_unlock
    - rrset_cache_lookup
    - nsec_has_type
    - packed_rrset_copy_region
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: "struct ub_packed_rrset_key *\ngrab_nsec(struct rrset_cache* rrset_cache,
      uint8_t* qname, size_t qname_len,\n\tuint16_t qtype, uint16_t qclass, uint32_t
      flags, \n\tstruct regional* region, int checkbit, uint16_t checktype, \n\ttime_t
      now)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/validator/val_neg.c:1136,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_neg.c:1137,1
    - Dst: neg_closest_zone_parent
      Src: /src/unbound/validator/val_neg.c:1138,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_neg.c:1143,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/val_neg.c:1146,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_neg.c:1148,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_neg.c:1154,1
    - Dst: neg_closest_data
      Src: /src/unbound/validator/val_neg.c:1159,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_neg.c:1161,1
    - Dst: rbtree_previous
      Src: /src/unbound/validator/val_neg.c:1168,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_neg.c:1170,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_neg.c:1176,1
    - Dst: grab_nsec
      Src: /src/unbound/validator/val_neg.c:1179,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_neg.c:1181,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 8
    argNames:
    - neg_cache
    - qname
    - qname_len
    - qclass
    - rrset_cache
    - now
    - region
    - topname
    argTypes:
    - struct val_neg_cache*
    - uint8_t*
    - size_t
    - uint16_t
    - struct rrset_cache*
    - time_t
    - struct regional*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1125
    functionDepth: 3
    functionLinenumber: 1125
    functionLinenumberEnd: 1183
    functionName: neg_find_nsec
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    - grab_nsec
    - lock_basic_unlock
    - neg_closest_zone_parent
    - neg_closest_data
    - query_dname_compare
    - lock_basic_lock
    - rbtree_previous
    - dname_count_labels
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: "struct ub_packed_rrset_key *\nneg_find_nsec(struct val_neg_cache*
      neg_cache, uint8_t* qname, size_t qname_len,\n\tuint16_t qclass, struct rrset_cache*
      rrset_cache, time_t now,\n\tstruct regional* region, uint8_t* topname)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dname_remove_label
      Src: /src/unbound/validator/val_neg.c:1199,1
    - Dst: nsec3_get_hashed
      Src: /src/unbound/validator/val_neg.c:1207,1
    - Dst: nsec3_hash_to_b32
      Src: /src/unbound/validator/val_neg.c:1211,1
    - Dst: neg_find_data
      Src: /src/unbound/validator/val_neg.c:1216,1
    - Dst: memmove
      Src: /src/unbound/validator/val_neg.c:1223,1
    - Dst: dname_remove_label
      Src: /src/unbound/validator/val_neg.c:1224,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 7
    argNames:
    - zone
    - qname
    - qname_len
    - qlabs
    - buf
    - hashnc
    - nclen
    argTypes:
    - struct val_neg_zone*
    - uint8_t*
    - size_t
    - int
    - sldns_buffer*
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1228
      start: 1186
    functionDepth: 2
    functionLinenumber: 1186
    functionLinenumberEnd: 1228
    functionName: neg_find_nsec3_ce
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - nsec3_hash_to_b32
    - neg_find_data
    - memmove
    - dname_remove_label
    - nsec3_get_hashed
    linkageType: ''
    returnType: struct val_neg_data
    signature: "struct val_neg_data *\nneg_find_nsec3_ce(struct val_neg_zone* zone,
      uint8_t* qname, size_t qname_len,\n\t\tint qlabs, sldns_buffer* buf, uint8_t*
      hashnc, size_t* nclen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nsec3_get_params
      Src: /src/unbound/validator/val_neg.c:1237,1
    - Dst: memcmp
      Src: /src/unbound/validator/val_neg.c:1242,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 4
    argCount: 2
    argNames:
    - zone
    - rrset
    argTypes:
    - struct val_neg_zone*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1231
    functionDepth: 1
    functionLinenumber: 1231
    functionLinenumberEnd: 1243
    functionName: neg_params_ok
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - nsec3_get_params
    - memcmp
    linkageType: ''
    returnType: int
    signature: int neg_params_ok(struct val_neg_zone* zone, struct ub_packed_rrset_key*
      rrset)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nsec3_hash_to_b32
      Src: /src/unbound/validator/val_neg.c:1255,1
    - Dst: neg_closest_data
      Src: /src/unbound/validator/val_neg.c:1258,1
    - Dst: rbtree_last
      Src: /src/unbound/validator/val_neg.c:1262,1
    - Dst: grab_nsec
      Src: /src/unbound/validator/val_neg.c:1269,1
    - Dst: neg_params_ok
      Src: /src/unbound/validator/val_neg.c:1273,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 8
    argNames:
    - zone
    - hashnc
    - nclen
    - rrset_cache
    - region
    - now
    - b32
    - maxb32
    argTypes:
    - struct val_neg_zone*
    - uint8_t*
    - size_t
    - struct rrset_cache*
    - struct regional*
    - time_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1276
      start: 1246
    functionDepth: 3
    functionLinenumber: 1246
    functionLinenumberEnd: 1276
    functionName: neg_nsec3_getnc
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - nsec3_hash_to_b32
    - grab_nsec
    - neg_closest_data
    - neg_params_ok
    - rbtree_last
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: "struct ub_packed_rrset_key *\nneg_nsec3_getnc(struct val_neg_zone*
      zone, uint8_t* hashnc, size_t nclen,\n\tstruct rrset_cache* rrset_cache, struct
      regional* region, \n\ttime_t now, uint8_t* b32, size_t maxb32)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: neg_find_nsec3_ce
      Src: /src/unbound/validator/val_neg.c:1309,1
    - Dst: grab_nsec
      Src: /src/unbound/validator/val_neg.c:1315,1
    - Dst: neg_params_ok
      Src: /src/unbound/validator/val_neg.c:1320,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_neg.c:1326,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_neg.c:1327,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_neg.c:1328,1
    - Dst: dns_msg_create
      Src: /src/unbound/validator/val_neg.c:1330,1
    - Dst: dns_msg_authadd
      Src: /src/unbound/validator/val_neg.c:1336,1
    - Dst: neg_nsec3_getnc
      Src: /src/unbound/validator/val_neg.c:1348,1
    - Dst: neg_params_ok
      Src: /src/unbound/validator/val_neg.c:1352,1
    - Dst: nsec3_has_optout
      Src: /src/unbound/validator/val_neg.c:1354,1
    - Dst: nsec3_covers
      Src: /src/unbound/validator/val_neg.c:1360,1
    - Dst: dns_msg_create
      Src: /src/unbound/validator/val_neg.c:1366,1
    - Dst: dns_msg_authadd
      Src: /src/unbound/validator/val_neg.c:1372,1
    - Dst: dns_msg_authadd
      Src: /src/unbound/validator/val_neg.c:1374,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 47
    argCount: 9
    argNames:
    - zone
    - qname
    - qname_len
    - qlabs
    - buf
    - rrset_cache
    - region
    - now
    - topname
    argTypes:
    - struct val_neg_zone*
    - uint8_t*
    - size_t
    - int
    - sldns_buffer*
    - struct rrset_cache*
    - struct regional*
    - time_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1379
      start: 1279
    functionDepth: 4
    functionLinenumber: 1279
    functionLinenumberEnd: 1379
    functionName: neg_nsec3_proof_ds
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - grab_nsec
    - neg_nsec3_getnc
    - dns_msg_authadd
    - neg_params_ok
    - nsec3_has_type
    - dns_msg_create
    - nsec3_has_optout
    - nsec3_covers
    - neg_find_nsec3_ce
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg *\nneg_nsec3_proof_ds(struct val_neg_zone* zone, uint8_t*
      qname, size_t qname_len,\n\t\tint qlabs, sldns_buffer* buf, struct rrset_cache*
      rrset_cache,\n\t\tstruct regional* region, time_t now, uint8_t* topname)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: reply_nsec_signer
      Src: /src/unbound/validator/val_neg.c:1403,1
    - Dst: rrset_cache_lookup
      Src: /src/unbound/validator/val_neg.c:1407,1
    - Dst: dns_msg_authadd
      Src: /src/unbound/validator/val_neg.c:1411,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/validator/val_neg.c:1412,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/validator/val_neg.c:1415,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 5
    argNames:
    - rrset_cache
    - now
    - region
    - msg
    - zone
    argTypes:
    - struct rrset_cache*
    - time_t
    - struct regional*
    - struct dns_msg*
    - struct val_neg_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1417
      start: 1390
    functionDepth: 2
    functionLinenumber: 1390
    functionLinenumberEnd: 1417
    functionName: add_soa
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - rrset_cache_lookup
    - lock_rw_unlock
    - reply_nsec_signer
    - dns_msg_authadd
    linkageType: ''
    returnType: int
    signature: "int add_soa(struct rrset_cache* rrset_cache, time_t now,\n\tstruct
      regional* region, struct dns_msg* msg, struct val_neg_zone* zone)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_neg.c:1444,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/val_neg.c:1444,1
    - Dst: neg_find_nsec
      Src: /src/unbound/validator/val_neg.c:1447,1
    - Dst: nsec_proves_nodata
      Src: /src/unbound/validator/val_neg.c:1452,1
    - Dst: dns_msg_create
      Src: /src/unbound/validator/val_neg.c:1458,1
    - Dst: dns_msg_authadd
      Src: /src/unbound/validator/val_neg.c:1463,1
    - Dst: add_soa
      Src: /src/unbound/validator/val_neg.c:1465,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_neg.c:1468,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_neg.c:1470,1
    - Dst: val_nsec_proves_name_error
      Src: /src/unbound/validator/val_neg.c:1472,1
    - Dst: dns_msg_create
      Src: /src/unbound/validator/val_neg.c:1473,1
    - Dst: nsec_closest_encloser
      Src: /src/unbound/validator/val_neg.c:1478,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/validator/val_neg.c:1480,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_neg.c:1484,1
    - Dst: memmove
      Src: /src/unbound/validator/val_neg.c:1493,1
    - Dst: rrset_cache_lookup
      Src: /src/unbound/validator/val_neg.c:1499,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/validator/val_neg.c:1507,1
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/validator/val_neg.c:1510,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/validator/val_neg.c:1512,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/validator/val_neg.c:1515,1
    - Dst: dns_msg_ansadd
      Src: /src/unbound/validator/val_neg.c:1518,1
    - Dst: neg_find_nsec
      Src: /src/unbound/validator/val_neg.c:1526,1
    - Dst: val_nsec_proves_name_error
      Src: /src/unbound/validator/val_neg.c:1532,1
    - Dst: nsec_proves_nodata
      Src: /src/unbound/validator/val_neg.c:1534,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_neg.c:1541,1
    - Dst: dns_msg_authadd
      Src: /src/unbound/validator/val_neg.c:1543,1
    - Dst: dns_msg_authadd
      Src: /src/unbound/validator/val_neg.c:1548,1
    - Dst: add_soa
      Src: /src/unbound/validator/val_neg.c:1550,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_neg.c:1554,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_neg.c:1559,1
    - Dst: FLAGS_SET_RCODE
      Src: /src/unbound/validator/val_neg.c:1561,1
    - Dst: dname_remove_label
      Src: /src/unbound/validator/val_neg.c:1573,1
    - Dst: dname_count_labels
      Src: /src/unbound/validator/val_neg.c:1574,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_neg.c:1577,1
    - Dst: neg_closest_zone_parent
      Src: /src/unbound/validator/val_neg.c:1578,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/val_neg.c:1585,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_neg.c:1589,1
    - Dst: neg_nsec3_proof_ds
      Src: /src/unbound/validator/val_neg.c:1593,1
    - Dst: add_soa
      Src: /src/unbound/validator/val_neg.c:1595,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_neg.c:1596,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_neg.c:1599,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 103
    argCount: 9
    argNames:
    - neg
    - qinfo
    - region
    - rrset_cache
    - buf
    - now
    - addsoa
    - topname
    - cfg
    argTypes:
    - struct val_neg_cache*
    - struct query_info*
    - struct regional*
    - struct rrset_cache*
    - sldns_buffer*
    - time_t
    - int
    - uint8_t*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1601
      start: 1419
    functionDepth: 5
    functionLinenumber: 1419
    functionLinenumberEnd: 1601
    functionName: val_neg_getmsg
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 0
    functionsReached:
    - neg_closest_zone_parent
    - dname_remove_label
    - dns_msg_ansadd
    - lock_basic_lock
    - nsec_closest_encloser
    - dname_subdomain_c
    - rrset_cache_lookup
    - nsec_proves_nodata
    - dns_msg_create
    - neg_nsec3_proof_ds
    - FLAGS_SET_RCODE
    - add_soa
    - val_nsec_proves_name_error
    - neg_find_nsec
    - lock_rw_unlock
    - query_dname_compare
    - log_assert
    - memmove
    - lock_basic_unlock
    - dname_count_size_labels
    - dns_msg_authadd
    - packed_rrset_copy_region
    - dname_count_labels
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg * \nval_neg_getmsg(struct val_neg_cache* neg, struct
      query_info* qinfo, \n\tstruct regional* region, struct rrset_cache* rrset_cache,
      \n\tsldns_buffer* buf, time_t now, int addsoa, uint8_t* topname,\n\tstruct config_file*
      cfg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_neg.c:1606,1
    - Dst: neg_make_space
      Src: /src/unbound/validator/val_neg.c:1608,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_neg.c:1609,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - neg
    - max
    argTypes:
    - struct val_neg_cache*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1610
      start: 1603
    functionDepth: 4
    functionLinenumber: 1603
    functionLinenumberEnd: 1610
    functionName: val_neg_adjust_size
    functionSourceFile: /src/unbound/validator/val_neg.c
    functionUses: 1
    functionsReached:
    - lock_basic_unlock
    - neg_make_space
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: void val_neg_adjust_size(struct val_neg_cache* neg, size_t max)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rrset
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 94
    functionName: rrset_get_count
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t rrset_get_count(struct ub_packed_rrset_key* rrset)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - k
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 99
    functionDepth: 0
    functionLinenumber: 99
    functionLinenumberEnd: 104
    functionName: rrset_get_sigcount
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t rrset_get_sigcount(struct ub_packed_rrset_key* k)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_sigcrypt.c:117,1
    - Dst: memmove
      Src: /src/unbound/validator/val_sigcrypt.c:120,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_sigcrypt.c:121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - k
    - sig_idx
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 122
    functionName: rrset_get_sig_keytag
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - ntohs
    - log_assert
    - memmove
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t rrset_get_sig_keytag(struct ub_packed_rrset_key* k, size_t
      sig_idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_sigcrypt.c:134,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - k
    - sig_idx
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 138
    functionName: rrset_get_sig_algo
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int rrset_get_sig_algo(struct ub_packed_rrset_key* k, size_t sig_idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_sigcrypt.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - k
    - idx
    - rdata
    - len
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 149
    functionName: rrset_get_rdata
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void rrset_get_rdata(struct ub_packed_rrset_key* k, size_t idx, uint8_t**
      rdata,\n\tsize_t* len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_rdata
      Src: /src/unbound/validator/val_sigcrypt.c:157,1
    - Dst: memmove
      Src: /src/unbound/validator/val_sigcrypt.c:160,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_sigcrypt.c:161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - k
    - idx
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 151
    functionDepth: 2
    functionLinenumber: 151
    functionLinenumberEnd: 163
    functionName: dnskey_get_flags
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - ntohs
    - rrset_get_rdata
    - memmove
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnskey_get_flags(struct ub_packed_rrset_key* k, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_rdata
      Src: /src/unbound/validator/val_sigcrypt.c:176,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - k
    - idx
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 171
    functionDepth: 2
    functionLinenumber: 171
    functionLinenumberEnd: 180
    functionName: dnskey_get_protocol
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - rrset_get_rdata
    linkageType: ''
    returnType: int
    signature: int dnskey_get_protocol(struct ub_packed_rrset_key* k, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_rdata
      Src: /src/unbound/validator/val_sigcrypt.c:187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - k
    - idx
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 191
    functionName: dnskey_get_algo
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 1
    functionsReached:
    - rrset_get_rdata
    linkageType: ''
    returnType: int
    signature: int dnskey_get_algo(struct ub_packed_rrset_key* k, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_rdata
      Src: /src/unbound/validator/val_sigcrypt.c:200,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - k
    - idx
    - pk
    - pklen
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    - unsigned char**
    - unsigned int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 194
    functionDepth: 2
    functionLinenumber: 194
    functionLinenumberEnd: 208
    functionName: dnskey_get_pubkey
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - rrset_get_rdata
    linkageType: ''
    returnType: void
    signature: "void dnskey_get_pubkey(struct ub_packed_rrset_key* k, size_t idx,\n\tunsigned
      char** pk, unsigned int* pklen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_rdata
      Src: /src/unbound/validator/val_sigcrypt.c:215,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - k
    - idx
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 210
    functionDepth: 2
    functionLinenumber: 210
    functionLinenumberEnd: 219
    functionName: ds_get_key_algo
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 1
    functionsReached:
    - rrset_get_rdata
    linkageType: ''
    returnType: int
    signature: int ds_get_key_algo(struct ub_packed_rrset_key* k, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_rdata
      Src: /src/unbound/validator/val_sigcrypt.c:226,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - k
    - idx
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 221
    functionDepth: 2
    functionLinenumber: 221
    functionLinenumberEnd: 230
    functionName: ds_get_digest_algo
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 1
    functionsReached:
    - rrset_get_rdata
    linkageType: ''
    returnType: int
    signature: int ds_get_digest_algo(struct ub_packed_rrset_key* k, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_rdata
      Src: /src/unbound/validator/val_sigcrypt.c:238,1
    - Dst: memmove
      Src: /src/unbound/validator/val_sigcrypt.c:241,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_sigcrypt.c:242,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - ds_rrset
    - ds_idx
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 243
    functionName: ds_get_keytag
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 2
    functionsReached:
    - ntohs
    - rrset_get_rdata
    - memmove
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t ds_get_keytag(struct ub_packed_rrset_key* ds_rrset, size_t
      ds_idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_rdata
      Src: /src/unbound/validator/val_sigcrypt.c:260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - k
    - idx
    - digest
    - len
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 268
    functionName: ds_get_sigdata
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - rrset_get_rdata
    linkageType: ''
    returnType: void
    signature: "void ds_get_sigdata(struct ub_packed_rrset_key* k, size_t idx, uint8_t**
      digest,\n        size_t* len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ds_digest_size_supported
      Src: /src/unbound/validator/val_sigcrypt.c:279,1
    - Dst: ds_get_digest_algo
      Src: /src/unbound/validator/val_sigcrypt.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - k
    - idx
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 276
    functionDepth: 3
    functionLinenumber: 276
    functionLinenumberEnd: 280
    functionName: ds_digest_size_algo
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - ds_digest_size_supported
    - ds_get_digest_algo
    linkageType: ''
    returnType: size_t
    signature: size_t ds_digest_size_algo(struct ub_packed_rrset_key* k, size_t idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_rdata
      Src: /src/unbound/validator/val_sigcrypt.c:302,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/validator/val_sigcrypt.c:307,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:308,1
    - Dst: query_dname_tolower
      Src: /src/unbound/validator/val_sigcrypt.c:310,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_sigcrypt.c:310,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:311,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/validator/val_sigcrypt.c:312,1
    - Dst: secalgo_ds_digest
      Src: /src/unbound/validator/val_sigcrypt.c:314,1
    - Dst: ds_get_digest_algo
      Src: /src/unbound/validator/val_sigcrypt.c:314,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_sigcrypt.c:315,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/validator/val_sigcrypt.c:315,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 6
    argNames:
    - env
    - dnskey_rrset
    - dnskey_idx
    - ds_rrset
    - ds_idx
    - digest
    argTypes:
    - struct module_env*
    - struct ub_packed_rrset_key*
    - size_t
    - struct ub_packed_rrset_key*
    - size_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 293
    functionDepth: 5
    functionLinenumber: 293
    functionLinenumberEnd: 317
    functionName: ds_create_dnskey_digest
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - secalgo_ds_digest
    - sldns_buffer_write
    - rrset_get_rdata
    - sldns_buffer_flip
    - sldns_buffer_clear
    - sldns_buffer_limit
    - ds_get_digest_algo
    - sldns_buffer_begin
    - query_dname_tolower
    linkageType: ''
    returnType: int
    signature: "int ds_create_dnskey_digest(struct module_env* env, \n\tstruct ub_packed_rrset_key*
      dnskey_rrset, size_t dnskey_idx,\n\tstruct ub_packed_rrset_key* ds_rrset, size_t
      ds_idx,\n\tuint8_t* digest)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ds_digest_size_algo
      Src: /src/unbound/validator/val_sigcrypt.c:326,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:329,1
    - Dst: ds_get_digest_algo
      Src: /src/unbound/validator/val_sigcrypt.c:334,1
    - Dst: ds_get_sigdata
      Src: /src/unbound/validator/val_sigcrypt.c:339,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:341,1
    - Dst: regional_alloc
      Src: /src/unbound/validator/val_sigcrypt.c:346,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:348,1
    - Dst: ds_create_dnskey_digest
      Src: /src/unbound/validator/val_sigcrypt.c:351,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:353,1
    - Dst: memcmp
      Src: /src/unbound/validator/val_sigcrypt.c:356,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:357,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 5
    argNames:
    - env
    - dnskey_rrset
    - dnskey_idx
    - ds_rrset
    - ds_idx
    argTypes:
    - struct module_env*
    - struct ub_packed_rrset_key*
    - size_t
    - struct ub_packed_rrset_key*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 319
    functionDepth: 6
    functionLinenumber: 319
    functionLinenumberEnd: 361
    functionName: ds_digest_match_dnskey
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 1
    functionsReached:
    - verbose
    - regional_alloc
    - ds_digest_size_algo
    - ds_get_sigdata
    - ds_get_digest_algo
    - memcmp
    - ds_create_dnskey_digest
    linkageType: ''
    returnType: int
    signature: "int ds_digest_match_dnskey(struct module_env* env,\n\tstruct ub_packed_rrset_key*
      dnskey_rrset, size_t dnskey_idx,\n\tstruct ub_packed_rrset_key* ds_rrset, size_t
      ds_idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ds_digest_size_algo
      Src: /src/unbound/validator/val_sigcrypt.c:367,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ds_rrset
    - ds_idx
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 363
    functionDepth: 4
    functionLinenumber: 363
    functionLinenumberEnd: 368
    functionName: ds_digest_algo_is_supported
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 2
    functionsReached:
    - ds_digest_size_algo
    linkageType: ''
    returnType: int
    signature: "int ds_digest_algo_is_supported(struct ub_packed_rrset_key* ds_rrset,
      \n\tsize_t ds_idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnskey_algo_id_is_supported
      Src: /src/unbound/validator/val_sigcrypt.c:374,1
    - Dst: ds_get_key_algo
      Src: /src/unbound/validator/val_sigcrypt.c:374,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ds_rrset
    - ds_idx
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 370
    functionDepth: 3
    functionLinenumber: 370
    functionLinenumberEnd: 375
    functionName: ds_key_algo_is_supported
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 2
    functionsReached:
    - dnskey_algo_id_is_supported
    - ds_get_key_algo
    linkageType: ''
    returnType: int
    signature: "int ds_key_algo_is_supported(struct ub_packed_rrset_key* ds_rrset,
      \n\tsize_t ds_idx)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_rdata
      Src: /src/unbound/validator/val_sigcrypt.c:382,1
    - Dst: sldns_calc_keytag_raw
      Src: /src/unbound/validator/val_sigcrypt.c:384,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - dnskey_rrset
    - dnskey_idx
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 377
    functionDepth: 2
    functionLinenumber: 377
    functionLinenumberEnd: 385
    functionName: dnskey_calc_keytag
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 3
    functionsReached:
    - sldns_calc_keytag_raw
    - rrset_get_rdata
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t dnskey_calc_keytag(struct ub_packed_rrset_key* dnskey_rrset,
      size_t dnskey_idx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dnskey_algo_id_is_supported
      Src: /src/unbound/validator/val_sigcrypt.c:390,1
    - Dst: dnskey_get_algo
      Src: /src/unbound/validator/val_sigcrypt.c:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - dnskey_rrset
    - dnskey_idx
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 387
    functionDepth: 3
    functionLinenumber: 387
    functionLinenumberEnd: 392
    functionName: dnskey_algo_is_supported
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 2
    functionsReached:
    - dnskey_algo_id_is_supported
    - dnskey_get_algo
    linkageType: ''
    returnType: int
    signature: "int dnskey_algo_is_supported(struct ub_packed_rrset_key* dnskey_rrset,\n
      \       size_t dnskey_idx)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dnskey_get_algo
      Src: /src/unbound/validator/val_sigcrypt.c:400,1
    - Dst: rrset_get_rdata
      Src: /src/unbound/validator/val_sigcrypt.c:403,1
    - Dst: sldns_rr_dnskey_key_size_raw
      Src: /src/unbound/validator/val_sigcrypt.c:406,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - dnskey_rrset
    - dnskey_idx
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 394
    functionDepth: 3
    functionLinenumber: 394
    functionLinenumberEnd: 425
    functionName: dnskey_size_is_supported
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 3
    functionsReached:
    - sldns_rr_dnskey_key_size_raw
    - rrset_get_rdata
    - dnskey_get_algo
    linkageType: ''
    returnType: int
    signature: "int dnskey_size_is_supported(struct ub_packed_rrset_key* dnskey_rrset,\n\tsize_t
      dnskey_idx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_count
      Src: /src/unbound/validator/val_sigcrypt.c:429,1
    - Dst: dnskey_size_is_supported
      Src: /src/unbound/validator/val_sigcrypt.c:431,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - dnskey_rrset
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 427
    functionDepth: 4
    functionLinenumber: 427
    functionLinenumberEnd: 435
    functionName: dnskeyset_size_is_supported
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - dnskey_size_is_supported
    - rrset_get_count
    linkageType: ''
    returnType: int
    signature: int dnskeyset_size_is_supported(struct ub_packed_rrset_key* dnskey_rrset)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_count
      Src: /src/unbound/validator/val_sigcrypt.c:442,1
    - Dst: dnskey_get_algo
      Src: /src/unbound/validator/val_sigcrypt.c:445,1
    - Dst: dnskey_algo_id_is_supported
      Src: /src/unbound/validator/val_sigcrypt.c:446,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - n
    - dnskey
    - sigalg
    argTypes:
    - struct algo_needs*
    - struct ub_packed_rrset_key*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 437
    functionDepth: 3
    functionLinenumber: 437
    functionLinenumberEnd: 456
    functionName: algo_needs_init_dnskey_add
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - dnskey_algo_id_is_supported
    - dnskey_get_algo
    - rrset_get_count
    linkageType: ''
    returnType: void
    signature: "void algo_needs_init_dnskey_add(struct algo_needs* n,\n        struct
      ub_packed_rrset_key* dnskey, uint8_t* sigalg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/validator/val_sigcrypt.c:463,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_sigcrypt.c:465,1
    - Dst: dnskey_algo_id_is_supported
      Src: /src/unbound/validator/val_sigcrypt.c:465,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_sigcrypt.c:466,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - n
    - sigalg
    argTypes:
    - struct algo_needs*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 458
    functionDepth: 2
    functionLinenumber: 458
    functionLinenumberEnd: 471
    functionName: algo_needs_init_list
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - dnskey_algo_id_is_supported
    - memset
    - log_assert
    linkageType: ''
    returnType: void
    signature: void algo_needs_init_list(struct algo_needs* n, uint8_t* sigalg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_count
      Src: /src/unbound/validator/val_sigcrypt.c:478,1
    - Dst: memset
      Src: /src/unbound/validator/val_sigcrypt.c:480,1
    - Dst: ds_get_digest_algo
      Src: /src/unbound/validator/val_sigcrypt.c:482,1
    - Dst: ds_get_key_algo
      Src: /src/unbound/validator/val_sigcrypt.c:484,1
    - Dst: dnskey_algo_id_is_supported
      Src: /src/unbound/validator/val_sigcrypt.c:485,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_sigcrypt.c:487,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 4
    argNames:
    - n
    - ds
    - fav_ds_algo
    - sigalg
    argTypes:
    - struct algo_needs*
    - struct ub_packed_rrset_key*
    - int
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 473
    functionDepth: 3
    functionLinenumber: 473
    functionLinenumberEnd: 496
    functionName: algo_needs_init_ds
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - ds_get_key_algo
    - rrset_get_count
    - dnskey_algo_id_is_supported
    - log_assert
    - ds_get_digest_algo
    - memset
    linkageType: ''
    returnType: void
    signature: "void algo_needs_init_ds(struct algo_needs* n, struct ub_packed_rrset_key*
      ds,\n\tint fav_ds_algo, uint8_t* sigalg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - n
    - algo
    argTypes:
    - struct algo_needs*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 507
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 507
    functionName: algo_needs_set_secure
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int algo_needs_set_secure(struct algo_needs* n, uint8_t algo)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 2
    argNames:
    - n
    - algo
    argTypes:
    - struct algo_needs*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 509
    functionDepth: 0
    functionLinenumber: 509
    functionLinenumberEnd: 512
    functionName: algo_needs_set_bogus
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void algo_needs_set_bogus(struct algo_needs* n, uint8_t algo)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - n
    argTypes:
    - struct algo_needs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 517
    functionName: algo_needs_num_missing
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t algo_needs_num_missing(struct algo_needs* n)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - n
    argTypes:
    - struct algo_needs*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 519
    functionDepth: 0
    functionLinenumber: 519
    functionLinenumberEnd: 533
    functionName: algo_needs_missing
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int algo_needs_missing(struct algo_needs* n)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_sig_keytag
      Src: /src/unbound/validator/val_sigcrypt.c:566,1
    - Dst: rrset_get_sig_algo
      Src: /src/unbound/validator/val_sigcrypt.c:567,1
    - Dst: rrset_get_count
      Src: /src/unbound/validator/val_sigcrypt.c:568,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:572,1
    - Dst: dnskey_algo_id_is_supported
      Src: /src/unbound/validator/val_sigcrypt.c:573,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:576,1
    - Dst: dnskey_get_algo
      Src: /src/unbound/validator/val_sigcrypt.c:582,1
    - Dst: dnskey_calc_keytag
      Src: /src/unbound/validator/val_sigcrypt.c:583,1
    - Dst: dnskey_verify_rrset_sig
      Src: /src/unbound/validator/val_sigcrypt.c:589,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:601,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:609,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:616,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 12
    argNames:
    - env
    - ve
    - now
    - rrset
    - dnskey
    - sig_idx
    - sortree
    - reason
    - reason_bogus
    - section
    - qstate
    - numverified
    argTypes:
    - struct module_env*
    - struct val_env*
    - time_t
    - struct ub_packed_rrset_key*
    - struct ub_packed_rrset_key*
    - size_t
    - struct rbtree_type**
    - char**
    - sldns_ede_code*
    - sldns_pkt_section
    - struct module_qstate*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 555
    functionDepth: 3
    functionLinenumber: 555
    functionLinenumberEnd: 621
    functionName: dnskeyset_verify_rrset_sig
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - verbose
    - rrset_get_sig_keytag
    - dnskey_get_algo
    - rrset_get_count
    - dnskey_algo_id_is_supported
    - dnskey_calc_keytag
    - dnskey_verify_rrset_sig
    - rrset_get_sig_algo
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status dnskeyset_verify_rrset_sig(struct module_env* env,
      struct val_env* ve,\n\ttime_t now, struct ub_packed_rrset_key* rrset,\n\tstruct
      ub_packed_rrset_key* dnskey, size_t sig_idx,\n\tstruct rbtree_type** sortree,\n\tchar**
      reason, sldns_ede_code *reason_bogus,\n\tsldns_pkt_section section, struct module_qstate*
      qstate,\n\tint* numverified)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_sigcount
      Src: /src/unbound/validator/val_sigcrypt.c:638,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:640,1
    - Dst: algo_needs_init_list
      Src: /src/unbound/validator/val_sigcrypt.c:649,1
    - Dst: algo_needs_num_missing
      Src: /src/unbound/validator/val_sigcrypt.c:650,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:651,1
    - Dst: dnskeyset_verify_rrset_sig
      Src: /src/unbound/validator/val_sigcrypt.c:659,1
    - Dst: algo_needs_set_secure
      Src: /src/unbound/validator/val_sigcrypt.c:666,1
    - Dst: rrset_get_sig_algo
      Src: /src/unbound/validator/val_sigcrypt.c:667,1
    - Dst: algo_needs_set_bogus
      Src: /src/unbound/validator/val_sigcrypt.c:670,1
    - Dst: rrset_get_sig_algo
      Src: /src/unbound/validator/val_sigcrypt.c:671,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:674,1
    - Dst: algo_needs_missing
      Src: /src/unbound/validator/val_sigcrypt.c:681,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:682,1
    - Dst: algo_needs_num_missing
      Src: /src/unbound/validator/val_sigcrypt.c:684,1
    - Dst: algo_needs_reason
      Src: /src/unbound/validator/val_sigcrypt.c:685,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:688,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 12
    argNames:
    - env
    - ve
    - rrset
    - dnskey
    - sigalg
    - reason
    - reason_bogus
    - section
    - qstate
    - verified
    - reasonbuf
    - reasonlen
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key*
    - struct ub_packed_rrset_key*
    - uint8_t*
    - char**
    - sldns_ede_code*
    - sldns_pkt_section
    - struct module_qstate*
    - int*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 623
    functionDepth: 4
    functionLinenumber: 623
    functionLinenumberEnd: 692
    functionName: dnskeyset_verify_rrset
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - algo_needs_init_list
    - algo_needs_set_secure
    - verbose
    - algo_needs_reason
    - dnskeyset_verify_rrset_sig
    - algo_needs_set_bogus
    - algo_needs_missing
    - algo_needs_num_missing
    - rrset_get_sigcount
    - rrset_get_sig_algo
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status dnskeyset_verify_rrset(struct module_env* env, struct
      val_env* ve,\n\tstruct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key*
      dnskey,\n\tuint8_t* sigalg, char** reason, sldns_ede_code *reason_bogus,\n\tsldns_pkt_section
      section, struct module_qstate* qstate, int* verified,\n\tchar* reasonbuf, size_t
      reasonlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/validator/val_sigcrypt.c:697,1
    - Dst: snprintf
      Src: /src/unbound/validator/val_sigcrypt.c:699,1
    - Dst: snprintf
      Src: /src/unbound/validator/val_sigcrypt.c:701,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 5
    argNames:
    - alg
    - reason
    - s
    - reasonbuf
    - reasonlen
    argTypes:
    - int
    - char**
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 704
      start: 694
    functionDepth: 1
    functionLinenumber: 694
    functionLinenumberEnd: 704
    functionName: algo_needs_reason
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 1
    functionsReached:
    - snprintf
    - sldns_lookup_by_id
    linkageType: ''
    returnType: void
    signature: "void algo_needs_reason(int alg, char** reason, char* s, char* reasonbuf,\n\tsize_t
      reasonlen)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: dnskey_calc_keytag
      Src: /src/unbound/validator/val_sigcrypt.c:716,1
    - Dst: dnskey_get_algo
      Src: /src/unbound/validator/val_sigcrypt.c:717,1
    - Dst: rrset_get_sigcount
      Src: /src/unbound/validator/val_sigcrypt.c:720,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:722,1
    - Dst: rrset_get_sig_algo
      Src: /src/unbound/validator/val_sigcrypt.c:731,1
    - Dst: rrset_get_sig_keytag
      Src: /src/unbound/validator/val_sigcrypt.c:732,1
    - Dst: dnskey_verify_rrset_sig
      Src: /src/unbound/validator/val_sigcrypt.c:735,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:746,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:758,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:765,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 9
    argNames:
    - env
    - ve
    - rrset
    - dnskey
    - dnskey_idx
    - reason
    - reason_bogus
    - section
    - qstate
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key*
    - struct ub_packed_rrset_key*
    - size_t
    - char**
    - sldns_ede_code*
    - sldns_pkt_section
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 706
    functionDepth: 3
    functionLinenumber: 706
    functionLinenumberEnd: 767
    functionName: dnskey_verify_rrset
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 1
    functionsReached:
    - verbose
    - rrset_get_sig_keytag
    - dnskey_get_algo
    - dnskey_calc_keytag
    - dnskey_verify_rrset_sig
    - rrset_get_sigcount
    - rrset_get_sig_algo
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status dnskey_verify_rrset(struct module_env* env, struct
      val_env* ve,\n        struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key*
      dnskey,\n\tsize_t dnskey_idx, char** reason, sldns_ede_code *reason_bogus,\n\tsldns_pkt_section
      section, struct module_qstate* qstate)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: tolower
      Src: /src/unbound/validator/val_sigcrypt.c:817,1
    - Dst: tolower
      Src: /src/unbound/validator/val_sigcrypt.c:818,1
    - Dst: tolower
      Src: /src/unbound/validator/val_sigcrypt.c:820,1
    - Dst: tolower
      Src: /src/unbound/validator/val_sigcrypt.c:821,1
    - Dst: get_rdf_size
      Src: /src/unbound/validator/val_sigcrypt.c:866,1
    - Dst: get_rdf_size
      Src: /src/unbound/validator/val_sigcrypt.c:896,1
    - Dst: memcmp
      Src: /src/unbound/validator/val_sigcrypt.c:913,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 79
    argCount: 4
    argNames:
    - d
    - desc
    - i
    - j
    argTypes:
    - struct packed_rrset_data*
    - sldns_rr_descriptor*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 789
    functionDepth: 1
    functionLinenumber: 789
    functionLinenumberEnd: 920
    functionName: canonical_compare_byfield
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - memcmp
    - get_rdf_size
    - tolower
    linkageType: ''
    returnType: int
    signature: "int canonical_compare_byfield(struct packed_rrset_data* d, \n\tconst
      sldns_rr_descriptor* desc, size_t i, size_t j)"
  - BBCount: 32
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/validator/val_sigcrypt.c:936,1
    - Dst: dname_valid
      Src: /src/unbound/validator/val_sigcrypt.c:957,1
    - Dst: dname_valid
      Src: /src/unbound/validator/val_sigcrypt.c:958,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_sigcrypt.c:960,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/validator/val_sigcrypt.c:983,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_sigcrypt.c:984,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_sigcrypt.c:986,1
    - Dst: canonical_compare_byfield
      Src: /src/unbound/validator/val_sigcrypt.c:987,1
    - Dst: memcmp
      Src: /src/unbound/validator/val_sigcrypt.c:998,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 49
    argCount: 3
    argNames:
    - rrset
    - i
    - j
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1010
      start: 930
    functionDepth: 2
    functionLinenumber: 930
    functionLinenumberEnd: 1010
    functionName: canonical_compare
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - sldns_rr_descript
    - query_dname_compare
    - log_assert
    - dname_valid
    - memcmp
    - canonical_compare_byfield
    - ntohs
    linkageType: ''
    returnType: int
    signature: int canonical_compare(struct ub_packed_rrset_key* rrset, size_t i,
      size_t j)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_sigcrypt.c:1017,1
    - Dst: canonical_compare
      Src: /src/unbound/validator/val_sigcrypt.c:1018,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - k1
    - k2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1019
      start: 1012
    functionDepth: 3
    functionLinenumber: 1012
    functionLinenumberEnd: 1019
    functionName: canonical_tree_compare
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - log_assert
    - canonical_compare
    linkageType: ''
    returnType: int
    signature: int canonical_tree_compare(const void* k1, const void* k2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_insert
      Src: /src/unbound/validator/val_sigcrypt.c:1040,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - rrset
    - d
    - sortree
    - rrs
    argTypes:
    - struct ub_packed_rrset_key*
    - struct packed_rrset_data*
    - rbtree_type*
    - struct canon_rr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1030
    functionDepth: 1
    functionLinenumber: 1030
    functionLinenumberEnd: 1044
    functionName: canonical_sort
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - rbtree_insert
    linkageType: ''
    returnType: void
    signature: "void canonical_sort(struct ub_packed_rrset_key* rrset, struct packed_rrset_data*
      d,\n\trbtree_type* sortree, struct canon_rr* rrs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_signame_label_count
      Src: /src/unbound/validator/val_sigcrypt.c:1060,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/validator/val_sigcrypt.c:1061,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1064,1
    - Dst: query_dname_tolower
      Src: /src/unbound/validator/val_sigcrypt.c:1065,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_sigcrypt.c:1069,1
    - Dst: dname_remove_label
      Src: /src/unbound/validator/val_sigcrypt.c:1077,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1080,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1081,1
    - Dst: query_dname_tolower
      Src: /src/unbound/validator/val_sigcrypt.c:1082,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 5
    argNames:
    - buf
    - k
    - sig
    - can_owner
    - can_owner_len
    argTypes:
    - sldns_buffer*
    - struct ub_packed_rrset_key*
    - uint8_t*
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1084
      start: 1055
    functionDepth: 5
    functionLinenumber: 1055
    functionLinenumberEnd: 1084
    functionName: insert_can_owner
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_write
    - dname_remove_label
    - log_assert
    - query_dname_tolower
    - dname_signame_label_count
    - sldns_buffer_current
    linkageType: ''
    returnType: void
    signature: "void insert_can_owner(sldns_buffer* buf, struct ub_packed_rrset_key*
      k,\n\tuint8_t* sig, uint8_t** can_owner, size_t* can_owner_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tolower
      Src: /src/unbound/validator/val_sigcrypt.c:1094,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - d
    - end
    argTypes:
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1087
    functionDepth: 0
    functionLinenumber: 1087
    functionLinenumberEnd: 1096
    functionName: canon_dname_tolower
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - tolower
    linkageType: ''
    returnType: void
    signature: void canon_dname_tolower(uint8_t* d, uint8_t* end)
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_current
      Src: /src/unbound/validator/val_sigcrypt.c:1108,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/validator/val_sigcrypt.c:1109,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_sigcrypt.c:1111,1
    - Dst: canon_dname_tolower
      Src: /src/unbound/validator/val_sigcrypt.c:1123,1
    - Dst: canon_dname_tolower
      Src: /src/unbound/validator/val_sigcrypt.c:1129,1
    - Dst: dname_valid
      Src: /src/unbound/validator/val_sigcrypt.c:1130,1
    - Dst: canon_dname_tolower
      Src: /src/unbound/validator/val_sigcrypt.c:1132,1
    - Dst: canon_dname_tolower
      Src: /src/unbound/validator/val_sigcrypt.c:1142,1
    - Dst: canon_dname_tolower
      Src: /src/unbound/validator/val_sigcrypt.c:1151,1
    - Dst: canon_dname_tolower
      Src: /src/unbound/validator/val_sigcrypt.c:1158,1
    - Dst: dname_valid
      Src: /src/unbound/validator/val_sigcrypt.c:1159,1
    - Dst: canon_dname_tolower
      Src: /src/unbound/validator/val_sigcrypt.c:1161,1
    - Dst: canon_dname_tolower
      Src: /src/unbound/validator/val_sigcrypt.c:1182,1
    - Dst: canon_dname_tolower
      Src: /src/unbound/validator/val_sigcrypt.c:1189,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 79
    argCount: 3
    argNames:
    - buf
    - rrset
    - len
    argTypes:
    - sldns_buffer*
    - struct ub_packed_rrset_key*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 1104
    functionDepth: 2
    functionLinenumber: 1104
    functionLinenumberEnd: 1201
    functionName: canonicalize_rdata
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_current
    - dname_valid
    - canon_dname_tolower
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void canonicalize_rdata(sldns_buffer* buf, struct ub_packed_rrset_key*
      rrset,\n\tsize_t len)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_sigcrypt.c:1220,1
    - Dst: memset
      Src: /src/unbound/validator/val_sigcrypt.c:1230,1
    - Dst: memset
      Src: /src/unbound/validator/val_sigcrypt.c:1231,1
    - Dst: rbtree_init
      Src: /src/unbound/validator/val_sigcrypt.c:1236,1
    - Dst: rbtree_init
      Src: /src/unbound/validator/val_sigcrypt.c:1237,1
    - Dst: regional_alloc
      Src: /src/unbound/validator/val_sigcrypt.c:1240,1
    - Dst: regional_alloc
      Src: /src/unbound/validator/val_sigcrypt.c:1241,1
    - Dst: canonical_sort
      Src: /src/unbound/validator/val_sigcrypt.c:1245,1
    - Dst: canonical_sort
      Src: /src/unbound/validator/val_sigcrypt.c:1246,1
    - Dst: rbtree_first
      Src: /src/unbound/validator/val_sigcrypt.c:1251,1
    - Dst: rbtree_first
      Src: /src/unbound/validator/val_sigcrypt.c:1252,1
    - Dst: canonical_compare
      Src: /src/unbound/validator/val_sigcrypt.c:1260,1
    - Dst: rbtree_next
      Src: /src/unbound/validator/val_sigcrypt.c:1262,1
    - Dst: rbtree_next
      Src: /src/unbound/validator/val_sigcrypt.c:1263,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 36
    argCount: 3
    argNames:
    - region
    - k1
    - k2
    argTypes:
    - struct regional*
    - struct ub_packed_rrset_key*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1266
      start: 1203
    functionDepth: 3
    functionLinenumber: 1203
    functionLinenumberEnd: 1266
    functionName: rrset_canonical_equal
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - regional_alloc
    - canonical_compare
    - rbtree_init
    - query_dname_compare
    - rbtree_next
    - rbtree_first
    - memset
    - canonical_sort
    linkageType: ''
    returnType: int
    signature: "int rrset_canonical_equal(struct regional* region,\n\tstruct ub_packed_rrset_key*
      k1, struct ub_packed_rrset_key* k2)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/validator/val_sigcrypt.c:1295,1
    - Dst: regional_alloc
      Src: /src/unbound/validator/val_sigcrypt.c:1301,1
    - Dst: rbtree_init
      Src: /src/unbound/validator/val_sigcrypt.c:1306,1
    - Dst: canonical_sort
      Src: /src/unbound/validator/val_sigcrypt.c:1307,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/validator/val_sigcrypt.c:1310,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1311,1
    - Dst: canon_dname_tolower
      Src: /src/unbound/validator/val_sigcrypt.c:1313,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_sigcrypt.c:1313,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/validator/val_sigcrypt.c:1314,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/validator/val_sigcrypt.c:1317,1
    - Dst: log_err
      Src: /src/unbound/validator/val_sigcrypt.c:1319,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1325,1
    - Dst: insert_can_owner
      Src: /src/unbound/validator/val_sigcrypt.c:1326,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1328,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1329,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1330,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1331,1
    - Dst: canonicalize_rdata
      Src: /src/unbound/validator/val_sigcrypt.c:1333,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/validator/val_sigcrypt.c:1335,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_sigcrypt.c:1340,1
    - Dst: regional_alloc_init
      Src: /src/unbound/validator/val_sigcrypt.c:1342,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 8
    argNames:
    - region
    - buf
    - k
    - sig
    - siglen
    - sortree
    - section
    - qstate
    argTypes:
    - struct regional*
    - sldns_buffer*
    - struct ub_packed_rrset_key*
    - uint8_t*
    - size_t
    - struct rbtree_type**
    - sldns_pkt_section
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1352
      start: 1282
    functionDepth: 6
    functionLinenumber: 1282
    functionLinenumberEnd: 1352
    functionName: rrset_canonical
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - log_err
    - sldns_buffer_write
    - canon_dname_tolower
    - insert_can_owner
    - regional_alloc
    - sldns_buffer_flip
    - sldns_buffer_clear
    - rbtree_init
    - canonicalize_rdata
    - sldns_buffer_begin
    - regional_alloc_init
    - sldns_buffer_current
    - canonical_sort
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int rrset_canonical(struct regional* region, sldns_buffer* buf, \n\tstruct
      ub_packed_rrset_key* k, uint8_t* sig, size_t siglen,\n\tstruct rbtree_type**
      sortree, sldns_pkt_section section,\n\tstruct module_qstate* qstate)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/validator/val_sigcrypt.c:1317,1
    - Dst: log_err
      Src: /src/unbound/validator/val_sigcrypt.c:1319,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1325,1
    - Dst: insert_can_owner
      Src: /src/unbound/validator/val_sigcrypt.c:1326,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1328,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1329,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1330,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1331,1
    - Dst: canonicalize_rdata
      Src: /src/unbound/validator/val_sigcrypt.c:1333,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1315
    functionDepth: 6
    functionLinenumber: 1315
    functionLinenumberEnd: 1334
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - log_err
    - sldns_buffer_write
    - insert_can_owner
    - canonicalize_rdata
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(walk, struct canon_rr*, (*sortree))
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/validator/val_sigcrypt.c:1365,1
    - Dst: regional_alloc
      Src: /src/unbound/validator/val_sigcrypt.c:1371,1
    - Dst: rbtree_init
      Src: /src/unbound/validator/val_sigcrypt.c:1375,1
    - Dst: canonical_sort
      Src: /src/unbound/validator/val_sigcrypt.c:1376,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/validator/val_sigcrypt.c:1378,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/validator/val_sigcrypt.c:1381,1
    - Dst: log_err
      Src: /src/unbound/validator/val_sigcrypt.c:1383,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1389,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/validator/val_sigcrypt.c:1391,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1392,1
    - Dst: query_dname_tolower
      Src: /src/unbound/validator/val_sigcrypt.c:1393,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1396,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1397,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/validator/val_sigcrypt.c:1398,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1399,1
    - Dst: canonicalize_rdata
      Src: /src/unbound/validator/val_sigcrypt.c:1401,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/validator/val_sigcrypt.c:1403,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 32
    argCount: 3
    argNames:
    - region
    - buf
    - k
    argTypes:
    - struct regional*
    - sldns_buffer*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1405
      start: 1354
    functionDepth: 5
    functionLinenumber: 1354
    functionLinenumberEnd: 1405
    functionName: rrset_canonicalize_to_buffer
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - log_err
    - sldns_buffer_write
    - regional_alloc
    - sldns_buffer_flip
    - sldns_buffer_clear
    - rbtree_init
    - canonicalize_rdata
    - query_dname_tolower
    - sldns_buffer_write_u32
    - sldns_buffer_current
    - canonical_sort
    linkageType: ''
    returnType: int
    signature: "int rrset_canonicalize_to_buffer(struct regional* region, sldns_buffer*
      buf,\n\tstruct ub_packed_rrset_key* k)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/validator/val_sigcrypt.c:1381,1
    - Dst: log_err
      Src: /src/unbound/validator/val_sigcrypt.c:1383,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1389,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/validator/val_sigcrypt.c:1391,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1392,1
    - Dst: query_dname_tolower
      Src: /src/unbound/validator/val_sigcrypt.c:1393,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1396,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1397,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/validator/val_sigcrypt.c:1398,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_sigcrypt.c:1399,1
    - Dst: canonicalize_rdata
      Src: /src/unbound/validator/val_sigcrypt.c:1401,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1402
      start: 1379
    functionDepth: 5
    functionLinenumber: 1379
    functionLinenumberEnd: 1402
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - log_err
    - sldns_buffer_write
    - canonicalize_rdata
    - query_dname_tolower
    - sldns_buffer_write_u32
    - sldns_buffer_current
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(walk, struct canon_rr*, sortree)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/validator/val_sigcrypt.c:1422,1
    - Dst: gmtime_r
      Src: /src/unbound/validator/val_sigcrypt.c:1423,1
    - Dst: strftime
      Src: /src/unbound/validator/val_sigcrypt.c:1423,1
    - Dst: gmtime_r
      Src: /src/unbound/validator/val_sigcrypt.c:1424,1
    - Dst: strftime
      Src: /src/unbound/validator/val_sigcrypt.c:1424,1
    - Dst: gmtime_r
      Src: /src/unbound/validator/val_sigcrypt.c:1425,1
    - Dst: strftime
      Src: /src/unbound/validator/val_sigcrypt.c:1425,1
    - Dst: log_info
      Src: /src/unbound/validator/val_sigcrypt.c:1426,1
    - Dst: log_info
      Src: /src/unbound/validator/val_sigcrypt.c:1429,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 4
    argNames:
    - str
    - expi
    - incep
    - now
    argTypes:
    - char*
    - int32_t
    - int32_t
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1431
      start: 1408
    functionDepth: 1
    functionLinenumber: 1408
    functionLinenumberEnd: 1431
    functionName: sigdate_error
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - memset
    - log_info
    - gmtime_r
    - strftime
    linkageType: ''
    returnType: void
    signature: void sigdate_error(const char* str, int32_t expi, int32_t incep, int32_t
      now)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/validator/val_sigcrypt.c:1440,1
    - Dst: memmove
      Src: /src/unbound/validator/val_sigcrypt.c:1441,1
    - Dst: ntohl
      Src: /src/unbound/validator/val_sigcrypt.c:1442,1
    - Dst: ntohl
      Src: /src/unbound/validator/val_sigcrypt.c:1443,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1448,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1452,1
    - Dst: compare_1982
      Src: /src/unbound/validator/val_sigcrypt.c:1456,1
    - Dst: sigdate_error
      Src: /src/unbound/validator/val_sigcrypt.c:1457,1
    - Dst: compare_1982
      Src: /src/unbound/validator/val_sigcrypt.c:1470,1
    - Dst: subtract_1982
      Src: /src/unbound/validator/val_sigcrypt.c:1472,1
    - Dst: subtract_1982
      Src: /src/unbound/validator/val_sigcrypt.c:1475,1
    - Dst: sigdate_error
      Src: /src/unbound/validator/val_sigcrypt.c:1476,1
    - Dst: sigdate_error
      Src: /src/unbound/validator/val_sigcrypt.c:1483,1
    - Dst: compare_1982
      Src: /src/unbound/validator/val_sigcrypt.c:1486,1
    - Dst: subtract_1982
      Src: /src/unbound/validator/val_sigcrypt.c:1487,1
    - Dst: subtract_1982
      Src: /src/unbound/validator/val_sigcrypt.c:1490,1
    - Dst: sigdate_error
      Src: /src/unbound/validator/val_sigcrypt.c:1491,1
    - Dst: sigdate_error
      Src: /src/unbound/validator/val_sigcrypt.c:1498,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 51
    argCount: 6
    argNames:
    - ve
    - unow
    - expi_p
    - incep_p
    - reason
    - reason_bogus
    argTypes:
    - struct val_env*
    - uint32_t
    - uint8_t*
    - uint8_t*
    - char**
    - sldns_ede_code*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1502
      start: 1434
    functionDepth: 2
    functionLinenumber: 1434
    functionLinenumberEnd: 1502
    functionName: check_dates
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - ntohl
    - memmove
    - verbose
    - compare_1982
    - subtract_1982
    - sigdate_error
    linkageType: ''
    returnType: int
    signature: "int check_dates(struct val_env* ve, uint32_t unow, uint8_t* expi_p,\n\tuint8_t*
      incep_p, char** reason, sldns_ede_code *reason_bogus)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/validator/val_sigcrypt.c:1514,1
    - Dst: memmove
      Src: /src/unbound/validator/val_sigcrypt.c:1515,1
    - Dst: memmove
      Src: /src/unbound/validator/val_sigcrypt.c:1516,1
    - Dst: ntohl
      Src: /src/unbound/validator/val_sigcrypt.c:1517,1
    - Dst: ntohl
      Src: /src/unbound/validator/val_sigcrypt.c:1518,1
    - Dst: ntohl
      Src: /src/unbound/validator/val_sigcrypt.c:1519,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1537,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1542,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1548,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 6
    argNames:
    - ve
    - unow
    - rrset
    - orig_p
    - expi_p
    - incep_p
    argTypes:
    - struct val_env*
    - uint32_t
    - struct ub_packed_rrset_key*
    - uint8_t*
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1552
      start: 1505
    functionDepth: 1
    functionLinenumber: 1505
    functionLinenumberEnd: 1552
    functionName: adjust_ttl
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 0
    functionsReached:
    - verbose
    - ntohl
    - memmove
    linkageType: ''
    returnType: void
    signature: "void adjust_ttl(struct val_env* ve, uint32_t unow, \n\tstruct ub_packed_rrset_key*
      rrset, uint8_t* orig_p, \n\tuint8_t* expi_p, uint8_t* incep_p)"
  - BBCount: 38
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_count
      Src: /src/unbound/validator/val_sigcrypt.c:1566,1
    - Dst: rrset_get_rdata
      Src: /src/unbound/validator/val_sigcrypt.c:1574,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1577,1
    - Dst: dnskey_get_flags
      Src: /src/unbound/validator/val_sigcrypt.c:1584,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1585,1
    - Dst: dnskey_get_flags
      Src: /src/unbound/validator/val_sigcrypt.c:1591,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_sigcrypt.c:1593,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_sigcrypt.c:1594,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1596,1
    - Dst: dnskey_get_protocol
      Src: /src/unbound/validator/val_sigcrypt.c:1604,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1606,1
    - Dst: dname_valid
      Src: /src/unbound/validator/val_sigcrypt.c:1615,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1617,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/val_sigcrypt.c:1623,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1624,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_sigcrypt.c:1631,1
    - Dst: dname_remove_label
      Src: /src/unbound/validator/val_sigcrypt.c:1635,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_sigcrypt.c:1636,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1637,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_sigcrypt.c:1645,1
    - Dst: nsec_nextowner_subdomain
      Src: /src/unbound/validator/val_sigcrypt.c:1646,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1647,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1656,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_sigcrypt.c:1665,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1666,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/val_sigcrypt.c:1667,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/val_sigcrypt.c:1669,1
    - Dst: memcmp
      Src: /src/unbound/validator/val_sigcrypt.c:1679,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1680,1
    - Dst: dnskey_get_algo
      Src: /src/unbound/validator/val_sigcrypt.c:1687,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1688,1
    - Dst: htons
      Src: /src/unbound/validator/val_sigcrypt.c:1694,1
    - Dst: dnskey_calc_keytag
      Src: /src/unbound/validator/val_sigcrypt.c:1694,1
    - Dst: memcmp
      Src: /src/unbound/validator/val_sigcrypt.c:1695,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1696,1
    - Dst: dname_signame_label_count
      Src: /src/unbound/validator/val_sigcrypt.c:1704,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1705,1
    - Dst: dname_signame_label_count
      Src: /src/unbound/validator/val_sigcrypt.c:1711,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1712,1
    - Dst: rrset_canonical
      Src: /src/unbound/validator/val_sigcrypt.c:1724,1
    - Dst: log_err
      Src: /src/unbound/validator/val_sigcrypt.c:1726,1
    - Dst: dnskey_get_pubkey
      Src: /src/unbound/validator/val_sigcrypt.c:1733,1
    - Dst: verbose
      Src: /src/unbound/validator/val_sigcrypt.c:1735,1
    - Dst: verify_canonrrset
      Src: /src/unbound/validator/val_sigcrypt.c:1740,1
    - Dst: adjust_ttl
      Src: /src/unbound/validator/val_sigcrypt.c:1749,1
    - Dst: check_dates
      Src: /src/unbound/validator/val_sigcrypt.c:1754,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 139
    argCount: 14
    argNames:
    - region
    - buf
    - ve
    - now
    - rrset
    - dnskey
    - dnskey_idx
    - sig_idx
    - sortree
    - buf_canon
    - reason
    - reason_bogus
    - section
    - qstate
    argTypes:
    - struct regional*
    - sldns_buffer*
    - struct val_env*
    - time_t
    - struct ub_packed_rrset_key*
    - struct ub_packed_rrset_key*
    - size_t
    - size_t
    - struct rbtree_type**
    - int*
    - char**
    - sldns_ede_code*
    - sldns_pkt_section
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1761
      start: 1554
    functionDepth: 7
    functionLinenumber: 1554
    functionLinenumberEnd: 1761
    functionName: dnskey_verify_rrset_sig
    functionSourceFile: /src/unbound/validator/val_sigcrypt.c
    functionUses: 2
    functionsReached:
    - log_nametypeclass
    - check_dates
    - rrset_get_rdata
    - dname_remove_label
    - verify_canonrrset
    - nsec_nextowner_subdomain
    - htons
    - dname_subdomain_c
    - log_err
    - verbose
    - dnskey_get_algo
    - dnskey_calc_keytag
    - query_dname_compare
    - adjust_ttl
    - rrset_canonical
    - dnskey_get_protocol
    - dnskey_get_pubkey
    - dnskey_get_flags
    - rrset_get_count
    - dname_valid
    - memcmp
    - dname_signame_label_count
    - ntohs
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status dnskey_verify_rrset_sig(struct regional* region, sldns_buffer*
      buf, \n\tstruct val_env* ve, time_t now,\n        struct ub_packed_rrset_key*
      rrset, struct ub_packed_rrset_key* dnskey,\n        size_t dnskey_idx, size_t
      sig_idx,\n\tstruct rbtree_type** sortree, int* buf_canon,\n\tchar** reason,
      sldns_ede_code *reason_bogus,\n\tsldns_pkt_section section, struct module_qstate*
      qstate)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_get_mem
      Src: /src/unbound/validator/val_kentry.c:57,1
    - Dst: packed_rrset_sizeof
      Src: /src/unbound/validator/val_kentry.c:59,1
    - Dst: strlen
      Src: /src/unbound/validator/val_kentry.c:61,1
    - Dst: strlen
      Src: /src/unbound/validator/val_kentry.c:63,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - key
    - data
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 65
    functionName: key_entry_sizefunc
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 0
    functionsReached:
    - packed_rrset_sizeof
    - lock_get_mem
    - strlen
    linkageType: ''
    returnType: size_t
    signature: size_t key_entry_sizefunc(void* key, void* data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_kentry.c:77,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - k1
    - k2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 78
    functionName: key_entry_compfunc
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 0
    functionsReached:
    - query_dname_compare
    linkageType: ''
    returnType: int
    signature: int key_entry_compfunc(void* k1, void* k2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/validator/val_kentry.c:86,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:87,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - key
    - ATTR_UNUSED(userarg)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 89
    functionName: key_entry_delkeyfunc
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 0
    functionsReached:
    - free
    - lock_rw_destroy
    linkageType: ''
    returnType: void
    signature: void key_entry_delkeyfunc(void* key, void* ATTR_UNUSED(userarg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:95,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:96,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:97,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:98,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - data
    - ATTR_UNUSED(userarg)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 99
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 99
    functionName: key_entry_deldatafunc
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void key_entry_deldatafunc(void* data, void* ATTR_UNUSED(userarg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashlittle
      Src: /src/unbound/validator/val_kentry.c:105,1
    - Dst: dname_query_hash
      Src: /src/unbound/validator/val_kentry.c:107,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - kk
    argTypes:
    - struct key_entry_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 108
    functionName: key_entry_hash
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 0
    functionsReached:
    - hashlittle
    - dname_query_hash
    linkageType: ''
    returnType: void
    signature: void key_entry_hash(struct key_entry_key* kk)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_init
      Src: /src/unbound/validator/val_kentry.c:114,1
    - Dst: regional_alloc_init
      Src: /src/unbound/validator/val_kentry.c:117,1
    - Dst: regional_alloc_init
      Src: /src/unbound/validator/val_kentry.c:126,1
    - Dst: regional_alloc_init
      Src: /src/unbound/validator/val_kentry.c:131,1
    - Dst: packed_rrset_sizeof
      Src: /src/unbound/validator/val_kentry.c:133,1
    - Dst: packed_rrset_ptr_fixup
      Src: /src/unbound/validator/val_kentry.c:136,1
    - Dst: regional_strdup
      Src: /src/unbound/validator/val_kentry.c:139,1
    - Dst: regional_strdup
      Src: /src/unbound/validator/val_kentry.c:144,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 2
    argNames:
    - kkey
    - region
    argTypes:
    - struct key_entry_key*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 152
    functionName: key_entry_copy_toregion
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 0
    functionsReached:
    - packed_rrset_sizeof
    - packed_rrset_ptr_fixup
    - regional_strdup
    - regional_alloc_init
    linkageType: ''
    returnType: struct key_entry_key
    signature: "struct key_entry_key * \nkey_entry_copy_toregion(struct key_entry_key*
      kkey, struct regional* region)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memdup
      Src: /src/unbound/validator/val_kentry.c:160,1
    - Dst: memdup
      Src: /src/unbound/validator/val_kentry.c:163,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:165,1
    - Dst: lock_rw_init
      Src: /src/unbound/validator/val_kentry.c:168,1
    - Dst: memdup
      Src: /src/unbound/validator/val_kentry.c:175,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:177,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:178,1
    - Dst: memdup
      Src: /src/unbound/validator/val_kentry.c:183,1
    - Dst: packed_rrset_sizeof
      Src: /src/unbound/validator/val_kentry.c:184,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:186,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:187,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:188,1
    - Dst: packed_rrset_ptr_fixup
      Src: /src/unbound/validator/val_kentry.c:191,1
    - Dst: strdup
      Src: /src/unbound/validator/val_kentry.c:194,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:196,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:197,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:198,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:199,1
    - Dst: strdup
      Src: /src/unbound/validator/val_kentry.c:206,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:208,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:209,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:210,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:211,1
    - Dst: free
      Src: /src/unbound/validator/val_kentry.c:212,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 56
    argCount: 2
    argNames:
    - kkey
    - copy_reason
    argTypes:
    - struct key_entry_key*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 219
    functionName: key_entry_copy
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 0
    functionsReached:
    - packed_rrset_sizeof
    - lock_rw_init
    - free
    - packed_rrset_ptr_fixup
    - memdup
    - strdup
    linkageType: ''
    returnType: struct key_entry_key
    signature: "struct key_entry_key * \nkey_entry_copy(struct key_entry_key* kkey,
      int copy_reason)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - kkey
    argTypes:
    - struct key_entry_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 226
    functionName: key_entry_isnull
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int key_entry_isnull(struct key_entry_key* kkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - kkey
    argTypes:
    - struct key_entry_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 233
    functionName: key_entry_isgood
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int key_entry_isgood(struct key_entry_key* kkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - kkey
    argTypes:
    - struct key_entry_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 240
    functionName: key_entry_isbad
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int key_entry_isbad(struct key_entry_key* kkey)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - kkey
    argTypes:
    - struct key_entry_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 242
    functionDepth: 0
    functionLinenumber: 242
    functionLinenumberEnd: 247
    functionName: key_entry_get_reason
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      key_entry_get_reason(struct key_entry_key* kkey)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - kkey
    argTypes:
    - struct key_entry_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 255
    functionName: key_entry_get_reason_bogus
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: sldns_ede_code
    signature: sldns_ede_code key_entry_get_reason_bogus(struct key_entry_key* kkey)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/validator/val_kentry.c:263,1
    - Dst: memset
      Src: /src/unbound/validator/val_kentry.c:266,1
    - Dst: regional_alloc_init
      Src: /src/unbound/validator/val_kentry.c:268,1
    - Dst: regional_alloc
      Src: /src/unbound/validator/val_kentry.c:273,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 6
    argNames:
    - region
    - name
    - namelen
    - dclass
    - k
    - d
    argTypes:
    - struct regional*
    - uint8_t*
    - size_t
    - uint16_t
    - struct key_entry_key**
    - struct key_entry_data**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 258
    functionDepth: 1
    functionLinenumber: 258
    functionLinenumberEnd: 278
    functionName: key_entry_setup
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 0
    functionsReached:
    - memset
    - regional_alloc
    - regional_alloc_init
    linkageType: ''
    returnType: int
    signature: "int key_entry_setup(struct regional* region,\n\tuint8_t* name, size_t
      namelen, uint16_t dclass, \n\tstruct key_entry_key** k, struct key_entry_data**
      d)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: key_entry_setup
      Src: /src/unbound/validator/val_kentry.c:288,1
    - Dst: regional_strdup
      Src: /src/unbound/validator/val_kentry.c:293,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 8
    argNames:
    - region
    - name
    - namelen
    - dclass
    - ttl
    - reason_bogus
    - reason
    - now
    argTypes:
    - struct regional*
    - uint8_t*
    - size_t
    - uint16_t
    - time_t
    - sldns_ede_code
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 280
    functionDepth: 2
    functionLinenumber: 280
    functionLinenumberEnd: 300
    functionName: key_entry_create_null
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 2
    functionsReached:
    - key_entry_setup
    - regional_strdup
    linkageType: ''
    returnType: struct key_entry_key
    signature: "struct key_entry_key * \nkey_entry_create_null(struct regional* region,\n\tuint8_t*
      name, size_t namelen, uint16_t dclass, time_t ttl,\n\tsldns_ede_code reason_bogus,
      const char* reason,\n\ttime_t now)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: key_entry_setup
      Src: /src/unbound/validator/val_kentry.c:313,1
    - Dst: regional_strdup
      Src: /src/unbound/validator/val_kentry.c:318,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_kentry.c:321,1
    - Dst: regional_alloc_init
      Src: /src/unbound/validator/val_kentry.c:322,1
    - Dst: packed_rrset_sizeof
      Src: /src/unbound/validator/val_kentry.c:323,1
    - Dst: regional_strdup
      Src: /src/unbound/validator/val_kentry.c:327,1
    - Dst: packed_rrset_ptr_fixup
      Src: /src/unbound/validator/val_kentry.c:331,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 9
    argNames:
    - region
    - name
    - namelen
    - dclass
    - rrset
    - sigalg
    - reason_bogus
    - reason
    - now
    argTypes:
    - struct regional*
    - uint8_t*
    - size_t
    - uint16_t
    - struct ub_packed_rrset_key*
    - uint8_t*
    - sldns_ede_code
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 302
    functionDepth: 2
    functionLinenumber: 302
    functionLinenumberEnd: 333
    functionName: key_entry_create_rrset
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 1
    functionsReached:
    - regional_strdup
    - packed_rrset_sizeof
    - key_entry_setup
    - regional_alloc_init
    - packed_rrset_ptr_fixup
    - ntohs
    linkageType: ''
    returnType: struct key_entry_key
    signature: "struct key_entry_key * \nkey_entry_create_rrset(struct regional* region,\n\tuint8_t*
      name, size_t namelen, uint16_t dclass,\n\tstruct ub_packed_rrset_key* rrset,
      uint8_t* sigalg,\n\tsldns_ede_code reason_bogus, const char* reason,\n\ttime_t
      now)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: key_entry_setup
      Src: /src/unbound/validator/val_kentry.c:343,1
    - Dst: regional_strdup
      Src: /src/unbound/validator/val_kentry.c:348,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 8
    argNames:
    - region
    - name
    - namelen
    - dclass
    - ttl
    - reason_bogus
    - reason
    - now
    argTypes:
    - struct regional*
    - uint8_t*
    - size_t
    - uint16_t
    - time_t
    - sldns_ede_code
    - char*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 335
    functionDepth: 2
    functionLinenumber: 335
    functionLinenumberEnd: 355
    functionName: key_entry_create_bad
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 3
    functionsReached:
    - key_entry_setup
    - regional_strdup
    linkageType: ''
    returnType: struct key_entry_key
    signature: "struct key_entry_key * \nkey_entry_create_bad(struct regional* region,\n\tuint8_t*
      name, size_t namelen, uint16_t dclass, time_t ttl,\n\tsldns_ede_code reason_bogus,
      const char* reason,\n\ttime_t now)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/validator/val_kentry.c:365,1
    - Dst: memset
      Src: /src/unbound/validator/val_kentry.c:368,1
    - Dst: regional_alloc_init
      Src: /src/unbound/validator/val_kentry.c:369,1
    - Dst: htons
      Src: /src/unbound/validator/val_kentry.c:373,1
    - Dst: htons
      Src: /src/unbound/validator/val_kentry.c:374,1
    - Dst: regional_alloc_init
      Src: /src/unbound/validator/val_kentry.c:376,1
    - Dst: packed_rrset_sizeof
      Src: /src/unbound/validator/val_kentry.c:377,1
    - Dst: packed_rrset_ptr_fixup
      Src: /src/unbound/validator/val_kentry.c:381,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - kkey
    - region
    argTypes:
    - struct key_entry_key*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 383
    functionName: key_entry_get_rrset
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 1
    functionsReached:
    - packed_rrset_sizeof
    - regional_alloc
    - htons
    - regional_alloc_init
    - packed_rrset_ptr_fixup
    - memset
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: "struct ub_packed_rrset_key * \nkey_entry_get_rrset(struct key_entry_key*
      kkey, struct regional* region)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_rr_dnskey_key_size_raw
      Src: /src/unbound/validator/val_kentry.c:397,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - data
    - idx
    argTypes:
    - struct packed_rrset_data*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 386
    functionDepth: 2
    functionLinenumber: 386
    functionLinenumberEnd: 398
    functionName: dnskey_get_keysize
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 0
    functionsReached:
    - sldns_rr_dnskey_key_size_raw
    linkageType: ''
    returnType: size_t
    signature: size_t dnskey_get_keysize(struct packed_rrset_data* data, size_t idx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/validator/val_kentry.c:407,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_kentry.c:408,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - data
    - idx
    argTypes:
    - struct packed_rrset_data*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 401
    functionDepth: 1
    functionLinenumber: 401
    functionLinenumberEnd: 410
    functionName: kd_get_flags
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 0
    functionsReached:
    - ntohs
    - memmove
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t kd_get_flags(struct packed_rrset_data* data, size_t idx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: key_entry_isgood
      Src: /src/unbound/validator/val_kentry.c:419,1
    - Dst: kd_get_flags
      Src: /src/unbound/validator/val_kentry.c:423,1
    - Dst: dnskey_get_keysize
      Src: /src/unbound/validator/val_kentry.c:425,1
    - Dst: dnskey_get_keysize
      Src: /src/unbound/validator/val_kentry.c:426,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - kkey
    argTypes:
    - struct key_entry_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 412
    functionDepth: 3
    functionLinenumber: 412
    functionLinenumberEnd: 429
    functionName: key_entry_keysize
    functionSourceFile: /src/unbound/validator/val_kentry.c
    functionUses: 0
    functionsReached:
    - key_entry_isgood
    - kd_get_flags
    - dnskey_get_keysize
    linkageType: ''
    returnType: size_t
    signature: size_t key_entry_keysize(struct key_entry_key* kkey)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/validator/val_utils.c:69,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:86,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:88,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:90,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:98,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_utils.c:99,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:127,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_utils.c:129,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:136,1
    - Dst: log_dns_msg
      Src: /src/unbound/validator/val_utils.c:140,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:149,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:151,1
    - Dst: log_dns_msg
      Src: /src/unbound/validator/val_utils.c:154,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 43
    argCount: 5
    argNames:
    - query_flags
    - origqinf
    - qinf
    - rep
    - skip
    argTypes:
    - uint16_t
    - struct query_info*
    - struct query_info*
    - struct reply_info*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 157
    functionName: val_classify_response
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 4
    functionsReached:
    - FLAGS_GET_RCODE
    - query_dname_compare
    - log_dns_msg
    - ntohs
    linkageType: ''
    returnType: enum val_classification
    signature: "enum val_classification val_classify_response(uint16_t query_flags,
      struct query_info* origqinf,\n\tstruct query_info* qinf, struct reply_info*
      rep, size_t skip)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_valid
      Src: /src/unbound/validator/val_utils.c:177,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - data
    - len
    - sname
    - slen
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 184
    functionName: rrsig_get_signer
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 0
    functionsReached:
    - dname_valid
    linkageType: ''
    returnType: void
    signature: void rrsig_get_signer(uint8_t* data, size_t len, uint8_t** sname, size_t*
      slen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rrsig_get_signer
      Src: /src/unbound/validator/val_utils.c:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - rrset
    - sname
    - slen
    argTypes:
    - struct ub_packed_rrset_key*
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 186
    functionDepth: 2
    functionLinenumber: 186
    functionLinenumberEnd: 201
    functionName: val_find_rrset_signer
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 2
    functionsReached:
    - rrsig_get_signer
    linkageType: ''
    returnType: void
    signature: "void val_find_rrset_signer(struct ub_packed_rrset_key* rrset, uint8_t**
      sname,\n\tsize_t* slen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/val_utils.c:229,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/validator/val_utils.c:230,1
    - Dst: dname_count_labels
      Src: /src/unbound/validator/val_utils.c:231,1
    - Dst: dname_count_labels
      Src: /src/unbound/validator/val_utils.c:232,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/validator/val_utils.c:236,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 5
    argNames:
    - rrset
    - qinf
    - signer_name
    - signer_len
    - matchcount
    argTypes:
    - struct ub_packed_rrset_key*
    - struct query_info*
    - uint8_t**
    - size_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 212
    functionDepth: 1
    functionLinenumber: 212
    functionLinenumberEnd: 241
    functionName: val_find_best_signer
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 0
    functionsReached:
    - dname_lab_cmp
    - dname_subdomain_c
    - dname_count_size_labels
    - dname_count_labels
    linkageType: ''
    returnType: void
    signature: "void val_find_best_signer(struct ub_packed_rrset_key* rrset, \n\tstruct
      query_info* qinf, uint8_t** signer_name, size_t* signer_len, \n\tint* matchcount)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:252,1
    - Dst: dname_strict_subdomain_c
      Src: /src/unbound/validator/val_utils.c:253,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - rep
    - cname_idx
    - ret
    argTypes:
    - struct reply_info*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 261
    functionName: cname_under_previous_dname
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 0
    functionsReached:
    - dname_strict_subdomain_c
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int cname_under_previous_dname(struct reply_info* rep, size_t cname_idx,\n\tsize_t*
      ret)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_utils.c:273,1
    - Dst: val_find_rrset_signer
      Src: /src/unbound/validator/val_utils.c:275,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:284,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:286,1
    - Dst: dname_strict_subdomain_c
      Src: /src/unbound/validator/val_utils.c:288,1
    - Dst: val_find_rrset_signer
      Src: /src/unbound/validator/val_utils.c:289,1
    - Dst: val_find_rrset_signer
      Src: /src/unbound/validator/val_utils.c:301,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:305,1
    - Dst: cname_under_previous_dname
      Src: /src/unbound/validator/val_utils.c:306,1
    - Dst: val_find_rrset_signer
      Src: /src/unbound/validator/val_utils.c:307,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:311,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:321,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:322,1
    - Dst: val_find_rrset_signer
      Src: /src/unbound/validator/val_utils.c:324,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:337,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:338,1
    - Dst: val_find_best_signer
      Src: /src/unbound/validator/val_utils.c:340,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_utils.c:348,1
    - Dst: val_find_rrset_signer
      Src: /src/unbound/validator/val_utils.c:350,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:358,1
    - Dst: val_find_rrset_signer
      Src: /src/unbound/validator/val_utils.c:360,1
    - Dst: val_find_rrset_signer
      Src: /src/unbound/validator/val_utils.c:370,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:377,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 74
    argCount: 6
    argNames:
    - subtype
    - qinf
    - rep
    - skip
    - signer_name
    - signer_len
    argTypes:
    - enum val_classification
    - struct query_info*
    - struct reply_info*
    - size_t
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 263
    functionDepth: 3
    functionLinenumber: 263
    functionLinenumberEnd: 382
    functionName: val_find_signer
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 1
    functionsReached:
    - verbose
    - val_find_best_signer
    - query_dname_compare
    - cname_under_previous_dname
    - dname_strict_subdomain_c
    - val_find_rrset_signer
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void val_find_signer(enum val_classification subtype, struct query_info*
      qinf, \n\tstruct reply_info* rep, size_t skip, uint8_t** signer_name, \n\tsize_t*
      signer_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rrset
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 385
    functionDepth: 0
    functionLinenumber: 385
    functionLinenumberEnd: 392
    functionName: rrset_get_count
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t rrset_get_count(struct ub_packed_rrset_key* rrset)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rrset
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 402
    functionName: rrset_get_ttl
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t rrset_get_ttl(struct ub_packed_rrset_key* rrset)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/val_utils.c:416,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:417,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:418,1
    - Dst: rrset_check_sec_status
      Src: /src/unbound/validator/val_utils.c:423,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/val_utils.c:425,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:426,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:427,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/val_utils.c:431,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:432,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:432,1
    - Dst: dnskeyset_verify_rrset
      Src: /src/unbound/validator/val_utils.c:433,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:435,1
    - Dst: sec_status_to_string
      Src: /src/unbound/validator/val_utils.c:435,1
    - Dst: regional_free_all
      Src: /src/unbound/validator/val_utils.c:436,1
    - Dst: val_rrset_wildcard
      Src: /src/unbound/validator/val_utils.c:448,1
    - Dst: lock_basic_lock
      Src: /src/unbound/validator/val_utils.c:458,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_utils.c:460,1
    - Dst: rrset_update_sec_status
      Src: /src/unbound/validator/val_utils.c:467,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 12
    argNames:
    - env
    - ve
    - rrset
    - keys
    - sigalg
    - reason
    - reason_bogus
    - section
    - qstate
    - verified
    - reasonbuf
    - reasonlen
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key*
    - struct ub_packed_rrset_key*
    - uint8_t*
    - char**
    - sldns_ede_code*
    - sldns_pkt_section
    - struct module_qstate*
    - int*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 404
    functionDepth: 5
    functionLinenumber: 404
    functionLinenumberEnd: 471
    functionName: val_verify_rrset
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 0
    functionsReached:
    - dnskeyset_verify_rrset
    - log_nametypeclass
    - rrset_check_sec_status
    - verbose
    - lock_basic_unlock
    - rrset_update_sec_status
    - sec_status_to_string
    - lock_basic_lock
    - regional_free_all
    - val_rrset_wildcard
    - ntohs
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status val_verify_rrset(struct module_env* env, struct val_env*
      ve,\n        struct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key*
      keys,\n\tuint8_t* sigalg, char** reason, sldns_ede_code *reason_bogus,\n\tsldns_pkt_section
      section, struct module_qstate* qstate,\n\tint *verified, char* reasonbuf, size_t
      reasonlen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/unbound/validator/val_utils.c:484,1
    - Dst: htons
      Src: /src/unbound/validator/val_utils.c:485,1
    - Dst: val_verify_rrset
      Src: /src/unbound/validator/val_utils.c:491,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 11
    argNames:
    - env
    - ve
    - rrset
    - kkey
    - reason
    - reason_bogus
    - section
    - qstate
    - verified
    - reasonbuf
    - reasonlen
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key*
    - struct key_entry_key*
    - char**
    - sldns_ede_code*
    - sldns_pkt_section
    - struct module_qstate*
    - int*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 473
    functionDepth: 6
    functionLinenumber: 473
    functionLinenumberEnd: 494
    functionName: val_verify_rrset_entry
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 2
    functionsReached:
    - htons
    - val_verify_rrset
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status val_verify_rrset_entry(struct module_env* env, struct
      val_env* ve,\n        struct ub_packed_rrset_key* rrset, struct key_entry_key*
      kkey,\n\tchar** reason, sldns_ede_code *reason_bogus,\n\tsldns_pkt_section section,
      struct module_qstate* qstate,\n\tint* verified, char* reasonbuf, size_t reasonlen)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_count
      Src: /src/unbound/validator/val_utils.c:506,1
    - Dst: ds_get_key_algo
      Src: /src/unbound/validator/val_utils.c:510,1
    - Dst: dnskey_get_algo
      Src: /src/unbound/validator/val_utils.c:511,1
    - Dst: dnskey_calc_keytag
      Src: /src/unbound/validator/val_utils.c:512,1
    - Dst: ds_get_keytag
      Src: /src/unbound/validator/val_utils.c:513,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:517,1
    - Dst: ds_get_key_algo
      Src: /src/unbound/validator/val_utils.c:518,1
    - Dst: ds_get_keytag
      Src: /src/unbound/validator/val_utils.c:519,1
    - Dst: ds_digest_match_dnskey
      Src: /src/unbound/validator/val_utils.c:523,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:525,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:527,1
    - Dst: dnskey_size_is_supported
      Src: /src/unbound/validator/val_utils.c:535,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:536,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:540,1
    - Dst: dnskey_verify_rrset
      Src: /src/unbound/validator/val_utils.c:544,1
    - Dst: algo_needs_reason
      Src: /src/unbound/validator/val_utils.c:556,1
    - Dst: ds_get_key_algo
      Src: /src/unbound/validator/val_utils.c:556,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 43
    argCount: 11
    argNames:
    - env
    - ve
    - dnskey_rrset
    - ds_rrset
    - ds_idx
    - reason
    - reason_bogus
    - qstate
    - nonechecked
    - reasonbuf
    - reasonlen
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key*
    - struct ub_packed_rrset_key*
    - size_t
    - char**
    - sldns_ede_code*
    - struct module_qstate*
    - int*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 497
    functionDepth: 7
    functionLinenumber: 497
    functionLinenumberEnd: 565
    functionName: verify_dnskeys_with_ds_rr
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 0
    functionsReached:
    - dnskey_verify_rrset
    - algo_needs_reason
    - verbose
    - dnskey_get_algo
    - ds_get_key_algo
    - ds_digest_match_dnskey
    - dnskey_calc_keytag
    - ds_get_keytag
    - rrset_get_count
    - dnskey_size_is_supported
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status verify_dnskeys_with_ds_rr(struct module_env* env,
      struct val_env* ve,\n\tstruct ub_packed_rrset_key* dnskey_rrset,\n        struct
      ub_packed_rrset_key* ds_rrset, size_t ds_idx, char** reason,\n\tsldns_ede_code
      *reason_bogus, struct module_qstate* qstate,\n\tint *nonechecked, char* reasonbuf,
      size_t reasonlen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_count
      Src: /src/unbound/validator/val_utils.c:569,1
    - Dst: ds_digest_algo_is_supported
      Src: /src/unbound/validator/val_utils.c:573,1
    - Dst: ds_key_algo_is_supported
      Src: /src/unbound/validator/val_utils.c:574,1
    - Dst: ds_get_digest_algo
      Src: /src/unbound/validator/val_utils.c:577,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - ds_rrset
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 567
    functionDepth: 5
    functionLinenumber: 567
    functionLinenumberEnd: 582
    functionName: val_favorite_ds_algo
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 1
    functionsReached:
    - ds_key_algo_is_supported
    - ds_digest_algo_is_supported
    - ds_get_digest_algo
    - rrset_get_count
    linkageType: ''
    returnType: int
    signature: int val_favorite_ds_algo(struct ub_packed_rrset_key* ds_rrset)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_utils.c:600,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:602,1
    - Dst: val_favorite_ds_algo
      Src: /src/unbound/validator/val_utils.c:610,1
    - Dst: algo_needs_init_ds
      Src: /src/unbound/validator/val_utils.c:611,1
    - Dst: rrset_get_count
      Src: /src/unbound/validator/val_utils.c:616,1
    - Dst: ds_digest_algo_is_supported
      Src: /src/unbound/validator/val_utils.c:620,1
    - Dst: ds_key_algo_is_supported
      Src: /src/unbound/validator/val_utils.c:621,1
    - Dst: ds_get_digest_algo
      Src: /src/unbound/validator/val_utils.c:622,1
    - Dst: verify_dnskeys_with_ds_rr
      Src: /src/unbound/validator/val_utils.c:626,1
    - Dst: algo_needs_set_secure
      Src: /src/unbound/validator/val_utils.c:644,1
    - Dst: ds_get_key_algo
      Src: /src/unbound/validator/val_utils.c:645,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:646,1
    - Dst: dnskeyset_size_is_supported
      Src: /src/unbound/validator/val_utils.c:647,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:648,1
    - Dst: algo_needs_set_bogus
      Src: /src/unbound/validator/val_utils.c:654,1
    - Dst: ds_get_key_algo
      Src: /src/unbound/validator/val_utils.c:655,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:666,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:672,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:677,1
    - Dst: algo_needs_missing
      Src: /src/unbound/validator/val_utils.c:678,1
    - Dst: algo_needs_reason
      Src: /src/unbound/validator/val_utils.c:679,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 52
    argCount: 10
    argNames:
    - env
    - ve
    - dnskey_rrset
    - ds_rrset
    - sigalg
    - reason
    - reason_bogus
    - qstate
    - reasonbuf
    - reasonlen
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key*
    - struct ub_packed_rrset_key*
    - uint8_t*
    - char**
    - sldns_ede_code*
    - struct module_qstate*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 584
    functionDepth: 8
    functionLinenumber: 584
    functionLinenumberEnd: 683
    functionName: val_verify_DNSKEY_with_DS
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 0
    functionsReached:
    - ds_key_algo_is_supported
    - algo_needs_set_secure
    - algo_needs_reason
    - verbose
    - ds_get_key_algo
    - rrset_get_count
    - algo_needs_init_ds
    - query_dname_compare
    - ds_digest_algo_is_supported
    - ds_get_digest_algo
    - verify_dnskeys_with_ds_rr
    - algo_needs_missing
    - val_favorite_ds_algo
    - algo_needs_set_bogus
    - dnskeyset_size_is_supported
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status val_verify_DNSKEY_with_DS(struct module_env* env,
      struct val_env* ve,\n\tstruct ub_packed_rrset_key* dnskey_rrset,\n\tstruct ub_packed_rrset_key*
      ds_rrset, uint8_t* sigalg, char** reason,\n\tsldns_ede_code *reason_bogus, struct
      module_qstate* qstate,\n\tchar* reasonbuf, size_t reasonlen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: val_verify_DNSKEY_with_DS
      Src: /src/unbound/validator/val_utils.c:693,1
    - Dst: key_entry_create_rrset
      Src: /src/unbound/validator/val_utils.c:698,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:700,1
    - Dst: key_entry_create_null
      Src: /src/unbound/validator/val_utils.c:704,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:706,1
    - Dst: rrset_get_ttl
      Src: /src/unbound/validator/val_utils.c:707,1
    - Dst: key_entry_create_bad
      Src: /src/unbound/validator/val_utils.c:710,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:711,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 11
    argNames:
    - region
    - env
    - ve
    - dnskey_rrset
    - ds_rrset
    - downprot
    - reason
    - reason_bogus
    - qstate
    - reasonbuf
    - reasonlen
    argTypes:
    - struct regional*
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key*
    - struct ub_packed_rrset_key*
    - int
    - char**
    - sldns_ede_code*
    - struct module_qstate*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 685
    functionDepth: 9
    functionLinenumber: 685
    functionLinenumberEnd: 713
    functionName: val_verify_new_DNSKEYs
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 1
    functionsReached:
    - rrset_get_ttl
    - key_entry_create_bad
    - val_verify_DNSKEY_with_DS
    - key_entry_create_null
    - key_entry_create_rrset
    - ntohs
    linkageType: ''
    returnType: struct key_entry_key
    signature: "struct key_entry_key *\nval_verify_new_DNSKEYs(struct regional* region,
      struct module_env* env, \n\tstruct val_env* ve, struct ub_packed_rrset_key*
      dnskey_rrset, \n\tstruct ub_packed_rrset_key* ds_rrset, int downprot, char**
      reason,\n\tsldns_ede_code *reason_bogus, struct module_qstate* qstate,\n\tchar*
      reasonbuf, size_t reasonlen)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_utils.c:732,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:734,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_utils.c:742,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:744,1
    - Dst: val_favorite_ds_algo
      Src: /src/unbound/validator/val_utils.c:753,1
    - Dst: algo_needs_init_ds
      Src: /src/unbound/validator/val_utils.c:756,1
    - Dst: memset
      Src: /src/unbound/validator/val_utils.c:757,1
    - Dst: algo_needs_init_dnskey_add
      Src: /src/unbound/validator/val_utils.c:759,1
    - Dst: rrset_get_count
      Src: /src/unbound/validator/val_utils.c:762,1
    - Dst: ds_digest_algo_is_supported
      Src: /src/unbound/validator/val_utils.c:766,1
    - Dst: ds_key_algo_is_supported
      Src: /src/unbound/validator/val_utils.c:767,1
    - Dst: ds_get_digest_algo
      Src: /src/unbound/validator/val_utils.c:768,1
    - Dst: verify_dnskeys_with_ds_rr
      Src: /src/unbound/validator/val_utils.c:771,1
    - Dst: algo_needs_set_secure
      Src: /src/unbound/validator/val_utils.c:787,1
    - Dst: ds_get_key_algo
      Src: /src/unbound/validator/val_utils.c:788,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:789,1
    - Dst: dnskeyset_size_is_supported
      Src: /src/unbound/validator/val_utils.c:790,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:791,1
    - Dst: algo_needs_set_bogus
      Src: /src/unbound/validator/val_utils.c:797,1
    - Dst: ds_get_key_algo
      Src: /src/unbound/validator/val_utils.c:798,1
    - Dst: rrset_get_count
      Src: /src/unbound/validator/val_utils.c:805,1
    - Dst: dnskey_algo_is_supported
      Src: /src/unbound/validator/val_utils.c:808,1
    - Dst: dnskey_size_is_supported
      Src: /src/unbound/validator/val_utils.c:810,1
    - Dst: dnskey_verify_rrset
      Src: /src/unbound/validator/val_utils.c:816,1
    - Dst: algo_needs_set_secure
      Src: /src/unbound/validator/val_utils.c:819,1
    - Dst: dnskey_get_algo
      Src: /src/unbound/validator/val_utils.c:820,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:821,1
    - Dst: dnskeyset_size_is_supported
      Src: /src/unbound/validator/val_utils.c:822,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:823,1
    - Dst: algo_needs_set_bogus
      Src: /src/unbound/validator/val_utils.c:829,1
    - Dst: dnskey_get_algo
      Src: /src/unbound/validator/val_utils.c:830,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:840,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:846,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:851,1
    - Dst: algo_needs_missing
      Src: /src/unbound/validator/val_utils.c:852,1
    - Dst: algo_needs_reason
      Src: /src/unbound/validator/val_utils.c:853,1
    CyclomaticComplexity: 44
    EdgeCount: 44
    ICount: 89
    argCount: 11
    argNames:
    - env
    - ve
    - dnskey_rrset
    - ta_ds
    - ta_dnskey
    - sigalg
    - reason
    - reason_bogus
    - qstate
    - reasonbuf
    - reasonlen
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key*
    - struct ub_packed_rrset_key*
    - struct ub_packed_rrset_key*
    - uint8_t*
    - char**
    - sldns_ede_code*
    - struct module_qstate*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 715
    functionDepth: 8
    functionLinenumber: 715
    functionLinenumberEnd: 857
    functionName: val_verify_DNSKEY_with_TA
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 1
    functionsReached:
    - ds_key_algo_is_supported
    - algo_needs_init_ds
    - ds_digest_algo_is_supported
    - ds_get_digest_algo
    - dnskey_algo_is_supported
    - val_favorite_ds_algo
    - memset
    - algo_needs_set_secure
    - ds_get_key_algo
    - algo_needs_missing
    - dnskeyset_size_is_supported
    - dnskey_verify_rrset
    - algo_needs_reason
    - algo_needs_init_dnskey_add
    - verbose
    - dnskey_get_algo
    - query_dname_compare
    - dnskey_size_is_supported
    - rrset_get_count
    - verify_dnskeys_with_ds_rr
    - algo_needs_set_bogus
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status val_verify_DNSKEY_with_TA(struct module_env* env,
      struct val_env* ve,\n\tstruct ub_packed_rrset_key* dnskey_rrset,\n\tstruct ub_packed_rrset_key*
      ta_ds,\n\tstruct ub_packed_rrset_key* ta_dnskey, uint8_t* sigalg, char** reason,\n\tsldns_ede_code
      *reason_bogus, struct module_qstate* qstate,\n\tchar* reasonbuf, size_t reasonlen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: val_verify_DNSKEY_with_TA
      Src: /src/unbound/validator/val_utils.c:868,1
    - Dst: key_entry_create_rrset
      Src: /src/unbound/validator/val_utils.c:874,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:876,1
    - Dst: key_entry_create_null
      Src: /src/unbound/validator/val_utils.c:879,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:881,1
    - Dst: rrset_get_ttl
      Src: /src/unbound/validator/val_utils.c:882,1
    - Dst: key_entry_create_bad
      Src: /src/unbound/validator/val_utils.c:885,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:886,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 12
    argNames:
    - region
    - env
    - ve
    - dnskey_rrset
    - ta_ds_rrset
    - ta_dnskey_rrset
    - downprot
    - reason
    - reason_bogus
    - qstate
    - reasonbuf
    - reasonlen
    argTypes:
    - struct regional*
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key*
    - struct ub_packed_rrset_key*
    - struct ub_packed_rrset_key*
    - int
    - char**
    - sldns_ede_code*
    - struct module_qstate*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 859
    functionDepth: 9
    functionLinenumber: 859
    functionLinenumberEnd: 888
    functionName: val_verify_new_DNSKEYs_with_ta
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 1
    functionsReached:
    - rrset_get_ttl
    - key_entry_create_bad
    - key_entry_create_null
    - val_verify_DNSKEY_with_TA
    - key_entry_create_rrset
    - ntohs
    linkageType: ''
    returnType: struct key_entry_key
    signature: "struct key_entry_key * \nval_verify_new_DNSKEYs_with_ta(struct regional*
      region, struct module_env* env,\n\tstruct val_env* ve, struct ub_packed_rrset_key*
      dnskey_rrset,\n\tstruct ub_packed_rrset_key* ta_ds_rrset,\n\tstruct ub_packed_rrset_key*
      ta_dnskey_rrset, int downprot,\n\tchar** reason, sldns_ede_code *reason_bogus,\n\tstruct
      module_qstate* qstate, char* reasonbuf, size_t reasonlen)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_count
      Src: /src/unbound/validator/val_utils.c:894,1
    - Dst: ds_digest_algo_is_supported
      Src: /src/unbound/validator/val_utils.c:895,1
    - Dst: ds_key_algo_is_supported
      Src: /src/unbound/validator/val_utils.c:896,1
    - Dst: rrset_get_count
      Src: /src/unbound/validator/val_utils.c:901,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:902,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/validator/val_utils.c:907,1
    - Dst: ds_get_digest_algo
      Src: /src/unbound/validator/val_utils.c:908,1
    - Dst: snprintf
      Src: /src/unbound/validator/val_utils.c:909,1
    - Dst: snprintf
      Src: /src/unbound/validator/val_utils.c:910,1
    - Dst: ds_get_digest_algo
      Src: /src/unbound/validator/val_utils.c:911,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/validator/val_utils.c:912,1
    - Dst: ds_get_key_algo
      Src: /src/unbound/validator/val_utils.c:913,1
    - Dst: snprintf
      Src: /src/unbound/validator/val_utils.c:914,1
    - Dst: snprintf
      Src: /src/unbound/validator/val_utils.c:915,1
    - Dst: ds_get_key_algo
      Src: /src/unbound/validator/val_utils.c:916,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:918,1
    - Dst: ds_digest_algo_is_supported
      Src: /src/unbound/validator/val_utils.c:920,1
    - Dst: ds_key_algo_is_supported
      Src: /src/unbound/validator/val_utils.c:922,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - ds_rrset
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 926
      start: 890
    functionDepth: 5
    functionLinenumber: 890
    functionLinenumberEnd: 926
    functionName: val_dsset_isusable
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 1
    functionsReached:
    - ds_key_algo_is_supported
    - verbose
    - snprintf
    - ds_get_key_algo
    - rrset_get_count
    - ds_digest_algo_is_supported
    - ds_get_digest_algo
    - sldns_lookup_by_id
    linkageType: ''
    returnType: int
    signature: int val_dsset_isusable(struct ub_packed_rrset_key* ds_rrset)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - d
    - sig
    argTypes:
    - struct packed_rrset_data*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 929
    functionDepth: 0
    functionLinenumber: 929
    functionLinenumberEnd: 935
    functionName: rrsig_get_labcount
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t rrsig_get_labcount(struct packed_rrset_data* d, size_t sig)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rrsig_get_labcount
      Src: /src/unbound/validator/val_utils.c:950,1
    - Dst: rrsig_get_labcount
      Src: /src/unbound/validator/val_utils.c:953,1
    - Dst: dname_is_wild
      Src: /src/unbound/validator/val_utils.c:964,1
    - Dst: dname_count_labels
      Src: /src/unbound/validator/val_utils.c:968,1
    - Dst: dname_remove_labels
      Src: /src/unbound/validator/val_utils.c:971,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - rrset
    - wc
    - wc_len
    argTypes:
    - struct ub_packed_rrset_key*
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 937
    functionDepth: 1
    functionLinenumber: 937
    functionLinenumberEnd: 976
    functionName: val_rrset_wildcard
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 5
    functionsReached:
    - rrsig_get_labcount
    - dname_count_labels
    - dname_is_wild
    - dname_remove_labels
    linkageType: ''
    returnType: int
    signature: "int val_rrset_wildcard(struct ub_packed_rrset_key* rrset, uint8_t**
      wc,\n\tsize_t* wc_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:984,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_utils.c:985,1
    - Dst: get_cname_target
      Src: /src/unbound/validator/val_utils.c:988,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - qchase
    - rep
    - cname_skip
    argTypes:
    - struct query_info*
    - struct reply_info*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 978
    functionDepth: 1
    functionLinenumber: 978
    functionLinenumberEnd: 997
    functionName: val_chase_cname
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 1
    functionsReached:
    - get_cname_target
    - query_dname_compare
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int val_chase_cname(struct query_info* qchase, struct reply_info*
      rep,\n\tsize_t* cname_skip)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dname_valid
      Src: /src/unbound/validator/val_utils.c:1009,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_utils.c:1011,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - rrset
    - name
    - len
    argTypes:
    - struct ub_packed_rrset_key*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1000
    functionDepth: 1
    functionLinenumber: 1000
    functionLinenumberEnd: 1018
    functionName: rrset_has_signer
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 0
    functionsReached:
    - query_dname_compare
    - dname_valid
    linkageType: ''
    returnType: int
    signature: int rrset_has_signer(struct ub_packed_rrset_key* rrset, uint8_t* name,
      size_t len)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_utils.c:1033,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:1037,1
    - Dst: rrset_has_signer
      Src: /src/unbound/validator/val_utils.c:1041,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:1043,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:1047,1
    - Dst: cname_under_previous_dname
      Src: /src/unbound/validator/val_utils.c:1050,1
    - Dst: rrset_has_signer
      Src: /src/unbound/validator/val_utils.c:1051,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_utils.c:1061,1
    - Dst: rrset_has_signer
      Src: /src/unbound/validator/val_utils.c:1065,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_utils.c:1075,1
    - Dst: rrset_has_signer
      Src: /src/unbound/validator/val_utils.c:1080,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 44
    argCount: 6
    argNames:
    - chase
    - orig
    - skip
    - name
    - len
    - signer
    argTypes:
    - struct reply_info*
    - struct reply_info*
    - size_t
    - uint8_t*
    - size_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1087
      start: 1020
    functionDepth: 2
    functionLinenumber: 1020
    functionLinenumberEnd: 1087
    functionName: val_fill_reply
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 1
    functionsReached:
    - rrset_has_signer
    - query_dname_compare
    - cname_under_previous_dname
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void val_fill_reply(struct reply_info* chase, struct reply_info* orig,
      \n\tsize_t skip, uint8_t* name, size_t len, uint8_t* signer)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_utils.c:1092,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_utils.c:1093,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_utils.c:1096,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_utils.c:1097,1
    - Dst: memmove
      Src: /src/unbound/validator/val_utils.c:1099,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - rep
    - index
    - count
    argTypes:
    - struct reply_info*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1089
    functionDepth: 1
    functionLinenumber: 1089
    functionLinenumberEnd: 1104
    functionName: val_reply_remove_answers
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 1
    functionsReached:
    - log_assert
    - memmove
    linkageType: ''
    returnType: void
    signature: "void val_reply_remove_answers(struct reply_info* rep, size_t index,\n\tsize_t
      count)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_utils.c:1108,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_utils.c:1109,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_utils.c:1110,1
    - Dst: memmove
      Src: /src/unbound/validator/val_utils.c:1111,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - rep
    - index
    argTypes:
    - struct reply_info*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1106
    functionDepth: 1
    functionLinenumber: 1106
    functionLinenumberEnd: 1116
    functionName: val_reply_remove_auth
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 1
    functionsReached:
    - log_assert
    - memmove
    linkageType: ''
    returnType: void
    signature: void val_reply_remove_auth(struct reply_info* rep, size_t index)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:1141,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:1143,1
    - Dst: memmove
      Src: /src/unbound/validator/val_utils.c:1148,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/val_utils.c:1157,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:1160,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:1161,1
    - Dst: memmove
      Src: /src/unbound/validator/val_utils.c:1181,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - env
    - rep
    argTypes:
    - struct module_env*
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1189
      start: 1118
    functionDepth: 1
    functionLinenumber: 1118
    functionLinenumberEnd: 1189
    functionName: val_check_nonsecure
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 1
    functionsReached:
    - verbose
    - memmove
    - log_nametypeclass
    - ntohs
    linkageType: ''
    returnType: void
    signature: void val_check_nonsecure(struct module_env* env, struct reply_info*
      rep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: anchors_lookup
      Src: /src/unbound/validator/val_utils.c:1196,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/validator/val_utils.c:1197,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - anchors
    - nm
    - l
    - c
    argTypes:
    - struct val_anchors*
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1200
      start: 1192
    functionDepth: 2
    functionLinenumber: 1192
    functionLinenumberEnd: 1200
    functionName: check_no_anchor
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - anchors_lookup
    linkageType: ''
    returnType: int
    signature: int check_no_anchor(struct val_anchors* anchors, uint8_t* nm, size_t
      l, uint16_t c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: check_no_anchor
      Src: /src/unbound/validator/val_utils.c:1211,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:1213,1
    - Dst: rrset_update_sec_status
      Src: /src/unbound/validator/val_utils.c:1217,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - rep
    - anchors
    - r
    - env
    argTypes:
    - struct reply_info*
    - struct val_anchors*
    - struct rrset_cache*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1202
    functionDepth: 3
    functionLinenumber: 1202
    functionLinenumberEnd: 1220
    functionName: val_mark_indeterminate
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 1
    functionsReached:
    - check_no_anchor
    - rrset_update_sec_status
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void val_mark_indeterminate(struct reply_info* rep, struct val_anchors*
      anchors, \n\tstruct rrset_cache* r, struct module_env* env)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/val_utils.c:1231,1
    - Dst: rrset_update_sec_status
      Src: /src/unbound/validator/val_utils.c:1234,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - rep
    - kname
    - r
    - env
    argTypes:
    - struct reply_info*
    - uint8_t*
    - struct rrset_cache*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1222
    functionDepth: 1
    functionLinenumber: 1222
    functionLinenumberEnd: 1237
    functionName: val_mark_insecure
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 2
    functionsReached:
    - dname_subdomain_c
    - rrset_update_sec_status
    linkageType: ''
    returnType: void
    signature: "void val_mark_insecure(struct reply_info* rep, uint8_t* kname,\n\tstruct
      rrset_cache* r, struct module_env* env)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - rep
    - skip
    argTypes:
    - struct reply_info*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1251
      start: 1239
    functionDepth: 0
    functionLinenumber: 1239
    functionLinenumberEnd: 1251
    functionName: val_next_unchecked
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t val_next_unchecked(struct reply_info* rep, size_t skip)
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 1
    argNames:
    - subtype
    argTypes:
    - enum val_classification
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1253
    functionDepth: 0
    functionLinenumber: 1253
    functionLinenumberEnd: 1269
    functionName: val_classification_to_string
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      val_classification_to_string(enum val_classification subtype)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_addr
      Src: /src/unbound/validator/val_utils.c:1276,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:1277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - v
    - s
    - p
    argTypes:
    - enum verbosity_value
    - char*
    - struct sock_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1272
    functionDepth: 1
    functionLinenumber: 1272
    functionLinenumberEnd: 1278
    functionName: sock_list_logentry
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 0
    functionsReached:
    - log_addr
    - verbose
    linkageType: ''
    returnType: void
    signature: void sock_list_logentry(enum verbosity_value v, const char* s, struct
      sock_list* p)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sock_list_logentry
      Src: /src/unbound/validator/val_utils.c:1287,1
    - Dst: verbose
      Src: /src/unbound/validator/val_utils.c:1289,1
    - Dst: sock_list_logentry
      Src: /src/unbound/validator/val_utils.c:1291,1
    - Dst: sock_list_insert
      Src: /src/unbound/validator/val_utils.c:1297,1
    - Dst: sock_list_prepend
      Src: /src/unbound/validator/val_utils.c:1299,1
    - Dst: sock_list_merge
      Src: /src/unbound/validator/val_utils.c:1300,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 4
    argNames:
    - blacklist
    - region
    - origin
    - cross
    argTypes:
    - struct sock_list**
    - struct regional*
    - struct sock_list*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1301
      start: 1280
    functionDepth: 2
    functionLinenumber: 1280
    functionLinenumberEnd: 1301
    functionName: val_blacklist
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 4
    functionsReached:
    - sock_list_merge
    - verbose
    - sock_list_insert
    - sock_list_logentry
    - sock_list_prepend
    linkageType: ''
    returnType: void
    signature: "void val_blacklist(struct sock_list** blacklist, struct regional*
      region,\n\tstruct sock_list* origin, int cross)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/unbound/validator/val_utils.c:1308,1
    - Dst: htons
      Src: /src/unbound/validator/val_utils.c:1310,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 18
    argCount: 2
    argNames:
    - rep
    - reason
    argTypes:
    - struct reply_info*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1324
      start: 1303
    functionDepth: 0
    functionLinenumber: 1303
    functionLinenumberEnd: 1324
    functionName: val_has_signed_nsecs
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 1
    functionsReached:
    - htons
    linkageType: ''
    returnType: int
    signature: int val_has_signed_nsecs(struct reply_info* rep, char** reason)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/unbound/validator/val_utils.c:1330,1
    - Dst: htons
      Src: /src/unbound/validator/val_utils.c:1332,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - rep
    - has_nsec
    - has_nsec3
    argTypes:
    - struct reply_info*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1338
      start: 1326
    functionDepth: 0
    functionLinenumber: 1326
    functionLinenumberEnd: 1338
    functionName: val_has_auth_nsecs
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 1
    functionsReached:
    - htons
    linkageType: ''
    returnType: void
    signature: void val_has_auth_nsecs(struct reply_info* rep, int* has_nsec, int*
      has_nsec3)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rrset_cache_lookup
      Src: /src/unbound/validator/val_utils.c:1346,1
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/validator/val_utils.c:1351,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/validator/val_utils.c:1354,1
    - Dst: dns_msg_create
      Src: /src/unbound/validator/val_utils.c:1358,1
    - Dst: UPDATE_TTL_FROM_RRSET
      Src: /src/unbound/validator/val_utils.c:1364,1
    - Dst: val_neg_getmsg
      Src: /src/unbound/validator/val_utils.c:1374,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 6
    argNames:
    - env
    - nm
    - nmlen
    - c
    - region
    - topname
    argTypes:
    - struct module_env*
    - uint8_t*
    - size_t
    - uint16_t
    - struct regional*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1377
      start: 1340
    functionDepth: 6
    functionLinenumber: 1340
    functionLinenumberEnd: 1377
    functionName: val_find_DS
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 1
    functionsReached:
    - UPDATE_TTL_FROM_RRSET
    - lock_rw_unlock
    - rrset_cache_lookup
    - dns_msg_create
    - val_neg_getmsg
    - packed_rrset_copy_region
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg * \nval_find_DS(struct module_env* env, uint8_t* nm,
      size_t nmlen, uint16_t c, \n\tstruct regional* region, uint8_t* topname)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dname_strict_subdomain_c
      Src: /src/unbound/validator/val_utils.c:1385,1
    - Dst: get_cname_target
      Src: /src/unbound/validator/val_utils.c:1387,1
    - Dst: memmove
      Src: /src/unbound/validator/val_utils.c:1397,1
    - Dst: memmove
      Src: /src/unbound/validator/val_utils.c:1398,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 4
    argNames:
    - cname
    - dname
    - out
    - outlen
    argTypes:
    - struct ub_packed_rrset_key*
    - struct ub_packed_rrset_key*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1400
      start: 1379
    functionDepth: 1
    functionLinenumber: 1379
    functionLinenumberEnd: 1400
    functionName: derive_cname_from_dname
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 1
    functionsReached:
    - get_cname_target
    - dname_strict_subdomain_c
    - memmove
    linkageType: ''
    returnType: int
    signature: "int derive_cname_from_dname(struct ub_packed_rrset_key* cname,\n\tstruct
      ub_packed_rrset_key* dname, uint8_t* out, size_t outlen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/validator/val_utils.c:1407,1
    - Dst: dname_valid
      Src: /src/unbound/validator/val_utils.c:1413,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/val_utils.c:1416,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - rrset
    - name
    argTypes:
    - struct ub_packed_rrset_key*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1417
      start: 1402
    functionDepth: 1
    functionLinenumber: 1402
    functionLinenumberEnd: 1417
    functionName: nsec_nextowner_subdomain
    functionSourceFile: /src/unbound/validator/val_utils.c
    functionUses: 3
    functionsReached:
    - dname_subdomain_c
    - dname_valid
    - ntohs
    linkageType: ''
    returnType: int
    signature: int nsec_nextowner_subdomain(struct ub_packed_rrset_key* rrset, uint8_t*
      name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - k
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 58
    functionName: rrset_get_ttl
    functionSourceFile: /src/unbound/validator/val_nsec.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t rrset_get_ttl(struct ub_packed_rrset_key* k)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - bitmap
    - len
    - type
    argTypes:
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 94
    functionName: nsecbitmap_has_type_rdata
    functionSourceFile: /src/unbound/validator/val_nsec.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int nsecbitmap_has_type_rdata(uint8_t* bitmap, size_t len, uint16_t
      type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_valid
      Src: /src/unbound/validator/val_nsec.c:104,1
    - Dst: nsecbitmap_has_type_rdata
      Src: /src/unbound/validator/val_nsec.c:107,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 2
    argNames:
    - nsec
    - type
    argTypes:
    - struct ub_packed_rrset_key*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 109
    functionName: nsec_has_type
    functionSourceFile: /src/unbound/validator/val_nsec.c
    functionUses: 1
    functionsReached:
    - nsecbitmap_has_type_rdata
    - dname_valid
    linkageType: ''
    returnType: int
    signature: int nsec_has_type(struct ub_packed_rrset_key* nsec, uint16_t type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_valid
      Src: /src/unbound/validator/val_nsec.c:130,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - nsec
    - nm
    - ln
    argTypes:
    - struct ub_packed_rrset_key*
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 137
    functionName: nsec_get_next
    functionSourceFile: /src/unbound/validator/val_nsec.c
    functionUses: 0
    functionsReached:
    - dname_valid
    linkageType: ''
    returnType: int
    signature: int nsec_get_next(struct ub_packed_rrset_key* nsec, uint8_t** nm, size_t*
      ln)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_nsec.c:152,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_nsec.c:153,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_nsec.c:153,1
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_nsec.c:155,1
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_nsec.c:160,1
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_nsec.c:166,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - nsec
    - qinfo
    argTypes:
    - struct ub_packed_rrset_key*
    - struct query_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 148
    functionDepth: 2
    functionLinenumber: 148
    functionLinenumberEnd: 173
    functionName: val_nsec_proves_no_ds
    functionSourceFile: /src/unbound/validator/val_nsec.c
    functionUses: 0
    functionsReached:
    - nsec_has_type
    - log_assert
    - ntohs
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status val_nsec_proves_no_ds(struct ub_packed_rrset_key*
      nsec, \n\tstruct query_info* qinfo)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rrset_check_sec_status
      Src: /src/unbound/validator/val_nsec.c:188,1
    - Dst: val_verify_rrset_entry
      Src: /src/unbound/validator/val_nsec.c:191,1
    - Dst: rrset_update_sec_status
      Src: /src/unbound/validator/val_nsec.c:195,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 9
    argNames:
    - env
    - ve
    - nsec
    - kkey
    - reason
    - reason_bogus
    - qstate
    - reasonbuf
    - reasonlen
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key*
    - struct key_entry_key*
    - char**
    - sldns_ede_code*
    - struct module_qstate*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 176
    functionDepth: 7
    functionLinenumber: 176
    functionLinenumberEnd: 199
    functionName: nsec_verify_rrset
    functionSourceFile: /src/unbound/validator/val_nsec.c
    functionUses: 0
    functionsReached:
    - val_verify_rrset_entry
    - rrset_update_sec_status
    - rrset_check_sec_status
    linkageType: ''
    returnType: int
    signature: "int nsec_verify_rrset(struct module_env* env, struct val_env* ve,\n\tstruct
      ub_packed_rrset_key* nsec, struct key_entry_key* kkey,\n\tchar** reason, sldns_ede_code*
      reason_bogus,\n\tstruct module_qstate* qstate, char* reasonbuf, size_t reasonlen)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: reply_find_rrset_section_ns
      Src: /src/unbound/validator/val_nsec.c:208,1
    - Dst: nsec_verify_rrset
      Src: /src/unbound/validator/val_nsec.c:223,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec.c:225,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_nsec.c:231,1
    - Dst: val_nsec_proves_no_ds
      Src: /src/unbound/validator/val_nsec.c:232,1
    - Dst: ub_packed_rrset_ttl
      Src: /src/unbound/validator/val_nsec.c:243,1
    - Dst: htons
      Src: /src/unbound/validator/val_nsec.c:258,1
    - Dst: nsec_verify_rrset
      Src: /src/unbound/validator/val_nsec.c:260,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec.c:262,1
    - Dst: nsec_proves_nodata
      Src: /src/unbound/validator/val_nsec.c:268,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec.c:269,1
    - Dst: rrset_get_ttl
      Src: /src/unbound/validator/val_nsec.c:271,1
    - Dst: dname_is_wild
      Src: /src/unbound/validator/val_nsec.c:272,1
    - Dst: val_nsec_proves_name_error
      Src: /src/unbound/validator/val_nsec.c:276,1
    - Dst: nsec_closest_encloser
      Src: /src/unbound/validator/val_nsec.c:277,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_nsec.c:285,1
    - Dst: val_nsec_proves_no_ds
      Src: /src/unbound/validator/val_nsec.c:294,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 57
    argCount: 11
    argNames:
    - env
    - ve
    - qinfo
    - rep
    - kkey
    - proof_ttl
    - reason
    - reason_bogus
    - qstate
    - reasonbuf
    - reasonlen
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct query_info*
    - struct reply_info*
    - struct key_entry_key*
    - time_t*
    - char**
    - sldns_ede_code*
    - struct module_qstate*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 201
    functionDepth: 8
    functionLinenumber: 201
    functionLinenumberEnd: 302
    functionName: val_nsec_prove_nodata_dsreply
    functionSourceFile: /src/unbound/validator/val_nsec.c
    functionUses: 1
    functionsReached:
    - rrset_get_ttl
    - dname_is_wild
    - val_nsec_proves_name_error
    - reply_find_rrset_section_ns
    - verbose
    - ub_packed_rrset_ttl
    - nsec_proves_nodata
    - nsec_verify_rrset
    - htons
    - query_dname_compare
    - nsec_closest_encloser
    - val_nsec_proves_no_ds
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status val_nsec_prove_nodata_dsreply(struct module_env* env,
      struct val_env* ve, \n\tstruct query_info* qinfo, struct reply_info* rep, \n\tstruct
      key_entry_key* kkey, time_t* proof_ttl, char** reason,\n\tsldns_ede_code* reason_bogus,
      struct module_qstate* qstate,\n\tchar* reasonbuf, size_t reasonlen)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_nsec.c:307,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_nsec.c:308,1
    - Dst: nsec_get_next
      Src: /src/unbound/validator/val_nsec.c:319,1
    - Dst: dname_strict_subdomain_c
      Src: /src/unbound/validator/val_nsec.c:321,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/validator/val_nsec.c:322,1
    - Dst: dname_is_wild
      Src: /src/unbound/validator/val_nsec.c:334,1
    - Dst: dname_remove_label
      Src: /src/unbound/validator/val_nsec.c:338,1
    - Dst: dname_strict_subdomain_c
      Src: /src/unbound/validator/val_nsec.c:343,1
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_nsec.c:346,1
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_nsec.c:350,1
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_nsec.c:351,1
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_nsec.c:355,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/validator/val_nsec.c:364,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/val_nsec.c:367,1
    - Dst: dname_is_wild
      Src: /src/unbound/validator/val_nsec.c:372,1
    - Dst: dname_remove_label
      Src: /src/unbound/validator/val_nsec.c:375,1
    - Dst: dname_strict_subdomain_c
      Src: /src/unbound/validator/val_nsec.c:376,1
    - Dst: dname_remove_label
      Src: /src/unbound/validator/val_nsec.c:381,1
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_nsec.c:391,1
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_nsec.c:396,1
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_nsec.c:406,1
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_nsec.c:407,1
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_nsec.c:410,1
    - Dst: dname_is_root
      Src: /src/unbound/validator/val_nsec.c:411,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 52
    argCount: 3
    argNames:
    - nsec
    - qinfo
    - wc
    argTypes:
    - struct ub_packed_rrset_key*
    - struct query_info*
    - uint8_t**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 304
    functionDepth: 2
    functionLinenumber: 304
    functionLinenumberEnd: 416
    functionName: nsec_proves_nodata
    functionSourceFile: /src/unbound/validator/val_nsec.c
    functionUses: 4
    functionsReached:
    - dname_subdomain_c
    - dname_is_root
    - dname_is_wild
    - dname_remove_label
    - nsec_get_next
    - dname_canonical_compare
    - query_dname_compare
    - log_assert
    - dname_strict_subdomain_c
    - nsec_has_type
    linkageType: ''
    returnType: int
    signature: "int nsec_proves_nodata(struct ub_packed_rrset_key* nsec, \n\tstruct
      query_info* qinfo, uint8_t** wc)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: nsec_get_next
      Src: /src/unbound/validator/val_nsec.c:424,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_nsec.c:428,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/val_nsec.c:435,1
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_nsec.c:436,1
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_nsec.c:437,1
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_nsec.c:438,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_nsec.c:443,1
    - Dst: dname_strict_subdomain_c
      Src: /src/unbound/validator/val_nsec.c:447,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/validator/val_nsec.c:450,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/validator/val_nsec.c:455,1
    - Dst: dname_strict_subdomain_c
      Src: /src/unbound/validator/val_nsec.c:456,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/validator/val_nsec.c:460,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/validator/val_nsec.c:461,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 22
    argCount: 2
    argNames:
    - nsec
    - qname
    argTypes:
    - struct ub_packed_rrset_key*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 418
    functionDepth: 2
    functionLinenumber: 418
    functionLinenumberEnd: 466
    functionName: val_nsec_proves_name_error
    functionSourceFile: /src/unbound/validator/val_nsec.c
    functionUses: 5
    functionsReached:
    - dname_subdomain_c
    - nsec_get_next
    - dname_canonical_compare
    - nsec_has_type
    - query_dname_compare
    - dname_strict_subdomain_c
    linkageType: ''
    returnType: int
    signature: int val_nsec_proves_name_error(struct ub_packed_rrset_key* nsec, uint8_t*
      qname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_nsec.c:471,1
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_nsec.c:472,1
    - Dst: nsec_has_type
      Src: /src/unbound/validator/val_nsec.c:473,1
    - Dst: dname_strict_subdomain_c
      Src: /src/unbound/validator/val_nsec.c:478,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/val_nsec.c:482,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - nsec
    - qinfo
    argTypes:
    - struct ub_packed_rrset_key*
    - struct query_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 468
    functionDepth: 2
    functionLinenumber: 468
    functionLinenumberEnd: 487
    functionName: val_nsec_proves_insecuredelegation
    functionSourceFile: /src/unbound/validator/val_nsec.c
    functionUses: 3
    functionsReached:
    - dname_subdomain_c
    - nsec_has_type
    - dname_strict_subdomain_c
    linkageType: ''
    returnType: int
    signature: "int val_nsec_proves_insecuredelegation(struct ub_packed_rrset_key*
      nsec, \n\tstruct query_info* qinfo)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nsec_get_next
      Src: /src/unbound/validator/val_nsec.c:495,1
    - Dst: dname_get_shared_topdomain
      Src: /src/unbound/validator/val_nsec.c:498,1
    - Dst: dname_get_shared_topdomain
      Src: /src/unbound/validator/val_nsec.c:499,1
    - Dst: dname_count_labels
      Src: /src/unbound/validator/val_nsec.c:500,1
    - Dst: dname_count_labels
      Src: /src/unbound/validator/val_nsec.c:500,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - qname
    - nsec
    argTypes:
    - uint8_t*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 489
    functionDepth: 2
    functionLinenumber: 489
    functionLinenumberEnd: 503
    functionName: nsec_closest_encloser
    functionSourceFile: /src/unbound/validator/val_nsec.c
    functionUses: 5
    functionsReached:
    - nsec_get_next
    - dname_get_shared_topdomain
    - dname_count_labels
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t * \nnsec_closest_encloser(uint8_t* qname, struct ub_packed_rrset_key*
      nsec)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: val_nsec_proves_name_error
      Src: /src/unbound/validator/val_nsec.c:512,1
    - Dst: nsec_closest_encloser
      Src: /src/unbound/validator/val_nsec.c:515,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_nsec.c:518,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - nsec
    - qinf
    - wc
    argTypes:
    - struct ub_packed_rrset_key*
    - struct query_info*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 505
    functionDepth: 3
    functionLinenumber: 505
    functionLinenumberEnd: 522
    functionName: val_nsec_proves_positive_wildcard
    functionSourceFile: /src/unbound/validator/val_nsec.c
    functionUses: 3
    functionsReached:
    - query_dname_compare
    - val_nsec_proves_name_error
    - nsec_closest_encloser
    linkageType: ''
    returnType: int
    signature: "int val_nsec_proves_positive_wildcard(struct ub_packed_rrset_key*
      nsec, \n\tstruct query_info* qinf, uint8_t* wc)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nsec_closest_encloser
      Src: /src/unbound/validator/val_nsec.c:531,1
    - Dst: dname_count_labels
      Src: /src/unbound/validator/val_nsec.c:541,1
    - Dst: dname_count_labels
      Src: /src/unbound/validator/val_nsec.c:541,1
    - Dst: dname_remove_labels
      Src: /src/unbound/validator/val_nsec.c:547,1
    - Dst: memmove
      Src: /src/unbound/validator/val_nsec.c:552,1
    - Dst: val_nsec_proves_name_error
      Src: /src/unbound/validator/val_nsec.c:553,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - nsec
    - qname
    - qnamelen
    argTypes:
    - struct ub_packed_rrset_key*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 524
    functionDepth: 3
    functionLinenumber: 524
    functionLinenumberEnd: 558
    functionName: val_nsec_proves_no_wc
    functionSourceFile: /src/unbound/validator/val_nsec.c
    functionUses: 2
    functionsReached:
    - val_nsec_proves_name_error
    - memmove
    - dname_remove_labels
    - nsec_closest_encloser
    - dname_count_labels
    linkageType: ''
    returnType: int
    signature: "int val_nsec_proves_no_wc(struct ub_packed_rrset_key* nsec, uint8_t*
      qname, \n\tsize_t qnamelen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/validator/val_kcache.c:52,1
    - Dst: log_err
      Src: /src/unbound/validator/val_kcache.c:56,1
    - Dst: slabhash_create
      Src: /src/unbound/validator/val_kcache.c:62,1
    - Dst: log_err
      Src: /src/unbound/validator/val_kcache.c:66,1
    - Dst: free
      Src: /src/unbound/validator/val_kcache.c:67,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 71
    functionName: key_cache_create
    functionSourceFile: /src/unbound/validator/val_kcache.c
    functionUses: 1
    functionsReached:
    - free
    - log_err
    - calloc
    - slabhash_create
    linkageType: ''
    returnType: struct key_cache
    signature: "struct key_cache * \nkey_cache_create(struct config_file* cfg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slabhash_delete
      Src: /src/unbound/validator/val_kcache.c:78,1
    - Dst: free
      Src: /src/unbound/validator/val_kcache.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - kcache
    argTypes:
    - struct key_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 80
    functionName: key_cache_delete
    functionSourceFile: /src/unbound/validator/val_kcache.c
    functionUses: 1
    functionsReached:
    - free
    - slabhash_delete
    linkageType: ''
    returnType: void
    signature: void key_cache_delete(struct key_cache* kcache)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: key_entry_copy
      Src: /src/unbound/validator/val_kcache.c:86,1
    - Dst: key_entry_hash
      Src: /src/unbound/validator/val_kcache.c:89,1
    - Dst: slabhash_insert
      Src: /src/unbound/validator/val_kcache.c:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - kcache
    - kkey
    - copy_reason
    argTypes:
    - struct key_cache*
    - struct key_entry_key*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 92
    functionName: key_cache_insert
    functionSourceFile: /src/unbound/validator/val_kcache.c
    functionUses: 3
    functionsReached:
    - slabhash_insert
    - key_entry_hash
    - key_entry_copy
    linkageType: ''
    returnType: void
    signature: "void key_cache_insert(struct key_cache* kcache, struct key_entry_key*
      kkey,\n\tint copy_reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: key_entry_hash
      Src: /src/unbound/validator/val_kcache.c:115,1
    - Dst: slabhash_lookup
      Src: /src/unbound/validator/val_kcache.c:116,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - kcache
    - name
    - namelen
    - key_class
    - wr
    argTypes:
    - struct key_cache*
    - uint8_t*
    - size_t
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 105
    functionDepth: 2
    functionLinenumber: 105
    functionLinenumberEnd: 120
    functionName: key_cache_search
    functionSourceFile: /src/unbound/validator/val_kcache.c
    functionUses: 0
    functionsReached:
    - key_entry_hash
    - slabhash_lookup
    linkageType: ''
    returnType: struct key_entry_key
    signature: "struct key_entry_key *\nkey_cache_search(struct key_cache* kcache,
      uint8_t* name, size_t namelen, \n\tuint16_t key_class, int wr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: key_cache_search
      Src: /src/unbound/validator/val_kcache.c:128,1
    - Dst: key_entry_copy_toregion
      Src: /src/unbound/validator/val_kcache.c:137,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/validator/val_kcache.c:138,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/validator/val_kcache.c:141,1
    - Dst: dname_is_root
      Src: /src/unbound/validator/val_kcache.c:144,1
    - Dst: dname_remove_label
      Src: /src/unbound/validator/val_kcache.c:146,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 6
    argNames:
    - kcache
    - name
    - namelen
    - key_class
    - region
    - now
    argTypes:
    - struct key_cache*
    - uint8_t*
    - size_t
    - uint16_t
    - struct regional*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 122
    functionDepth: 3
    functionLinenumber: 122
    functionLinenumberEnd: 149
    functionName: key_cache_obtain
    functionSourceFile: /src/unbound/validator/val_kcache.c
    functionUses: 1
    functionsReached:
    - dname_is_root
    - key_cache_search
    - lock_rw_unlock
    - dname_remove_label
    - key_entry_copy_toregion
    linkageType: ''
    returnType: struct key_entry_key
    signature: "struct key_entry_key * \nkey_cache_obtain(struct key_cache* kcache,
      uint8_t* name, size_t namelen, \n\tuint16_t key_class, struct regional* region,
      time_t now)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: slabhash_get_mem
      Src: /src/unbound/validator/val_kcache.c:154,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - kcache
    argTypes:
    - struct key_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 155
    functionName: key_cache_get_mem
    functionSourceFile: /src/unbound/validator/val_kcache.c
    functionUses: 1
    functionsReached:
    - slabhash_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t key_cache_get_mem(struct key_cache* kcache)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: key_entry_hash
      Src: /src/unbound/validator/val_kcache.c:165,1
    - Dst: slabhash_remove
      Src: /src/unbound/validator/val_kcache.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - kcache
    - name
    - namelen
    - key_class
    argTypes:
    - struct key_cache*
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 167
    functionName: key_cache_remove
    functionSourceFile: /src/unbound/validator/val_kcache.c
    functionUses: 1
    functionsReached:
    - key_entry_hash
    - slabhash_remove
    linkageType: ''
    returnType: void
    signature: "void key_cache_remove(struct key_cache* kcache,\n\tuint8_t* name,
      size_t namelen, uint16_t key_class)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rrset
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 126
    functionName: rrset_get_count
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t rrset_get_count(struct ub_packed_rrset_key* rrset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_nsec3.c:134,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - rrset
    - r
    argTypes:
    - struct ub_packed_rrset_key*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 138
    functionName: nsec3_unknown_flags
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int nsec3_unknown_flags(struct ub_packed_rrset_key* rrset, int r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_nsec3.c:145,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - rrset
    - r
    argTypes:
    - struct ub_packed_rrset_key*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 140
    functionDepth: 1
    functionLinenumber: 140
    functionLinenumberEnd: 149
    functionName: nsec3_has_optout
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 1
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int nsec3_has_optout(struct ub_packed_rrset_key* rrset, int r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_nsec3.c:157,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - rrset
    - r
    argTypes:
    - struct ub_packed_rrset_key*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 161
    functionName: nsec3_get_algo
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int nsec3_get_algo(struct ub_packed_rrset_key* rrset, int r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_nsec3.c:169,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - rrset
    - r
    argTypes:
    - struct ub_packed_rrset_key*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 177
    functionName: nsec3_known_algo
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int nsec3_known_algo(struct ub_packed_rrset_key* rrset, int r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_nsec3.c:186,1
    - Dst: memmove
      Src: /src/unbound/validator/val_nsec3.c:189,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_nsec3.c:190,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - rrset
    - r
    argTypes:
    - struct ub_packed_rrset_key*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 180
    functionDepth: 1
    functionLinenumber: 180
    functionLinenumberEnd: 192
    functionName: nsec3_get_iter
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - ntohs
    - log_assert
    - memmove
    linkageType: ''
    returnType: size_t
    signature: size_t nsec3_get_iter(struct ub_packed_rrset_key* rrset, int r)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_nsec3.c:201,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - rrset
    - r
    - salt
    - saltlen
    argTypes:
    - struct ub_packed_rrset_key*
    - int
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 215
    functionName: nsec3_get_salt
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int nsec3_get_salt(struct ub_packed_rrset_key* rrset, int r,\n\tuint8_t**
      salt, size_t* saltlen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nsec3_known_algo
      Src: /src/unbound/validator/val_nsec3.c:220,1
    - Dst: nsec3_unknown_flags
      Src: /src/unbound/validator/val_nsec3.c:220,1
    - Dst: nsec3_get_salt
      Src: /src/unbound/validator/val_nsec3.c:222,1
    - Dst: nsec3_get_algo
      Src: /src/unbound/validator/val_nsec3.c:224,1
    - Dst: nsec3_get_iter
      Src: /src/unbound/validator/val_nsec3.c:225,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 6
    argNames:
    - rrset
    - r
    - algo
    - iter
    - salt
    - saltlen
    argTypes:
    - struct ub_packed_rrset_key*
    - int
    - int*
    - size_t*
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 217
    functionDepth: 2
    functionLinenumber: 217
    functionLinenumberEnd: 227
    functionName: nsec3_get_params
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 2
    functionsReached:
    - nsec3_unknown_flags
    - nsec3_get_algo
    - nsec3_get_iter
    - nsec3_get_salt
    - nsec3_known_algo
    linkageType: ''
    returnType: int
    signature: "int nsec3_get_params(struct ub_packed_rrset_key* rrset, int r,\n\tint*
      algo, size_t* iter, uint8_t** salt, size_t* saltlen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_nsec3.c:236,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 4
    argNames:
    - rrset
    - r
    - next
    - nextlen
    argTypes:
    - struct ub_packed_rrset_key*
    - int
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 256
    functionName: nsec3_get_nextowner
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int nsec3_get_nextowner(struct ub_packed_rrset_key* rrset, int r,\n\tuint8_t**
      next, size_t* nextlen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_b32_ntop_extended_hex
      Src: /src/unbound/validator/val_nsec3.c:265,1
    - Dst: memmove
      Src: /src/unbound/validator/val_nsec3.c:272,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 6
    argNames:
    - hash
    - hashlen
    - zone
    - zonelen
    - buf
    - max
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 258
    functionDepth: 3
    functionLinenumber: 258
    functionLinenumberEnd: 274
    functionName: nsec3_hash_to_b32
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 2
    functionsReached:
    - sldns_b32_ntop_extended_hex
    - memmove
    linkageType: ''
    returnType: size_t
    signature: "size_t nsec3_hash_to_b32(uint8_t* hash, size_t hashlen, uint8_t* zone,\n\tsize_t
      zonelen, uint8_t* buf, size_t max)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nsec3_get_nextowner
      Src: /src/unbound/validator/val_nsec3.c:281,1
    - Dst: dname_remove_label
      Src: /src/unbound/validator/val_nsec3.c:286,1
    - Dst: nsec3_hash_to_b32
      Src: /src/unbound/validator/val_nsec3.c:287,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - rrset
    - r
    - buf
    - max
    argTypes:
    - struct ub_packed_rrset_key*
    - int
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 288
      start: 276
    functionDepth: 4
    functionLinenumber: 276
    functionLinenumberEnd: 288
    functionName: nsec3_get_nextowner_b32
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 1
    functionsReached:
    - nsec3_hash_to_b32
    - nsec3_get_nextowner
    - dname_remove_label
    linkageType: ''
    returnType: size_t
    signature: "size_t nsec3_get_nextowner_b32(struct ub_packed_rrset_key* rrset,
      int r,\n\tuint8_t* buf, size_t max)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_nsec3.c:297,1
    - Dst: nsecbitmap_has_type_rdata
      Src: /src/unbound/validator/val_nsec3.c:311,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - rrset
    - r
    - type
    argTypes:
    - struct ub_packed_rrset_key*
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 312
    functionName: nsec3_has_type
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 2
    functionsReached:
    - nsecbitmap_has_type_rdata
    - log_assert
    linkageType: ''
    returnType: int
    signature: int nsec3_has_type(struct ub_packed_rrset_key* rrset, int r, uint16_t
      type)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/validator/val_nsec3.c:345,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_nsec3.c:346,1
    - Dst: dname_remove_label
      Src: /src/unbound/validator/val_nsec3.c:352,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_nsec3.c:353,1
    - Dst: rrset_get_count
      Src: /src/unbound/validator/val_nsec3.c:358,1
    - Dst: nsec3_unknown_flags
      Src: /src/unbound/validator/val_nsec3.c:360,1
    - Dst: nsec3_known_algo
      Src: /src/unbound/validator/val_nsec3.c:361,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 23
    argCount: 3
    argNames:
    - filter
    - rrsetnum
    - rrnum
    argTypes:
    - struct nsec3_filter*
    - size_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 334
    functionDepth: 2
    functionLinenumber: 334
    functionLinenumberEnd: 370
    functionName: filter_next
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - nsec3_unknown_flags
    - dname_remove_label
    - rrset_get_count
    - query_dname_compare
    - nsec3_known_algo
    - ntohs
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: 'struct ub_packed_rrset_key *

      filter_next(struct nsec3_filter* filter, size_t* rrsetnum, int* rrnum)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: filter_next
      Src: /src/unbound/validator/val_nsec3.c:385,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - filter
    - rrsetnum
    - rrnum
    argTypes:
    - struct nsec3_filter*
    - size_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 380
    functionDepth: 3
    functionLinenumber: 380
    functionLinenumberEnd: 386
    functionName: filter_first
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - filter_next
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: 'struct ub_packed_rrset_key *

      filter_first(struct nsec3_filter* filter, size_t* rrsetnum, int* rrnum)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rrset_get_count
      Src: /src/unbound/validator/val_nsec3.c:393,1
    - Dst: nsec3_unknown_flags
      Src: /src/unbound/validator/val_nsec3.c:394,1
    - Dst: nsec3_known_algo
      Src: /src/unbound/validator/val_nsec3.c:394,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 389
    functionDepth: 2
    functionLinenumber: 389
    functionLinenumberEnd: 398
    functionName: nsec3_rrset_has_known
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - nsec3_known_algo
    - nsec3_unknown_flags
    - rrset_get_count
    linkageType: ''
    returnType: int
    signature: int nsec3_rrset_has_known(struct ub_packed_rrset_key* s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/validator/val_nsec3.c:427,1
    - Dst: ntohs
      Src: /src/unbound/validator/val_nsec3.c:428,1
    - Dst: nsec3_rrset_has_known
      Src: /src/unbound/validator/val_nsec3.c:431,1
    - Dst: dname_remove_label
      Src: /src/unbound/validator/val_nsec3.c:438,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/val_nsec3.c:441,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/val_nsec3.c:442,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_nsec3.c:445,1
    - Dst: dname_is_root
      Src: /src/unbound/validator/val_nsec3.c:446,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 21
    argCount: 4
    argNames:
    - filter
    - list
    - num
    - qinfo
    argTypes:
    - struct nsec3_filter*
    - struct ub_packed_rrset_key**
    - size_t
    - struct query_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 413
    functionDepth: 3
    functionLinenumber: 413
    functionLinenumberEnd: 452
    functionName: filter_init
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    - dname_is_root
    - nsec3_rrset_has_known
    - dname_remove_label
    - query_dname_compare
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void filter_init(struct nsec3_filter* filter, struct ub_packed_rrset_key**
      list,\n\tsize_t num, struct query_info* qinfo)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: filter_first
      Src: /src/unbound/validator/val_nsec3.c:469,1
    - Dst: filter_next
      Src: /src/unbound/validator/val_nsec3.c:470,1
    - Dst: nsec3_get_algo
      Src: /src/unbound/validator/val_nsec3.c:472,1
    - Dst: nsec3_get_iter
      Src: /src/unbound/validator/val_nsec3.c:473,1
    - Dst: nsec3_get_salt
      Src: /src/unbound/validator/val_nsec3.c:474,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:476,1
    - Dst: nsec3_get_algo
      Src: /src/unbound/validator/val_nsec3.c:485,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:486,1
    - Dst: nsec3_get_iter
      Src: /src/unbound/validator/val_nsec3.c:491,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:492,1
    - Dst: nsec3_get_salt
      Src: /src/unbound/validator/val_nsec3.c:497,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:498,1
    - Dst: memcmp
      Src: /src/unbound/validator/val_nsec3.c:504,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:505,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 2
    argNames:
    - flt
    - reason
    argTypes:
    - struct nsec3_filter*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 455
    functionDepth: 4
    functionLinenumber: 455
    functionLinenumberEnd: 513
    functionName: param_set_same
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - filter_first
    - verbose
    - nsec3_get_algo
    - nsec3_get_iter
    - memcmp
    - nsec3_get_salt
    - filter_next
    linkageType: ''
    returnType: int
    signature: int param_set_same(struct nsec3_filter* flt, char** reason)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_nsec3.c:525,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - ve
    - bits
    argTypes:
    - struct val_env*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 533
    functionName: get_max_iter
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: size_t
    signature: size_t get_max_iter(struct val_env* ve, size_t bits)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: key_entry_keysize
      Src: /src/unbound/validator/val_nsec3.c:550,1
    - Dst: get_max_iter
      Src: /src/unbound/validator/val_nsec3.c:551,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:552,1
    - Dst: filter_first
      Src: /src/unbound/validator/val_nsec3.c:555,1
    - Dst: filter_next
      Src: /src/unbound/validator/val_nsec3.c:556,1
    - Dst: nsec3_get_iter
      Src: /src/unbound/validator/val_nsec3.c:557,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - ve
    - filter
    - kkey
    argTypes:
    - struct val_env*
    - struct nsec3_filter*
    - struct key_entry_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 542
    functionDepth: 4
    functionLinenumber: 542
    functionLinenumberEnd: 561
    functionName: nsec3_iteration_count_high
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - filter_first
    - verbose
    - nsec3_get_iter
    - key_entry_keysize
    - get_max_iter
    - filter_next
    linkageType: ''
    returnType: int
    signature: "int nsec3_iteration_count_high(struct val_env* ve, struct nsec3_filter*
      filter, \n\tstruct key_entry_key* kkey)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_nsec3.c:571,1
    - Dst: nsec3_get_algo
      Src: /src/unbound/validator/val_nsec3.c:576,1
    - Dst: nsec3_get_algo
      Src: /src/unbound/validator/val_nsec3.c:577,1
    - Dst: nsec3_get_algo
      Src: /src/unbound/validator/val_nsec3.c:578,1
    - Dst: nsec3_get_algo
      Src: /src/unbound/validator/val_nsec3.c:579,1
    - Dst: nsec3_get_iter
      Src: /src/unbound/validator/val_nsec3.c:583,1
    - Dst: nsec3_get_iter
      Src: /src/unbound/validator/val_nsec3.c:584,1
    - Dst: nsec3_get_iter
      Src: /src/unbound/validator/val_nsec3.c:585,1
    - Dst: nsec3_get_iter
      Src: /src/unbound/validator/val_nsec3.c:586,1
    - Dst: nsec3_get_salt
      Src: /src/unbound/validator/val_nsec3.c:590,1
    - Dst: nsec3_get_salt
      Src: /src/unbound/validator/val_nsec3.c:591,1
    - Dst: memcmp
      Src: /src/unbound/validator/val_nsec3.c:601,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 2
    argNames:
    - c1
    - c2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 564
    functionDepth: 2
    functionLinenumber: 564
    functionLinenumberEnd: 602
    functionName: nsec3_hash_cmp
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - nsec3_get_algo
    - nsec3_get_iter
    - query_dname_compare
    - memcmp
    - nsec3_get_salt
    linkageType: ''
    returnType: int
    signature: int nsec3_hash_cmp(const void* c1, const void* c2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/validator/val_nsec3.c:608,1
    - Dst: rbtree_init
      Src: /src/unbound/validator/val_nsec3.c:611,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ct
    - region
    argTypes:
    - struct nsec3_cache_table*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 613
    functionName: nsec3_cache_table_init
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 7
    functionsReached:
    - rbtree_init
    - regional_alloc
    linkageType: ''
    returnType: int
    signature: int nsec3_cache_table_init(struct nsec3_cache_table* ct, struct regional*
      region)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_clear
      Src: /src/unbound/validator/val_nsec3.c:621,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_nsec3.c:622,1
    - Dst: query_dname_tolower
      Src: /src/unbound/validator/val_nsec3.c:623,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_nsec3.c:623,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_nsec3.c:625,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/validator/val_nsec3.c:626,1
    - Dst: nsec3_hash_algo_size_supported
      Src: /src/unbound/validator/val_nsec3.c:627,1
    - Dst: log_err
      Src: /src/unbound/validator/val_nsec3.c:629,1
    - Dst: secalgo_nsec3_hash
      Src: /src/unbound/validator/val_nsec3.c:634,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_nsec3.c:634,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/validator/val_nsec3.c:635,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/validator/val_nsec3.c:638,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_nsec3.c:639,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_nsec3.c:641,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/validator/val_nsec3.c:642,1
    - Dst: secalgo_nsec3_hash
      Src: /src/unbound/validator/val_nsec3.c:643,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_nsec3.c:644,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/validator/val_nsec3.c:645,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 9
    argNames:
    - buf
    - nm
    - nmlen
    - algo
    - iter
    - salt
    - saltlen
    - res
    - max
    argTypes:
    - sldns_buffer*
    - uint8_t*
    - size_t
    - int
    - size_t
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 615
    functionDepth: 5
    functionLinenumber: 615
    functionLinenumberEnd: 649
    functionName: nsec3_get_hashed
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 1
    functionsReached:
    - log_err
    - sldns_buffer_write
    - secalgo_nsec3_hash
    - sldns_buffer_flip
    - sldns_buffer_limit
    - sldns_buffer_clear
    - nsec3_hash_algo_size_supported
    - query_dname_tolower
    - sldns_buffer_begin
    linkageType: ''
    returnType: size_t
    signature: "size_t nsec3_get_hashed(sldns_buffer* buf, uint8_t* nm, size_t nmlen,
      int algo, \n\tsize_t iter, uint8_t* salt, size_t saltlen, uint8_t* res, size_t
      max)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nsec3_get_algo
      Src: /src/unbound/validator/val_nsec3.c:656,1
    - Dst: nsec3_get_iter
      Src: /src/unbound/validator/val_nsec3.c:657,1
    - Dst: nsec3_get_salt
      Src: /src/unbound/validator/val_nsec3.c:660,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/validator/val_nsec3.c:663,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_nsec3.c:664,1
    - Dst: query_dname_tolower
      Src: /src/unbound/validator/val_nsec3.c:665,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_nsec3.c:665,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_nsec3.c:666,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/validator/val_nsec3.c:667,1
    - Dst: nsec3_hash_algo_size_supported
      Src: /src/unbound/validator/val_nsec3.c:668,1
    - Dst: log_err
      Src: /src/unbound/validator/val_nsec3.c:670,1
    - Dst: regional_alloc
      Src: /src/unbound/validator/val_nsec3.c:673,1
    - Dst: secalgo_nsec3_hash
      Src: /src/unbound/validator/val_nsec3.c:676,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_nsec3.c:676,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/validator/val_nsec3.c:677,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/validator/val_nsec3.c:679,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_nsec3.c:680,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/validator/val_nsec3.c:681,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/validator/val_nsec3.c:682,1
    - Dst: secalgo_nsec3_hash
      Src: /src/unbound/validator/val_nsec3.c:683,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_nsec3.c:684,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/validator/val_nsec3.c:685,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - region
    - buf
    - c
    argTypes:
    - struct regional*
    - sldns_buffer*
    - struct nsec3_cached_hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 688
      start: 652
    functionDepth: 5
    functionLinenumber: 652
    functionLinenumberEnd: 688
    functionName: nsec3_calc_hash
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - log_err
    - sldns_buffer_write
    - secalgo_nsec3_hash
    - nsec3_get_algo
    - sldns_buffer_flip
    - sldns_buffer_clear
    - nsec3_get_iter
    - regional_alloc
    - sldns_buffer_limit
    - nsec3_hash_algo_size_supported
    - query_dname_tolower
    - sldns_buffer_begin
    - nsec3_get_salt
    linkageType: ''
    returnType: int
    signature: "int nsec3_calc_hash(struct regional* region, sldns_buffer* buf, \n\tstruct
      nsec3_cached_hash* c)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_clear
      Src: /src/unbound/validator/val_nsec3.c:696,1
    - Dst: sldns_b32_ntop_extended_hex
      Src: /src/unbound/validator/val_nsec3.c:697,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_nsec3.c:698,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/validator/val_nsec3.c:698,1
    - Dst: log_err
      Src: /src/unbound/validator/val_nsec3.c:700,1
    - Dst: regional_alloc_init
      Src: /src/unbound/validator/val_nsec3.c:704,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_nsec3.c:704,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - region
    - buf
    - c
    argTypes:
    - struct regional*
    - sldns_buffer*
    - struct nsec3_cached_hash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 709
      start: 691
    functionDepth: 3
    functionLinenumber: 691
    functionLinenumberEnd: 709
    functionName: nsec3_calc_b32
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - log_err
    - sldns_b32_ntop_extended_hex
    - sldns_buffer_limit
    - sldns_buffer_clear
    - sldns_buffer_begin
    - regional_alloc_init
    linkageType: ''
    returnType: int
    signature: "int nsec3_calc_b32(struct regional* region, sldns_buffer* buf, \n\tstruct
      nsec3_cached_hash* c)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_search
      Src: /src/unbound/validator/val_nsec3.c:728,1
    - Dst: regional_alloc
      Src: /src/unbound/validator/val_nsec3.c:734,1
    - Dst: nsec3_calc_hash
      Src: /src/unbound/validator/val_nsec3.c:741,1
    - Dst: nsec3_calc_b32
      Src: /src/unbound/validator/val_nsec3.c:744,1
    - Dst: rbtree_insert
      Src: /src/unbound/validator/val_nsec3.c:752,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_nsec3.c:753,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 8
    argNames:
    - table
    - region
    - buf
    - nsec3
    - rr
    - dname
    - dname_len
    - hash
    argTypes:
    - rbtree_type*
    - struct regional*
    - sldns_buffer*
    - struct ub_packed_rrset_key*
    - int
    - uint8_t*
    - size_t
    - struct nsec3_cached_hash**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 711
    functionDepth: 6
    functionLinenumber: 711
    functionLinenumberEnd: 756
    functionName: nsec3_hash_name
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - regional_alloc
    - nsec3_calc_b32
    - log_assert
    - rbtree_insert
    - rbtree_search
    - nsec3_calc_hash
    linkageType: ''
    returnType: int
    signature: "int nsec3_hash_name(rbtree_type* table, struct regional* region, sldns_buffer*
      buf,\n\tstruct ub_packed_rrset_key* nsec3, int rr, uint8_t* dname, \n\tsize_t
      dname_len, struct nsec3_cached_hash** hash)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tolower
      Src: /src/unbound/validator/val_nsec3.c:766,1
    - Dst: tolower
      Src: /src/unbound/validator/val_nsec3.c:766,1
    - Dst: tolower
      Src: /src/unbound/validator/val_nsec3.c:767,1
    - Dst: tolower
      Src: /src/unbound/validator/val_nsec3.c:767,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - lab1
    - lab2
    - lablen
    argTypes:
    - uint8_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 761
    functionDepth: 0
    functionLinenumber: 761
    functionLinenumberEnd: 775
    functionName: label_compare_lower
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - tolower
    linkageType: ''
    returnType: int
    signature: int label_compare_lower(uint8_t* lab1, uint8_t* lab2, size_t lablen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: label_compare_lower
      Src: /src/unbound/validator/val_nsec3.c:799,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_nsec3.c:800,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 3
    argNames:
    - flt
    - hash
    - s
    argTypes:
    - struct nsec3_filter*
    - struct nsec3_cached_hash*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 804
    functionName: nsec3_hash_matches_owner
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - label_compare_lower
    - query_dname_compare
    linkageType: ''
    returnType: int
    signature: "int nsec3_hash_matches_owner(struct nsec3_filter* flt, \n\tstruct
      nsec3_cached_hash* hash, struct ub_packed_rrset_key* s)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: filter_first
      Src: /src/unbound/validator/val_nsec3.c:833,1
    - Dst: filter_next
      Src: /src/unbound/validator/val_nsec3.c:834,1
    - Dst: nsec3_hash_name
      Src: /src/unbound/validator/val_nsec3.c:843,1
    - Dst: log_err
      Src: /src/unbound/validator/val_nsec3.c:846,1
    - Dst: nsec3_hash_matches_owner
      Src: /src/unbound/validator/val_nsec3.c:855,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 8
    argNames:
    - env
    - flt
    - ct
    - nm
    - nmlen
    - rrset
    - rr
    - calculations
    argTypes:
    - struct module_env*
    - struct nsec3_filter*
    - struct nsec3_cache_table*
    - uint8_t*
    - size_t
    - struct ub_packed_rrset_key**
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 819
    functionDepth: 7
    functionLinenumber: 819
    functionLinenumberEnd: 865
    functionName: find_matching_nsec3
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - log_err
    - filter_first
    - nsec3_hash_name
    - nsec3_hash_matches_owner
    - filter_next
    linkageType: ''
    returnType: int
    signature: "int find_matching_nsec3(struct module_env* env, struct nsec3_filter*
      flt,\n\tstruct nsec3_cache_table* ct, uint8_t* nm, size_t nmlen,\n\tstruct ub_packed_rrset_key**
      rrset, int* rr,\n\tint* calculations)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: nsec3_get_nextowner
      Src: /src/unbound/validator/val_nsec3.c:874,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_nsec3.c:883,1
    - Dst: label_compare_lower
      Src: /src/unbound/validator/val_nsec3.c:888,1
    - Dst: memcmp
      Src: /src/unbound/validator/val_nsec3.c:890,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/validator/val_nsec3.c:894,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/validator/val_nsec3.c:895,1
    - Dst: sldns_b32_pton_extended_hex
      Src: /src/unbound/validator/val_nsec3.c:896,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/validator/val_nsec3.c:897,1
    - Dst: memcmp
      Src: /src/unbound/validator/val_nsec3.c:907,1
    - Dst: memcmp
      Src: /src/unbound/validator/val_nsec3.c:908,1
    - Dst: memcmp
      Src: /src/unbound/validator/val_nsec3.c:909,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 20
    argCount: 5
    argNames:
    - zone
    - hash
    - rrset
    - rr
    - buf
    argTypes:
    - uint8_t*
    - struct nsec3_cached_hash*
    - struct ub_packed_rrset_key*
    - int
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 867
    functionDepth: 2
    functionLinenumber: 867
    functionLinenumberEnd: 913
    functionName: nsec3_covers
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 1
    functionsReached:
    - nsec3_get_nextowner
    - label_compare_lower
    - sldns_buffer_limit
    - sldns_buffer_clear
    - sldns_b32_pton_extended_hex
    - query_dname_compare
    - sldns_buffer_begin
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int nsec3_covers(uint8_t* zone, struct nsec3_cached_hash* hash,\n\tstruct
      ub_packed_rrset_key* rrset, int rr, sldns_buffer* buf)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: filter_first
      Src: /src/unbound/validator/val_nsec3.c:943,1
    - Dst: filter_next
      Src: /src/unbound/validator/val_nsec3.c:944,1
    - Dst: nsec3_hash_name
      Src: /src/unbound/validator/val_nsec3.c:953,1
    - Dst: log_err
      Src: /src/unbound/validator/val_nsec3.c:956,1
    - Dst: nsec3_covers
      Src: /src/unbound/validator/val_nsec3.c:965,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 8
    argNames:
    - env
    - flt
    - ct
    - nm
    - nmlen
    - rrset
    - rr
    - calculations
    argTypes:
    - struct module_env*
    - struct nsec3_filter*
    - struct nsec3_cache_table*
    - uint8_t*
    - size_t
    - struct ub_packed_rrset_key**
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 976
      start: 929
    functionDepth: 7
    functionLinenumber: 929
    functionLinenumberEnd: 976
    functionName: find_covering_nsec3
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - log_err
    - filter_first
    - nsec3_hash_name
    - nsec3_covers
    - filter_next
    linkageType: ''
    returnType: int
    signature: "int find_covering_nsec3(struct module_env* env, struct nsec3_filter*
      flt,\n\tstruct nsec3_cache_table* ct, uint8_t* nm, size_t nmlen,\n\tstruct ub_packed_rrset_key**
      rrset, int* rr,\n\tint* calculations)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_subdomain_c
      Src: /src/unbound/validator/val_nsec3.c:1008,1
    - Dst: find_matching_nsec3
      Src: /src/unbound/validator/val_nsec3.c:1013,1
    - Dst: dname_remove_label
      Src: /src/unbound/validator/val_nsec3.c:1019,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 6
    argNames:
    - env
    - flt
    - ct
    - qinfo
    - ce
    - calculations
    argTypes:
    - struct module_env*
    - struct nsec3_filter*
    - struct nsec3_cache_table*
    - struct query_info*
    - struct ce_response*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 991
    functionDepth: 8
    functionLinenumber: 991
    functionLinenumberEnd: 1022
    functionName: nsec3_find_closest_encloser
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    - find_matching_nsec3
    - dname_remove_label
    linkageType: ''
    returnType: int
    signature: "int nsec3_find_closest_encloser(struct module_env* env, struct nsec3_filter*
      flt,\n\tstruct nsec3_cache_table* ct, struct query_info* qinfo,\n\tstruct ce_response*
      ce, int* calculations)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/validator/val_nsec3.c:1039,1
    - Dst: dname_count_labels
      Src: /src/unbound/validator/val_nsec3.c:1039,1
    - Dst: dname_remove_labels
      Src: /src/unbound/validator/val_nsec3.c:1043,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - qname
    - qnamelen
    - ce
    - nm
    - nmlen
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1044
      start: 1035
    functionDepth: 1
    functionLinenumber: 1035
    functionLinenumberEnd: 1044
    functionName: next_closer
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - dname_count_labels
    - dname_remove_labels
    linkageType: ''
    returnType: void
    signature: "void next_closer(uint8_t* qname, size_t qnamelen, uint8_t* ce, \n\tuint8_t**
      nm, size_t* nmlen)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/validator/val_nsec3.c:1073,1
    - Dst: nsec3_find_closest_encloser
      Src: /src/unbound/validator/val_nsec3.c:1075,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1077,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1083,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1090,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/val_nsec3.c:1094,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_nsec3.c:1096,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1098,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_nsec3.c:1110,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_nsec3.c:1111,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_nsec3.c:1112,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1113,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1117,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_nsec3.c:1121,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1122,1
    - Dst: next_closer
      Src: /src/unbound/validator/val_nsec3.c:1128,1
    - Dst: find_covering_nsec3
      Src: /src/unbound/validator/val_nsec3.c:1129,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1132,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1138,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1145,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 7
    argNames:
    - env
    - flt
    - ct
    - qinfo
    - prove_does_not_exist
    - ce
    - calculations
    argTypes:
    - struct module_env*
    - struct nsec3_filter*
    - struct nsec3_cache_table*
    - struct query_info*
    - int
    - struct ce_response*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1065
    functionDepth: 9
    functionLinenumber: 1065
    functionLinenumberEnd: 1150
    functionName: nsec3_prove_closest_encloser
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - find_covering_nsec3
    - log_nametypeclass
    - verbose
    - nsec3_has_type
    - nsec3_find_closest_encloser
    - query_dname_compare
    - memset
    - next_closer
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status nsec3_prove_closest_encloser(struct module_env* env,
      struct nsec3_filter* flt,\n\tstruct nsec3_cache_table* ct, struct query_info*
      qinfo,\n\tint prove_does_not_exist, struct ce_response* ce, int* calculations)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/validator/val_nsec3.c:1160,1
    - Dst: log_err
      Src: /src/unbound/validator/val_nsec3.c:1162,1
    - Dst: memmove
      Src: /src/unbound/validator/val_nsec3.c:1167,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - region
    - ce
    - celen
    - len
    argTypes:
    - struct regional*
    - uint8_t*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1170
      start: 1153
    functionDepth: 1
    functionLinenumber: 1153
    functionLinenumberEnd: 1170
    functionName: nsec3_ce_wildcard
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - log_err
    - regional_alloc
    - memmove
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *\nnsec3_ce_wildcard(struct regional* region, uint8_t* ce,
      size_t celen,\n\tsize_t* len)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: nsec3_prove_closest_encloser
      Src: /src/unbound/validator/val_nsec3.c:1187,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1190,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1193,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1196,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/val_nsec3.c:1200,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_nsec3.c:1204,1
    - Dst: nsec3_ce_wildcard
      Src: /src/unbound/validator/val_nsec3.c:1205,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1207,1
    - Dst: find_covering_nsec3
      Src: /src/unbound/validator/val_nsec3.c:1211,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1213,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1219,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1226,1
    - Dst: nsec3_has_optout
      Src: /src/unbound/validator/val_nsec3.c:1231,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1232,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 34
    argCount: 5
    argNames:
    - env
    - flt
    - ct
    - qinfo
    - calc
    argTypes:
    - struct module_env*
    - struct nsec3_filter*
    - struct nsec3_cache_table*
    - struct query_info*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1173
    functionDepth: 10
    functionLinenumber: 1173
    functionLinenumberEnd: 1236
    functionName: nsec3_do_prove_nameerror
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - find_covering_nsec3
    - log_nametypeclass
    - nsec3_ce_wildcard
    - verbose
    - nsec3_prove_closest_encloser
    - log_assert
    - nsec3_has_optout
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status nsec3_do_prove_nameerror(struct module_env* env, struct
      nsec3_filter* flt,\n\tstruct nsec3_cache_table* ct, struct query_info* qinfo,
      int* calc)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: key_entry_isgood
      Src: /src/unbound/validator/val_nsec3.c:1246,1
    - Dst: filter_init
      Src: /src/unbound/validator/val_nsec3.c:1248,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_nsec3.c:1251,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1252,1
    - Dst: param_set_same
      Src: /src/unbound/validator/val_nsec3.c:1255,1
    - Dst: nsec3_iteration_count_high
      Src: /src/unbound/validator/val_nsec3.c:1257,1
    - Dst: log_nametypeclass
      Src: /src/unbound/validator/val_nsec3.c:1259,1
    - Dst: nsec3_do_prove_nameerror
      Src: /src/unbound/validator/val_nsec3.c:1261,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 8
    argNames:
    - env
    - ve
    - list
    - num
    - qinfo
    - kkey
    - ct
    - calc
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key**
    - size_t
    - struct query_info*
    - struct key_entry_key*
    - struct nsec3_cache_table*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1238
    functionDepth: 11
    functionLinenumber: 1238
    functionLinenumberEnd: 1262
    functionName: nsec3_prove_nameerror
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 1
    functionsReached:
    - param_set_same
    - log_nametypeclass
    - nsec3_do_prove_nameerror
    - verbose
    - key_entry_isgood
    - filter_init
    - query_dname_compare
    - nsec3_iteration_count_high
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status nsec3_prove_nameerror(struct module_env* env, struct
      val_env* ve,\n\tstruct ub_packed_rrset_key** list, size_t num,\n\tstruct query_info*
      qinfo, struct key_entry_key* kkey,\n\tstruct nsec3_cache_table* ct, int* calc)"
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: find_matching_nsec3
      Src: /src/unbound/validator/val_nsec3.c:1282,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_nsec3.c:1285,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1286,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_nsec3.c:1289,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1290,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_nsec3.c:1308,1
    - Dst: dname_is_root
      Src: /src/unbound/validator/val_nsec3.c:1309,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1310,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_nsec3.c:1314,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_nsec3.c:1315,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_nsec3.c:1316,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1317,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1321,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1328,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1333,1
    - Dst: nsec3_prove_closest_encloser
      Src: /src/unbound/validator/val_nsec3.c:1343,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1345,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1349,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_nsec3.c:1359,1
    - Dst: nsec3_ce_wildcard
      Src: /src/unbound/validator/val_nsec3.c:1360,1
    - Dst: find_matching_nsec3
      Src: /src/unbound/validator/val_nsec3.c:1361,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_nsec3.c:1364,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1365,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_nsec3.c:1368,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1369,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_nsec3.c:1374,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1375,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_nsec3.c:1379,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_nsec3.c:1380,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1381,1
    - Dst: nsec3_has_optout
      Src: /src/unbound/validator/val_nsec3.c:1386,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1387,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1394,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1399,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1411,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_nsec3.c:1416,1
    - Dst: nsec3_has_optout
      Src: /src/unbound/validator/val_nsec3.c:1417,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1419,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1421,1
    CyclomaticComplexity: 34
    EdgeCount: 34
    ICount: 89
    argCount: 5
    argNames:
    - env
    - flt
    - ct
    - qinfo
    - calc
    argTypes:
    - struct module_env*
    - struct nsec3_filter*
    - struct nsec3_cache_table*
    - struct query_info*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1428
      start: 1270
    functionDepth: 10
    functionLinenumber: 1270
    functionLinenumberEnd: 1428
    functionName: nsec3_do_prove_nodata
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - dname_is_root
    - nsec3_ce_wildcard
    - verbose
    - nsec3_prove_closest_encloser
    - find_matching_nsec3
    - nsec3_has_type
    - log_assert
    - nsec3_has_optout
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status nsec3_do_prove_nodata(struct module_env* env, struct
      nsec3_filter* flt,\n\tstruct nsec3_cache_table* ct, struct query_info* qinfo,\n\tint*
      calc)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: key_entry_isgood
      Src: /src/unbound/validator/val_nsec3.c:1438,1
    - Dst: filter_init
      Src: /src/unbound/validator/val_nsec3.c:1440,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_nsec3.c:1443,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1444,1
    - Dst: param_set_same
      Src: /src/unbound/validator/val_nsec3.c:1447,1
    - Dst: nsec3_iteration_count_high
      Src: /src/unbound/validator/val_nsec3.c:1449,1
    - Dst: nsec3_do_prove_nodata
      Src: /src/unbound/validator/val_nsec3.c:1451,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 8
    argNames:
    - env
    - ve
    - list
    - num
    - qinfo
    - kkey
    - ct
    - calc
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key**
    - size_t
    - struct query_info*
    - struct key_entry_key*
    - struct nsec3_cache_table*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1452
      start: 1430
    functionDepth: 11
    functionLinenumber: 1430
    functionLinenumberEnd: 1452
    functionName: nsec3_prove_nodata
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 1
    functionsReached:
    - param_set_same
    - verbose
    - key_entry_isgood
    - filter_init
    - nsec3_do_prove_nodata
    - query_dname_compare
    - nsec3_iteration_count_high
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status nsec3_prove_nodata(struct module_env* env, struct
      val_env* ve,\n\tstruct ub_packed_rrset_key** list, size_t num,\n\tstruct query_info*
      qinfo, struct key_entry_key* kkey,\n\tstruct nsec3_cache_table* ct, int* calc)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_size_labels
      Src: /src/unbound/validator/val_nsec3.c:1465,1
    - Dst: key_entry_isgood
      Src: /src/unbound/validator/val_nsec3.c:1467,1
    - Dst: filter_init
      Src: /src/unbound/validator/val_nsec3.c:1469,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_nsec3.c:1472,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1473,1
    - Dst: param_set_same
      Src: /src/unbound/validator/val_nsec3.c:1476,1
    - Dst: nsec3_iteration_count_high
      Src: /src/unbound/validator/val_nsec3.c:1478,1
    - Dst: memset
      Src: /src/unbound/validator/val_nsec3.c:1485,1
    - Dst: next_closer
      Src: /src/unbound/validator/val_nsec3.c:1491,1
    - Dst: find_covering_nsec3
      Src: /src/unbound/validator/val_nsec3.c:1492,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1495,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1501,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1508,1
    - Dst: nsec3_has_optout
      Src: /src/unbound/validator/val_nsec3.c:1512,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1513,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 36
    argCount: 9
    argNames:
    - env
    - ve
    - list
    - num
    - qinfo
    - kkey
    - wc
    - ct
    - calc
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key**
    - size_t
    - struct query_info*
    - struct key_entry_key*
    - uint8_t*
    - struct nsec3_cache_table*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1517
      start: 1454
    functionDepth: 8
    functionLinenumber: 1454
    functionLinenumberEnd: 1517
    functionName: nsec3_prove_wildcard
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 3
    functionsReached:
    - param_set_same
    - find_covering_nsec3
    - verbose
    - key_entry_isgood
    - dname_count_size_labels
    - filter_init
    - query_dname_compare
    - nsec3_has_optout
    - nsec3_iteration_count_high
    - memset
    - next_closer
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status nsec3_prove_wildcard(struct module_env* env, struct
      val_env* ve,\n        struct ub_packed_rrset_key** list, size_t num,\n\tstruct
      query_info* qinfo, struct key_entry_key* kkey, uint8_t* wc,\n\tstruct nsec3_cache_table*
      ct, int* calc)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/unbound/validator/val_nsec3.c:1531,1
    - Dst: rrset_check_sec_status
      Src: /src/unbound/validator/val_nsec3.c:1535,1
    - Dst: val_verify_rrset_entry
      Src: /src/unbound/validator/val_nsec3.c:1538,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1542,1
    - Dst: rrset_update_sec_status
      Src: /src/unbound/validator/val_nsec3.c:1545,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 10
    argNames:
    - env
    - ve
    - list
    - num
    - kkey
    - reason
    - reason_bogus
    - qstate
    - reasonbuf
    - reasonlen
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key**
    - size_t
    - struct key_entry_key*
    - char**
    - sldns_ede_code*
    - struct module_qstate*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1548
      start: 1520
    functionDepth: 7
    functionLinenumber: 1520
    functionLinenumberEnd: 1548
    functionName: list_is_secure
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 0
    functionsReached:
    - rrset_check_sec_status
    - verbose
    - htons
    - val_verify_rrset_entry
    - rrset_update_sec_status
    linkageType: ''
    returnType: int
    signature: "int list_is_secure(struct module_env* env, struct val_env* ve, \n\tstruct
      ub_packed_rrset_key** list, size_t num,\n\tstruct key_entry_key* kkey, char**
      reason, sldns_ede_code *reason_bogus,\n\tstruct module_qstate* qstate, char*
      reasonbuf, size_t reasonlen)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/validator/val_nsec3.c:1564,1
    - Dst: key_entry_isgood
      Src: /src/unbound/validator/val_nsec3.c:1566,1
    - Dst: list_is_secure
      Src: /src/unbound/validator/val_nsec3.c:1570,1
    - Dst: filter_init
      Src: /src/unbound/validator/val_nsec3.c:1575,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_nsec3.c:1580,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1581,1
    - Dst: param_set_same
      Src: /src/unbound/validator/val_nsec3.c:1585,1
    - Dst: nsec3_iteration_count_high
      Src: /src/unbound/validator/val_nsec3.c:1587,1
    - Dst: find_matching_nsec3
      Src: /src/unbound/validator/val_nsec3.c:1592,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_nsec3.c:1597,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1599,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_nsec3.c:1603,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1604,1
    - Dst: nsec3_has_type
      Src: /src/unbound/validator/val_nsec3.c:1611,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1617,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1622,1
    - Dst: nsec3_prove_closest_encloser
      Src: /src/unbound/validator/val_nsec3.c:1630,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1636,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1644,1
    - Dst: log_assert
      Src: /src/unbound/validator/val_nsec3.c:1653,1
    - Dst: nsec3_has_optout
      Src: /src/unbound/validator/val_nsec3.c:1654,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1655,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 68
    argCount: 12
    argNames:
    - env
    - ve
    - list
    - num
    - qinfo
    - kkey
    - reason
    - reason_bogus
    - qstate
    - ct
    - reasonbuf
    - reasonlen
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key**
    - size_t
    - struct query_info*
    - struct key_entry_key*
    - char**
    - sldns_ede_code*
    - struct module_qstate*
    - struct nsec3_cache_table*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1663
      start: 1550
    functionDepth: 10
    functionLinenumber: 1550
    functionLinenumberEnd: 1663
    functionName: nsec3_prove_nods
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 1
    functionsReached:
    - param_set_same
    - verbose
    - key_entry_isgood
    - filter_init
    - list_is_secure
    - find_matching_nsec3
    - nsec3_prove_closest_encloser
    - nsec3_has_type
    - query_dname_compare
    - log_assert
    - nsec3_has_optout
    - nsec3_iteration_count_high
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status nsec3_prove_nods(struct module_env* env, struct val_env*
      ve,\n\tstruct ub_packed_rrset_key** list, size_t num,\n\tstruct query_info*
      qinfo, struct key_entry_key* kkey, char** reason,\n\tsldns_ede_code* reason_bogus,
      struct module_qstate* qstate,\n\tstruct nsec3_cache_table* ct, char* reasonbuf,
      size_t reasonlen)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: key_entry_isgood
      Src: /src/unbound/validator/val_nsec3.c:1675,1
    - Dst: filter_init
      Src: /src/unbound/validator/val_nsec3.c:1677,1
    - Dst: query_dname_compare
      Src: /src/unbound/validator/val_nsec3.c:1680,1
    - Dst: verbose
      Src: /src/unbound/validator/val_nsec3.c:1681,1
    - Dst: param_set_same
      Src: /src/unbound/validator/val_nsec3.c:1684,1
    - Dst: nsec3_iteration_count_high
      Src: /src/unbound/validator/val_nsec3.c:1686,1
    - Dst: nsec3_do_prove_nameerror
      Src: /src/unbound/validator/val_nsec3.c:1692,1
    - Dst: nsec3_do_prove_nodata
      Src: /src/unbound/validator/val_nsec3.c:1697,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 34
    argCount: 9
    argNames:
    - env
    - ve
    - list
    - num
    - qinfo
    - kkey
    - nodata
    - ct
    - calc
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key**
    - size_t
    - struct query_info*
    - struct key_entry_key*
    - int*
    - struct  nsec3_cache_table*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1708
      start: 1665
    functionDepth: 11
    functionLinenumber: 1665
    functionLinenumberEnd: 1708
    functionName: nsec3_prove_nxornodata
    functionSourceFile: /src/unbound/validator/val_nsec3.c
    functionUses: 1
    functionsReached:
    - param_set_same
    - nsec3_do_prove_nameerror
    - verbose
    - key_entry_isgood
    - filter_init
    - nsec3_do_prove_nodata
    - query_dname_compare
    - nsec3_iteration_count_high
    linkageType: ''
    returnType: enum sec_status
    signature: "enum sec_status nsec3_prove_nxornodata(struct module_env* env, struct
      val_env* ve,\n\tstruct ub_packed_rrset_key** list, size_t num,\n\tstruct query_info*
      qinfo, struct key_entry_key* kkey, int* nodata,\n\tstruct  nsec3_cache_table*
      ct, int* calc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/ipset/ipset.c:45,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/ipset/ipset.c:46,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/ipset/ipset.c:47,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - qstate
    - id
    - rcode
    argTypes:
    - struct module_qstate*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 52
    functionName: error_response
    functionSourceFile: /src/unbound/ipset/ipset.c
    functionUses: 1
    functionsReached:
    - verbose
    - sldns_lookup_by_id
    linkageType: ''
    returnType: int
    signature: int error_response(struct module_qstate* qstate, int id, int rcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/unbound/ipset/ipset.c:58,1
    - Dst: log_err
      Src: /src/unbound/ipset/ipset.c:60,1
    - Dst: strerror
      Src: /src/unbound/ipset/ipset.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 65
    functionName: open_filter
    functionSourceFile: /src/unbound/ipset/ipset.c
    functionUses: 0
    functionsReached:
    - open
    - strerror
    - log_err
    linkageType: ''
    returnType: void
    signature: void * open_filter()
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mnl_socket_open
      Src: /src/unbound/ipset/ipset.c:70,1
    - Dst: log_err
      Src: /src/unbound/ipset/ipset.c:72,1
    - Dst: mnl_socket_bind
      Src: /src/unbound/ipset/ipset.c:76,1
    - Dst: mnl_socket_close
      Src: /src/unbound/ipset/ipset.c:77,1
    - Dst: log_err
      Src: /src/unbound/ipset/ipset.c:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 82
    functionName: open_filter
    functionSourceFile: /src/unbound/ipset/ipset.c
    functionUses: 0
    functionsReached:
    - mnl_socket_bind
    - log_err
    - mnl_socket_open
    - mnl_socket_close
    linkageType: ''
    returnType: void
    signature: void * open_filter()
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: bzero
      Src: /src/unbound/ipset/ipset.c:92,1
    - Dst: bzero
      Src: /src/unbound/ipset/ipset.c:93,1
    - Dst: strrchr
      Src: /src/unbound/ipset/ipset.c:95,1
    - Dst: memcpy
      Src: /src/unbound/ipset/ipset.c:102,1
    - Dst: strlen
      Src: /src/unbound/ipset/ipset.c:110,1
    - Dst: strlcpy
      Src: /src/unbound/ipset/ipset.c:114,1
    - Dst: ioctl
      Src: /src/unbound/ipset/ipset.c:135,1
    - Dst: log_err
      Src: /src/unbound/ipset/ipset.c:136,1
    - Dst: strerror
      Src: /src/unbound/ipset/ipset.c:136,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 43
    argCount: 4
    argNames:
    - dev
    - setname
    - ipaddr
    - af
    argTypes:
    - filter_dev
    - char*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 140
    functionName: add_to_ipset
    functionSourceFile: /src/unbound/ipset/ipset.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - log_err
    - memcpy
    - strrchr
    - bzero
    - strerror
    - strlen
    - ioctl
    linkageType: ''
    returnType: int
    signature: int add_to_ipset(filter_dev dev, const char *setname, const void *ipaddr,
      int af)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/ipset/ipset.c:148,1
    - Dst: mnl_nlmsg_put_header
      Src: /src/unbound/ipset/ipset.c:157,1
    - Dst: mnl_nlmsg_put_extra_header
      Src: /src/unbound/ipset/ipset.c:161,1
    - Dst: htons
      Src: /src/unbound/ipset/ipset.c:164,1
    - Dst: mnl_attr_put_u8
      Src: /src/unbound/ipset/ipset.c:166,1
    - Dst: mnl_attr_put
      Src: /src/unbound/ipset/ipset.c:167,1
    - Dst: strlen
      Src: /src/unbound/ipset/ipset.c:167,1
    - Dst: mnl_attr_nest_start
      Src: /src/unbound/ipset/ipset.c:168,1
    - Dst: mnl_attr_nest_start
      Src: /src/unbound/ipset/ipset.c:169,1
    - Dst: mnl_attr_put
      Src: /src/unbound/ipset/ipset.c:170,1
    - Dst: mnl_attr_nest_end
      Src: /src/unbound/ipset/ipset.c:172,1
    - Dst: mnl_attr_nest_end
      Src: /src/unbound/ipset/ipset.c:173,1
    - Dst: mnl_socket_sendto
      Src: /src/unbound/ipset/ipset.c:175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 4
    argNames:
    - dev
    - setname
    - ipaddr
    - af
    argTypes:
    - filter_dev
    - char*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 179
    functionName: add_to_ipset
    functionSourceFile: /src/unbound/ipset/ipset.c
    functionUses: 0
    functionsReached:
    - mnl_attr_nest_start
    - mnl_nlmsg_put_header
    - mnl_nlmsg_put_extra_header
    - mnl_attr_put_u8
    - mnl_socket_sendto
    - htons
    - mnl_attr_put
    - strlen
    - mnl_attr_nest_end
    linkageType: ''
    returnType: int
    signature: int add_to_ipset(filter_dev dev, const char *setname, const void *ipaddr,
      int af)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/ipset/ipset.c:196,1
    - Dst: inet_ntop
      Src: /src/unbound/ipset/ipset.c:204,1
    - Dst: snprintf
      Src: /src/unbound/ipset/ipset.c:205,1
    - Dst: verbose
      Src: /src/unbound/ipset/ipset.c:206,1
    - Dst: add_to_ipset
      Src: /src/unbound/ipset/ipset.c:208,1
    - Dst: log_err
      Src: /src/unbound/ipset/ipset.c:210,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 22
    argCount: 5
    argNames:
    - ie
    - d
    - setname
    - af
    - dname
    argTypes:
    - struct ipset_env*
    - struct packed_rrset_data*
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 215
    functionName: ipset_add_rrset_data
    functionSourceFile: /src/unbound/ipset/ipset.c
    functionUses: 0
    functionsReached:
    - log_err
    - inet_ntop
    - snprintf
    - verbose
    - add_to_ipset
    - sldns_read_uint16
    linkageType: ''
    returnType: void
    signature: "void ipset_add_rrset_data(struct ipset_env *ie,\n\tstruct packed_rrset_data
      *d, const char* setname, int af,\n\tconst char* dname)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_dname_buf
      Src: /src/unbound/ipset/ipset.c:229,1
    - Dst: log_err
      Src: /src/unbound/ipset/ipset.c:231,1
    - Dst: strlen
      Src: /src/unbound/ipset/ipset.c:244,1
    - Dst: strncasecmp
      Src: /src/unbound/ipset/ipset.c:255,1
    - Dst: strncasecmp
      Src: /src/unbound/ipset/ipset.c:256,1
    - Dst: ipset_add_rrset_data
      Src: /src/unbound/ipset/ipset.c:258,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 32
    argCount: 7
    argNames:
    - env
    - ie
    - rrset
    - qname
    - qlen
    - setname
    - af
    argTypes:
    - struct module_env*
    - struct ipset_env*
    - struct ub_packed_rrset_key*
    - char*
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 217
    functionDepth: 3
    functionLinenumber: 217
    functionLinenumberEnd: 263
    functionName: ipset_check_zones_for_rrset
    functionSourceFile: /src/unbound/ipset/ipset.c
    functionUses: 0
    functionsReached:
    - log_err
    - sldns_wire2str_dname_buf
    - ipset_add_rrset_data
    - strlen
    - strncasecmp
    linkageType: ''
    returnType: int
    signature: "int ipset_check_zones_for_rrset(struct module_env *env, struct ipset_env
      *ie,\n\tstruct ub_packed_rrset_key *rrset, const char *qname, int qlen,\n\tconst
      char *setname, int af)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: open_filter
      Src: /src/unbound/ipset/ipset.c:279,1
    - Dst: log_warn
      Src: /src/unbound/ipset/ipset.c:281,1
    - Dst: sldns_wire2str_dname_buf
      Src: /src/unbound/ipset/ipset.c:287,1
    - Dst: log_err
      Src: /src/unbound/ipset/ipset.c:290,1
    - Dst: ntohs
      Src: /src/unbound/ipset/ipset.c:297,1
    - Dst: ntohs
      Src: /src/unbound/ipset/ipset.c:301,1
    - Dst: ipset_check_zones_for_rrset
      Src: /src/unbound/ipset/ipset.c:308,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 4
    argNames:
    - env
    - return_msg
    - qinfo
    - ie
    argTypes:
    - struct module_env*
    - struct dns_msg*
    - struct query_info
    - struct ipset_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 265
    functionDepth: 4
    functionLinenumber: 265
    functionLinenumberEnd: 315
    functionName: ipset_update
    functionSourceFile: /src/unbound/ipset/ipset.c
    functionUses: 0
    functionsReached:
    - log_err
    - ipset_check_zones_for_rrset
    - sldns_wire2str_dname_buf
    - open_filter
    - log_warn
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int ipset_update(struct module_env *env, struct dns_msg *return_msg,\n\tstruct
      query_info qinfo, struct ipset_env *ie)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/ipset/ipset.c:320,1
    - Dst: log_err
      Src: /src/unbound/ipset/ipset.c:322,1
    - Dst: open_filter
      Src: /src/unbound/ipset/ipset.c:329,1
    - Dst: log_err
      Src: /src/unbound/ipset/ipset.c:331,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 317
    functionDepth: 2
    functionLinenumber: 317
    functionLinenumberEnd: 338
    functionName: ipset_startup
    functionSourceFile: /src/unbound/ipset/ipset.c
    functionUses: 0
    functionsReached:
    - log_err
    - calloc
    - open_filter
    linkageType: ''
    returnType: int
    signature: int ipset_startup(struct module_env* env, int id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/unbound/ipset/ipset.c:352,1
    - Dst: mnl_socket_close
      Src: /src/unbound/ipset/ipset.c:354,1
    - Dst: free
      Src: /src/unbound/ipset/ipset.c:359,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 361
    functionName: ipset_destartup
    functionSourceFile: /src/unbound/ipset/ipset.c
    functionUses: 0
    functionsReached:
    - free
    - mnl_socket_close
    - close
    linkageType: ''
    returnType: void
    signature: void ipset_destartup(struct module_env* env, int id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/ipset/ipset.c:369,1
    - Dst: log_err
      Src: /src/unbound/ipset/ipset.c:370,1
    - Dst: strlen
      Src: /src/unbound/ipset/ipset.c:373,1
    - Dst: log_err
      Src: /src/unbound/ipset/ipset.c:374,1
    - Dst: strlen
      Src: /src/unbound/ipset/ipset.c:379,1
    - Dst: strlen
      Src: /src/unbound/ipset/ipset.c:380,1
    - Dst: log_err
      Src: /src/unbound/ipset/ipset.c:383,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 388
    functionName: ipset_init
    functionSourceFile: /src/unbound/ipset/ipset.c
    functionUses: 0
    functionsReached:
    - log_err
    - strlen
    linkageType: ''
    returnType: int
    signature: int ipset_init(struct module_env* env, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED(env)
    - ATTR_UNUSED
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 392
    functionName: ipset_deinit
    functionSourceFile: /src/unbound/ipset/ipset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ipset_deinit(struct module_env *ATTR_UNUSED(env), int ATTR_UNUSED(id))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/ipset/ipset.c:395,1
    - Dst: memset
      Src: /src/unbound/ipset/ipset.c:402,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 394
    functionDepth: 0
    functionLinenumber: 394
    functionLinenumberEnd: 407
    functionName: ipset_new
    functionSourceFile: /src/unbound/ipset/ipset.c
    functionUses: 0
    functionsReached:
    - memset
    - regional_alloc
    linkageType: ''
    returnType: int
    signature: int ipset_new(struct module_qstate* qstate, int id)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/ipset/ipset.c:413,1
    - Dst: strextstate
      Src: /src/unbound/ipset/ipset.c:414,1
    - Dst: strmodulevent
      Src: /src/unbound/ipset/ipset.c:414,1
    - Dst: log_query_info
      Src: /src/unbound/ipset/ipset.c:416,1
    - Dst: ipset_new
      Src: /src/unbound/ipset/ipset.c:421,1
    - Dst: error_response
      Src: /src/unbound/ipset/ipset.c:422,1
    - Dst: ipset_update
      Src: /src/unbound/ipset/ipset.c:435,1
    - Dst: verbose
      Src: /src/unbound/ipset/ipset.c:450,1
    - Dst: error_response
      Src: /src/unbound/ipset/ipset.c:451,1
    - Dst: log_err
      Src: /src/unbound/ipset/ipset.c:461,1
    - Dst: error_response
      Src: /src/unbound/ipset/ipset.c:462,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 37
    argCount: 4
    argNames:
    - qstate
    - event
    - id
    - outbound
    argTypes:
    - struct module_qstate*
    - enum module_ev
    - int
    - struct outbound_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 409
    functionDepth: 5
    functionLinenumber: 409
    functionLinenumberEnd: 463
    functionName: ipset_operate
    functionSourceFile: /src/unbound/ipset/ipset.c
    functionUses: 0
    functionsReached:
    - log_err
    - strextstate
    - verbose
    - log_query_info
    - strmodulevent
    - error_response
    - ipset_new
    - ipset_update
    linkageType: ''
    returnType: void
    signature: "void ipset_operate(struct module_qstate *qstate, enum module_ev event,
      int id,\n\tstruct outbound_entry *outbound)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/ipset/ipset.c:468,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED(qstate)
    - ATTR_UNUSED
    - ATTR_UNUSED(super)
    argTypes:
    - struct module_qstate*
    - int
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 465
    functionDepth: 1
    functionLinenumber: 465
    functionLinenumberEnd: 469
    functionName: ipset_inform_super
    functionSourceFile: /src/unbound/ipset/ipset.c
    functionUses: 0
    functionsReached:
    - verbose
    linkageType: ''
    returnType: void
    signature: "void ipset_inform_super(struct module_qstate *ATTR_UNUSED(qstate),\n\tint
      ATTR_UNUSED(id), struct module_qstate *ATTR_UNUSED(super))"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 471
    functionDepth: 0
    functionLinenumber: 471
    functionLinenumberEnd: 482
    functionName: ipset_clear
    functionSourceFile: /src/unbound/ipset/ipset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ipset_clear(struct module_qstate *qstate, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 484
    functionDepth: 0
    functionLinenumber: 484
    functionLinenumberEnd: 490
    functionName: ipset_get_mem
    functionSourceFile: /src/unbound/ipset/ipset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t ipset_get_mem(struct module_env *env, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 501
    functionDepth: 0
    functionLinenumber: 501
    functionLinenumberEnd: 503
    functionName: ipset_get_funcblock
    functionSourceFile: /src/unbound/ipset/ipset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct module_func_block
    signature: struct module_func_block * ipset_get_funcblock(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:77,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:78,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:79,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:80,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:81,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:82,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:83,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:84,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:85,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:86,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:87,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:88,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:89,1
    - Dst: exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 1
    argNames:
    - argv
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 91
    functionName: usage
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 1
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(char* argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:182,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:198,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct tap_data_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 200
    functionName: tap_data_list_try_to_free_tail
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - free
    - log_assert
    linkageType: ''
    returnType: void
    signature: void tap_data_list_try_to_free_tail(struct tap_data_list* list)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ub_event_del
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:208,1
    - Dst: ub_event_free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:209,1
    - Dst: SSL_free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:212,1
    - Dst: sock_close
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:214,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:215,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:216,1
    - Dst: tap_data_list_try_to_free_tail
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:220,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:222,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - data
    - free_tail
    argTypes:
    - struct tap_data*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 203
    functionDepth: 2
    functionLinenumber: 203
    functionLinenumberEnd: 223
    functionName: tap_data_free
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - sock_close
    - SSL_free
    - ub_event_del
    - free
    - tap_data_list_try_to_free_tail
    - ub_event_free
    linkageType: ''
    returnType: void
    signature: void tap_data_free(struct tap_data* data, int free_tail)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - liststart
    - d
    argTypes:
    - struct tap_data_list**
    - struct tap_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 238
    functionName: tap_data_list_insert
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - malloc
    linkageType: ''
    returnType: int
    signature: "int tap_data_list_insert(struct tap_data_list** liststart,\n\tstruct
      tap_data* d)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tap_data_free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:247,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:250,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct tap_data_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 241
    functionDepth: 3
    functionLinenumber: 241
    functionLinenumberEnd: 253
    functionName: tap_data_list_delete
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - free
    - tap_data_free
    linkageType: ''
    returnType: void
    signature: void tap_data_list_delete(struct tap_data_list* list)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ub_event_del
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:261,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct tap_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 263
    functionName: tap_socket_delev
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - ub_event_del
    linkageType: ''
    returnType: void
    signature: void tap_socket_delev(struct tap_socket* s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sock_close
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:270,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct tap_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 272
    functionName: tap_socket_close
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - sock_close
    linkageType: ''
    returnType: void
    signature: void tap_socket_close(struct tap_socket* s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:279,1
    - Dst: tap_data_list_delete
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:281,1
    - Dst: ub_event_free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:282,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:283,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:284,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct tap_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 275
    functionDepth: 4
    functionLinenumber: 275
    functionLinenumberEnd: 286
    functionName: tap_socket_delete
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - free
    - tap_data_list_delete
    - SSL_CTX_free
    - ub_event_free
    linkageType: ''
    returnType: void
    signature: void tap_socket_delete(struct tap_socket* s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:292,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:294,1
    - Dst: strdup
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:297,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:299,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:300,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - socketpath
    - data
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 307
    functionName: tap_socket_new_local
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - free
    - log_err
    - calloc
    - strdup
    linkageType: ''
    returnType: struct tap_socket
    signature: "struct tap_socket * tap_socket_new_local(char* socketpath,\n\tvoid
      (*ev_cb)(int, short, void*), void* data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:313,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:315,1
    - Dst: strdup
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:318,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:320,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:321,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - ip
    - data
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 328
    functionName: tap_socket_new_tcpaccept
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - free
    - log_err
    - calloc
    - strdup
    linkageType: ''
    returnType: struct tap_socket
    signature: "struct tap_socket * tap_socket_new_tcpaccept(char* ip,\n\tvoid (*ev_cb)(int,
      short, void*), void* data)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:335,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:337,1
    - Dst: strdup
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:340,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:342,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:343,1
    - Dst: listen_sslctx_create
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:349,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:352,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:353,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:354,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 6
    argNames:
    - ip
    - data
    - server_key
    - server_cert
    - verifypem
    - tls_protocols
    argTypes:
    - char*
    - void*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 358
    functionName: tap_socket_new_tlsaccept
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_err
    - free
    - listen_sslctx_create
    - calloc
    - strdup
    linkageType: ''
    returnType: struct tap_socket
    signature: "struct tap_socket * tap_socket_new_tlsaccept(char* ip,\n\tvoid (*ev_cb)(int,
      short, void*), void* data, char* server_key,\n\tchar* server_cert, char* verifypem,
      char* tls_protocols)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:370,1
    - Dst: extstrtoaddr
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:372,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:373,1
    - Dst: socket
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:377,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:378,1
    - Dst: sock_strerror
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:378,1
    - Dst: setsockopt
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:382,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:384,1
    - Dst: sock_strerror
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:385,1
    - Dst: sock_close
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:386,1
    - Dst: bind
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:390,1
    - Dst: log_err_addr
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:391,1
    - Dst: sock_strerror
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:391,1
    - Dst: sock_close
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:393,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:396,1
    - Dst: sock_close
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:397,1
    - Dst: listen
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:400,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:401,1
    - Dst: sock_strerror
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:401,1
    - Dst: sock_close
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:402,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 1
    argNames:
    - ip
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 361
    functionDepth: 1
    functionLinenumber: 361
    functionLinenumberEnd: 406
    functionName: make_tcp_accept
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_err
    - bind
    - sock_close
    - socket
    - extstrtoaddr
    - setsockopt
    - fd_set_nonblock
    - log_err_addr
    - sock_strerror
    - listen
    - memset
    linkageType: ''
    returnType: int
    signature: int make_tcp_accept(char* ip)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: create_local_accept_sock
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:413,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:415,1
    - Dst: make_tcp_accept
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:420,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:422,1
    - Dst: ub_event_new
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:426,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:429,1
    - Dst: ub_event_add
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:432,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:433,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 26
    argCount: 2
    argNames:
    - s
    - base
    argTypes:
    - struct tap_socket*
    - struct ub_event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 409
    functionDepth: 2
    functionLinenumber: 409
    functionLinenumberEnd: 438
    functionName: tap_socket_setup
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_err
    - create_local_accept_sock
    - ub_event_add
    - make_tcp_accept
    - ub_event_new
    linkageType: ''
    returnType: int
    signature: int tap_socket_setup(struct tap_socket* s, struct ub_event_base* base)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:445,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - liststart
    - s
    argTypes:
    - struct tap_socket_list**
    - struct tap_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 452
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 452
    functionName: tap_socket_list_insert
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - malloc
    linkageType: ''
    returnType: int
    signature: "int tap_socket_list_insert(struct tap_socket_list** liststart,\n\tstruct
      tap_socket* s)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tap_socket_delev
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:460,1
    - Dst: tap_socket_close
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:461,1
    - Dst: tap_socket_delete
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:462,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:463,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct tap_socket_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 455
    functionDepth: 5
    functionLinenumber: 455
    functionLinenumberEnd: 466
    functionName: tap_socket_list_delete
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - tap_socket_delete
    - tap_socket_delev
    - tap_socket_close
    - free
    linkageType: ''
    returnType: void
    signature: void tap_socket_list_delete(struct tap_socket_list* list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tap_socket_setup
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:474,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:475,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - list
    - base
    argTypes:
    - struct tap_socket_list*
    - struct ub_event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 469
    functionDepth: 3
    functionLinenumber: 469
    functionLinenumberEnd: 480
    functionName: tap_socket_list_addevs
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_err
    - tap_socket_setup
    linkageType: ''
    returnType: int
    signature: "int tap_socket_list_addevs(struct tap_socket_list* list,\n\tstruct
      ub_event_base* base)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fstrm_describe_control
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:488,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:490,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:493,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:494,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - pkt
    - len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 484
    functionDepth: 1
    functionLinenumber: 484
    functionLinenumberEnd: 495
    functionName: log_control_frame
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - free
    - fstrm_describe_control
    - log_info
    - log_err
    linkageType: ''
    returnType: void
    signature: void log_control_frame(uint8_t* pkt, size_t len)
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 26
    argCount: 1
    argNames:
    - mtype
    argTypes:
    - enum _Dnstap__Message__Type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 524
    functionName: mtype_to_str
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * mtype_to_str(enum _Dnstap__Message__Type mtype)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:532,1
    - Dst: strdup
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:533,1
    - Dst: inet_ntop
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:535,1
    - Dst: strdup
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:536,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - address
    argTypes:
    - ProtobufCBinaryData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 539
    functionName: str_of_addr
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - strdup
    linkageType: ''
    returnType: char
    signature: char * str_of_addr(ProtobufCBinaryData address)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:548,1
    - Dst: sldns_wire2str_rrquestion_buf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:549,1
    - Dst: strlen
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:553,1
    - Dst: strrchr
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:555,1
    - Dst: strrchr
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:555,1
    - Dst: strrchr
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:557,1
    - Dst: strrchr
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:557,1
    - Dst: strdup
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:558,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 1
    argNames:
    - message
    argTypes:
    - ProtobufCBinaryData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 543
    functionDepth: 2
    functionLinenumber: 543
    functionLinenumberEnd: 561
    functionName: q_of_msg
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_rrquestion_buf
    - strrchr
    - LDNS_QDCOUNT
    - strlen
    - strdup
    linkageType: ''
    returnType: char
    signature: char * q_of_msg(ProtobufCBinaryData message)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isprint
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:569,1
    - Dst: malloc
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:573,1
    - Dst: memmove
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:575,1
    - Dst: malloc
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:581,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 1
    argNames:
    - str
    argTypes:
    - ProtobufCBinaryData
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 592
      start: 564
    functionDepth: 1
    functionLinenumber: 564
    functionLinenumberEnd: 592
    functionName: possible_str
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - malloc
    - isprint
    - memmove
    linkageType: ''
    returnType: char
    signature: char * possible_str(ProtobufCBinaryData str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:601,1
    - Dst: ctime_r
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:607,1
    - Dst: snprintf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:608,1
    - Dst: strdup
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:610,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - has_time_sec
    - time_sec
    - has_time_nsec
    - time_nsec
    argTypes:
    - protobuf_c_boolean
    - uint64_t
    - protobuf_c_boolean
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 611
    functionName: tv_to_str
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - memset
    - ctime_r
    - snprintf
    - strdup
    linkageType: ''
    returnType: char
    signature: "char * tv_to_str(protobuf_c_boolean has_time_sec, uint64_t time_sec,\n\tprotobuf_c_boolean
      has_time_nsec, uint32_t time_nsec)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: dnstap__dnstap__unpack
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:616,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:620,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:624,1
    - Dst: dnstap__dnstap__free_unpacked
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:625,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:629,1
    - Dst: dnstap__dnstap__free_unpacked
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:630,1
    - Dst: mtype_to_str
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:634,1
    - Dst: str_of_addr
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:636,1
    - Dst: str_of_addr
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:638,1
    - Dst: q_of_msg
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:640,1
    - Dst: q_of_msg
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:642,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:648,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:650,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:651,1
    - Dst: possible_str
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:656,1
    - Dst: possible_str
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:659,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:662,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:664,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:665,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:669,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:673,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:674,1
    - Dst: tv_to_str
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:678,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:683,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:684,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:689,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:693,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:694,1
    - Dst: tv_to_str
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:698,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:703,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:704,1
    - Dst: fflush
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:708,1
    - Dst: dnstap__dnstap__free_unpacked
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:709,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 69
    argCount: 2
    argNames:
    - pkt
    - len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 614
    functionDepth: 3
    functionLinenumber: 614
    functionLinenumberEnd: 710
    functionName: log_data_frame
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - str_of_addr
    - log_err
    - dnstap__dnstap__free_unpacked
    - possible_str
    - sldns_wire2str_pkt
    - printf
    - dnstap__dnstap__unpack
    - q_of_msg
    - free
    - tv_to_str
    - mtype_to_str
    - fflush
    linkageType: ''
    returnType: void
    signature: void log_data_frame(uint8_t* pkt, size_t len)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:718,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:721,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:730,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:732,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:733,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:737,1
    - Dst: sock_strerror
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:737,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:738,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 4
    argNames:
    - data
    - fd
    - buf
    - len
    argTypes:
    - struct tap_data*
    - int
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 715
    functionDepth: 1
    functionLinenumber: 715
    functionLinenumberEnd: 743
    functionName: receive_bytes
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_err
    - log_info
    - WSAGetLastError
    - ub_winsock_tcp_wouldblock
    - sock_strerror
    - recv
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t receive_bytes(struct tap_data* data, int fd, void* buf,\n\tsize_t
      len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_event_del
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:750,1
    - Dst: ub_event_del_bits
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:751,1
    - Dst: ub_event_add_bits
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:752,1
    - Dst: ub_event_add
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:753,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:754,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct tap_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 748
    functionDepth: 1
    functionLinenumber: 748
    functionLinenumberEnd: 756
    functionName: tap_enable_brief_write
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_err
    - ub_event_del_bits
    - ub_event_add
    - ub_event_del
    - ub_event_add_bits
    linkageType: ''
    returnType: void
    signature: void tap_enable_brief_write(struct tap_data* data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_event_del
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:764,1
    - Dst: ub_event_del_bits
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:765,1
    - Dst: ub_event_add_bits
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:766,1
    - Dst: ub_event_add
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:767,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:768,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct tap_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 762
    functionDepth: 1
    functionLinenumber: 762
    functionLinenumberEnd: 770
    functionName: tap_disable_brief_write
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_err
    - ub_event_del_bits
    - ub_event_add
    - ub_event_del
    - ub_event_add_bits
    linkageType: ''
    returnType: void
    signature: void tap_disable_brief_write(struct tap_data* data)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ERR_clear_error
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:779,1
    - Dst: SSL_read
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:780,1
    - Dst: SSL_get_error
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:782,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:785,1
    - Dst: tap_enable_brief_write
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:793,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:801,1
    - Dst: strerror
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:802,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:803,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:807,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:808,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 31
    argCount: 3
    argNames:
    - data
    - buf
    - len
    argTypes:
    - struct tap_data*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 813
      start: 776
    functionDepth: 2
    functionLinenumber: 776
    functionLinenumberEnd: 813
    functionName: ssl_read_bytes
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_err
    - tap_enable_brief_write
    - log_crypto_err_io
    - log_info
    - SSL_read
    - strerror
    - ERR_clear_error
    - SSL_get_error
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t ssl_read_bytes(struct tap_data* data, void* buf, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ssl_read_bytes
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:822,1
    - Dst: receive_bytes
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:824,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - data
    - buf
    - len
    argTypes:
    - struct tap_data*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 818
    functionDepth: 0
    functionLinenumber: 818
    functionLinenumberEnd: 825
    functionName: tap_receive
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - receive_bytes
    - ssl_read_bytes
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t tap_receive(struct tap_data* data, void* buf, size_t len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fstrm_create_control_frame_accept
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:834,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:837,1
    - Dst: fd_set_block
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:841,1
    - Dst: SSL_write
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:845,1
    - Dst: SSL_get_error
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:847,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:848,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:850,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:851,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:852,1
    - Dst: send
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:857,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:858,1
    - Dst: sock_strerror
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:858,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:859,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:860,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:864,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:867,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:868,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:871,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct tap_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 875
      start: 829
    functionDepth: 1
    functionLinenumber: 829
    functionLinenumberEnd: 875
    functionName: reply_with_accept
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_err
    - fstrm_create_control_frame_accept
    - SSL_write
    - log_crypto_err_io
    - log_info
    - free
    - fd_set_nonblock
    - sock_strerror
    - fd_set_block
    - send
    - SSL_get_error
    linkageType: ''
    returnType: int
    signature: int reply_with_accept(struct tap_data* data)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fstrm_create_control_frame_finish
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:883,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:885,1
    - Dst: fd_set_block
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:889,1
    - Dst: SSL_write
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:893,1
    - Dst: SSL_get_error
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:895,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:896,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:898,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:899,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:900,1
    - Dst: send
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:905,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:906,1
    - Dst: sock_strerror
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:906,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:907,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:908,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:912,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:914,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:915,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:918,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct tap_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 879
    functionDepth: 1
    functionLinenumber: 879
    functionLinenumberEnd: 922
    functionName: reply_with_finish
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - fstrm_create_control_frame_finish
    - log_err
    - SSL_write
    - log_crypto_err_io
    - log_info
    - free
    - fd_set_nonblock
    - sock_strerror
    - fd_set_block
    - send
    - SSL_get_error
    linkageType: ''
    returnType: int
    signature: int reply_with_finish(struct tap_data* data)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_verify_mode
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:928,1
    - Dst: SSL_get_verify_result
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:930,1
    - Dst: SSL_get1_peer_certificate
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:932,1
    - Dst: SSL_get_peer_certificate
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:934,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:937,1
    - Dst: log_cert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:942,1
    - Dst: SSL_get0_peername
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:944,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:945,1
    - Dst: SSL_get0_peername
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:947,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:950,1
    - Dst: X509_free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:955,1
    - Dst: SSL_get1_peer_certificate
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:958,1
    - Dst: SSL_get_peer_certificate
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:960,1
    - Dst: log_cert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:964,1
    - Dst: X509_free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:965,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:967,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:974,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct tap_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 926
    functionDepth: 1
    functionLinenumber: 926
    functionLinenumberEnd: 977
    functionName: tap_check_peer
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_info
    - log_cert
    - SSL_get0_peername
    - SSL_get_peer_certificate
    - X509_free
    - SSL_get_verify_mode
    - SSL_get_verify_result
    - SSL_get1_peer_certificate
    linkageType: ''
    returnType: int
    signature: int tap_check_peer(struct tap_data* data)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: tap_disable_brief_write
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:987,1
    - Dst: ERR_clear_error
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:992,1
    - Dst: SSL_do_handshake
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:993,1
    - Dst: SSL_get_error
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:995,1
    - Dst: tap_enable_brief_write
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:999,1
    - Dst: tap_data_free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1003,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1019,1
    - Dst: strerror
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1020,1
    - Dst: tap_data_free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1021,1
    - Dst: ERR_get_error
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1024,1
    - Dst: squelch_err_ssl_handshake
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1025,1
    - Dst: log_crypto_err_code
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1026,1
    - Dst: verbose
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1028,1
    - Dst: tap_data_free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1031,1
    - Dst: tap_check_peer
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1037,1
    - Dst: tap_data_free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1039,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct tap_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 982
    functionDepth: 3
    functionLinenumber: 982
    functionLinenumberEnd: 1043
    functionName: tap_handshake
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - squelch_err_ssl_handshake
    - log_err
    - tap_enable_brief_write
    - tap_disable_brief_write
    - log_crypto_err_code
    - verbose
    - ERR_get_error
    - SSL_do_handshake
    - tap_data_free
    - strerror
    - tap_check_peer
    - ERR_clear_error
    - SSL_get_error
    linkageType: ''
    returnType: int
    signature: int tap_handshake(struct tap_data* data)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1050,1
    - Dst: tap_handshake
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1054,1
    - Dst: tap_receive
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1060,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1062,1
    - Dst: tap_data_free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1065,1
    - Dst: ntohl
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1075,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1076,1
    - Dst: calloc
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1084,1
    - Dst: log_err
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1086,1
    - Dst: tap_data_free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1087,1
    - Dst: tap_receive
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1095,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1097,1
    - Dst: tap_data_free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1100,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1112,1
    - Dst: log_control_frame
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1116,1
    - Dst: log_data_frame
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1117,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1120,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1123,1
    - Dst: reply_with_accept
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1124,1
    - Dst: tap_data_free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1125,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1128,1
    - Dst: reply_with_finish
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1130,1
    - Dst: tap_data_free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1131,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1137,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 76
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1143
      start: 1047
    functionDepth: 4
    functionLinenumber: 1047
    functionLinenumberEnd: 1143
    functionName: dtio_tap_callback
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_err
    - ntohl
    - log_data_frame
    - log_info
    - tap_receive
    - reply_with_accept
    - free
    - calloc
    - tap_data_free
    - reply_with_finish
    - sldns_read_uint32
    - log_control_frame
    - tap_handshake
    linkageType: ''
    returnType: void
    signature: void dtio_tap_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(bits),
      void* arg)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1156,1
    - Dst: accept
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1157,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1174,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1175,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1177,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1178,1
    - Dst: log_err_addr
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1182,1
    - Dst: sock_strerror
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1182,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1186,1
    - Dst: calloc
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1190,1
    - Dst: getsockname
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1193,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1194,1
    - Dst: strdup
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1195,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1197,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1199,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1201,1
    - Dst: addr_to_str
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1207,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1208,1
    - Dst: strdup
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1209,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1211,1
    - Dst: calloc
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1215,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1216,1
    - Dst: incoming_ssl_fd
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1220,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1221,1
    - Dst: ub_event_new
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1223,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1225,1
    - Dst: ub_event_add
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1226,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1226,1
    - Dst: tap_data_list_insert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1227,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1228,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 55
    argCount: 3
    argNames:
    - fd
    - ATTR_UNUSED
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1229
      start: 1146
    functionDepth: 2
    functionLinenumber: 1146
    functionLinenumberEnd: 1229
    functionName: dtio_mainfdcallback
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - accept
    - tap_data_list_insert
    - addr_to_str
    - incoming_ssl_fd
    - log_info
    - WSAGetLastError
    - getsockname
    - ub_winsock_tcp_wouldblock
    - free
    - fd_set_nonblock
    - log_err_addr
    - calloc
    - sock_strerror
    - fatal_exit
    - ub_event_add
    - memset
    - strdup
    - ub_event_new
    linkageType: ''
    returnType: void
    signature: void dtio_mainfdcallback(int fd, short ATTR_UNUSED(bits), void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tap_socket_new_local
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1238,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1240,1
    - Dst: tap_socket_list_insert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1241,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1242,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - maindata
    - local_list
    argTypes:
    - struct main_tap_data*
    - struct config_strlist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1244
      start: 1232
    functionDepth: 2
    functionLinenumber: 1232
    functionLinenumberEnd: 1244
    functionName: setup_local_list
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - tap_socket_new_local
    - tap_socket_list_insert
    - fatal_exit
    linkageType: ''
    returnType: void
    signature: "void setup_local_list(struct main_tap_data* maindata,\n\tstruct config_strlist_head*
      local_list)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tap_socket_new_tcpaccept
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1253,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1255,1
    - Dst: tap_socket_list_insert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1256,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1257,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - maindata
    - tcp_list
    argTypes:
    - struct main_tap_data*
    - struct config_strlist_head*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1247
    functionDepth: 2
    functionLinenumber: 1247
    functionLinenumberEnd: 1259
    functionName: setup_tcp_list
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - tap_socket_new_tcpaccept
    - tap_socket_list_insert
    - fatal_exit
    linkageType: ''
    returnType: void
    signature: "void setup_tcp_list(struct main_tap_data* maindata,\n\tstruct config_strlist_head*
      tcp_list)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tap_socket_new_tlsaccept
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1269,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1271,1
    - Dst: tap_socket_list_insert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1272,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1273,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 6
    argNames:
    - maindata
    - tls_list
    - server_key
    - server_cert
    - verifypem
    - tls_protocols
    argTypes:
    - struct main_tap_data*
    - struct config_strlist_head*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1275
      start: 1262
    functionDepth: 2
    functionLinenumber: 1262
    functionLinenumberEnd: 1275
    functionName: setup_tls_list
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - tap_socket_new_tlsaccept
    - tap_socket_list_insert
    - fatal_exit
    linkageType: ''
    returnType: void
    signature: "void setup_tls_list(struct main_tap_data* maindata,\n\tstruct config_strlist_head*
      tls_list, char* server_key,\n\tchar* server_cert, char* verifypem, char* tls_protocols)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1289,1
    - Dst: strlen
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1289,1
    - Dst: ub_event_base_loopexit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1292,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - sig
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1296
      start: 1282
    functionDepth: 0
    functionLinenumber: 1282
    functionLinenumberEnd: 1296
    functionName: main_sigh
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - write
    - ub_event_base_loopexit
    - strlen
    linkageType: ''
    returnType: RETSIGTYPE
    signature: RETSIGTYPE main_sigh(int sig)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1311,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1312,1
    - Dst: memset
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1313,1
    - Dst: ub_default_event_base
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1314,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1315,1
    - Dst: ub_event_base_free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1319,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1320,1
    - Dst: ub_get_event_sys
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1323,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1324,1
    - Dst: setup_local_list
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1326,1
    - Dst: setup_tcp_list
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1327,1
    - Dst: setup_tls_list
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1328,1
    - Dst: tap_socket_list_addevs
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1330,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1331,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1332,1
    - Dst: ub_event_base_dispatch
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1334,1
    - Dst: log_info
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1337,1
    - Dst: tap_socket_list_delete
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1338,1
    - Dst: ub_event_base_free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1339,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1340,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 7
    argNames:
    - local_list
    - tcp_list
    - tls_list
    - server_key
    - server_cert
    - verifypem
    - tls_protocols
    argTypes:
    - struct config_strlist_head*
    - struct config_strlist_head*
    - struct config_strlist_head*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1299
    functionDepth: 6
    functionLinenumber: 1299
    functionLinenumberEnd: 1341
    functionName: setup_and_run
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - tap_socket_list_delete
    - setup_tcp_list
    - ub_event_base_free
    - log_info
    - ub_get_event_sys
    - fatal_exit
    - ub_event_base_dispatch
    - free
    - tap_socket_list_addevs
    - calloc
    - memset
    - setup_tls_list
    - ub_default_event_base
    - setup_local_list
    linkageType: ''
    returnType: void
    signature: "void setup_and_run(struct config_strlist_head* local_list,\n\tstruct
      config_strlist_head* tcp_list,\n\tstruct config_strlist_head* tls_list, char*
      server_key,\n\tchar* server_cert, char* verifypem, char* tls_protocols)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1350,1
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1352,1
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1353,1
    - Dst: calloc
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1355,1
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1356,1
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1357,1
    - Dst: tap_data_list_insert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1357,1
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1362,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1367,1
    - Dst: tap_data_list_try_to_free_tail
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1369,1
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1372,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1377,1
    - Dst: tap_data_list_try_to_free_tail
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1379,1
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1382,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1388,1
    - Dst: tap_data_list_try_to_free_tail
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1392,1
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1395,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1401,1
    - Dst: tap_data_list_try_to_free_tail
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1405,1
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1408,1
    - Dst: tap_data_list_delete
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1411,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1412,1
    - Dst: calloc
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1415,1
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1416,1
    - Dst: calloc
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1418,1
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1419,1
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1420,1
    - Dst: tap_data_list_insert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1420,1
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1425,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1430,1
    - Dst: tap_data_list_try_to_free_tail
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1432,1
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1435,1
    - Dst: tap_data_list_delete
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1438,1
    - Dst: free
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1439,1
    - Dst: log_get_lock
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1441,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1442,1
    - Dst: log_get_lock
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1442,1
    - Dst: checklock_stop
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1444,1
    - Dst: WSACleanup
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1446,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 87
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1449
      start: 1344
    functionDepth: 4
    functionLinenumber: 1344
    functionLinenumberEnd: 1449
    functionName: internal_unittest
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - tap_data_list_insert
    - tap_data_list_delete
    - WSACleanup
    - free
    - tap_data_list_try_to_free_tail
    - checklock_stop
    - calloc
    - log_assert
    - log_get_lock
    - lock_basic_destroy
    linkageType: ''
    returnType: int
    signature: int internal_unittest()
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: WSAStartup
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1469,1
    - Dst: MAKEWORD
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1469,1
    - Dst: printf
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1470,1
    - Dst: signal
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1474,1
    - Dst: signal
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1476,1
    - Dst: signal
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1479,1
    - Dst: signal
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1482,1
    - Dst: signal
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1484,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1485,1
    - Dst: memset
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1486,1
    - Dst: memset
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1487,1
    - Dst: memset
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1488,1
    - Dst: checklock_start
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1491,1
    - Dst: log_ident_set
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1492,1
    - Dst: log_init
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1493,1
    - Dst: signal
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1496,1
    - Dst: perror
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1497,1
    - Dst: getopt
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1503,1
    - Dst: cfg_strlist_append
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1506,1
    - Dst: strdup
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1507,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1508,1
    - Dst: cfg_strlist_append
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1511,1
    - Dst: strdup
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1512,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1513,1
    - Dst: cfg_strlist_append
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1516,1
    - Dst: strdup
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1517,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1518,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1541,1
    - Dst: internal_unittest
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1544,1
    - Dst: usage
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1548,1
    - Dst: ERR_load_SSL_strings
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1557,1
    - Dst: OpenSSL_add_all_algorithms
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1561,1
    - Dst: OPENSSL_init_crypto
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1564,1
    - Dst: defined
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1567,1
    - Dst: SSL_library_init
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1573,1
    - Dst: OPENSSL_init_ssl
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1575,1
    - Dst: defined
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1576,1
    - Dst: setup_and_run
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1583,1
    - Dst: config_delstrlist
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1585,1
    - Dst: config_delstrlist
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1586,1
    - Dst: config_delstrlist
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1587,1
    - Dst: log_get_lock
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1589,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1590,1
    - Dst: log_get_lock
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1590,1
    - Dst: checklock_stop
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1592,1
    - Dst: WSACleanup
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1594,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 75
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1597
      start: 1457
    functionDepth: 7
    functionLinenumber: 1457
    functionLinenumberEnd: 1597
    functionName: main
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 6
    functionsReached:
    - getopt
    - WSACleanup
    - log_init
    - internal_unittest
    - memset
    - cfg_strlist_append
    - ERR_load_SSL_strings
    - SSL_library_init
    - printf
    - log_ident_set
    - config_delstrlist
    - defined
    - OPENSSL_init_ssl
    - checklock_stop
    - log_get_lock
    - MAKEWORD
    - lock_basic_destroy
    - setup_and_run
    - strdup
    - perror
    - OpenSSL_add_all_algorithms
    - fatal_exit
    - OPENSSL_init_crypto
    - WSAStartup
    - checklock_start
    - usage
    - signal
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ATTR_UNUSED(tube)
    - ATTR_UNUSED(buffer)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - struct tube*
    - uint8_t*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1615
      start: 1610
    functionDepth: 1
    functionLinenumber: 1610
    functionLinenumberEnd: 1615
    functionName: worker_handle_control_cmd
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void worker_handle_control_cmd(struct tube* ATTR_UNUSED(tube),\n\tuint8_t*
      ATTR_UNUSED(buffer), size_t ATTR_UNUSED(len),\n\tint ATTR_UNUSED(error), void*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1621,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1623
      start: 1617
    functionDepth: 1
    functionLinenumber: 1617
    functionLinenumberEnd: 1623
    functionName: worker_handle_request
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int worker_handle_request(struct comm_point* ATTR_UNUSED(c), \n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1629,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(reply_info)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1631
      start: 1625
    functionDepth: 1
    functionLinenumber: 1625
    functionLinenumberEnd: 1631
    functionName: worker_handle_service_reply
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int worker_handle_service_reply(struct comm_point* ATTR_UNUSED(c),
      \n\tvoid* ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply*
      ATTR_UNUSED(reply_info))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1637,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1639
      start: 1633
    functionDepth: 1
    functionLinenumber: 1633
    functionLinenumberEnd: 1639
    functionName: remote_accept_callback
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int remote_accept_callback(struct comm_point* ATTR_UNUSED(c), \n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1647
      start: 1641
    functionDepth: 1
    functionLinenumber: 1641
    functionLinenumberEnd: 1647
    functionName: remote_control_callback
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 1
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int remote_control_callback(struct comm_point* ATTR_UNUSED(c), \n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1651,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1652
      start: 1649
    functionDepth: 1
    functionLinenumber: 1649
    functionLinenumberEnd: 1652
    functionName: worker_sighandler
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 1
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_sighandler(int ATTR_UNUSED(sig), void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1665,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 16
    argNames:
    - ATTR_UNUSED(qinfo)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(addr)
    - ATTR_UNUSED
    - ATTR_UNUSED(zone)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(tls_auth_name)
    - ATTR_UNUSED(q)
    - ATTR_UNUSED(was_ratelimited)
    - ATTR_UNUSED(ratelimit_incremented)
    argTypes:
    - struct query_info*
    - uint16_t
    - int
    - int
    - int
    - int
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - int
    - int
    - char*
    - struct module_qstate*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1667
      start: 1654
    functionDepth: 1
    functionLinenumber: 1654
    functionLinenumberEnd: 1667
    functionName: worker_send_query
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: struct outbound_entry
    signature: "struct outbound_entry * worker_send_query(\n\tstruct query_info* ATTR_UNUSED(qinfo),
      uint16_t ATTR_UNUSED(flags),\n\tint ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec),\n\tint
      ATTR_UNUSED(nocaps), int ATTR_UNUSED(check_ratelimit),\n\tstruct sockaddr_storage*
      ATTR_UNUSED(addr),\n\tsocklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone),\n\tsize_t
      ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream),\n\tint ATTR_UNUSED(ssl_upstream),
      char* ATTR_UNUSED(tls_auth_name),\n\tstruct module_qstate* ATTR_UNUSED(q), int*
      ATTR_UNUSED(was_ratelimited),\n\tint* ATTR_UNUSED(ratelimit_incremented))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1673,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1674
      start: 1670
    functionDepth: 1
    functionLinenumber: 1670
    functionLinenumberEnd: 1674
    functionName: worker_win_stop_cb
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void worker_win_stop_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),
      void* \n\tATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1679,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1680
      start: 1676
    functionDepth: 1
    functionLinenumber: 1676
    functionLinenumberEnd: 1680
    functionName: wsvc_cron_cb
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void wsvc_cron_cb(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1686,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1687
      start: 1683
    functionDepth: 1
    functionLinenumber: 1683
    functionLinenumberEnd: 1687
    functionName: worker_alloc_cleanup
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_alloc_cleanup(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1700,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 16
    argNames:
    - ATTR_UNUSED(qinfo)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(addr)
    - ATTR_UNUSED
    - ATTR_UNUSED(zone)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(tls_auth_name)
    - ATTR_UNUSED(q)
    - ATTR_UNUSED(was_ratelimited)
    - ATTR_UNUSED(ratelimit_incremented)
    argTypes:
    - struct query_info*
    - uint16_t
    - int
    - int
    - int
    - int
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - int
    - int
    - char*
    - struct module_qstate*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1702
      start: 1689
    functionDepth: 1
    functionLinenumber: 1689
    functionLinenumberEnd: 1702
    functionName: libworker_send_query
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: struct outbound_entry
    signature: "struct outbound_entry * libworker_send_query(\n\tstruct query_info*
      ATTR_UNUSED(qinfo), uint16_t ATTR_UNUSED(flags),\n\tint ATTR_UNUSED(dnssec),
      int ATTR_UNUSED(want_dnssec),\n\tint ATTR_UNUSED(nocaps), int ATTR_UNUSED(check_ratelimit),\n\tstruct
      sockaddr_storage* ATTR_UNUSED(addr),\n\tsocklen_t ATTR_UNUSED(addrlen), uint8_t*
      ATTR_UNUSED(zone),\n\tsize_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream),\n\tint
      ATTR_UNUSED(ssl_upstream), char* ATTR_UNUSED(tls_auth_name),\n\tstruct module_qstate*
      ATTR_UNUSED(q), int* ATTR_UNUSED(was_ratelimited),\n\tint* ATTR_UNUSED(ratelimit_incremented))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1708,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(reply_info)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1710
      start: 1704
    functionDepth: 1
    functionLinenumber: 1704
    functionLinenumberEnd: 1710
    functionName: libworker_handle_service_reply
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int libworker_handle_service_reply(struct comm_point* ATTR_UNUSED(c),
      \n\tvoid* ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply*
      ATTR_UNUSED(reply_info))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1716,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ATTR_UNUSED(tube)
    - ATTR_UNUSED(buffer)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - struct tube*
    - uint8_t*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1717
      start: 1712
    functionDepth: 1
    functionLinenumber: 1712
    functionLinenumberEnd: 1717
    functionName: libworker_handle_control_cmd
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void libworker_handle_control_cmd(struct tube* ATTR_UNUSED(tube),\n
      \       uint8_t* ATTR_UNUSED(buffer), size_t ATTR_UNUSED(len),\n        int
      ATTR_UNUSED(error), void* ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1723,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(buf)
    - ATTR_UNUSED
    - ATTR_UNUSED(why_bogus)
    - ATTR_UNUSED
    argTypes:
    - void*
    - int
    - struct sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1724
      start: 1719
    functionDepth: 1
    functionLinenumber: 1719
    functionLinenumberEnd: 1724
    functionName: libworker_fg_done_cb
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void libworker_fg_done_cb(void* ATTR_UNUSED(arg), int ATTR_UNUSED(rcode),
      \n\tstruct sldns_buffer* ATTR_UNUSED(buf), enum sec_status ATTR_UNUSED(s),\n\tchar*
      ATTR_UNUSED(why_bogus), int ATTR_UNUSED(was_ratelimited))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1730,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(buf)
    - ATTR_UNUSED
    - ATTR_UNUSED(why_bogus)
    - ATTR_UNUSED
    argTypes:
    - void*
    - int
    - struct sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1731
      start: 1726
    functionDepth: 1
    functionLinenumber: 1726
    functionLinenumberEnd: 1731
    functionName: libworker_bg_done_cb
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void libworker_bg_done_cb(void* ATTR_UNUSED(arg), int ATTR_UNUSED(rcode),
      \n\tstruct sldns_buffer* ATTR_UNUSED(buf), enum sec_status ATTR_UNUSED(s),\n\tchar*
      ATTR_UNUSED(why_bogus), int ATTR_UNUSED(was_ratelimited))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(buf)
    - ATTR_UNUSED
    - ATTR_UNUSED(why_bogus)
    - ATTR_UNUSED
    argTypes:
    - void*
    - int
    - struct sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1738
      start: 1733
    functionDepth: 1
    functionLinenumber: 1733
    functionLinenumberEnd: 1738
    functionName: libworker_event_done_cb
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void libworker_event_done_cb(void* ATTR_UNUSED(arg), int ATTR_UNUSED(rcode),
      \n\tstruct sldns_buffer* ATTR_UNUSED(buf), enum sec_status ATTR_UNUSED(s),\n\tchar*
      ATTR_UNUSED(why_bogus), int ATTR_UNUSED(was_ratelimited))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1742,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1743
      start: 1740
    functionDepth: 1
    functionLinenumber: 1740
    functionLinenumberEnd: 1743
    functionName: libworker_alloc_cleanup
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void libworker_alloc_cleanup(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1747,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED(a)
    - ATTR_UNUSED(b)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1745
    functionDepth: 1
    functionLinenumber: 1745
    functionLinenumberEnd: 1749
    functionName: context_query_cmp
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int context_query_cmp(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1753,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1754
      start: 1751
    functionDepth: 1
    functionLinenumber: 1751
    functionLinenumberEnd: 1754
    functionName: worker_stat_timer_cb
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_stat_timer_cb(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1758,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1759
      start: 1756
    functionDepth: 1
    functionLinenumber: 1756
    functionLinenumberEnd: 1759
    functionName: worker_probe_timer_cb
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_probe_timer_cb(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1763,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1764
      start: 1761
    functionDepth: 1
    functionLinenumber: 1761
    functionLinenumberEnd: 1764
    functionName: worker_start_accept
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_start_accept(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1768,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1769
      start: 1766
    functionDepth: 1
    functionLinenumber: 1766
    functionLinenumberEnd: 1769
    functionName: worker_stop_accept
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_stop_accept(void* ATTR_UNUSED(arg))
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - e1
    - e2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1788
      start: 1779
    functionDepth: 0
    functionLinenumber: 1779
    functionLinenumberEnd: 1788
    functionName: order_lock_cmp
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int order_lock_cmp(const void* e1, const void* e2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1793,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1794
      start: 1790
    functionDepth: 0
    functionLinenumber: 1790
    functionLinenumberEnd: 1794
    functionName: codeline_cmp
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int codeline_cmp(const void* a, const void* b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1798,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED(a)
    - ATTR_UNUSED(b)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1800
      start: 1796
    functionDepth: 1
    functionLinenumber: 1796
    functionLinenumberEnd: 1800
    functionName: replay_var_compare
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int replay_var_compare(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1804,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED(str)
    - ATTR_UNUSED(arg)
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1805
      start: 1802
    functionDepth: 1
    functionLinenumber: 1802
    functionLinenumberEnd: 1805
    functionName: remote_get_opt_ssl
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void remote_get_opt_ssl(char* ATTR_UNUSED(str), void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1810,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1811
      start: 1807
    functionDepth: 1
    functionLinenumber: 1807
    functionLinenumberEnd: 1811
    functionName: fast_reload_service_cb
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void fast_reload_service_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1817,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1819
      start: 1813
    functionDepth: 1
    functionLinenumber: 1813
    functionLinenumberEnd: 1819
    functionName: fast_reload_client_callback
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int fast_reload_client_callback(struct comm_point* ATTR_UNUSED(c),\n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1825,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1826
      start: 1822
    functionDepth: 1
    functionLinenumber: 1822
    functionLinenumberEnd: 1826
    functionName: doq_client_event_cb
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void doq_client_event_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/unbound-dnstap-socket.c:1833,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1834
      start: 1830
    functionDepth: 1
    functionLinenumber: 1830
    functionLinenumberEnd: 1834
    functionName: doq_client_timer_cb
    functionSourceFile: /src/unbound/dnstap/unbound-dnstap-socket.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void doq_client_timer_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/dnstap/dnstap.c:72,1
    - Dst: malloc
      Src: /src/unbound/dnstap/dnstap.c:76,1
    - Dst: dnstap__dnstap__pack_to_buffer
      Src: /src/unbound/dnstap/dnstap.c:81,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 3
    argNames:
    - d
    - buf
    - sz
    argTypes:
    - Dnstap__Dnstap*
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 87
    functionName: dt_pack
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 0
    functionsReached:
    - malloc
    - memset
    - dnstap__dnstap__pack_to_buffer
    linkageType: ''
    returnType: int
    signature: int dt_pack(const Dnstap__Dnstap *d, void **buf, size_t *sz)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/dnstap/dnstap.c:93,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/dnstap/dnstap.c:107,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/dnstap/dnstap.c:110,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - env
    argTypes:
    - struct dt_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 112
    functionName: dt_sample_rate_limited
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: int
    signature: int dt_sample_rate_limited(struct dt_env* env)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dt_msg_queue_submit
      Src: /src/unbound/dnstap/dnstap.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - env
    - buf
    - len_buf
    argTypes:
    - struct dt_env*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 118
    functionName: dt_send
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 0
    functionsReached:
    - dt_msg_queue_submit
    linkageType: ''
    returnType: void
    signature: void dt_send(const struct dt_env *env, void *buf, size_t len_buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/dnstap/dnstap.c:125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - env
    - dm
    - mtype
    argTypes:
    - struct dt_env*
    - struct dt_msg*
    - Dnstap__Message__Type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 141
    functionName: dt_msg_init
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: void
    signature: "void dt_msg_init(const struct dt_env *env,\n\t    struct dt_msg *dm,\n\t
      \   Dnstap__Message__Type mtype)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/dnstap/dnstap.c:148,1
    - Dst: stat
      Src: /src/unbound/dnstap/dnstap.c:149,1
    - Dst: log_warn
      Src: /src/unbound/dnstap/dnstap.c:150,1
    - Dst: strerror
      Src: /src/unbound/dnstap/dnstap.c:151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - socket_path
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 153
    functionName: check_socket_file
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 0
    functionsReached:
    - memset
    - strerror
    - log_warn
    - stat
    linkageType: ''
    returnType: void
    signature: void check_socket_file(const char* socket_path)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/unbound/dnstap/dnstap.c:163,1
    - Dst: strlen
      Src: /src/unbound/dnstap/dnstap.c:164,1
    - Dst: strlen
      Src: /src/unbound/dnstap/dnstap.c:165,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dnstap.c:166,1
    - Dst: check_socket_file
      Src: /src/unbound/dnstap/dnstap.c:168,1
    - Dst: calloc
      Src: /src/unbound/dnstap/dnstap.c:171,1
    - Dst: lock_basic_init
      Src: /src/unbound/dnstap/dnstap.c:174,1
    - Dst: dt_io_thread_create
      Src: /src/unbound/dnstap/dnstap.c:176,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dnstap.c:178,1
    - Dst: dt_delete
      Src: /src/unbound/dnstap/dnstap.c:179,1
    - Dst: dt_io_thread_apply_cfg
      Src: /src/unbound/dnstap/dnstap.c:182,1
    - Dst: dt_delete
      Src: /src/unbound/dnstap/dnstap.c:183,1
    - Dst: dt_apply_cfg
      Src: /src/unbound/dnstap/dnstap.c:186,1
    - Dst: dt_delete
      Src: /src/unbound/dnstap/dnstap.c:187,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 155
    functionDepth: 2
    functionLinenumber: 155
    functionLinenumberEnd: 191
    functionName: dt_create
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 1
    functionsReached:
    - log_err
    - strncmp
    - dt_io_thread_apply_cfg
    - verbose
    - dt_io_thread_create
    - lock_basic_init
    - dt_delete
    - calloc
    - check_socket_file
    - strlen
    - dt_apply_cfg
    linkageType: ''
    returnType: struct dt_env
    signature: 'struct dt_env *

      dt_create(struct config_file* cfg)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/dnstap/dnstap.c:198,1
    - Dst: free
      Src: /src/unbound/dnstap/dnstap.c:203,1
    - Dst: gethostname
      Src: /src/unbound/dnstap/dnstap.c:205,1
    - Dst: strdup
      Src: /src/unbound/dnstap/dnstap.c:207,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dnstap.c:209,1
    - Dst: strerror
      Src: /src/unbound/dnstap/dnstap.c:210,1
    - Dst: strdup
      Src: /src/unbound/dnstap/dnstap.c:216,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dnstap.c:219,1
    - Dst: strlen
      Src: /src/unbound/dnstap/dnstap.c:223,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dnstap.c:224,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 2
    argNames:
    - env
    - cfg
    argTypes:
    - struct dt_env*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 227
    functionName: dt_apply_identity
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 0
    functionsReached:
    - log_err
    - verbose
    - free
    - strerror
    - strlen
    - strdup
    - gethostname
    linkageType: ''
    returnType: int
    signature: int dt_apply_identity(struct dt_env *env, struct config_file *cfg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/dnstap/dnstap.c:233,1
    - Dst: free
      Src: /src/unbound/dnstap/dnstap.c:238,1
    - Dst: strdup
      Src: /src/unbound/dnstap/dnstap.c:240,1
    - Dst: strdup
      Src: /src/unbound/dnstap/dnstap.c:242,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dnstap.c:244,1
    - Dst: strlen
      Src: /src/unbound/dnstap/dnstap.c:248,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dnstap.c:249,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - env
    - cfg
    argTypes:
    - struct dt_env*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 252
    functionName: dt_apply_version
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 0
    functionsReached:
    - log_err
    - verbose
    - free
    - strlen
    - strdup
    linkageType: ''
    returnType: int
    signature: int dt_apply_version(struct dt_env *env, struct config_file *cfg)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/dnstap/dnstap.c:260,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dnstap.c:265,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dnstap.c:270,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dnstap.c:275,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dnstap.c:280,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dnstap.c:285,1
    - Dst: lock_basic_lock
      Src: /src/unbound/dnstap/dnstap.c:287,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dnstap.c:290,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/dnstap/dnstap.c:292,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - env
    - cfg
    argTypes:
    - struct dt_env*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 293
    functionName: dt_apply_logcfg
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 1
    functionsReached:
    - verbose
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: void dt_apply_logcfg(struct dt_env *env, struct config_file *cfg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dt_apply_logcfg
      Src: /src/unbound/dnstap/dnstap.c:301,1
    - Dst: dt_apply_identity
      Src: /src/unbound/dnstap/dnstap.c:302,1
    - Dst: dt_apply_version
      Src: /src/unbound/dnstap/dnstap.c:304,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - env
    - cfg
    argTypes:
    - struct dt_env*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 307
    functionName: dt_apply_cfg
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 2
    functionsReached:
    - dt_apply_version
    - dt_apply_identity
    - dt_apply_logcfg
    linkageType: ''
    returnType: int
    signature: int dt_apply_cfg(struct dt_env *env, struct config_file *cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dt_msg_queue_create
      Src: /src/unbound/dnstap/dnstap.c:312,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dnstap.c:314,1
    - Dst: dt_io_thread_register_queue
      Src: /src/unbound/dnstap/dnstap.c:317,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dnstap.c:318,1
    - Dst: dt_msg_queue_delete
      Src: /src/unbound/dnstap/dnstap.c:319,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - env
    - base
    argTypes:
    - struct dt_env*
    - struct comm_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 309
    functionDepth: 1
    functionLinenumber: 309
    functionLinenumberEnd: 324
    functionName: dt_init
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 1
    functionsReached:
    - log_err
    - dt_msg_queue_delete
    - dt_io_thread_register_queue
    - dt_msg_queue_create
    linkageType: ''
    returnType: int
    signature: int dt_init(struct dt_env *env, struct comm_base* base)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dt_io_thread_unregister_queue
      Src: /src/unbound/dnstap/dnstap.c:329,1
    - Dst: dt_msg_queue_delete
      Src: /src/unbound/dnstap/dnstap.c:330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - env
    argTypes:
    - struct dt_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 331
    functionName: dt_deinit
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 1
    functionsReached:
    - dt_msg_queue_delete
    - dt_io_thread_unregister_queue
    linkageType: ''
    returnType: void
    signature: void dt_deinit(struct dt_env* env)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dt_io_thread_delete
      Src: /src/unbound/dnstap/dnstap.c:338,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/dnstap/dnstap.c:339,1
    - Dst: free
      Src: /src/unbound/dnstap/dnstap.c:340,1
    - Dst: free
      Src: /src/unbound/dnstap/dnstap.c:341,1
    - Dst: free
      Src: /src/unbound/dnstap/dnstap.c:342,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - env
    argTypes:
    - struct dt_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 333
    functionDepth: 1
    functionLinenumber: 333
    functionLinenumberEnd: 343
    functionName: dt_delete
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 2
    functionsReached:
    - lock_basic_destroy
    - dt_io_thread_delete
    - free
    linkageType: ''
    returnType: void
    signature: void dt_delete(struct dt_env *env)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 5
    argNames:
    - tv
    - time_sec
    - has_time_sec
    - time_nsec
    - has_time_nsec
    argTypes:
    - struct timeval*
    - uint64_t*
    - protobuf_c_boolean*
    - uint32_t*
    - protobuf_c_boolean*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 345
    functionDepth: 0
    functionLinenumber: 345
    functionLinenumberEnd: 356
    functionName: dt_fill_timeval
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void dt_fill_timeval(const struct timeval *tv,\n\t\tuint64_t *time_sec,
      protobuf_c_boolean *has_time_sec,\n\t\tuint32_t *time_nsec, protobuf_c_boolean
      *has_time_nsec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/dnstap.c:361,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/dnstap/dnstap.c:362,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/dnstap/dnstap.c:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - b
    - p
    - has
    argTypes:
    - sldns_buffer*
    - ProtobufCBinaryData*
    - protobuf_c_boolean*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 358
    functionDepth: 2
    functionLinenumber: 358
    functionLinenumberEnd: 365
    functionName: dt_fill_buffer
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 0
    functionsReached:
    - log_assert
    - sldns_buffer_limit
    - sldns_buffer_begin
    linkageType: ''
    returnType: void
    signature: void dt_fill_buffer(sldns_buffer *b, ProtobufCBinaryData *p, protobuf_c_boolean
      *has)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/dnstap.c:378,1
    - Dst: ntohs
      Src: /src/unbound/dnstap/dnstap.c:392,1
    - Dst: ntohs
      Src: /src/unbound/dnstap/dnstap.c:407,1
    - Dst: ntohs
      Src: /src/unbound/dnstap/dnstap.c:424,1
    - Dst: ntohs
      Src: /src/unbound/dnstap/dnstap.c:435,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 54
    argCount: 13
    argNames:
    - dm
    - qs
    - rs
    - cptype
    - cpssl
    - qaddr
    - has_qaddr
    - qport
    - has_qport
    - raddr
    - has_raddr
    - rport
    - has_rport
    argTypes:
    - struct dt_msg*
    - struct sockaddr_storage*
    - struct sockaddr_storage*
    - enum comm_point_type
    - void*
    - ProtobufCBinaryData*
    - protobuf_c_boolean*
    - uint32_t*
    - protobuf_c_boolean*
    - ProtobufCBinaryData*
    - protobuf_c_boolean*
    - uint32_t*
    - protobuf_c_boolean*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 462
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 462
    functionName: dt_msg_fill_net
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 0
    functionsReached:
    - log_assert
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void dt_msg_fill_net(struct dt_msg *dm,\n\t\tstruct sockaddr_storage
      *qs,\n\t\tstruct sockaddr_storage *rs,\n\t\tenum comm_point_type cptype,\n\t\tvoid
      *cpssl,\n\t\tProtobufCBinaryData *qaddr, protobuf_c_boolean *has_qaddr,\n\t\tuint32_t
      *qport, protobuf_c_boolean *has_qport,\n\t\tProtobufCBinaryData *raddr, protobuf_c_boolean
      *has_raddr,\n\t\tuint32_t *rport, protobuf_c_boolean *has_rport)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dt_sample_rate_limited
      Src: /src/unbound/dnstap/dnstap.c:476,1
    - Dst: memcpy
      Src: /src/unbound/dnstap/dnstap.c:480,1
    - Dst: gettimeofday
      Src: /src/unbound/dnstap/dnstap.c:481,1
    - Dst: dt_msg_init
      Src: /src/unbound/dnstap/dnstap.c:484,1
    - Dst: dt_fill_timeval
      Src: /src/unbound/dnstap/dnstap.c:487,1
    - Dst: dt_fill_buffer
      Src: /src/unbound/dnstap/dnstap.c:492,1
    - Dst: dt_msg_fill_net
      Src: /src/unbound/dnstap/dnstap.c:495,1
    - Dst: dt_pack
      Src: /src/unbound/dnstap/dnstap.c:502,1
    - Dst: dt_send
      Src: /src/unbound/dnstap/dnstap.c:503,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 7
    argNames:
    - env
    - qsock
    - rsock
    - cptype
    - cpssl
    - qmsg
    - tstamp
    argTypes:
    - struct dt_env*
    - struct sockaddr_storage*
    - struct sockaddr_storage*
    - enum comm_point_type
    - void*
    - sldns_buffer*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 464
    functionDepth: 3
    functionLinenumber: 464
    functionLinenumberEnd: 504
    functionName: dt_msg_send_client_query
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 1
    functionsReached:
    - memcpy
    - dt_msg_fill_net
    - dt_fill_buffer
    - dt_msg_init
    - dt_sample_rate_limited
    - gettimeofday
    - dt_pack
    - dt_fill_timeval
    - dt_send
    linkageType: ''
    returnType: void
    signature: "void dt_msg_send_client_query(struct dt_env *env,\n\t\t\t struct sockaddr_storage
      *qsock,\n\t\t\t struct sockaddr_storage *rsock,\n\t\t\t enum comm_point_type
      cptype,\n\t\t\t void *cpssl,\n\t\t\t sldns_buffer *qmsg,\n\t\t\t struct timeval*
      tstamp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dt_sample_rate_limited
      Src: /src/unbound/dnstap/dnstap.c:517,1
    - Dst: gettimeofday
      Src: /src/unbound/dnstap/dnstap.c:520,1
    - Dst: dt_msg_init
      Src: /src/unbound/dnstap/dnstap.c:523,1
    - Dst: dt_fill_timeval
      Src: /src/unbound/dnstap/dnstap.c:526,1
    - Dst: dt_fill_buffer
      Src: /src/unbound/dnstap/dnstap.c:531,1
    - Dst: dt_msg_fill_net
      Src: /src/unbound/dnstap/dnstap.c:534,1
    - Dst: dt_pack
      Src: /src/unbound/dnstap/dnstap.c:540,1
    - Dst: dt_send
      Src: /src/unbound/dnstap/dnstap.c:541,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 6
    argNames:
    - env
    - qsock
    - rsock
    - cptype
    - cpssl
    - rmsg
    argTypes:
    - struct dt_env*
    - struct sockaddr_storage*
    - struct sockaddr_storage*
    - enum comm_point_type
    - void*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 506
    functionDepth: 3
    functionLinenumber: 506
    functionLinenumberEnd: 542
    functionName: dt_msg_send_client_response
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 1
    functionsReached:
    - dt_msg_fill_net
    - dt_fill_buffer
    - dt_msg_init
    - dt_sample_rate_limited
    - gettimeofday
    - dt_pack
    - dt_fill_timeval
    - dt_send
    linkageType: ''
    returnType: void
    signature: "void dt_msg_send_client_response(struct dt_env *env,\n\t\t\t    struct
      sockaddr_storage *qsock,\n\t\t\t    struct sockaddr_storage *rsock,\n\t\t\t
      \   enum comm_point_type cptype,\n\t\t\t    void *cpssl,\n\t\t\t    sldns_buffer
      *rmsg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dt_sample_rate_limited
      Src: /src/unbound/dnstap/dnstap.c:557,1
    - Dst: gettimeofday
      Src: /src/unbound/dnstap/dnstap.c:560,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/dnstap/dnstap.c:561,1
    - Dst: dt_msg_init
      Src: /src/unbound/dnstap/dnstap.c:567,1
    - Dst: dt_msg_init
      Src: /src/unbound/dnstap/dnstap.c:571,1
    - Dst: dt_fill_timeval
      Src: /src/unbound/dnstap/dnstap.c:580,1
    - Dst: dt_fill_buffer
      Src: /src/unbound/dnstap/dnstap.c:585,1
    - Dst: dt_msg_fill_net
      Src: /src/unbound/dnstap/dnstap.c:588,1
    - Dst: dt_pack
      Src: /src/unbound/dnstap/dnstap.c:594,1
    - Dst: dt_send
      Src: /src/unbound/dnstap/dnstap.c:595,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 8
    argNames:
    - env
    - rsock
    - qsock
    - cptype
    - cpssl
    - zone
    - zone_len
    - qmsg
    argTypes:
    - struct dt_env*
    - struct sockaddr_storage*
    - struct sockaddr_storage*
    - enum comm_point_type
    - void*
    - uint8_t*
    - size_t
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 544
    functionDepth: 4
    functionLinenumber: 544
    functionLinenumberEnd: 596
    functionName: dt_msg_send_outside_query
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 0
    functionsReached:
    - dt_msg_fill_net
    - dt_fill_buffer
    - sldns_buffer_read_u16_at
    - dt_msg_init
    - dt_sample_rate_limited
    - gettimeofday
    - dt_pack
    - dt_fill_timeval
    - dt_send
    linkageType: ''
    returnType: void
    signature: "void dt_msg_send_outside_query(struct dt_env *env,\n\t\t\t  struct
      sockaddr_storage *rsock,\n\t\t\t  struct sockaddr_storage *qsock,\n\t\t\t  enum
      comm_point_type cptype,\n\t\t\t  void *cpssl,\n\t\t\t  uint8_t *zone, size_t
      zone_len,\n\t\t\t  sldns_buffer *qmsg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dt_sample_rate_limited
      Src: /src/unbound/dnstap/dnstap.c:613,1
    - Dst: log_assert
      Src: /src/unbound/dnstap/dnstap.c:616,1
    - Dst: memcpy
      Src: /src/unbound/dnstap/dnstap.c:617,1
    - Dst: ntohs
      Src: /src/unbound/dnstap/dnstap.c:618,1
    - Dst: dt_msg_init
      Src: /src/unbound/dnstap/dnstap.c:624,1
    - Dst: dt_msg_init
      Src: /src/unbound/dnstap/dnstap.c:628,1
    - Dst: dt_fill_timeval
      Src: /src/unbound/dnstap/dnstap.c:637,1
    - Dst: dt_fill_timeval
      Src: /src/unbound/dnstap/dnstap.c:642,1
    - Dst: dt_fill_buffer
      Src: /src/unbound/dnstap/dnstap.c:647,1
    - Dst: dt_msg_fill_net
      Src: /src/unbound/dnstap/dnstap.c:650,1
    - Dst: dt_pack
      Src: /src/unbound/dnstap/dnstap.c:656,1
    - Dst: dt_send
      Src: /src/unbound/dnstap/dnstap.c:657,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 12
    argNames:
    - env
    - rsock
    - qsock
    - cptype
    - cpssl
    - zone
    - zone_len
    - qbuf
    - qbuf_len
    - qtime
    - rtime
    - rmsg
    argTypes:
    - struct dt_env*
    - struct sockaddr_storage*
    - struct sockaddr_storage*
    - enum comm_point_type
    - void*
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - struct timeval*
    - struct timeval*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 598
    functionDepth: 3
    functionLinenumber: 598
    functionLinenumberEnd: 658
    functionName: dt_msg_send_outside_response
    functionSourceFile: /src/unbound/dnstap/dnstap.c
    functionUses: 0
    functionsReached:
    - memcpy
    - dt_msg_fill_net
    - dt_fill_buffer
    - dt_msg_init
    - log_assert
    - dt_sample_rate_limited
    - dt_pack
    - dt_fill_timeval
    - dt_send
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void dt_msg_send_outside_response(struct dt_env *env,\n\tstruct sockaddr_storage
      *rsock,\n\tstruct sockaddr_storage *qsock,\n\tenum comm_point_type cptype,\n\tvoid
      *cpssl,\n\tuint8_t *zone, size_t zone_len,\n\tuint8_t *qbuf, size_t qbuf_len,\n\tconst
      struct timeval *qtime,\n\tconst struct timeval *rtime,\n\tsldns_buffer *rmsg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/dnstap/dtstream.c:106,1
    - Dst: comm_timer_create
      Src: /src/unbound/dnstap/dtstream.c:111,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:113,1
    - Dst: lock_basic_init
      Src: /src/unbound/dnstap/dtstream.c:116,1
    - Dst: lock_protect
      Src: /src/unbound/dnstap/dtstream.c:117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct comm_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 119
    functionName: dt_msg_queue_create
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 1
    functionsReached:
    - lock_basic_init
    - free
    - comm_timer_create
    - lock_protect
    - calloc
    linkageType: ''
    returnType: struct dt_msg_queue
    signature: 'struct dt_msg_queue *

      dt_msg_queue_create(struct comm_base* base)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:128,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:129,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - mq
    argTypes:
    - struct dt_msg_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 136
    functionName: dt_msg_queue_clear
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void dt_msg_queue_clear(struct dt_msg_queue* mq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_destroy
      Src: /src/unbound/dnstap/dtstream.c:142,1
    - Dst: dt_msg_queue_clear
      Src: /src/unbound/dnstap/dtstream.c:143,1
    - Dst: comm_timer_delete
      Src: /src/unbound/dnstap/dtstream.c:144,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - mq
    argTypes:
    - struct dt_msg_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 138
    functionDepth: 2
    functionLinenumber: 138
    functionLinenumberEnd: 146
    functionName: dt_msg_queue_delete
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 2
    functionsReached:
    - free
    - lock_basic_destroy
    - comm_timer_delete
    - dt_msg_queue_clear
    linkageType: ''
    returnType: void
    signature: void dt_msg_queue_delete(struct dt_msg_queue* mq)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/unbound/dnstap/dtstream.c:156,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/dtstream.c:162,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/dtstream.c:164,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:167,1
    - Dst: sock_strerror
      Src: /src/unbound/dnstap/dtstream.c:168,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 18
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 173
    functionName: dtio_wakeup
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - write
    - sock_strerror
    - WSAGetLastError
    - log_err
    linkageType: ''
    returnType: void
    signature: void dtio_wakeup(struct dt_io_thread* dtio)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/dnstap/dtstream.c:180,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/dnstap/dtstream.c:182,1
    - Dst: dtio_wakeup
      Src: /src/unbound/dnstap/dtstream.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 175
    functionDepth: 2
    functionLinenumber: 175
    functionLinenumberEnd: 184
    functionName: mq_wakeup_cb
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    - dtio_wakeup
    linkageType: ''
    returnType: void
    signature: void mq_wakeup_cb(void* arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/dnstap/dtstream.c:207,1
    - Dst: comm_timer_set
      Src: /src/unbound/dnstap/dtstream.c:212,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/dnstap/dtstream.c:214,1
    - Dst: comm_timer_is_set
      Src: /src/unbound/dnstap/dtstream.c:224,1
    - Dst: comm_timer_set
      Src: /src/unbound/dnstap/dtstream.c:225,1
    - Dst: comm_timer_set
      Src: /src/unbound/dnstap/dtstream.c:229,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/dnstap/dtstream.c:231,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - mq
    - wakeupnow
    argTypes:
    - struct dt_msg_queue*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 232
    functionName: dt_msg_queue_start_timer
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - comm_timer_set
    - comm_timer_is_set
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: void dt_msg_queue_start_timer(struct dt_msg_queue* mq, int wakeupnow)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:247,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:251,1
    - Dst: malloc
      Src: /src/unbound/dnstap/dtstream.c:256,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:258,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:259,1
    - Dst: lock_basic_lock
      Src: /src/unbound/dnstap/dtstream.c:267,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/dnstap/dtstream.c:282,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:283,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:284,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/dnstap/dtstream.c:297,1
    - Dst: dt_msg_queue_start_timer
      Src: /src/unbound/dnstap/dtstream.c:300,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 43
    argCount: 3
    argNames:
    - mq
    - buf
    - len
    argTypes:
    - struct dt_msg_queue*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 302
    functionName: dt_msg_queue_submit
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 1
    functionsReached:
    - log_err
    - lock_basic_unlock
    - free
    - malloc
    - lock_basic_lock
    - dt_msg_queue_start_timer
    linkageType: ''
    returnType: void
    signature: void dt_msg_queue_submit(struct dt_msg_queue* mq, void* buf, size_t
      len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/dnstap/dtstream.c:306,1
    - Dst: lock_basic_init
      Src: /src/unbound/dnstap/dtstream.c:307,1
    - Dst: lock_protect
      Src: /src/unbound/dnstap/dtstream.c:308,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 311
    functionName: dt_io_thread_create
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 1
    functionsReached:
    - lock_protect
    - calloc
    - lock_basic_init
    linkageType: ''
    returnType: struct dt_io_thread
    signature: struct dt_io_thread * dt_io_thread_create(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_destroy
      Src: /src/unbound/dnstap/dtstream.c:317,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:321,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:324,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:325,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:326,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:327,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:328,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/dnstap/dtstream.c:331,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:334,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 313
    functionDepth: 1
    functionLinenumber: 313
    functionLinenumberEnd: 335
    functionName: dt_io_thread_delete
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 1
    functionsReached:
    - free
    - lock_basic_destroy
    - SSL_CTX_free
    linkageType: ''
    returnType: void
    signature: void dt_io_thread_delete(struct dt_io_thread* dtio)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: log_warn
      Src: /src/unbound/dnstap/dtstream.c:340,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:358,1
    - Dst: strncmp
      Src: /src/unbound/dnstap/dtstream.c:363,1
    - Dst: strlen
      Src: /src/unbound/dnstap/dtstream.c:364,1
    - Dst: strlen
      Src: /src/unbound/dnstap/dtstream.c:365,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:366,1
    - Dst: strdup
      Src: /src/unbound/dnstap/dtstream.c:367,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:369,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:376,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:379,1
    - Dst: strdup
      Src: /src/unbound/dnstap/dtstream.c:380,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:382,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:391,1
    - Dst: strdup
      Src: /src/unbound/dnstap/dtstream.c:392,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:395,1
    - Dst: check_auth_name_for_ssl
      Src: /src/unbound/dnstap/dtstream.c:398,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:404,1
    - Dst: strdup
      Src: /src/unbound/dnstap/dtstream.c:405,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:408,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:413,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:420,1
    - Dst: strdup
      Src: /src/unbound/dnstap/dtstream.c:421,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:424,1
    - Dst: connect_sslctx_create
      Src: /src/unbound/dnstap/dtstream.c:434,1
    - Dst: connect_sslctx_create
      Src: /src/unbound/dnstap/dtstream.c:439,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:445,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 87
    argCount: 2
    argNames:
    - dtio
    - cfg
    argTypes:
    - struct dt_io_thread*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 455
    functionName: dt_io_thread_apply_cfg
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 1
    functionsReached:
    - log_err
    - strncmp
    - check_auth_name_for_ssl
    - free
    - strlen
    - log_warn
    - connect_sslctx_create
    - strdup
    linkageType: ''
    returnType: int
    signature: int dt_io_thread_apply_cfg(struct dt_io_thread* dtio, struct config_file
      *cfg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/dnstap/dtstream.c:460,1
    - Dst: lock_basic_lock
      Src: /src/unbound/dnstap/dtstream.c:462,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/dnstap/dtstream.c:464,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - dtio
    - mq
    argTypes:
    - struct dt_io_thread*
    - struct dt_msg_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 470
    functionName: dt_io_thread_register_queue
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 1
    functionsReached:
    - malloc
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: int
    signature: "int dt_io_thread_register_queue(struct dt_io_thread* dtio,\n        struct
      dt_msg_queue* mq)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/dnstap/dtstream.c:484,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/dnstap/dtstream.c:486,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:487,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - dtio
    - mq
    argTypes:
    - struct dt_io_thread*
    - struct dt_msg_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 494
    functionName: dt_io_thread_unregister_queue
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 1
    functionsReached:
    - free
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: "void dt_io_thread_unregister_queue(struct dt_io_thread* dtio,\n        struct
      dt_msg_queue* mq)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/dnstap/dtstream.c:501,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/dnstap/dtstream.c:508,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:512,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/dnstap/dtstream.c:515,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - mq
    - buf
    - len
    argTypes:
    - struct dt_msg_queue*
    - void**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 517
    functionName: dt_msg_queue_pop
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - free
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: int
    signature: "int dt_msg_queue_pop(struct dt_msg_queue* mq, void** buf,\n\tsize_t*
      len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dt_msg_queue_pop
      Src: /src/unbound/dnstap/dtstream.c:525,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - dtio
    - mq
    argTypes:
    - struct dt_io_thread*
    - struct dt_msg_queue*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 533
      start: 520
    functionDepth: 2
    functionLinenumber: 520
    functionLinenumberEnd: 533
    functionName: dtio_find_in_queue
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - dt_msg_queue_pop
    linkageType: ''
    returnType: int
    signature: "int dtio_find_in_queue(struct dt_io_thread* dtio,\n\tstruct dt_msg_queue*
      mq)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dtio_find_in_queue
      Src: /src/unbound/dnstap/dtstream.c:551,1
    - Dst: dtio_find_in_queue
      Src: /src/unbound/dnstap/dtstream.c:558,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 536
    functionDepth: 3
    functionLinenumber: 536
    functionLinenumberEnd: 563
    functionName: dtio_find_msg
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - dtio_find_in_queue
    linkageType: ''
    returnType: int
    signature: int dtio_find_msg(struct dt_io_thread* dtio)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:571,1
    - Dst: dtio_open_output
      Src: /src/unbound/dnstap/dtstream.c:573,1
    - Dst: dtio_add_output_event_write
      Src: /src/unbound/dnstap/dtstream.c:575,1
    - Dst: dtio_reconnect_enable
      Src: /src/unbound/dnstap/dtstream.c:581,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 566
    functionDepth: 1
    functionLinenumber: 566
    functionLinenumberEnd: 582
    functionName: dtio_reconnect_timeout_cb
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - dtio_reconnect_enable
    - verbose
    - dtio_open_output
    - dtio_add_output_event_write
    linkageType: ''
    returnType: void
    signature: "void dtio_reconnect_timeout_cb(int ATTR_UNUSED(fd),\n\tshort ATTR_UNUSED(bits),
      void* arg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:602,1
    - Dst: memset
      Src: /src/unbound/dnstap/dtstream.c:606,1
    - Dst: ub_timer_add
      Src: /src/unbound/dnstap/dtstream.c:609,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:611,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 585
    functionDepth: 1
    functionLinenumber: 585
    functionLinenumberEnd: 615
    functionName: dtio_reconnect_enable
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 1
    functionsReached:
    - verbose
    - memset
    - ub_timer_add
    - log_err
    linkageType: ''
    returnType: void
    signature: void dtio_reconnect_enable(struct dt_io_thread* dtio)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_timer_del
      Src: /src/unbound/dnstap/dtstream.c:622,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 618
    functionDepth: 0
    functionLinenumber: 618
    functionLinenumberEnd: 624
    functionName: dtio_reconnect_del
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - ub_timer_del
    linkageType: ''
    returnType: void
    signature: void dtio_reconnect_del(struct dt_io_thread* dtio)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dtio_reconnect_del
      Src: /src/unbound/dnstap/dtstream.c:631,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 632
      start: 628
    functionDepth: 1
    functionLinenumber: 628
    functionLinenumberEnd: 632
    functionName: dtio_reconnect_clear
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - dtio_reconnect_del
    linkageType: ''
    returnType: void
    signature: void dtio_reconnect_clear(struct dt_io_thread* dtio)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dtio_reconnect_del
      Src: /src/unbound/dnstap/dtstream.c:637,1
    - Dst: dtio_reconnect_enable
      Src: /src/unbound/dnstap/dtstream.c:639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - dtio
    - msec
    argTypes:
    - struct dt_io_thread*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 635
    functionDepth: 2
    functionLinenumber: 635
    functionLinenumberEnd: 640
    functionName: dtio_reconnect_slow
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - dtio_reconnect_del
    - dtio_reconnect_enable
    linkageType: ''
    returnType: void
    signature: void dtio_reconnect_slow(struct dt_io_thread* dtio, int msec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 643
    functionDepth: 1
    functionLinenumber: 643
    functionLinenumberEnd: 650
    functionName: dtio_cur_msg_free
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void dtio_cur_msg_free(struct dt_io_thread* dtio)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:656,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - rb
    argTypes:
    - struct dt_frame_read_buf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 664
      start: 653
    functionDepth: 1
    functionLinenumber: 653
    functionLinenumberEnd: 664
    functionName: dtio_read_frame_free
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void dtio_read_frame_free(struct dt_frame_read_buf* rb)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_event_del
      Src: /src/unbound/dnstap/dtstream.c:671,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 667
    functionDepth: 0
    functionLinenumber: 667
    functionLinenumberEnd: 674
    functionName: dtio_del_output_event
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - ub_event_del
    linkageType: ''
    returnType: void
    signature: void dtio_del_output_event(struct dt_io_thread* dtio)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sock_close
      Src: /src/unbound/dnstap/dtstream.c:679,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 677
    functionDepth: 1
    functionLinenumber: 677
    functionLinenumberEnd: 681
    functionName: dtio_close_fd
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - sock_close
    linkageType: ''
    returnType: void
    signature: void dtio_close_fd(struct dt_io_thread* dtio)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ub_event_free
      Src: /src/unbound/dnstap/dtstream.c:688,1
    - Dst: SSL_shutdown
      Src: /src/unbound/dnstap/dtstream.c:692,1
    - Dst: SSL_free
      Src: /src/unbound/dnstap/dtstream.c:693,1
    - Dst: dtio_close_fd
      Src: /src/unbound/dnstap/dtstream.c:697,1
    - Dst: dtio_cur_msg_free
      Src: /src/unbound/dnstap/dtstream.c:703,1
    - Dst: dtio_read_frame_free
      Src: /src/unbound/dnstap/dtstream.c:708,1
    - Dst: dtio_reconnect_enable
      Src: /src/unbound/dnstap/dtstream.c:710,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 684
    functionDepth: 2
    functionLinenumber: 684
    functionLinenumberEnd: 711
    functionName: dtio_close_output
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - dtio_read_frame_free
    - SSL_free
    - dtio_close_fd
    - ub_event_free
    - dtio_cur_msg_free
    - SSL_shutdown
    - dtio_reconnect_enable
    linkageType: ''
    returnType: void
    signature: void dtio_close_output(struct dt_io_thread* dtio)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: getsockopt
      Src: /src/unbound/dnstap/dtstream.c:721,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/dtstream.c:726,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/dnstap/dtstream.c:738,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:747,1
    - Dst: sock_strerror
      Src: /src/unbound/dnstap/dtstream.c:748,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:753,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:756,1
    - Dst: dtio_reconnect_clear
      Src: /src/unbound/dnstap/dtstream.c:758,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 715
    functionDepth: 2
    functionLinenumber: 715
    functionLinenumberEnd: 761
    functionName: dtio_check_nb_connect
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - log_err
    - getsockopt
    - verbose
    - WSAGetLastError
    - ub_winsock_tcp_wouldblock
    - sock_strerror
    - dtio_reconnect_clear
    linkageType: ''
    returnType: int
    signature: int dtio_check_nb_connect(struct dt_io_thread* dtio)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ERR_clear_error
      Src: /src/unbound/dnstap/dtstream.c:771,1
    - Dst: SSL_write
      Src: /src/unbound/dnstap/dtstream.c:772,1
    - Dst: SSL_get_error
      Src: /src/unbound/dnstap/dtstream.c:774,1
    - Dst: dtio_enable_brief_read
      Src: /src/unbound/dnstap/dtstream.c:780,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:795,1
    - Dst: strerror
      Src: /src/unbound/dnstap/dtstream.c:796,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/dnstap/dtstream.c:800,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 3
    argNames:
    - dtio
    - buf
    - len
    argTypes:
    - struct dt_io_thread*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 767
    functionDepth: 1
    functionLinenumber: 767
    functionLinenumberEnd: 804
    functionName: dtio_write_ssl
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - log_err
    - SSL_write
    - log_crypto_err_io
    - dtio_enable_brief_read
    - strerror
    - ERR_clear_error
    - SSL_get_error
    linkageType: ''
    returnType: int
    signature: "int dtio_write_ssl(struct dt_io_thread* dtio, uint8_t* buf,\n\tsize_t
      len)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dtio_write_ssl
      Src: /src/unbound/dnstap/dtstream.c:818,1
    - Dst: send
      Src: /src/unbound/dnstap/dtstream.c:820,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/dtstream.c:826,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/dtstream.c:828,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/dnstap/dtstream.c:829,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:835,1
    - Dst: sock_strerror
      Src: /src/unbound/dnstap/dtstream.c:835,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - dtio
    - buf
    - len
    argTypes:
    - struct dt_io_thread*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 810
    functionDepth: 2
    functionLinenumber: 810
    functionLinenumberEnd: 839
    functionName: dtio_write_buf
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - log_err
    - WSAGetLastError
    - ub_winsock_tcp_wouldblock
    - sock_strerror
    - dtio_write_ssl
    - send
    linkageType: ''
    returnType: int
    signature: "int dtio_write_buf(struct dt_io_thread* dtio, uint8_t* buf,\n\tsize_t
      len)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: htonl
      Src: /src/unbound/dnstap/dtstream.c:846,1
    - Dst: log_assert
      Src: /src/unbound/dnstap/dtstream.c:853,1
    - Dst: writev
      Src: /src/unbound/dnstap/dtstream.c:854,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/dtstream.c:860,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/dtstream.c:862,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/dnstap/dtstream.c:863,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:869,1
    - Dst: sock_strerror
      Src: /src/unbound/dnstap/dtstream.c:869,1
    - Dst: dtio_del_output_event
      Src: /src/unbound/dnstap/dtstream.c:871,1
    - Dst: dtio_close_output
      Src: /src/unbound/dnstap/dtstream.c:872,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 886
      start: 844
    functionDepth: 3
    functionLinenumber: 844
    functionLinenumberEnd: 886
    functionName: dtio_write_with_writev
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - log_err
    - dtio_close_output
    - dtio_del_output_event
    - WSAGetLastError
    - ub_winsock_tcp_wouldblock
    - log_assert
    - sock_strerror
    - htonl
    - writev
    linkageType: ''
    returnType: int
    signature: int dtio_write_with_writev(struct dt_io_thread* dtio)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dtio_write_with_writev
      Src: /src/unbound/dnstap/dtstream.c:900,1
    - Dst: htonl
      Src: /src/unbound/dnstap/dtstream.c:903,1
    - Dst: dtio_write_buf
      Src: /src/unbound/dnstap/dtstream.c:904,1
    - Dst: dtio_del_output_event
      Src: /src/unbound/dnstap/dtstream.c:909,1
    - Dst: dtio_close_output
      Src: /src/unbound/dnstap/dtstream.c:910,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 891
    functionDepth: 4
    functionLinenumber: 891
    functionLinenumberEnd: 920
    functionName: dtio_write_more_of_len
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - dtio_close_output
    - dtio_write_buf
    - dtio_del_output_event
    - htonl
    - dtio_write_with_writev
    linkageType: ''
    returnType: int
    signature: int dtio_write_more_of_len(struct dt_io_thread* dtio)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dtio_write_buf
      Src: /src/unbound/dnstap/dtstream.c:929,1
    - Dst: dtio_del_output_event
      Src: /src/unbound/dnstap/dtstream.c:934,1
    - Dst: dtio_close_output
      Src: /src/unbound/dnstap/dtstream.c:935,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 924
    functionDepth: 3
    functionLinenumber: 924
    functionLinenumberEnd: 945
    functionName: dtio_write_more_of_data
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - dtio_close_output
    - dtio_write_buf
    - dtio_del_output_event
    linkageType: ''
    returnType: int
    signature: int dtio_write_more_of_data(struct dt_io_thread* dtio)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dtio_write_more_of_len
      Src: /src/unbound/dnstap/dtstream.c:952,1
    - Dst: dtio_write_more_of_data
      Src: /src/unbound/dnstap/dtstream.c:956,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 960
      start: 949
    functionDepth: 5
    functionLinenumber: 949
    functionLinenumberEnd: 960
    functionName: dtio_write_more
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - dtio_write_more_of_len
    - dtio_write_more_of_data
    linkageType: ''
    returnType: int
    signature: int dtio_write_more(struct dt_io_thread* dtio)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/unbound/dnstap/dtstream.c:966,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/dtstream.c:975,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/dtstream.c:977,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/dnstap/dtstream.c:978,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:988,1
    - Dst: strerror
      Src: /src/unbound/dnstap/dtstream.c:989,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:997,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 28
    argCount: 3
    argNames:
    - dtio
    - buf
    - len
    argTypes:
    - struct dt_io_thread*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 964
    functionDepth: 1
    functionLinenumber: 964
    functionLinenumberEnd: 1003
    functionName: receive_bytes
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 1
    functionsReached:
    - log_err
    - verbose
    - WSAGetLastError
    - ub_winsock_tcp_wouldblock
    - strerror
    - recv
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t receive_bytes(struct dt_io_thread* dtio, void* buf, size_t
      len)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ERR_clear_error
      Src: /src/unbound/dnstap/dtstream.c:1011,1
    - Dst: SSL_read
      Src: /src/unbound/dnstap/dtstream.c:1012,1
    - Dst: SSL_get_error
      Src: /src/unbound/dnstap/dtstream.c:1014,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1019,1
    - Dst: dtio_enable_brief_write
      Src: /src/unbound/dnstap/dtstream.c:1026,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1035,1
    - Dst: strerror
      Src: /src/unbound/dnstap/dtstream.c:1036,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1037,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/dnstap/dtstream.c:1041,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1042,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 3
    argNames:
    - dtio
    - buf
    - len
    argTypes:
    - struct dt_io_thread*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1008
    functionDepth: 1
    functionLinenumber: 1008
    functionLinenumberEnd: 1047
    functionName: ssl_read_bytes
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 1
    functionsReached:
    - log_err
    - log_crypto_err_io
    - verbose
    - dtio_enable_brief_write
    - SSL_read
    - strerror
    - ERR_clear_error
    - SSL_get_error
    linkageType: ''
    returnType: int
    signature: int ssl_read_bytes(struct dt_io_thread* dtio, void* buf, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: receive_bytes
      Src: /src/unbound/dnstap/dtstream.c:1067,1
    - Dst: dtio_del_output_event
      Src: /src/unbound/dnstap/dtstream.c:1073,1
    - Dst: dtio_close_output
      Src: /src/unbound/dnstap/dtstream.c:1074,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1052
    functionDepth: 3
    functionLinenumber: 1052
    functionLinenumberEnd: 1076
    functionName: dtio_check_close
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - dtio_close_output
    - receive_bytes
    - dtio_del_output_event
    linkageType: ''
    returnType: int
    signature: int dtio_check_close(struct dt_io_thread* dtio)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ub_event_del
      Src: /src/unbound/dnstap/dtstream.c:1226,1
    - Dst: ub_event_del_bits
      Src: /src/unbound/dnstap/dtstream.c:1227,1
    - Dst: ub_event_add
      Src: /src/unbound/dnstap/dtstream.c:1228,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1229,1
    - Dst: dtio_close_output
      Src: /src/unbound/dnstap/dtstream.c:1233,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1239
      start: 1218
    functionDepth: 3
    functionLinenumber: 1218
    functionLinenumberEnd: 1239
    functionName: dtio_add_output_event_read
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - dtio_close_output
    - log_err
    - ub_event_del_bits
    - ub_event_add
    - ub_event_del
    linkageType: ''
    returnType: int
    signature: int dtio_add_output_event_read(struct dt_io_thread* dtio)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ub_event_del
      Src: /src/unbound/dnstap/dtstream.c:1250,1
    - Dst: ub_event_add_bits
      Src: /src/unbound/dnstap/dtstream.c:1251,1
    - Dst: ub_event_add
      Src: /src/unbound/dnstap/dtstream.c:1252,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1253,1
    - Dst: dtio_close_output
      Src: /src/unbound/dnstap/dtstream.c:1257,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1263
      start: 1242
    functionDepth: 3
    functionLinenumber: 1242
    functionLinenumberEnd: 1263
    functionName: dtio_add_output_event_write
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 1
    functionsReached:
    - dtio_close_output
    - log_err
    - ub_event_add
    - ub_event_del
    - ub_event_add_bits
    linkageType: ''
    returnType: int
    signature: int dtio_add_output_event_write(struct dt_io_thread* dtio)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dtio_add_output_event_read
      Src: /src/unbound/dnstap/dtstream.c:1270,1
    - Dst: lock_basic_lock
      Src: /src/unbound/dnstap/dtstream.c:1275,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/dnstap/dtstream.c:1277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1278
      start: 1266
    functionDepth: 4
    functionLinenumber: 1266
    functionLinenumberEnd: 1278
    functionName: dtio_sleep
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    - dtio_add_output_event_read
    linkageType: ''
    returnType: void
    signature: void dtio_sleep(struct dt_io_thread* dtio)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ub_event_del
      Src: /src/unbound/dnstap/dtstream.c:1286,1
    - Dst: ub_event_del_bits
      Src: /src/unbound/dnstap/dtstream.c:1287,1
    - Dst: ub_event_add
      Src: /src/unbound/dnstap/dtstream.c:1288,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1289,1
    - Dst: dtio_add_output_event_read
      Src: /src/unbound/dnstap/dtstream.c:1294,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1295
      start: 1282
    functionDepth: 4
    functionLinenumber: 1282
    functionLinenumberEnd: 1295
    functionName: dtio_enable_brief_read
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 1
    functionsReached:
    - log_err
    - ub_event_del_bits
    - ub_event_add
    - ub_event_del
    - dtio_add_output_event_read
    linkageType: ''
    returnType: int
    signature: int dtio_enable_brief_read(struct dt_io_thread* dtio)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ub_event_del
      Src: /src/unbound/dnstap/dtstream.c:1304,1
    - Dst: ub_event_add_bits
      Src: /src/unbound/dnstap/dtstream.c:1305,1
    - Dst: ub_event_add
      Src: /src/unbound/dnstap/dtstream.c:1306,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1307,1
    - Dst: dtio_add_output_event_write
      Src: /src/unbound/dnstap/dtstream.c:1312,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1300
    functionDepth: 4
    functionLinenumber: 1300
    functionLinenumberEnd: 1313
    functionName: dtio_disable_brief_read
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - dtio_add_output_event_write
    - log_err
    - ub_event_add
    - ub_event_del
    - ub_event_add_bits
    linkageType: ''
    returnType: int
    signature: int dtio_disable_brief_read(struct dt_io_thread* dtio)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dtio_add_output_event_write
      Src: /src/unbound/dnstap/dtstream.c:1321,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1322
      start: 1318
    functionDepth: 4
    functionLinenumber: 1318
    functionLinenumberEnd: 1322
    functionName: dtio_enable_brief_write
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 1
    functionsReached:
    - dtio_add_output_event_write
    linkageType: ''
    returnType: int
    signature: int dtio_enable_brief_write(struct dt_io_thread* dtio)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dtio_add_output_event_read
      Src: /src/unbound/dnstap/dtstream.c:1330,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1327
    functionDepth: 4
    functionLinenumber: 1327
    functionLinenumberEnd: 1331
    functionName: dtio_disable_brief_write
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - dtio_add_output_event_read
    linkageType: ''
    returnType: int
    signature: int dtio_disable_brief_write(struct dt_io_thread* dtio)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_verify_mode
      Src: /src/unbound/dnstap/dtstream.c:1338,1
    - Dst: SSL_get_verify_result
      Src: /src/unbound/dnstap/dtstream.c:1340,1
    - Dst: SSL_get1_peer_certificate
      Src: /src/unbound/dnstap/dtstream.c:1342,1
    - Dst: SSL_get_peer_certificate
      Src: /src/unbound/dnstap/dtstream.c:1344,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1347,1
    - Dst: log_cert
      Src: /src/unbound/dnstap/dtstream.c:1352,1
    - Dst: SSL_get0_peername
      Src: /src/unbound/dnstap/dtstream.c:1355,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1356,1
    - Dst: SSL_get0_peername
      Src: /src/unbound/dnstap/dtstream.c:1359,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1362,1
    - Dst: X509_free
      Src: /src/unbound/dnstap/dtstream.c:1368,1
    - Dst: SSL_get1_peer_certificate
      Src: /src/unbound/dnstap/dtstream.c:1371,1
    - Dst: SSL_get_peer_certificate
      Src: /src/unbound/dnstap/dtstream.c:1373,1
    - Dst: log_cert
      Src: /src/unbound/dnstap/dtstream.c:1376,1
    - Dst: X509_free
      Src: /src/unbound/dnstap/dtstream.c:1378,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1380,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1388,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1392
      start: 1336
    functionDepth: 1
    functionLinenumber: 1336
    functionLinenumberEnd: 1392
    functionName: dtio_ssl_check_peer
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - verbose
    - log_cert
    - SSL_get0_peername
    - SSL_get_peer_certificate
    - X509_free
    - SSL_get_verify_mode
    - SSL_get_verify_result
    - SSL_get1_peer_certificate
    linkageType: ''
    returnType: int
    signature: int dtio_ssl_check_peer(struct dt_io_thread* dtio)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: dtio_disable_brief_read
      Src: /src/unbound/dnstap/dtstream.c:1404,1
    - Dst: dtio_stop_flush_exit
      Src: /src/unbound/dnstap/dtstream.c:1405,1
    - Dst: ERR_clear_error
      Src: /src/unbound/dnstap/dtstream.c:1412,1
    - Dst: SSL_do_handshake
      Src: /src/unbound/dnstap/dtstream.c:1413,1
    - Dst: SSL_get_error
      Src: /src/unbound/dnstap/dtstream.c:1415,1
    - Dst: dtio_enable_brief_read
      Src: /src/unbound/dnstap/dtstream.c:1418,1
    - Dst: dtio_stop_flush_exit
      Src: /src/unbound/dnstap/dtstream.c:1419,1
    - Dst: dtio_stop_flush_exit
      Src: /src/unbound/dnstap/dtstream.c:1428,1
    - Dst: dtio_del_output_event
      Src: /src/unbound/dnstap/dtstream.c:1429,1
    - Dst: dtio_reconnect_slow
      Src: /src/unbound/dnstap/dtstream.c:1430,1
    - Dst: dtio_close_output
      Src: /src/unbound/dnstap/dtstream.c:1431,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1447,1
    - Dst: strerror
      Src: /src/unbound/dnstap/dtstream.c:1448,1
    - Dst: dtio_stop_flush_exit
      Src: /src/unbound/dnstap/dtstream.c:1450,1
    - Dst: dtio_del_output_event
      Src: /src/unbound/dnstap/dtstream.c:1451,1
    - Dst: dtio_reconnect_slow
      Src: /src/unbound/dnstap/dtstream.c:1452,1
    - Dst: dtio_close_output
      Src: /src/unbound/dnstap/dtstream.c:1453,1
    - Dst: ERR_get_error
      Src: /src/unbound/dnstap/dtstream.c:1456,1
    - Dst: squelch_err_ssl_handshake
      Src: /src/unbound/dnstap/dtstream.c:1457,1
    - Dst: log_crypto_err_io_code
      Src: /src/unbound/dnstap/dtstream.c:1458,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1460,1
    - Dst: dtio_stop_flush_exit
      Src: /src/unbound/dnstap/dtstream.c:1464,1
    - Dst: dtio_del_output_event
      Src: /src/unbound/dnstap/dtstream.c:1465,1
    - Dst: dtio_reconnect_slow
      Src: /src/unbound/dnstap/dtstream.c:1466,1
    - Dst: dtio_close_output
      Src: /src/unbound/dnstap/dtstream.c:1467,1
    - Dst: dtio_ssl_check_peer
      Src: /src/unbound/dnstap/dtstream.c:1475,1
    - Dst: dtio_stop_flush_exit
      Src: /src/unbound/dnstap/dtstream.c:1477,1
    - Dst: dtio_del_output_event
      Src: /src/unbound/dnstap/dtstream.c:1478,1
    - Dst: dtio_reconnect_slow
      Src: /src/unbound/dnstap/dtstream.c:1479,1
    - Dst: dtio_close_output
      Src: /src/unbound/dnstap/dtstream.c:1480,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 70
    argCount: 2
    argNames:
    - dtio
    - info
    argTypes:
    - struct dt_io_thread*
    - struct stop_flush_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1484
      start: 1397
    functionDepth: 5
    functionLinenumber: 1397
    functionLinenumberEnd: 1484
    functionName: dtio_ssl_handshake
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - squelch_err_ssl_handshake
    - dtio_close_output
    - log_err
    - dtio_del_output_event
    - dtio_disable_brief_read
    - dtio_ssl_check_peer
    - verbose
    - ERR_get_error
    - log_crypto_err_io_code
    - SSL_do_handshake
    - dtio_enable_brief_read
    - strerror
    - dtio_reconnect_slow
    - dtio_stop_flush_exit
    - ERR_clear_error
    - SSL_get_error
    linkageType: ''
    returnType: int
    signature: "int dtio_ssl_handshake(struct dt_io_thread* dtio,\n\tstruct stop_flush_info*
      info)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: dtio_check_nb_connect
      Src: /src/unbound/dnstap/dtstream.c:1494,1
    - Dst: dtio_del_output_event
      Src: /src/unbound/dnstap/dtstream.c:1497,1
    - Dst: dtio_close_output
      Src: /src/unbound/dnstap/dtstream.c:1498,1
    - Dst: dtio_ssl_handshake
      Src: /src/unbound/dnstap/dtstream.c:1510,1
    - Dst: dtio_disable_brief_write
      Src: /src/unbound/dnstap/dtstream.c:1518,1
    - Dst: dtio_read_accept_frame
      Src: /src/unbound/dnstap/dtstream.c:1521,1
    - Dst: dtio_check_close
      Src: /src/unbound/dnstap/dtstream.c:1523,1
    - Dst: dtio_find_msg
      Src: /src/unbound/dnstap/dtstream.c:1537,1
    - Dst: dtio_sleep
      Src: /src/unbound/dnstap/dtstream.c:1541,1
    - Dst: dtio_find_msg
      Src: /src/unbound/dnstap/dtstream.c:1551,1
    - Dst: dtio_add_output_event_write
      Src: /src/unbound/dnstap/dtstream.c:1552,1
    - Dst: dtio_write_more
      Src: /src/unbound/dnstap/dtstream.c:1563,1
    - Dst: dtio_cur_msg_free
      Src: /src/unbound/dnstap/dtstream.c:1568,1
    - Dst: dtio_add_output_event_read
      Src: /src/unbound/dnstap/dtstream.c:1575,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 50
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - bits
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1488
    functionDepth: 6
    functionLinenumber: 1488
    functionLinenumberEnd: 1579
    functionName: dtio_output_cb
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - dtio_close_output
    - dtio_add_output_event_write
    - dtio_read_accept_frame
    - dtio_check_nb_connect
    - dtio_del_output_event
    - dtio_check_close
    - dtio_write_more
    - dtio_ssl_handshake
    - dtio_cur_msg_free
    - dtio_disable_brief_write
    - dtio_sleep
    - dtio_add_output_event_read
    - dtio_find_msg
    linkageType: ''
    returnType: void
    signature: void dtio_output_cb(int ATTR_UNUSED(fd), short bits, void* arg)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/unbound/dnstap/dtstream.c:1589,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/dtstream.c:1595,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/dtstream.c:1597,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1600,1
    - Dst: sock_strerror
      Src: /src/unbound/dnstap/dtstream.c:1600,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1603,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1605,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1607,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1610,1
    - Dst: dtio_add_output_event_write
      Src: /src/unbound/dnstap/dtstream.c:1616,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1620,1
    - Dst: ub_event_base_loopexit
      Src: /src/unbound/dnstap/dtstream.c:1623,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1625,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 36
    argCount: 3
    argNames:
    - fd
    - ATTR_UNUSED
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1627
      start: 1582
    functionDepth: 4
    functionLinenumber: 1582
    functionLinenumberEnd: 1627
    functionName: dtio_cmd_cb
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - log_err
    - read
    - dtio_add_output_event_write
    - verbose
    - WSAGetLastError
    - sock_strerror
    - ub_event_base_loopexit
    linkageType: ''
    returnType: void
    signature: void dtio_cmd_cb(int fd, short ATTR_UNUSED(bits), void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/dnstap/dtstream.c:1634,1
    - Dst: ub_default_event_base
      Src: /src/unbound/dnstap/dtstream.c:1635,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/dtstream.c:1637,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - dtio
    - secs
    - now
    argTypes:
    - struct dt_io_thread*
    - time_t*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1639
      start: 1631
    functionDepth: 0
    functionLinenumber: 1631
    functionLinenumberEnd: 1639
    functionName: dtio_setup_base
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - memset
    - ub_default_event_base
    - fatal_exit
    linkageType: ''
    returnType: void
    signature: "void dtio_setup_base(struct dt_io_thread* dtio, time_t* secs,\n\tstruct
      timeval* now)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fd_set_nonblock
      Src: /src/unbound/dnstap/dtstream.c:1646,1
    - Dst: ub_event_new
      Src: /src/unbound/dnstap/dtstream.c:1647,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/dtstream.c:1650,1
    - Dst: ub_event_add
      Src: /src/unbound/dnstap/dtstream.c:1653,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/dtstream.c:1654,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1656
      start: 1643
    functionDepth: 1
    functionLinenumber: 1643
    functionLinenumberEnd: 1656
    functionName: dtio_setup_cmd
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - fd_set_nonblock
    - ub_event_add
    - ub_event_new
    - fatal_exit
    linkageType: ''
    returnType: void
    signature: void dtio_setup_cmd(struct dt_io_thread* dtio)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dtio_reconnect_clear
      Src: /src/unbound/dnstap/dtstream.c:1661,1
    - Dst: ub_event_new
      Src: /src/unbound/dnstap/dtstream.c:1662,1
    - Dst: fatal_exit
      Src: /src/unbound/dnstap/dtstream.c:1665,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1667
      start: 1659
    functionDepth: 2
    functionLinenumber: 1659
    functionLinenumberEnd: 1667
    functionName: dtio_setup_reconnect
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - ub_event_new
    - fatal_exit
    - dtio_reconnect_clear
    linkageType: ''
    returnType: void
    signature: void dtio_setup_reconnect(struct dt_io_thread* dtio)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ub_event_base_loopexit
      Src: /src/unbound/dnstap/dtstream.c:1695,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1696,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct stop_flush_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1698
      start: 1690
    functionDepth: 1
    functionLinenumber: 1690
    functionLinenumberEnd: 1698
    functionName: dtio_stop_flush_exit
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 1
    functionsReached:
    - log_err
    - ub_event_base_loopexit
    linkageType: ''
    returnType: void
    signature: void dtio_stop_flush_exit(struct stop_flush_info* info)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dtio_write_buf
      Src: /src/unbound/dnstap/dtstream.c:1708,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1712,1
    - Dst: dtio_stop_flush_exit
      Src: /src/unbound/dnstap/dtstream.c:1713,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct stop_flush_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1724
      start: 1702
    functionDepth: 3
    functionLinenumber: 1702
    functionLinenumberEnd: 1724
    functionName: dtio_control_stop_send
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - dtio_write_buf
    - dtio_stop_flush_exit
    - verbose
    linkageType: ''
    returnType: int
    signature: int dtio_control_stop_send(struct stop_flush_info* info)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1732,1
    - Dst: dtio_stop_flush_exit
      Src: /src/unbound/dnstap/dtstream.c:1734,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1735
      start: 1726
    functionDepth: 2
    functionLinenumber: 1726
    functionLinenumberEnd: 1735
    functionName: dtio_stop_timer_cb
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - verbose
    - dtio_stop_flush_exit
    linkageType: ''
    returnType: void
    signature: "void dtio_stop_timer_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(bits),\n\tvoid*
      arg)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: dtio_check_nb_connect
      Src: /src/unbound/dnstap/dtstream.c:1746,1
    - Dst: dtio_stop_flush_exit
      Src: /src/unbound/dnstap/dtstream.c:1749,1
    - Dst: dtio_del_output_event
      Src: /src/unbound/dnstap/dtstream.c:1750,1
    - Dst: dtio_close_output
      Src: /src/unbound/dnstap/dtstream.c:1751,1
    - Dst: dtio_ssl_handshake
      Src: /src/unbound/dnstap/dtstream.c:1762,1
    - Dst: dtio_check_close
      Src: /src/unbound/dnstap/dtstream.c:1768,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1770,1
    - Dst: dtio_stop_flush_exit
      Src: /src/unbound/dnstap/dtstream.c:1772,1
    - Dst: dtio_write_more
      Src: /src/unbound/dnstap/dtstream.c:1780,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1782,1
    - Dst: dtio_stop_flush_exit
      Src: /src/unbound/dnstap/dtstream.c:1784,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1789,1
    - Dst: dtio_cur_msg_free
      Src: /src/unbound/dnstap/dtstream.c:1791,1
    - Dst: dtio_control_stop_send
      Src: /src/unbound/dnstap/dtstream.c:1795,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1797,1
    - Dst: dtio_stop_flush_exit
      Src: /src/unbound/dnstap/dtstream.c:1801,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 46
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - bits
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1802
      start: 1737
    functionDepth: 6
    functionLinenumber: 1737
    functionLinenumberEnd: 1802
    functionName: dtio_stop_ev_cb
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - dtio_close_output
    - dtio_check_nb_connect
    - dtio_del_output_event
    - dtio_check_close
    - verbose
    - dtio_write_more
    - dtio_ssl_handshake
    - dtio_control_stop_send
    - dtio_cur_msg_free
    - dtio_stop_flush_exit
    linkageType: ''
    returnType: void
    signature: void dtio_stop_ev_cb(int ATTR_UNUSED(fd), short bits, void* arg)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/dnstap/dtstream.c:1825,1
    - Dst: memset
      Src: /src/unbound/dnstap/dtstream.c:1826,1
    - Dst: ub_default_event_base
      Src: /src/unbound/dnstap/dtstream.c:1828,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1830,1
    - Dst: ub_event_new
      Src: /src/unbound/dnstap/dtstream.c:1833,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1836,1
    - Dst: ub_event_base_free
      Src: /src/unbound/dnstap/dtstream.c:1837,1
    - Dst: memset
      Src: /src/unbound/dnstap/dtstream.c:1840,1
    - Dst: ub_timer_add
      Src: /src/unbound/dnstap/dtstream.c:1842,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1844,1
    - Dst: ub_event_free
      Src: /src/unbound/dnstap/dtstream.c:1845,1
    - Dst: ub_event_base_free
      Src: /src/unbound/dnstap/dtstream.c:1846,1
    - Dst: ub_event_new
      Src: /src/unbound/dnstap/dtstream.c:1849,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1852,1
    - Dst: ub_timer_del
      Src: /src/unbound/dnstap/dtstream.c:1853,1
    - Dst: ub_event_free
      Src: /src/unbound/dnstap/dtstream.c:1854,1
    - Dst: ub_event_base_free
      Src: /src/unbound/dnstap/dtstream.c:1855,1
    - Dst: ub_event_add
      Src: /src/unbound/dnstap/dtstream.c:1858,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1859,1
    - Dst: ub_event_free
      Src: /src/unbound/dnstap/dtstream.c:1860,1
    - Dst: ub_timer_del
      Src: /src/unbound/dnstap/dtstream.c:1861,1
    - Dst: ub_event_free
      Src: /src/unbound/dnstap/dtstream.c:1862,1
    - Dst: ub_event_base_free
      Src: /src/unbound/dnstap/dtstream.c:1863,1
    - Dst: fstrm_create_control_frame_stop
      Src: /src/unbound/dnstap/dtstream.c:1866,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1869,1
    - Dst: ub_event_del
      Src: /src/unbound/dnstap/dtstream.c:1870,1
    - Dst: ub_event_free
      Src: /src/unbound/dnstap/dtstream.c:1871,1
    - Dst: ub_timer_del
      Src: /src/unbound/dnstap/dtstream.c:1872,1
    - Dst: ub_event_free
      Src: /src/unbound/dnstap/dtstream.c:1873,1
    - Dst: ub_event_base_free
      Src: /src/unbound/dnstap/dtstream.c:1874,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1880,1
    - Dst: ub_event_base_dispatch
      Src: /src/unbound/dnstap/dtstream.c:1881,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1882,1
    - Dst: strerror
      Src: /src/unbound/dnstap/dtstream.c:1883,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:1885,1
    - Dst: free
      Src: /src/unbound/dnstap/dtstream.c:1886,1
    - Dst: ub_event_del
      Src: /src/unbound/dnstap/dtstream.c:1888,1
    - Dst: ub_event_free
      Src: /src/unbound/dnstap/dtstream.c:1889,1
    - Dst: ub_timer_del
      Src: /src/unbound/dnstap/dtstream.c:1890,1
    - Dst: ub_event_free
      Src: /src/unbound/dnstap/dtstream.c:1891,1
    - Dst: ub_event_base_free
      Src: /src/unbound/dnstap/dtstream.c:1892,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 68
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1893
      start: 1805
    functionDepth: 1
    functionLinenumber: 1805
    functionLinenumberEnd: 1893
    functionName: dtio_control_stop_flush
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - log_err
    - fstrm_create_control_frame_stop
    - ub_default_event_base
    - verbose
    - ub_event_base_free
    - ub_event_base_dispatch
    - ub_timer_add
    - ub_event_add
    - ub_event_del
    - free
    - ub_event_free
    - strerror
    - memset
    - ub_timer_del
    - ub_event_new
    linkageType: ''
    returnType: void
    signature: void dtio_control_stop_flush(struct dt_io_thread* dtio)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dtio_control_stop_flush
      Src: /src/unbound/dnstap/dtstream.c:1898,1
    - Dst: dtio_del_output_event
      Src: /src/unbound/dnstap/dtstream.c:1899,1
    - Dst: dtio_close_output
      Src: /src/unbound/dnstap/dtstream.c:1900,1
    - Dst: ub_event_del
      Src: /src/unbound/dnstap/dtstream.c:1901,1
    - Dst: ub_event_free
      Src: /src/unbound/dnstap/dtstream.c:1902,1
    - Dst: close
      Src: /src/unbound/dnstap/dtstream.c:1904,1
    - Dst: _close
      Src: /src/unbound/dnstap/dtstream.c:1906,1
    - Dst: dtio_reconnect_del
      Src: /src/unbound/dnstap/dtstream.c:1909,1
    - Dst: ub_event_free
      Src: /src/unbound/dnstap/dtstream.c:1910,1
    - Dst: dtio_cur_msg_free
      Src: /src/unbound/dnstap/dtstream.c:1911,1
    - Dst: ub_event_base_free
      Src: /src/unbound/dnstap/dtstream.c:1913,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1915
      start: 1896
    functionDepth: 3
    functionLinenumber: 1896
    functionLinenumberEnd: 1915
    functionName: dtio_desetup
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - dtio_close_output
    - dtio_del_output_event
    - ub_event_base_free
    - ub_event_del
    - dtio_reconnect_del
    - ub_event_free
    - close
    - dtio_cur_msg_free
    - dtio_control_stop_flush
    - _close
    linkageType: ''
    returnType: void
    signature: void dtio_desetup(struct dt_io_thread* dtio)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/dtstream.c:1920,1
    - Dst: fstrm_create_control_frame_start
      Src: /src/unbound/dnstap/dtstream.c:1921,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1934
      start: 1918
    functionDepth: 1
    functionLinenumber: 1918
    functionLinenumberEnd: 1934
    functionName: dtio_control_start_send
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - fstrm_create_control_frame_start
    - log_assert
    linkageType: ''
    returnType: int
    signature: int dtio_control_start_send(struct dt_io_thread* dtio)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dnstap/dtstream.c:1939,1
    - Dst: fstrm_create_control_frame_ready
      Src: /src/unbound/dnstap/dtstream.c:1940,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1953
      start: 1937
    functionDepth: 1
    functionLinenumber: 1937
    functionLinenumberEnd: 1953
    functionName: dtio_control_ready_send
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - fstrm_create_control_frame_ready
    - log_assert
    linkageType: ''
    returnType: int
    signature: int dtio_control_ready_send(struct dt_io_thread* dtio)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/unbound/dnstap/dtstream.c:1960,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1962,1
    - Dst: sock_strerror
      Src: /src/unbound/dnstap/dtstream.c:1963,1
    - Dst: memset
      Src: /src/unbound/dnstap/dtstream.c:1966,1
    - Dst: strlcpy
      Src: /src/unbound/dnstap/dtstream.c:1973,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/dnstap/dtstream.c:1974,1
    - Dst: connect
      Src: /src/unbound/dnstap/dtstream.c:1975,1
    - Dst: dtio_close_fd
      Src: /src/unbound/dnstap/dtstream.c:1980,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1983,1
    - Dst: sock_strerror
      Src: /src/unbound/dnstap/dtstream.c:1984,1
    - Dst: dtio_close_fd
      Src: /src/unbound/dnstap/dtstream.c:1985,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:1990,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1993
      start: 1956
    functionDepth: 2
    functionLinenumber: 1956
    functionLinenumberEnd: 1993
    functionName: dtio_open_output_local
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - log_err
    - strlcpy
    - socket
    - dtio_close_fd
    - fd_set_nonblock
    - sock_strerror
    - memset
    - connect
    linkageType: ''
    returnType: int
    signature: int dtio_open_output_local(struct dt_io_thread* dtio)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/dnstap/dtstream.c:2000,1
    - Dst: extstrtoaddr
      Src: /src/unbound/dnstap/dtstream.c:2003,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:2004,1
    - Dst: socket
      Src: /src/unbound/dnstap/dtstream.c:2007,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:2009,1
    - Dst: sock_strerror
      Src: /src/unbound/dnstap/dtstream.c:2009,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/dnstap/dtstream.c:2012,1
    - Dst: connect
      Src: /src/unbound/dnstap/dtstream.c:2013,1
    - Dst: dtio_close_fd
      Src: /src/unbound/dnstap/dtstream.c:2018,1
    - Dst: tcp_connect_errno_needs_log
      Src: /src/unbound/dnstap/dtstream.c:2022,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:2024,1
    - Dst: strerror
      Src: /src/unbound/dnstap/dtstream.c:2025,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/dtstream.c:2028,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/dtstream.c:2029,1
    - Dst: tcp_connect_errno_needs_log
      Src: /src/unbound/dnstap/dtstream.c:2031,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:2033,1
    - Dst: wsa_strerror
      Src: /src/unbound/dnstap/dtstream.c:2034,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/dtstream.c:2034,1
    - Dst: dtio_close_fd
      Src: /src/unbound/dnstap/dtstream.c:2037,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 32
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2041
      start: 1996
    functionDepth: 2
    functionLinenumber: 1996
    functionLinenumberEnd: 2041
    functionName: dtio_open_output_tcp
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - log_err
    - wsa_strerror
    - tcp_connect_errno_needs_log
    - socket
    - extstrtoaddr
    - dtio_close_fd
    - WSAGetLastError
    - fd_set_nonblock
    - sock_strerror
    - strerror
    - memset
    - connect
    linkageType: ''
    returnType: int
    signature: int dtio_open_output_tcp(struct dt_io_thread* dtio)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: outgoing_ssl_fd
      Src: /src/unbound/dnstap/dtstream.c:2046,1
    - Dst: set_auth_name_on_ssl
      Src: /src/unbound/dnstap/dtstream.c:2051,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2056
      start: 2044
    functionDepth: 1
    functionLinenumber: 2044
    functionLinenumberEnd: 2056
    functionName: dtio_setup_ssl
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - set_auth_name_on_ssl
    - outgoing_ssl_fd
    linkageType: ''
    returnType: int
    signature: int dtio_setup_ssl(struct dt_io_thread* dtio)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: dtio_open_output_local
      Src: /src/unbound/dnstap/dtstream.c:2063,1
    - Dst: dtio_reconnect_enable
      Src: /src/unbound/dnstap/dtstream.c:2064,1
    - Dst: dtio_open_output_tcp
      Src: /src/unbound/dnstap/dtstream.c:2068,1
    - Dst: dtio_reconnect_enable
      Src: /src/unbound/dnstap/dtstream.c:2069,1
    - Dst: dtio_setup_ssl
      Src: /src/unbound/dnstap/dtstream.c:2073,1
    - Dst: dtio_close_fd
      Src: /src/unbound/dnstap/dtstream.c:2074,1
    - Dst: dtio_reconnect_enable
      Src: /src/unbound/dnstap/dtstream.c:2075,1
    - Dst: ub_event_new
      Src: /src/unbound/dnstap/dtstream.c:2084,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:2088,1
    - Dst: SSL_free
      Src: /src/unbound/dnstap/dtstream.c:2091,1
    - Dst: dtio_close_fd
      Src: /src/unbound/dnstap/dtstream.c:2095,1
    - Dst: dtio_reconnect_enable
      Src: /src/unbound/dnstap/dtstream.c:2096,1
    - Dst: dtio_control_start_send
      Src: /src/unbound/dnstap/dtstream.c:2102,1
    - Dst: dtio_control_ready_send
      Src: /src/unbound/dnstap/dtstream.c:2103,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:2104,1
    - Dst: ub_event_free
      Src: /src/unbound/dnstap/dtstream.c:2105,1
    - Dst: SSL_free
      Src: /src/unbound/dnstap/dtstream.c:2109,1
    - Dst: dtio_close_fd
      Src: /src/unbound/dnstap/dtstream.c:2113,1
    - Dst: dtio_reconnect_enable
      Src: /src/unbound/dnstap/dtstream.c:2114,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 45
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2117
      start: 2059
    functionDepth: 3
    functionLinenumber: 2059
    functionLinenumberEnd: 2117
    functionName: dtio_open_output
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 1
    functionsReached:
    - log_err
    - dtio_open_output_local
    - dtio_setup_ssl
    - SSL_free
    - dtio_close_fd
    - dtio_control_ready_send
    - dtio_open_output_tcp
    - dtio_control_start_send
    - ub_event_free
    - ub_event_new
    - dtio_reconnect_enable
    linkageType: ''
    returnType: void
    signature: void dtio_open_output(struct dt_io_thread* dtio)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dtio_setup_cmd
      Src: /src/unbound/dnstap/dtstream.c:2122,1
    - Dst: dtio_setup_reconnect
      Src: /src/unbound/dnstap/dtstream.c:2123,1
    - Dst: dtio_open_output
      Src: /src/unbound/dnstap/dtstream.c:2124,1
    - Dst: dtio_add_output_event_write
      Src: /src/unbound/dnstap/dtstream.c:2125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2127
      start: 2120
    functionDepth: 4
    functionLinenumber: 2120
    functionLinenumberEnd: 2127
    functionName: dtio_setup_on_base
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - dtio_setup_cmd
    - dtio_setup_reconnect
    - dtio_open_output
    - dtio_add_output_event_write
    linkageType: ''
    returnType: void
    signature: void dtio_setup_on_base(struct dt_io_thread* dtio)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: gettid
      Src: /src/unbound/dnstap/dtstream.c:2140,1
    - Dst: log_thread_set
      Src: /src/unbound/dnstap/dtstream.c:2142,1
    - Dst: log_thread_set
      Src: /src/unbound/dnstap/dtstream.c:2145,1
    - Dst: ub_thread_setname
      Src: /src/unbound/dnstap/dtstream.c:2147,1
    - Dst: ub_thread_self
      Src: /src/unbound/dnstap/dtstream.c:2147,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:2150,1
    - Dst: dtio_setup_base
      Src: /src/unbound/dnstap/dtstream.c:2151,1
    - Dst: dtio_setup_on_base
      Src: /src/unbound/dnstap/dtstream.c:2152,1
    - Dst: ub_event_base_dispatch
      Src: /src/unbound/dnstap/dtstream.c:2155,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:2156,1
    - Dst: strerror
      Src: /src/unbound/dnstap/dtstream.c:2157,1
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:2161,1
    - Dst: dtio_desetup
      Src: /src/unbound/dnstap/dtstream.c:2162,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2164
      start: 2131
    functionDepth: 5
    functionLinenumber: 2131
    functionLinenumberEnd: 2164
    functionName: dnstap_io
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 0
    functionsReached:
    - log_err
    - ub_thread_setname
    - gettid
    - verbose
    - dtio_desetup
    - ub_event_base_dispatch
    - dtio_setup_base
    - ub_thread_self
    - log_thread_set
    - strerror
    - dtio_setup_on_base
    linkageType: ''
    returnType: void
    signature: void * dnstap_io(void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pipe
      Src: /src/unbound/dnstap/dtstream.c:2172,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:2173,1
    - Dst: strerror
      Src: /src/unbound/dnstap/dtstream.c:2173,1
    - Dst: _pipe
      Src: /src/unbound/dnstap/dtstream.c:2177,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:2178,1
    - Dst: wsa_strerror
      Src: /src/unbound/dnstap/dtstream.c:2179,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/dtstream.c:2179,1
    - Dst: ub_thread_create
      Src: /src/unbound/dnstap/dtstream.c:2188,1
    - Dst: dtio_setup_on_base
      Src: /src/unbound/dnstap/dtstream.c:2192,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - dtio
    - event_base_nothr
    - numworkers
    argTypes:
    - struct dt_io_thread*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2195
      start: 2167
    functionDepth: 5
    functionLinenumber: 2167
    functionLinenumberEnd: 2195
    functionName: dt_io_thread_start
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 1
    functionsReached:
    - log_err
    - wsa_strerror
    - ub_thread_create
    - _pipe
    - pipe
    - WSAGetLastError
    - strerror
    - dtio_setup_on_base
    linkageType: ''
    returnType: int
    signature: "int dt_io_thread_start(struct dt_io_thread* dtio, void* event_base_nothr,\n\tint
      numworkers)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/dnstap/dtstream.c:2204,1
    - Dst: write
      Src: /src/unbound/dnstap/dtstream.c:2208,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/dtstream.c:2214,1
    - Dst: WSAGetLastError
      Src: /src/unbound/dnstap/dtstream.c:2216,1
    - Dst: log_err
      Src: /src/unbound/dnstap/dtstream.c:2219,1
    - Dst: sock_strerror
      Src: /src/unbound/dnstap/dtstream.c:2220,1
    - Dst: close
      Src: /src/unbound/dnstap/dtstream.c:2229,1
    - Dst: _close
      Src: /src/unbound/dnstap/dtstream.c:2231,1
    - Dst: ub_thread_join
      Src: /src/unbound/dnstap/dtstream.c:2235,1
    - Dst: dtio_desetup
      Src: /src/unbound/dnstap/dtstream.c:2238,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 1
    argNames:
    - dtio
    argTypes:
    - struct dt_io_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2240
      start: 2197
    functionDepth: 4
    functionLinenumber: 2197
    functionLinenumberEnd: 2240
    functionName: dt_io_thread_stop
    functionSourceFile: /src/unbound/dnstap/dtstream.c
    functionUses: 1
    functionsReached:
    - log_err
    - verbose
    - dtio_desetup
    - WSAGetLastError
    - write
    - sock_strerror
    - close
    - ub_thread_join
    - _close
    linkageType: ''
    returnType: void
    signature: void dt_io_thread_stop(struct dt_io_thread* dtio)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/dnstap/dnstap_fstrm.c:61,1
    - Dst: malloc
      Src: /src/unbound/dnstap/dnstap_fstrm.c:62,1
    - Dst: htonl
      Src: /src/unbound/dnstap/dnstap_fstrm.c:66,1
    - Dst: strlen
      Src: /src/unbound/dnstap/dnstap_fstrm.c:66,1
    - Dst: htonl
      Src: /src/unbound/dnstap/dnstap_fstrm.c:67,1
    - Dst: htonl
      Src: /src/unbound/dnstap/dnstap_fstrm.c:68,1
    - Dst: htonl
      Src: /src/unbound/dnstap/dnstap_fstrm.c:69,1
    - Dst: strlen
      Src: /src/unbound/dnstap/dnstap_fstrm.c:69,1
    - Dst: memmove
      Src: /src/unbound/dnstap/dnstap_fstrm.c:70,1
    - Dst: strlen
      Src: /src/unbound/dnstap/dnstap_fstrm.c:70,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - contenttype
    - len
    argTypes:
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 49
    functionDepth: 1
    functionLinenumber: 49
    functionLinenumberEnd: 73
    functionName: fstrm_create_control_frame_start
    functionSourceFile: /src/unbound/dnstap/dnstap_fstrm.c
    functionUses: 1
    functionsReached:
    - malloc
    - memmove
    - strlen
    - htonl
    linkageType: ''
    returnType: void
    signature: void * fstrm_create_control_frame_start(char* contenttype, size_t*
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/dnstap/dnstap_fstrm.c:85,1
    - Dst: htonl
      Src: /src/unbound/dnstap/dnstap_fstrm.c:89,1
    - Dst: htonl
      Src: /src/unbound/dnstap/dnstap_fstrm.c:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - len
    argTypes:
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 75
    functionDepth: 1
    functionLinenumber: 75
    functionLinenumberEnd: 93
    functionName: fstrm_create_control_frame_stop
    functionSourceFile: /src/unbound/dnstap/dnstap_fstrm.c
    functionUses: 1
    functionsReached:
    - malloc
    - htonl
    linkageType: ''
    returnType: void
    signature: void * fstrm_create_control_frame_stop(size_t* len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/dnstap/dnstap_fstrm.c:108,1
    - Dst: malloc
      Src: /src/unbound/dnstap/dnstap_fstrm.c:109,1
    - Dst: htonl
      Src: /src/unbound/dnstap/dnstap_fstrm.c:114,1
    - Dst: strlen
      Src: /src/unbound/dnstap/dnstap_fstrm.c:114,1
    - Dst: htonl
      Src: /src/unbound/dnstap/dnstap_fstrm.c:115,1
    - Dst: htonl
      Src: /src/unbound/dnstap/dnstap_fstrm.c:116,1
    - Dst: htonl
      Src: /src/unbound/dnstap/dnstap_fstrm.c:117,1
    - Dst: strlen
      Src: /src/unbound/dnstap/dnstap_fstrm.c:117,1
    - Dst: memmove
      Src: /src/unbound/dnstap/dnstap_fstrm.c:118,1
    - Dst: strlen
      Src: /src/unbound/dnstap/dnstap_fstrm.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - contenttype
    - len
    argTypes:
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 121
    functionName: fstrm_create_control_frame_ready
    functionSourceFile: /src/unbound/dnstap/dnstap_fstrm.c
    functionUses: 1
    functionsReached:
    - malloc
    - memmove
    - strlen
    - htonl
    linkageType: ''
    returnType: void
    signature: void * fstrm_create_control_frame_ready(char* contenttype, size_t*
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/dnstap/dnstap_fstrm.c:136,1
    - Dst: malloc
      Src: /src/unbound/dnstap/dnstap_fstrm.c:137,1
    - Dst: htonl
      Src: /src/unbound/dnstap/dnstap_fstrm.c:142,1
    - Dst: strlen
      Src: /src/unbound/dnstap/dnstap_fstrm.c:142,1
    - Dst: htonl
      Src: /src/unbound/dnstap/dnstap_fstrm.c:143,1
    - Dst: htonl
      Src: /src/unbound/dnstap/dnstap_fstrm.c:144,1
    - Dst: htonl
      Src: /src/unbound/dnstap/dnstap_fstrm.c:145,1
    - Dst: strlen
      Src: /src/unbound/dnstap/dnstap_fstrm.c:145,1
    - Dst: memmove
      Src: /src/unbound/dnstap/dnstap_fstrm.c:146,1
    - Dst: strlen
      Src: /src/unbound/dnstap/dnstap_fstrm.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 2
    argNames:
    - contenttype
    - len
    argTypes:
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 123
    functionDepth: 1
    functionLinenumber: 123
    functionLinenumberEnd: 149
    functionName: fstrm_create_control_frame_accept
    functionSourceFile: /src/unbound/dnstap/dnstap_fstrm.c
    functionUses: 1
    functionsReached:
    - malloc
    - memmove
    - strlen
    - htonl
    linkageType: ''
    returnType: void
    signature: void * fstrm_create_control_frame_accept(char* contenttype, size_t*
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/dnstap/dnstap_fstrm.c:162,1
    - Dst: htonl
      Src: /src/unbound/dnstap/dnstap_fstrm.c:167,1
    - Dst: htonl
      Src: /src/unbound/dnstap/dnstap_fstrm.c:168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - len
    argTypes:
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 171
    functionName: fstrm_create_control_frame_finish
    functionSourceFile: /src/unbound/dnstap/dnstap_fstrm.c
    functionUses: 1
    functionsReached:
    - malloc
    - htonl
    linkageType: ''
    returnType: void
    signature: void * fstrm_create_control_frame_finish(size_t* len)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/dnstap/dnstap_fstrm.c:183,1
    - Dst: strdup
      Src: /src/unbound/dnstap/dnstap_fstrm.c:185,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/dnstap/dnstap_fstrm.c:187,1
    - Dst: sldns_str_print
      Src: /src/unbound/dnstap/dnstap_fstrm.c:189,1
    - Dst: sldns_str_print
      Src: /src/unbound/dnstap/dnstap_fstrm.c:191,1
    - Dst: sldns_str_print
      Src: /src/unbound/dnstap/dnstap_fstrm.c:193,1
    - Dst: sldns_str_print
      Src: /src/unbound/dnstap/dnstap_fstrm.c:195,1
    - Dst: sldns_str_print
      Src: /src/unbound/dnstap/dnstap_fstrm.c:197,1
    - Dst: sldns_str_print
      Src: /src/unbound/dnstap/dnstap_fstrm.c:199,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/dnstap/dnstap_fstrm.c:206,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/dnstap/dnstap_fstrm.c:207,1
    - Dst: sldns_str_print
      Src: /src/unbound/dnstap/dnstap_fstrm.c:209,1
    - Dst: sldns_str_print
      Src: /src/unbound/dnstap/dnstap_fstrm.c:214,1
    - Dst: memmove
      Src: /src/unbound/dnstap/dnstap_fstrm.c:216,1
    - Dst: sldns_str_print
      Src: /src/unbound/dnstap/dnstap_fstrm.c:218,1
    - Dst: sldns_str_print
      Src: /src/unbound/dnstap/dnstap_fstrm.c:220,1
    - Dst: sldns_str_print
      Src: /src/unbound/dnstap/dnstap_fstrm.c:222,1
    - Dst: sldns_str_print
      Src: /src/unbound/dnstap/dnstap_fstrm.c:224,1
    - Dst: sldns_str_print
      Src: /src/unbound/dnstap/dnstap_fstrm.c:233,1
    - Dst: strdup
      Src: /src/unbound/dnstap/dnstap_fstrm.c:235,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 50
    argCount: 2
    argNames:
    - pkt
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 173
    functionDepth: 3
    functionLinenumber: 173
    functionLinenumberEnd: 236
    functionName: fstrm_describe_control
    functionSourceFile: /src/unbound/dnstap/dnstap_fstrm.c
    functionUses: 1
    functionsReached:
    - memmove
    - snprintf
    - sldns_str_print
    - sldns_read_uint32
    - strdup
    linkageType: ''
    returnType: char
    signature: char * fstrm_describe_control(void* pkt, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: realloc
      Src: /src/unbound/compat/reallocarray.c:41,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 3
    argNames:
    - optr
    - nmemb
    - size
    argTypes:
    - void*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 42
    functionName: reallocarray
    functionSourceFile: /src/unbound/compat/reallocarray.c
    functionUses: 1
    functionsReached:
    - realloc
    linkageType: ''
    returnType: void
    signature: 'void *

      reallocarray(void *optr, size_t nmemb, size_t size)'
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - dst
    - src
    - siz
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 31
    functionDepth: 0
    functionLinenumber: 31
    functionLinenumberEnd: 55
    functionName: strlcpy
    functionSourceFile: /src/unbound/compat/strlcpy.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t strlcpy(char *dst, const char *src, size_t siz)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - x
    - y
    - n
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 13
    functionDepth: 0
    functionLinenumber: 13
    functionLinenumberEnd: 25
    functionName: memcmp
    functionSourceFile: /src/unbound/compat/memcmp.c
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int memcmp(const void *x, const void *y, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 18
      start: 17
    functionDepth: 0
    functionLinenumber: 17
    functionLinenumberEnd: 18
    functionName: U8C
    functionSourceFile: /src/unbound/compat/chacha_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: U8C(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 19
      start: 18
    functionDepth: 0
    functionLinenumber: 18
    functionLinenumberEnd: 19
    functionName: U32C
    functionSourceFile: /src/unbound/compat/chacha_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: U32C(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 20
    functionDepth: 0
    functionLinenumber: 20
    functionLinenumberEnd: 21
    functionName: U8V
    functionSourceFile: /src/unbound/compat/chacha_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: U8V(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 22
      start: 21
    functionDepth: 0
    functionLinenumber: 21
    functionLinenumberEnd: 22
    functionName: U32V
    functionSourceFile: /src/unbound/compat/chacha_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: U32V(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - v
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 25
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 25
    functionName: ROTL32
    functionSourceFile: /src/unbound/compat/chacha_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROTL32(v, n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 31
      start: 26
    functionDepth: 0
    functionLinenumber: 26
    functionLinenumberEnd: 31
    functionName: U8TO32_LITTLE
    functionSourceFile: /src/unbound/compat/chacha_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: U8TO32_LITTLE(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 39
    functionName: U32TO8_LITTLE
    functionSourceFile: /src/unbound/compat/chacha_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: U32TO8_LITTLE(p, v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - v
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 41
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 41
    functionName: ROTATE
    functionSourceFile: /src/unbound/compat/chacha_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROTATE(v,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - v
    - ','
    - w
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 42
    functionName: XOR
    functionSourceFile: /src/unbound/compat/chacha_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: XOR(v,w)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - v
    - ','
    - w
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 42
    functionDepth: 0
    functionLinenumber: 42
    functionLinenumberEnd: 43
    functionName: PLUS
    functionSourceFile: /src/unbound/compat/chacha_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PLUS(v,w)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 43
    functionDepth: 0
    functionLinenumber: 43
    functionLinenumberEnd: 44
    functionName: PLUSONE
    functionSourceFile: /src/unbound/compat/chacha_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PLUSONE(v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 50
    functionName: QUARTERROUND
    functionSourceFile: /src/unbound/compat/chacha_private.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: QUARTERROUND(a,b,c,d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:59,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:60,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:61,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:62,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:69,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:70,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:71,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:72,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:73,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:74,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:75,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 4
    argNames:
    - x
    - k
    - kbits
    - ATTR_UNUSED
    argTypes:
    - chacha_ctx*
    - u8*
    - u32
    - u32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 77
    functionName: chacha_keysetup
    functionSourceFile: /src/unbound/compat/chacha_private.h
    functionUses: 0
    functionsReached:
    - U8TO32_LITTLE
    linkageType: ''
    returnType: void
    signature: void chacha_keysetup(chacha_ctx *x,const u8 *k,u32 kbits,u32 ATTR_UNUSED(ivbits))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:84,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:85,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - x
    - iv
    argTypes:
    - chacha_ctx*
    - u8*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 86
    functionName: chacha_ivsetup
    functionSourceFile: /src/unbound/compat/chacha_private.h
    functionUses: 0
    functionsReached:
    - U8TO32_LITTLE
    linkageType: ''
    returnType: void
    signature: void chacha_ivsetup(chacha_ctx *x,const u8 *iv)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: QUARTERROUND
      Src: /src/unbound/compat/chacha_private.h:140,1
    - Dst: QUARTERROUND
      Src: /src/unbound/compat/chacha_private.h:141,1
    - Dst: QUARTERROUND
      Src: /src/unbound/compat/chacha_private.h:142,1
    - Dst: QUARTERROUND
      Src: /src/unbound/compat/chacha_private.h:143,1
    - Dst: QUARTERROUND
      Src: /src/unbound/compat/chacha_private.h:144,1
    - Dst: QUARTERROUND
      Src: /src/unbound/compat/chacha_private.h:145,1
    - Dst: QUARTERROUND
      Src: /src/unbound/compat/chacha_private.h:146,1
    - Dst: QUARTERROUND
      Src: /src/unbound/compat/chacha_private.h:147,1
    - Dst: PLUS
      Src: /src/unbound/compat/chacha_private.h:149,1
    - Dst: PLUS
      Src: /src/unbound/compat/chacha_private.h:150,1
    - Dst: PLUS
      Src: /src/unbound/compat/chacha_private.h:151,1
    - Dst: PLUS
      Src: /src/unbound/compat/chacha_private.h:152,1
    - Dst: PLUS
      Src: /src/unbound/compat/chacha_private.h:153,1
    - Dst: PLUS
      Src: /src/unbound/compat/chacha_private.h:154,1
    - Dst: PLUS
      Src: /src/unbound/compat/chacha_private.h:155,1
    - Dst: PLUS
      Src: /src/unbound/compat/chacha_private.h:156,1
    - Dst: PLUS
      Src: /src/unbound/compat/chacha_private.h:157,1
    - Dst: PLUS
      Src: /src/unbound/compat/chacha_private.h:158,1
    - Dst: PLUS
      Src: /src/unbound/compat/chacha_private.h:159,1
    - Dst: PLUS
      Src: /src/unbound/compat/chacha_private.h:160,1
    - Dst: PLUS
      Src: /src/unbound/compat/chacha_private.h:161,1
    - Dst: PLUS
      Src: /src/unbound/compat/chacha_private.h:162,1
    - Dst: PLUS
      Src: /src/unbound/compat/chacha_private.h:163,1
    - Dst: PLUS
      Src: /src/unbound/compat/chacha_private.h:164,1
    - Dst: XOR
      Src: /src/unbound/compat/chacha_private.h:167,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:167,1
    - Dst: XOR
      Src: /src/unbound/compat/chacha_private.h:168,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:168,1
    - Dst: XOR
      Src: /src/unbound/compat/chacha_private.h:169,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:169,1
    - Dst: XOR
      Src: /src/unbound/compat/chacha_private.h:170,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:170,1
    - Dst: XOR
      Src: /src/unbound/compat/chacha_private.h:171,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:171,1
    - Dst: XOR
      Src: /src/unbound/compat/chacha_private.h:172,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:172,1
    - Dst: XOR
      Src: /src/unbound/compat/chacha_private.h:173,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:173,1
    - Dst: XOR
      Src: /src/unbound/compat/chacha_private.h:174,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:174,1
    - Dst: XOR
      Src: /src/unbound/compat/chacha_private.h:175,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:175,1
    - Dst: XOR
      Src: /src/unbound/compat/chacha_private.h:176,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:176,1
    - Dst: XOR
      Src: /src/unbound/compat/chacha_private.h:177,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:177,1
    - Dst: XOR
      Src: /src/unbound/compat/chacha_private.h:178,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:178,1
    - Dst: XOR
      Src: /src/unbound/compat/chacha_private.h:179,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:179,1
    - Dst: XOR
      Src: /src/unbound/compat/chacha_private.h:180,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:180,1
    - Dst: XOR
      Src: /src/unbound/compat/chacha_private.h:181,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:181,1
    - Dst: XOR
      Src: /src/unbound/compat/chacha_private.h:182,1
    - Dst: U8TO32_LITTLE
      Src: /src/unbound/compat/chacha_private.h:182,1
    - Dst: PLUSONE
      Src: /src/unbound/compat/chacha_private.h:185,1
    - Dst: PLUSONE
      Src: /src/unbound/compat/chacha_private.h:187,1
    - Dst: U32TO8_LITTLE
      Src: /src/unbound/compat/chacha_private.h:191,1
    - Dst: U32TO8_LITTLE
      Src: /src/unbound/compat/chacha_private.h:192,1
    - Dst: U32TO8_LITTLE
      Src: /src/unbound/compat/chacha_private.h:193,1
    - Dst: U32TO8_LITTLE
      Src: /src/unbound/compat/chacha_private.h:194,1
    - Dst: U32TO8_LITTLE
      Src: /src/unbound/compat/chacha_private.h:195,1
    - Dst: U32TO8_LITTLE
      Src: /src/unbound/compat/chacha_private.h:196,1
    - Dst: U32TO8_LITTLE
      Src: /src/unbound/compat/chacha_private.h:197,1
    - Dst: U32TO8_LITTLE
      Src: /src/unbound/compat/chacha_private.h:198,1
    - Dst: U32TO8_LITTLE
      Src: /src/unbound/compat/chacha_private.h:199,1
    - Dst: U32TO8_LITTLE
      Src: /src/unbound/compat/chacha_private.h:200,1
    - Dst: U32TO8_LITTLE
      Src: /src/unbound/compat/chacha_private.h:201,1
    - Dst: U32TO8_LITTLE
      Src: /src/unbound/compat/chacha_private.h:202,1
    - Dst: U32TO8_LITTLE
      Src: /src/unbound/compat/chacha_private.h:203,1
    - Dst: U32TO8_LITTLE
      Src: /src/unbound/compat/chacha_private.h:204,1
    - Dst: U32TO8_LITTLE
      Src: /src/unbound/compat/chacha_private.h:205,1
    - Dst: U32TO8_LITTLE
      Src: /src/unbound/compat/chacha_private.h:206,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 118
    argCount: 4
    argNames:
    - x
    - m
    - c
    - bytes
    argTypes:
    - chacha_ctx*
    - u8*
    - u8*
    - u32
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 222
    functionName: chacha_encrypt_bytes
    functionSourceFile: /src/unbound/compat/chacha_private.h
    functionUses: 0
    functionsReached:
    - PLUSONE
    - XOR
    - QUARTERROUND
    - U8TO32_LITTLE
    - U32TO8_LITTLE
    - PLUS
    linkageType: ''
    returnType: void
    signature: void chacha_encrypt_bytes(chacha_ctx *x,const u8 *m,u8 *c,u32 bytes)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - w
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 117
    functionName: REVERSE32
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REVERSE32(w,x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - w
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 126
    functionName: REVERSE64
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: REVERSE64(w,x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - w
    - ','
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 142
    functionName: ADDINC128
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ADDINC128(w,n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 166
    functionDepth: 0
    functionLinenumber: 166
    functionLinenumberEnd: 167
    functionName: MEMSET_BZERO
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MEMSET_BZERO(p,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - d
    - ','
    - s
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 168
    functionName: MEMCPY_BCOPY
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MEMCPY_BCOPY(d,s,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 171
    functionName: MEMSET_BZERO
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MEMSET_BZERO(p,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - d
    - ','
    - s
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 172
    functionName: MEMCPY_BCOPY
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: MEMCPY_BCOPY(d,s,l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - b
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 186
    functionName: R
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 33
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: R(b,x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - b
    - ','
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 188
    functionName: S64
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S64(b,x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 190
    functionDepth: 0
    functionLinenumber: 190
    functionLinenumberEnd: 191
    functionName: Ch
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Ch(x,y,z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - y
    - ','
    - z
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 192
    functionName: Maj
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Maj(x,y,z)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 195
    functionName: Sigma0_512
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Sigma0_512(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 196
    functionName: Sigma1_512
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: Sigma1_512(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 197
    functionName: sigma0_512
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sigma0_512(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 198
    functionName: sigma1_512
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sigma1_512(x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: MEMCPY_BCOPY
      Src: /src/unbound/compat/sha512.c:266,1
    - Dst: MEMSET_BZERO
      Src: /src/unbound/compat/sha512.c:267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - context
    argTypes:
    - SHA512_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 269
    functionName: SHA512_Init
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached:
    - MEMCPY_BCOPY
    - MEMSET_BZERO
    linkageType: ''
    returnType: void
    signature: void SHA512_Init(SHA512_CTX* context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: REVERSE64
      Src: /src/unbound/compat/sha512.c:291,1
    - Dst: Sigma1_512
      Src: /src/unbound/compat/sha512.c:293,1
    - Dst: Ch
      Src: /src/unbound/compat/sha512.c:293,1
    - Dst: Sigma1_512
      Src: /src/unbound/compat/sha512.c:296,1
    - Dst: Ch
      Src: /src/unbound/compat/sha512.c:296,1
    - Dst: Sigma0_512
      Src: /src/unbound/compat/sha512.c:298,1
    - Dst: Maj
      Src: /src/unbound/compat/sha512.c:298,1
    - Dst: sigma0_512
      Src: /src/unbound/compat/sha512.c:314,1
    - Dst: sigma1_512
      Src: /src/unbound/compat/sha512.c:316,1
    - Dst: Sigma1_512
      Src: /src/unbound/compat/sha512.c:319,1
    - Dst: Ch
      Src: /src/unbound/compat/sha512.c:319,1
    - Dst: Sigma0_512
      Src: /src/unbound/compat/sha512.c:321,1
    - Dst: Maj
      Src: /src/unbound/compat/sha512.c:321,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 51
    argCount: 2
    argNames:
    - context
    - data
    argTypes:
    - SHA512_CTX*
    - sha2_word64*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 346
    functionName: SHA512_Transform
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached:
    - Sigma1_512
    - Sigma0_512
    - Maj
    - REVERSE64
    - sigma0_512
    - sigma1_512
    - Ch
    linkageType: ''
    returnType: void
    signature: "void SHA512_Transform(SHA512_CTX* context,\n                                  const
      sha2_word64* data)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/compat/sha512.c:358,1
    - Dst: MEMCPY_BCOPY
      Src: /src/unbound/compat/sha512.c:367,1
    - Dst: ADDINC128
      Src: /src/unbound/compat/sha512.c:368,1
    - Dst: SHA512_Transform
      Src: /src/unbound/compat/sha512.c:371,1
    - Dst: MEMCPY_BCOPY
      Src: /src/unbound/compat/sha512.c:374,1
    - Dst: ADDINC128
      Src: /src/unbound/compat/sha512.c:375,1
    - Dst: SHA512_Transform
      Src: /src/unbound/compat/sha512.c:383,1
    - Dst: ADDINC128
      Src: /src/unbound/compat/sha512.c:384,1
    - Dst: MEMCPY_BCOPY
      Src: /src/unbound/compat/sha512.c:390,1
    - Dst: ADDINC128
      Src: /src/unbound/compat/sha512.c:391,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 3
    argNames:
    - context
    - datain
    - len
    argTypes:
    - SHA512_CTX*
    - void*
    - size_t
    assertStmts:
    - condition: (context != (SHA512_CTX*)0 && data != (sha2_byte*)0)
      pos:
        line_end: 357
        line_start: 357
        source_file: /src/unbound/compat/sha512.c
    constantsTouched: []
    func_position:
      end: 395
      start: 348
    functionDepth: 2
    functionLinenumber: 348
    functionLinenumberEnd: 395
    functionName: SHA512_Update
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached:
    - ADDINC128
    - assert
    - SHA512_Transform
    - MEMCPY_BCOPY
    linkageType: ''
    returnType: void
    signature: void SHA512_Update(SHA512_CTX* context, void *datain, size_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: REVERSE64
      Src: /src/unbound/compat/sha512.c:404,1
    - Dst: REVERSE64
      Src: /src/unbound/compat/sha512.c:405,1
    - Dst: MEMSET_BZERO
      Src: /src/unbound/compat/sha512.c:413,1
    - Dst: MEMSET_BZERO
      Src: /src/unbound/compat/sha512.c:416,1
    - Dst: SHA512_Transform
      Src: /src/unbound/compat/sha512.c:419,1
    - Dst: MEMSET_BZERO
      Src: /src/unbound/compat/sha512.c:422,1
    - Dst: MEMSET_BZERO
      Src: /src/unbound/compat/sha512.c:426,1
    - Dst: SHA512_Transform
      Src: /src/unbound/compat/sha512.c:437,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 1
    argNames:
    - context
    argTypes:
    - SHA512_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 397
    functionDepth: 2
    functionLinenumber: 397
    functionLinenumberEnd: 438
    functionName: SHA512_Last
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached:
    - REVERSE64
    - SHA512_Transform
    - MEMSET_BZERO
    linkageType: ''
    returnType: void
    signature: void SHA512_Last(SHA512_CTX* context)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/compat/sha512.c:444,1
    - Dst: SHA512_Last
      Src: /src/unbound/compat/sha512.c:448,1
    - Dst: REVERSE64
      Src: /src/unbound/compat/sha512.c:456,1
    - Dst: MEMCPY_BCOPY
      Src: /src/unbound/compat/sha512.c:461,1
    - Dst: MEMSET_BZERO
      Src: /src/unbound/compat/sha512.c:466,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - digest
    - context
    argTypes:
    - sha2_byte[]
    - SHA512_CTX*
    assertStmts:
    - condition: (context != (SHA512_CTX*)0)
      pos:
        line_end: 443
        line_start: 443
        source_file: /src/unbound/compat/sha512.c
    constantsTouched: []
    func_position:
      end: 467
      start: 440
    functionDepth: 3
    functionLinenumber: 440
    functionLinenumberEnd: 467
    functionName: SHA512_Final
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached:
    - SHA512_Last
    - assert
    - MEMCPY_BCOPY
    - REVERSE64
    - MEMSET_BZERO
    linkageType: ''
    returnType: void
    signature: void SHA512_Final(sha2_byte digest[], SHA512_CTX* context)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA512_Init
      Src: /src/unbound/compat/sha512.c:473,1
    - Dst: SHA512_Update
      Src: /src/unbound/compat/sha512.c:474,1
    - Dst: SHA512_Final
      Src: /src/unbound/compat/sha512.c:475,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - data
    - data_len
    - digest
    argTypes:
    - void*
    - unsigned int
    - unsigned char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 469
    functionDepth: 0
    functionLinenumber: 469
    functionLinenumberEnd: 477
    functionName: SHA512
    functionSourceFile: /src/unbound/compat/sha512.c
    functionUses: 0
    functionsReached:
    - SHA512_Update
    - SHA512_Init
    - SHA512_Final
    linkageType: ''
    returnType: unsigned char
    signature: 'unsigned char *

      SHA512(void *data, unsigned int data_len, unsigned char *digest)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - c
    - delim
    argTypes:
    - char
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 46
    functionName: in_delim
    functionSourceFile: /src/unbound/compat/strsep.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int in_delim(char c, const char* delim)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: in_delim
      Src: /src/unbound/compat/strsep.c:56,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - stringp
    - delim
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 48
    functionDepth: 1
    functionLinenumber: 48
    functionLinenumberEnd: 65
    functionName: strsep
    functionSourceFile: /src/unbound/compat/strsep.c
    functionUses: 0
    functionsReached:
    - in_delim
    linkageType: ''
    returnType: char
    signature: char *strsep(char **stringp, const char *delim)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inet_aton
      Src: /src/unbound/compat/inet_aton.c:77,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - cp
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 80
    functionName: inet_addr
    functionSourceFile: /src/unbound/compat/inet_aton.c
    functionUses: 0
    functionsReached:
    - inet_aton
    linkageType: ''
    returnType: in_addr_t
    signature: in_addr_t inet_addr(const char *cp)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/unbound/compat/inet_aton.c:106,1
    - Dst: isascii
      Src: /src/unbound/compat/inet_aton.c:117,1
    - Dst: isdigit
      Src: /src/unbound/compat/inet_aton.c:117,1
    - Dst: isascii
      Src: /src/unbound/compat/inet_aton.c:120,1
    - Dst: isxdigit
      Src: /src/unbound/compat/inet_aton.c:120,1
    - Dst: islower
      Src: /src/unbound/compat/inet_aton.c:122,1
    - Dst: isascii
      Src: /src/unbound/compat/inet_aton.c:144,1
    - Dst: isspace
      Src: /src/unbound/compat/inet_aton.c:144,1
    - Dst: htonl
      Src: /src/unbound/compat/inet_aton.c:178,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 59
    argCount: 2
    argNames:
    - cp
    - addr
    argTypes:
    - char*
    - struct in_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 180
    functionName: inet_aton
    functionSourceFile: /src/unbound/compat/inet_aton.c
    functionUses: 1
    functionsReached:
    - isspace
    - isxdigit
    - isdigit
    - islower
    - htonl
    - isascii
    linkageType: ''
    returnType: int
    signature: int inet_aton(const char *cp, struct in_addr *addr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton4
      Src: /src/unbound/compat/inet_pton.c:66,1
    - Dst: inet_pton6
      Src: /src/unbound/compat/inet_pton.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - af
    - src
    - dst
    argTypes:
    - int
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 78
    functionName: inet_pton
    functionSourceFile: /src/unbound/compat/inet_pton.c
    functionUses: 5
    functionsReached:
    - inet_pton6
    - inet_pton4
    linkageType: ''
    returnType: int
    signature: int inet_pton(int af, const char *src, void *dst)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/compat/inet_pton.c:103,1
    - Dst: memcpy
      Src: /src/unbound/compat/inet_pton.c:125,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - src
    - dst
    argTypes:
    - char*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 127
    functionName: inet_pton4
    functionSourceFile: /src/unbound/compat/inet_pton.c
    functionUses: 1
    functionsReached:
    - strchr
    - memcpy
    linkageType: ''
    returnType: int
    signature: int inet_pton4(const char *src, uint8_t *dst)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/compat/inet_pton.c:152,1
    - Dst: strchr
      Src: /src/unbound/compat/inet_pton.c:165,1
    - Dst: strchr
      Src: /src/unbound/compat/inet_pton.c:166,1
    - Dst: inet_pton4
      Src: /src/unbound/compat/inet_pton.c:192,1
    - Dst: memcpy
      Src: /src/unbound/compat/inet_pton.c:221,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 61
    argCount: 2
    argNames:
    - src
    - dst
    argTypes:
    - char*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 223
    functionName: inet_pton6
    functionSourceFile: /src/unbound/compat/inet_pton.c
    functionUses: 1
    functionsReached:
    - strchr
    - memset
    - memcpy
    - inet_pton4
    linkageType: ''
    returnType: int
    signature: int inet_pton6(const char *src, uint8_t *dst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: SHA512_Init
    functionSourceFile: /src/unbound/compat/getentropy_linux.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA512_Init(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - x
    - ','
    - b
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 64
    functionName: SHA512_Update
    functionSourceFile: /src/unbound/compat/getentropy_linux.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA512_Update(x, b, s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - r
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 65
    functionName: SHA512_Final
    functionSourceFile: /src/unbound/compat/getentropy_linux.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SHA512_Final(r, c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 81
    functionName: min
    functionSourceFile: /src/unbound/compat/getentropy_linux.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: min(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 89
    functionName: HX
    functionSourceFile: /src/unbound/compat/getentropy_linux.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HX(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    functionName: HR
    functionSourceFile: /src/unbound/compat/getentropy_linux.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HR(x, l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 92
    functionName: HD
    functionSourceFile: /src/unbound/compat/getentropy_linux.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HD(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 93
    functionName: HF
    functionSourceFile: /src/unbound/compat/getentropy_linux.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HF(x)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: getentropy_getrandom
      Src: /src/unbound/compat/getentropy_linux.c:127,1
    - Dst: getentropy_urandom
      Src: /src/unbound/compat/getentropy_linux.c:138,1
    - Dst: getentropy_sysctl
      Src: /src/unbound/compat/getentropy_linux.c:161,1
    - Dst: raise
      Src: /src/unbound/compat/getentropy_linux.c:192,1
    - Dst: getentropy_fallback
      Src: /src/unbound/compat/getentropy_linux.c:194,1
    - Dst: fatal_exit
      Src: /src/unbound/compat/getentropy_linux.c:198,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 203
    functionName: getentropy
    functionSourceFile: /src/unbound/compat/getentropy_linux.c
    functionUses: 0
    functionsReached:
    - getentropy_sysctl
    - getentropy_urandom
    - fatal_exit
    - getentropy_getrandom
    - getentropy_fallback
    - raise
    linkageType: ''
    returnType: int
    signature: int getentropy(void *buf, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: syscall
      Src: /src/unbound/compat/getentropy_linux.c:214,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 206
    functionDepth: 0
    functionLinenumber: 206
    functionLinenumberEnd: 221
    functionName: getentropy_getrandom
    functionSourceFile: /src/unbound/compat/getentropy_linux.c
    functionUses: 1
    functionsReached:
    - syscall
    linkageType: ''
    returnType: int
    signature: int getentropy_getrandom(void *buf, size_t len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/unbound/compat/getentropy_linux.c:245,1
    - Dst: fcntl
      Src: /src/unbound/compat/getentropy_linux.c:252,1
    - Dst: fcntl
      Src: /src/unbound/compat/getentropy_linux.c:252,1
    - Dst: fstat
      Src: /src/unbound/compat/getentropy_linux.c:256,1
    - Dst: S_ISCHR
      Src: /src/unbound/compat/getentropy_linux.c:256,1
    - Dst: close
      Src: /src/unbound/compat/getentropy_linux.c:257,1
    - Dst: ioctl
      Src: /src/unbound/compat/getentropy_linux.c:261,1
    - Dst: close
      Src: /src/unbound/compat/getentropy_linux.c:262,1
    - Dst: read
      Src: /src/unbound/compat/getentropy_linux.c:268,1
    - Dst: close
      Src: /src/unbound/compat/getentropy_linux.c:273,1
    - Dst: close
      Src: /src/unbound/compat/getentropy_linux.c:278,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 42
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 284
    functionName: getentropy_urandom
    functionSourceFile: /src/unbound/compat/getentropy_linux.c
    functionUses: 1
    functionsReached:
    - read
    - S_ISCHR
    - open
    - close
    - fcntl
    - ioctl
    - fstat
    linkageType: ''
    returnType: int
    signature: int getentropy_urandom(void *buf, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: min
      Src: /src/unbound/compat/getentropy_linux.c:296,1
    - Dst: syscall
      Src: /src/unbound/compat/getentropy_linux.c:305,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 288
    functionDepth: 0
    functionLinenumber: 288
    functionLinenumberEnd: 314
    functionName: getentropy_sysctl
    functionSourceFile: /src/unbound/compat/getentropy_linux.c
    functionUses: 1
    functionsReached:
    - min
    - syscall
    linkageType: ''
    returnType: int
    signature: int getentropy_sysctl(void *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SHA512_Update
      Src: /src/unbound/compat/getentropy_linux.c:347,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - info
    - ATTR_UNUSED
    - data
    argTypes:
    - struct dl_phdr_info*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 349
    functionName: getentropy_phdr
    functionSourceFile: /src/unbound/compat/getentropy_linux.c
    functionUses: 0
    functionsReached:
    - SHA512_Update
    linkageType: ''
    returnType: int
    signature: int getentropy_phdr(struct dl_phdr_info *info, size_t ATTR_UNUSED(size),
      void *data)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: getpagesize
      Src: /src/unbound/compat/getentropy_linux.c:355,1
    - Dst: getpid
      Src: /src/unbound/compat/getentropy_linux.c:368,1
    - Dst: SHA512_Init
      Src: /src/unbound/compat/getentropy_linux.c:379,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:381,1
    - Dst: gettimeofday
      Src: /src/unbound/compat/getentropy_linux.c:381,1
    - Dst: dl_iterate_phdr
      Src: /src/unbound/compat/getentropy_linux.c:387,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:390,1
    - Dst: clock_gettime
      Src: /src/unbound/compat/getentropy_linux.c:390,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:392,1
    - Dst: getpid
      Src: /src/unbound/compat/getentropy_linux.c:392,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:393,1
    - Dst: getsid
      Src: /src/unbound/compat/getentropy_linux.c:393,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:394,1
    - Dst: getppid
      Src: /src/unbound/compat/getentropy_linux.c:394,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:395,1
    - Dst: getpgid
      Src: /src/unbound/compat/getentropy_linux.c:395,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:396,1
    - Dst: getpriority
      Src: /src/unbound/compat/getentropy_linux.c:396,1
    - Dst: nanosleep
      Src: /src/unbound/compat/getentropy_linux.c:401,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:404,1
    - Dst: sigpending
      Src: /src/unbound/compat/getentropy_linux.c:404,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:405,1
    - Dst: sigprocmask
      Src: /src/unbound/compat/getentropy_linux.c:405,1
    - Dst: HF
      Src: /src/unbound/compat/getentropy_linux.c:408,1
    - Dst: HF
      Src: /src/unbound/compat/getentropy_linux.c:409,1
    - Dst: HD
      Src: /src/unbound/compat/getentropy_linux.c:411,1
    - Dst: HD
      Src: /src/unbound/compat/getentropy_linux.c:413,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:440,1
    - Dst: mmap
      Src: /src/unbound/compat/getentropy_linux.c:440,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:460,1
    - Dst: clock_gettime
      Src: /src/unbound/compat/getentropy_linux.c:460,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:466,1
    - Dst: getrusage
      Src: /src/unbound/compat/getentropy_linux.c:466,1
    - Dst: munmap
      Src: /src/unbound/compat/getentropy_linux.c:476,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:480,1
    - Dst: stat
      Src: /src/unbound/compat/getentropy_linux.c:480,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:481,1
    - Dst: statvfs
      Src: /src/unbound/compat/getentropy_linux.c:481,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:482,1
    - Dst: statfs
      Src: /src/unbound/compat/getentropy_linux.c:482,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:484,1
    - Dst: stat
      Src: /src/unbound/compat/getentropy_linux.c:484,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:485,1
    - Dst: statvfs
      Src: /src/unbound/compat/getentropy_linux.c:485,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:486,1
    - Dst: statfs
      Src: /src/unbound/compat/getentropy_linux.c:486,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:488,1
    - Dst: fstat
      Src: /src/unbound/compat/getentropy_linux.c:488,1
    - Dst: S_ISREG
      Src: /src/unbound/compat/getentropy_linux.c:490,1
    - Dst: S_ISFIFO
      Src: /src/unbound/compat/getentropy_linux.c:491,1
    - Dst: S_ISSOCK
      Src: /src/unbound/compat/getentropy_linux.c:492,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:493,1
    - Dst: fstatvfs
      Src: /src/unbound/compat/getentropy_linux.c:493,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:495,1
    - Dst: fstatfs
      Src: /src/unbound/compat/getentropy_linux.c:495,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:497,1
    - Dst: lseek
      Src: /src/unbound/compat/getentropy_linux.c:497,1
    - Dst: S_ISCHR
      Src: /src/unbound/compat/getentropy_linux.c:500,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:501,1
    - Dst: tcgetattr
      Src: /src/unbound/compat/getentropy_linux.c:501,1
    - Dst: S_ISSOCK
      Src: /src/unbound/compat/getentropy_linux.c:503,1
    - Dst: memset
      Src: /src/unbound/compat/getentropy_linux.c:504,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:506,1
    - Dst: getpeername
      Src: /src/unbound/compat/getentropy_linux.c:506,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:512,1
    - Dst: getrusage
      Src: /src/unbound/compat/getentropy_linux.c:512,1
    - Dst: HD
      Src: /src/unbound/compat/getentropy_linux.c:520,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_linux.c:523,1
    - Dst: gettimeofday
      Src: /src/unbound/compat/getentropy_linux.c:523,1
    - Dst: HD
      Src: /src/unbound/compat/getentropy_linux.c:529,1
    - Dst: getauxval
      Src: /src/unbound/compat/getentropy_linux.c:534,1
    - Dst: HR
      Src: /src/unbound/compat/getentropy_linux.c:536,1
    - Dst: getauxval
      Src: /src/unbound/compat/getentropy_linux.c:539,1
    - Dst: HR
      Src: /src/unbound/compat/getentropy_linux.c:541,1
    - Dst: getauxval
      Src: /src/unbound/compat/getentropy_linux.c:544,1
    - Dst: HD
      Src: /src/unbound/compat/getentropy_linux.c:546,1
    - Dst: SHA512_Final
      Src: /src/unbound/compat/getentropy_linux.c:550,1
    - Dst: memcpy
      Src: /src/unbound/compat/getentropy_linux.c:551,1
    - Dst: min
      Src: /src/unbound/compat/getentropy_linux.c:551,1
    - Dst: min
      Src: /src/unbound/compat/getentropy_linux.c:552,1
    - Dst: explicit_bzero
      Src: /src/unbound/compat/getentropy_linux.c:554,1
    - Dst: explicit_bzero
      Src: /src/unbound/compat/getentropy_linux.c:555,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 118
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 351
    functionDepth: 1
    functionLinenumber: 351
    functionLinenumberEnd: 558
    functionName: getentropy_fallback
    functionSourceFile: /src/unbound/compat/getentropy_linux.c
    functionUses: 1
    functionsReached:
    - S_ISSOCK
    - getauxval
    - getpid
    - stat
    - memset
    - min
    - S_ISREG
    - mmap
    - getpeername
    - munmap
    - fstatfs
    - tcgetattr
    - statfs
    - dl_iterate_phdr
    - clock_gettime
    - SHA512_Final
    - sigprocmask
    - sigpending
    - getpagesize
    - memcpy
    - getsid
    - HD
    - getrusage
    - HX
    - gettimeofday
    - SHA512_Init
    - fstat
    - statvfs
    - S_ISCHR
    - getpriority
    - HF
    - getpgid
    - explicit_bzero
    - lseek
    - HR
    - fstatvfs
    - S_ISFIFO
    - nanosleep
    - getppid
    linkageType: ''
    returnType: int
    signature: int getentropy_fallback(void *buf, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: arc4random
      Src: /src/unbound/compat/arc4random_uniform.c:51,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - upper_bound
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 33
    functionDepth: 1
    functionLinenumber: 33
    functionLinenumberEnd: 57
    functionName: arc4random_uniform
    functionSourceFile: /src/unbound/compat/arc4random_uniform.c
    functionUses: 0
    functionsReached:
    - arc4random
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t arc4random_uniform(uint32_t upper_bound)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/compat/fake-rfc2553.c:54,1
    - Dst: ntohs
      Src: /src/unbound/compat/fake-rfc2553.c:54,1
    - Dst: strlcpy
      Src: /src/unbound/compat/fake-rfc2553.c:55,1
    - Dst: strlcpy
      Src: /src/unbound/compat/fake-rfc2553.c:61,1
    - Dst: inet_ntoa
      Src: /src/unbound/compat/fake-rfc2553.c:61,1
    - Dst: gethostbyaddr
      Src: /src/unbound/compat/fake-rfc2553.c:67,1
    - Dst: strlcpy
      Src: /src/unbound/compat/fake-rfc2553.c:72,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 7
    argNames:
    - sa
    - ATTR_UNUSED
    - host
    - hostlen
    - serv
    - servlen
    - flags
    argTypes:
    - struct sockaddr*
    - size_t
    - char*
    - size_t
    - char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 46
    functionDepth: 1
    functionLinenumber: 46
    functionLinenumberEnd: 79
    functionName: getnameinfo
    functionSourceFile: /src/unbound/compat/fake-rfc2553.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - snprintf
    - inet_ntoa
    - gethostbyaddr
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int getnameinfo(const struct sockaddr *sa, size_t ATTR_UNUSED(salen),
      char *host, \n                size_t hostlen, char *serv, size_t servlen, int
      flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 100
    functionName: gai_strerror
    functionSourceFile: /src/unbound/compat/fake-rfc2553.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      #else

      char *

      #endif

      gai_strerror(int err)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/compat/fake-rfc2553.c:111,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ai
    argTypes:
    - struct addrinfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 114
    functionName: freeaddrinfo
    functionSourceFile: /src/unbound/compat/fake-rfc2553.c
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void freeaddrinfo(struct addrinfo *ai)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/compat/fake-rfc2553.c:123,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - port
    - addr
    - hints
    argTypes:
    - int
    - u_long
    - struct addrinfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 145
    functionName: malloc_ai
    functionSourceFile: /src/unbound/compat/fake-rfc2553.c
    functionUses: 0
    functionsReached:
    - calloc
    linkageType: ''
    returnType: 'struct

      addrinfo'
    signature: 'struct

      addrinfo *malloc_ai(int port, u_long addr, const struct addrinfo *hints)'
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/unbound/compat/fake-rfc2553.c:162,1
    - Dst: htons
      Src: /src/unbound/compat/fake-rfc2553.c:164,1
    - Dst: getservbyname
      Src: /src/unbound/compat/fake-rfc2553.c:165,1
    - Dst: htonl
      Src: /src/unbound/compat/fake-rfc2553.c:172,1
    - Dst: inet_aton
      Src: /src/unbound/compat/fake-rfc2553.c:173,1
    - Dst: malloc_ai
      Src: /src/unbound/compat/fake-rfc2553.c:175,1
    - Dst: malloc_ai
      Src: /src/unbound/compat/fake-rfc2553.c:182,1
    - Dst: htonl
      Src: /src/unbound/compat/fake-rfc2553.c:182,1
    - Dst: inet_aton
      Src: /src/unbound/compat/fake-rfc2553.c:188,1
    - Dst: malloc_ai
      Src: /src/unbound/compat/fake-rfc2553.c:189,1
    - Dst: gethostbyname
      Src: /src/unbound/compat/fake-rfc2553.c:199,1
    - Dst: malloc_ai
      Src: /src/unbound/compat/fake-rfc2553.c:207,1
    - Dst: freeaddrinfo
      Src: /src/unbound/compat/fake-rfc2553.c:210,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 51
    argCount: 4
    argNames:
    - hostname
    - servname
    - hints
    - res
    argTypes:
    - char*
    - char*
    - struct addrinfo*
    - struct addrinfo**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 224
    functionName: getaddrinfo
    functionSourceFile: /src/unbound/compat/fake-rfc2553.c
    functionUses: 1
    functionsReached:
    - freeaddrinfo
    - htons
    - malloc_ai
    - htonl
    - gethostbyname
    - getservbyname
    - inet_aton
    - strtol
    linkageType: ''
    returnType: int
    signature: "int getaddrinfo(const char *hostname, const char *servname, \n    const
      struct addrinfo *hints, struct addrinfo **res)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_destroy
      Src: /src/unbound/compat/ctime_r.c:19,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 21
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 21
    functionName: ctime_r_cleanup
    functionSourceFile: /src/unbound/compat/ctime_r.c
    functionUses: 0
    functionsReached:
    - lock_basic_destroy
    linkageType: ''
    returnType: void
    signature: void ctime_r_cleanup(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_init
      Src: /src/unbound/compat/ctime_r.c:30,1
    - Dst: atexit
      Src: /src/unbound/compat/ctime_r.c:31,1
    - Dst: lock_basic_lock
      Src: /src/unbound/compat/ctime_r.c:33,1
    - Dst: ctime
      Src: /src/unbound/compat/ctime_r.c:34,1
    - Dst: strlen
      Src: /src/unbound/compat/ctime_r.c:36,1
    - Dst: strcpy
      Src: /src/unbound/compat/ctime_r.c:38,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/compat/ctime_r.c:40,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - timep
    - buf
    argTypes:
    - time_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 23
    functionDepth: 0
    functionLinenumber: 23
    functionLinenumberEnd: 42
    functionName: ctime_r
    functionSourceFile: /src/unbound/compat/ctime_r.c
    functionUses: 5
    functionsReached:
    - strcpy
    - lock_basic_unlock
    - ctime
    - lock_basic_init
    - atexit
    - lock_basic_lock
    - strlen
    linkageType: ''
    returnType: char
    signature: char *ctime_r(const time_t *timep, char *buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/compat/strlcat.c:60,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - dst
    - src
    - siz
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 71
    functionName: strlcat
    functionSourceFile: /src/unbound/compat/strlcat.c
    functionUses: 0
    functionsReached:
    - strlen
    linkageType: ''
    returnType: size_t
    signature: size_t strlcat(char *dst, const char *src, size_t siz)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/compat/memmove.c:41,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 3
    argNames:
    - dest
    - src
    - n
    argTypes:
    - void*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 43
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 43
    functionName: memmove
    functionSourceFile: /src/unbound/compat/memmove.c
    functionUses: 54
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void *memmove(void *dest, const void *src, size_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED(buf)
    - ATTR_UNUSED
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 16
      start: 14
    functionDepth: 0
    functionLinenumber: 14
    functionLinenumberEnd: 16
    functionName: __explicit_bzero_hook
    functionSourceFile: /src/unbound/compat/explicit_bzero.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void __explicit_bzero_hook(void *ATTR_UNUSED(buf), size_t ATTR_UNUSED(len))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SecureZeroMemory
      Src: /src/unbound/compat/explicit_bzero.c:22,1
    - Dst: memset
      Src: /src/unbound/compat/explicit_bzero.c:24,1
    - Dst: __explicit_bzero_hook
      Src: /src/unbound/compat/explicit_bzero.c:25,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 26
      start: 18
    functionDepth: 1
    functionLinenumber: 18
    functionLinenumberEnd: 26
    functionName: explicit_bzero
    functionSourceFile: /src/unbound/compat/explicit_bzero.c
    functionUses: 5
    functionsReached:
    - memset
    - __explicit_bzero_hook
    - SecureZeroMemory
    linkageType: ''
    returnType: void
    signature: void explicit_bzero(void *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - func
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 36
      start: 35
    functionDepth: 0
    functionLinenumber: 35
    functionLinenumberEnd: 36
    functionName: LOCKRET
    functionSourceFile: /src/unbound/compat/arc4_lock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOCKRET(func)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 47
    functionName: _ARC4_LOCK
    functionSourceFile: /src/unbound/compat/arc4_lock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _ARC4_LOCK(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 51
    functionName: _ARC4_UNLOCK
    functionSourceFile: /src/unbound/compat/arc4_lock.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _ARC4_UNLOCK(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: _ARC4_LOCK_DESTROY
    functionSourceFile: /src/unbound/compat/arc4_lock.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void _ARC4_LOCK_DESTROY(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_init
      Src: /src/unbound/compat/arc4_lock.c:65,1
    - Dst: lock_quick_lock
      Src: /src/unbound/compat/arc4_lock.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 68
    functionName: _ARC4_LOCK
    functionSourceFile: /src/unbound/compat/arc4_lock.c
    functionUses: 0
    functionsReached:
    - lock_quick_init
    - lock_quick_lock
    linkageType: ''
    returnType: void
    signature: void _ARC4_LOCK(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_unlock
      Src: /src/unbound/compat/arc4_lock.c:72,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 73
    functionName: _ARC4_UNLOCK
    functionSourceFile: /src/unbound/compat/arc4_lock.c
    functionUses: 0
    functionsReached:
    - lock_quick_unlock
    linkageType: ''
    returnType: void
    signature: void _ARC4_UNLOCK(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_destroy
      Src: /src/unbound/compat/arc4_lock.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: _ARC4_LOCK_DESTROY
    functionSourceFile: /src/unbound/compat/arc4_lock.c
    functionUses: 1
    functionsReached:
    - lock_quick_destroy
    linkageType: ''
    returnType: void
    signature: void _ARC4_LOCK_DESTROY(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CryptAcquireContext
      Src: /src/unbound/compat/getentropy_win.c:46,1
    - Dst: CryptGenRandom
      Src: /src/unbound/compat/getentropy_win.c:49,1
    - Dst: CryptReleaseContext
      Src: /src/unbound/compat/getentropy_win.c:50,1
    - Dst: CryptReleaseContext
      Src: /src/unbound/compat/getentropy_win.c:53,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 36
    functionDepth: 0
    functionLinenumber: 36
    functionLinenumberEnd: 59
    functionName: getentropy
    functionSourceFile: /src/unbound/compat/getentropy_win.c
    functionUses: 0
    functionsReached:
    - CryptGenRandom
    - CryptReleaseContext
    - CryptAcquireContext
    linkageType: ''
    returnType: int
    signature: int getentropy(void *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 34
      start: 33
    functionDepth: 0
    functionLinenumber: 33
    functionLinenumberEnd: 34
    functionName: isleap
    functionSourceFile: /src/unbound/compat/gmtime_r.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: isleap(y)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isleap
      Src: /src/unbound/compat/gmtime_r.c:77,1
    - Dst: LEAPS_THRU_END_OF
      Src: /src/unbound/compat/gmtime_r.c:84,1
    - Dst: LEAPS_THRU_END_OF
      Src: /src/unbound/compat/gmtime_r.c:85,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 3
    argNames:
    - timep
    - offset
    - tmp
    argTypes:
    - time_t*
    - long
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 44
    functionDepth: 1
    functionLinenumber: 44
    functionLinenumberEnd: 95
    functionName: timesub
    functionSourceFile: /src/unbound/compat/gmtime_r.c
    functionUses: 0
    functionsReached:
    - isleap
    - LEAPS_THRU_END_OF
    linkageType: ''
    returnType: void
    signature: void timesub(const time_t * const timep, const long offset, struct
      tm * const tmp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 77
    functionName: LEAPS_THRU_END_OF
    functionSourceFile: /src/unbound/compat/gmtime_r.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LEAPS_THRU_END_OF(y)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timesub
      Src: /src/unbound/compat/gmtime_r.c:102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - timep
    - tm
    argTypes:
    - time_t*
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 104
    functionName: gmtime_r
    functionSourceFile: /src/unbound/compat/gmtime_r.c
    functionUses: 3
    functionsReached:
    - timesub
    linkageType: ''
    returnType: struct tm
    signature: struct tm * gmtime_r(const time_t* timep, struct tm *tm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/compat/strptime.c:78,1
    - Dst: strncasecmp
      Src: /src/unbound/compat/strptime.c:79,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - buf
    - strs
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 85
    functionName: match_string
    functionSourceFile: /src/unbound/compat/strptime.c
    functionUses: 0
    functionsReached:
    - strncasecmp
    - strlen
    linkageType: ''
    returnType: int
    signature: int match_string(const char **buf, const char **strs)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/unbound/compat/strptime.c:92,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - buf
    - max
    argTypes:
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 101
    functionName: str2int
    functionSourceFile: /src/unbound/compat/strptime.c
    functionUses: 0
    functionsReached:
    - isdigit
    linkageType: ''
    returnType: int
    signature: int str2int(const char **buf, int max)
  - BBCount: 68
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/compat/strptime.c:114,1
    - Dst: isspace
      Src: /src/unbound/compat/strptime.c:118,1
    - Dst: match_string
      Src: /src/unbound/compat/strptime.c:133,1
    - Dst: match_string
      Src: /src/unbound/compat/strptime.c:135,1
    - Dst: match_string
      Src: /src/unbound/compat/strptime.c:144,1
    - Dst: match_string
      Src: /src/unbound/compat/strptime.c:146,1
    - Dst: unbound_strptime
      Src: /src/unbound/compat/strptime.c:153,1
    - Dst: str2int
      Src: /src/unbound/compat/strptime.c:158,1
    - Dst: str2int
      Src: /src/unbound/compat/strptime.c:173,1
    - Dst: unbound_strptime
      Src: /src/unbound/compat/strptime.c:180,1
    - Dst: str2int
      Src: /src/unbound/compat/strptime.c:185,1
    - Dst: str2int
      Src: /src/unbound/compat/strptime.c:192,1
    - Dst: str2int
      Src: /src/unbound/compat/strptime.c:201,1
    - Dst: str2int
      Src: /src/unbound/compat/strptime.c:208,1
    - Dst: str2int
      Src: /src/unbound/compat/strptime.c:216,1
    - Dst: isspace
      Src: /src/unbound/compat/strptime.c:224,1
    - Dst: match_string
      Src: /src/unbound/compat/strptime.c:228,1
    - Dst: unbound_strptime
      Src: /src/unbound/compat/strptime.c:240,1
    - Dst: unbound_strptime
      Src: /src/unbound/compat/strptime.c:245,1
    - Dst: str2int
      Src: /src/unbound/compat/strptime.c:250,1
    - Dst: unbound_strptime
      Src: /src/unbound/compat/strptime.c:259,1
    - Dst: str2int
      Src: /src/unbound/compat/strptime.c:264,1
    - Dst: str2int
      Src: /src/unbound/compat/strptime.c:273,1
    - Dst: str2int
      Src: /src/unbound/compat/strptime.c:280,1
    - Dst: unbound_strptime
      Src: /src/unbound/compat/strptime.c:289,1
    - Dst: unbound_strptime
      Src: /src/unbound/compat/strptime.c:294,1
    - Dst: str2int
      Src: /src/unbound/compat/strptime.c:299,1
    - Dst: str2int
      Src: /src/unbound/compat/strptime.c:319,1
    CyclomaticComplexity: 79
    EdgeCount: 79
    ICount: 205
    argCount: 3
    argNames:
    - s
    - format
    - tm
    argTypes:
    - char*
    - char*
    - struct tm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 343
    functionName: unbound_strptime
    functionSourceFile: /src/unbound/compat/strptime.c
    functionUses: 1
    functionsReached:
    - str2int
    - isspace
    - match_string
    - unbound_strptime
    linkageType: ''
    returnType: char
    signature: 'char *

      unbound_strptime(const char *s, const char *format, struct tm *tm)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/compat/snprintf.c:71,1
    - Dst: vsnprintf
      Src: /src/unbound/compat/snprintf.c:72,1
    - Dst: va_end
      Src: /src/unbound/compat/snprintf.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - str
    - size
    - format
    argTypes:
    - char*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 75
    functionName: snprintf
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 43
    functionsReached:
    - va_end
    - vsnprintf
    - va_start
    linkageType: ''
    returnType: int
    signature: int snprintf(char* str, size_t size, const char* format, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - at
    - left
    - ret
    - p
    - num
    argTypes:
    - char**
    - size_t*
    - int*
    - char
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 78
    functionDepth: 0
    functionLinenumber: 78
    functionLinenumberEnd: 88
    functionName: print_pad
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void print_pad(char** at, size_t* left, int* ret, char p, int num)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - negative
    - plus
    - space
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 101
    functionName: get_negsign
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char get_negsign(int negative, int plus, int space)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - buf
    - max
    - value
    argTypes:
    - char*
    - int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 119
    functionName: print_dec
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int print_dec(char* buf, int max, unsigned int value)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - buf
    - max
    - value
    argTypes:
    - char*
    - int
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 136
    functionName: print_dec_l
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int print_dec_l(char* buf, int max, unsigned long value)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - buf
    - max
    - value
    argTypes:
    - char*
    - int
    - unsigned long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 139
    functionDepth: 0
    functionLinenumber: 139
    functionLinenumberEnd: 153
    functionName: print_dec_ll
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int print_dec_ll(char* buf, int max, unsigned long long value)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - buf
    - max
    - value
    argTypes:
    - char*
    - int
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 171
    functionName: print_hex
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int print_hex(char* buf, int max, unsigned int value)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - buf
    - max
    - value
    argTypes:
    - char*
    - int
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 189
    functionName: print_hex_l
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int print_hex_l(char* buf, int max, unsigned long value)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - buf
    - max
    - value
    argTypes:
    - char*
    - int
    - unsigned long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 207
    functionName: print_hex_ll
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int print_hex_ll(char* buf, int max, unsigned long long value)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 5
    argNames:
    - at
    - left
    - ret
    - buf
    - len
    argTypes:
    - char**
    - size_t*
    - int*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 210
    functionDepth: 0
    functionLinenumber: 210
    functionLinenumberEnd: 221
    functionName: spool_str_rev
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void spool_str_rev(char** at, size_t* left, int* ret, const char* buf,
      int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - at
    - left
    - ret
    - buf
    - len
    argTypes:
    - char**
    - size_t*
    - int*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 235
    functionName: spool_str
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void spool_str(char** at, size_t* left, int* ret, const char* buf,
      int len)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: get_negsign
      Src: /src/unbound/compat/snprintf.c:244,1
    - Dst: print_pad
      Src: /src/unbound/compat/snprintf.c:254,1
    - Dst: print_pad
      Src: /src/unbound/compat/snprintf.c:261,1
    - Dst: spool_str_rev
      Src: /src/unbound/compat/snprintf.c:262,1
    - Dst: print_pad
      Src: /src/unbound/compat/snprintf.c:266,1
    - Dst: print_pad
      Src: /src/unbound/compat/snprintf.c:278,1
    - Dst: print_pad
      Src: /src/unbound/compat/snprintf.c:281,1
    - Dst: print_pad
      Src: /src/unbound/compat/snprintf.c:286,1
    - Dst: spool_str_rev
      Src: /src/unbound/compat/snprintf.c:290,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 39
    argCount: 14
    argNames:
    - at
    - left
    - ret
    - minw
    - precision
    - prgiven
    - zeropad
    - minus
    - plus
    - space
    - zero
    - negative
    - buf
    - len
    argTypes:
    - char**
    - size_t*
    - int*
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 238
    functionDepth: 1
    functionLinenumber: 238
    functionLinenumberEnd: 292
    functionName: print_num
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached:
    - print_pad
    - spool_str_rev
    - get_negsign
    linkageType: ''
    returnType: void
    signature: "void print_num(char** at, size_t* left, int* ret, int minw, int precision,\n\tint
      prgiven, int zeropad, int minus, int plus, int space,\n\tint zero, int negative,
      char* buf, int len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: print_dec
      Src: /src/unbound/compat/snprintf.c:303,1
    - Dst: print_num
      Src: /src/unbound/compat/snprintf.c:305,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 11
    argNames:
    - at
    - left
    - ret
    - value
    - minw
    - precision
    - prgiven
    - zeropad
    - minus
    - plus
    - space
    argTypes:
    - char**
    - size_t*
    - int*
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 307
    functionName: print_num_d
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached:
    - print_dec
    - print_num
    linkageType: ''
    returnType: void
    signature: "void print_num_d(char** at, size_t* left, int* ret, int value,\n\tint
      minw, int precision, int prgiven, int zeropad, int minus,\n\tint plus, int space)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: print_dec_l
      Src: /src/unbound/compat/snprintf.c:318,1
    - Dst: print_num
      Src: /src/unbound/compat/snprintf.c:320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 11
    argNames:
    - at
    - left
    - ret
    - value
    - minw
    - precision
    - prgiven
    - zeropad
    - minus
    - plus
    - space
    argTypes:
    - char**
    - size_t*
    - int*
    - long
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 310
    functionDepth: 2
    functionLinenumber: 310
    functionLinenumberEnd: 322
    functionName: print_num_ld
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached:
    - print_dec_l
    - print_num
    linkageType: ''
    returnType: void
    signature: "void print_num_ld(char** at, size_t* left, int* ret, long value,\n\tint
      minw, int precision, int prgiven, int zeropad, int minus,\n\tint plus, int space)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: print_dec_ll
      Src: /src/unbound/compat/snprintf.c:333,1
    - Dst: print_num
      Src: /src/unbound/compat/snprintf.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 11
    argNames:
    - at
    - left
    - ret
    - value
    - minw
    - precision
    - prgiven
    - zeropad
    - minus
    - plus
    - space
    argTypes:
    - char**
    - size_t*
    - int*
    - long long
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 325
    functionDepth: 2
    functionLinenumber: 325
    functionLinenumberEnd: 337
    functionName: print_num_lld
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached:
    - print_dec_ll
    - print_num
    linkageType: ''
    returnType: void
    signature: "void print_num_lld(char** at, size_t* left, int* ret, long long value,\n\tint
      minw, int precision, int prgiven, int zeropad, int minus,\n\tint plus, int space)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: print_dec
      Src: /src/unbound/compat/snprintf.c:348,1
    - Dst: print_num
      Src: /src/unbound/compat/snprintf.c:349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 11
    argNames:
    - at
    - left
    - ret
    - value
    - minw
    - precision
    - prgiven
    - zeropad
    - minus
    - plus
    - space
    argTypes:
    - char**
    - size_t*
    - int*
    - unsigned int
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 340
    functionDepth: 2
    functionLinenumber: 340
    functionLinenumberEnd: 351
    functionName: print_num_u
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached:
    - print_dec
    - print_num
    linkageType: ''
    returnType: void
    signature: "void print_num_u(char** at, size_t* left, int* ret, unsigned int value,\n\tint
      minw, int precision, int prgiven, int zeropad, int minus,\n\tint plus, int space)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: print_dec_l
      Src: /src/unbound/compat/snprintf.c:362,1
    - Dst: print_num
      Src: /src/unbound/compat/snprintf.c:363,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 11
    argNames:
    - at
    - left
    - ret
    - value
    - minw
    - precision
    - prgiven
    - zeropad
    - minus
    - plus
    - space
    argTypes:
    - char**
    - size_t*
    - int*
    - unsigned long
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 354
    functionDepth: 2
    functionLinenumber: 354
    functionLinenumberEnd: 365
    functionName: print_num_lu
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached:
    - print_dec_l
    - print_num
    linkageType: ''
    returnType: void
    signature: "void print_num_lu(char** at, size_t* left, int* ret, unsigned long
      value,\n\tint minw, int precision, int prgiven, int zeropad, int minus,\n\tint
      plus, int space)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: print_dec_ll
      Src: /src/unbound/compat/snprintf.c:376,1
    - Dst: print_num
      Src: /src/unbound/compat/snprintf.c:377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 11
    argNames:
    - at
    - left
    - ret
    - value
    - minw
    - precision
    - prgiven
    - zeropad
    - minus
    - plus
    - space
    argTypes:
    - char**
    - size_t*
    - int*
    - unsigned long long
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 368
    functionDepth: 2
    functionLinenumber: 368
    functionLinenumberEnd: 379
    functionName: print_num_llu
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached:
    - print_dec_ll
    - print_num
    linkageType: ''
    returnType: void
    signature: "void print_num_llu(char** at, size_t* left, int* ret, unsigned long
      long value,\n\tint minw, int precision, int prgiven, int zeropad, int minus,\n\tint
      plus, int space)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: print_hex
      Src: /src/unbound/compat/snprintf.c:390,1
    - Dst: print_num
      Src: /src/unbound/compat/snprintf.c:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 11
    argNames:
    - at
    - left
    - ret
    - value
    - minw
    - precision
    - prgiven
    - zeropad
    - minus
    - plus
    - space
    argTypes:
    - char**
    - size_t*
    - int*
    - unsigned int
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 382
    functionDepth: 2
    functionLinenumber: 382
    functionLinenumberEnd: 393
    functionName: print_num_x
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached:
    - print_hex
    - print_num
    linkageType: ''
    returnType: void
    signature: "void print_num_x(char** at, size_t* left, int* ret, unsigned int value,\n\tint
      minw, int precision, int prgiven, int zeropad, int minus,\n\tint plus, int space)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: print_hex_l
      Src: /src/unbound/compat/snprintf.c:404,1
    - Dst: print_num
      Src: /src/unbound/compat/snprintf.c:405,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 11
    argNames:
    - at
    - left
    - ret
    - value
    - minw
    - precision
    - prgiven
    - zeropad
    - minus
    - plus
    - space
    argTypes:
    - char**
    - size_t*
    - int*
    - unsigned long
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 396
    functionDepth: 2
    functionLinenumber: 396
    functionLinenumberEnd: 407
    functionName: print_num_lx
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached:
    - print_hex_l
    - print_num
    linkageType: ''
    returnType: void
    signature: "void print_num_lx(char** at, size_t* left, int* ret, unsigned long
      value,\n\tint minw, int precision, int prgiven, int zeropad, int minus,\n\tint
      plus, int space)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: print_hex_ll
      Src: /src/unbound/compat/snprintf.c:418,1
    - Dst: print_num
      Src: /src/unbound/compat/snprintf.c:419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 11
    argNames:
    - at
    - left
    - ret
    - value
    - minw
    - precision
    - prgiven
    - zeropad
    - minus
    - plus
    - space
    argTypes:
    - char**
    - size_t*
    - int*
    - unsigned long long
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 410
    functionDepth: 2
    functionLinenumber: 410
    functionLinenumberEnd: 421
    functionName: print_num_llx
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached:
    - print_hex_ll
    - print_num
    linkageType: ''
    returnType: void
    signature: "void print_num_llx(char** at, size_t* left, int* ret, unsigned long
      long value,\n\tint minw, int precision, int prgiven, int zeropad, int minus,\n\tint
      plus, int space)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: print_hex_ll
      Src: /src/unbound/compat/snprintf.c:438,1
    - Dst: print_num
      Src: /src/unbound/compat/snprintf.c:453,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 11
    argNames:
    - at
    - left
    - ret
    - value
    - minw
    - precision
    - prgiven
    - zeropad
    - minus
    - plus
    - space
    argTypes:
    - char**
    - size_t*
    - int*
    - void*
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 424
    functionDepth: 2
    functionLinenumber: 424
    functionLinenumberEnd: 455
    functionName: print_num_llp
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached:
    - print_hex_ll
    - print_num
    linkageType: ''
    returnType: void
    signature: "void print_num_llp(char** at, size_t* left, int* ret, void* value,\n\tint
      minw, int precision, int prgiven, int zeropad, int minus,\n\tint plus, int space)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: print_dec_ll
      Src: /src/unbound/compat/snprintf.c:480,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 4
    argNames:
    - buf
    - max
    - r
    - prec
    argTypes:
    - char*
    - int
    - double
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 487
      start: 459
    functionDepth: 1
    functionLinenumber: 459
    functionLinenumberEnd: 487
    functionName: print_remainder
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached:
    - print_dec_ll
    linkageType: ''
    returnType: int
    signature: int print_remainder(char* buf, int max, double r, int prec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: print_remainder
      Src: /src/unbound/compat/snprintf.c:502,1
    - Dst: print_dec_ll
      Src: /src/unbound/compat/snprintf.c:503,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - buf
    - max
    - value
    - prec
    argTypes:
    - char*
    - int
    - double
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 490
    functionDepth: 2
    functionLinenumber: 490
    functionLinenumberEnd: 505
    functionName: print_float
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached:
    - print_dec_ll
    - print_remainder
    linkageType: ''
    returnType: int
    signature: int print_float(char* buf, int max, double value, int prec)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: print_float
      Src: /src/unbound/compat/snprintf.c:518,1
    - Dst: print_num
      Src: /src/unbound/compat/snprintf.c:520,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 11
    argNames:
    - at
    - left
    - ret
    - value
    - minw
    - precision
    - prgiven
    - zeropad
    - minus
    - plus
    - space
    argTypes:
    - char**
    - size_t*
    - int*
    - double
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 508
    functionDepth: 3
    functionLinenumber: 508
    functionLinenumberEnd: 522
    functionName: print_num_f
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached:
    - print_float
    - print_num
    linkageType: ''
    returnType: void
    signature: "void print_num_f(char** at, size_t* left, int* ret, double value,\n\tint
      minw, int precision, int prgiven, int zeropad, int minus,\n\tint plus, int space)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: print_remainder
      Src: /src/unbound/compat/snprintf.c:542,1
    - Dst: memmove
      Src: /src/unbound/compat/snprintf.c:544,1
    - Dst: print_dec_ll
      Src: /src/unbound/compat/snprintf.c:547,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - buf
    - max
    - value
    - prec
    argTypes:
    - char*
    - int
    - double
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 549
      start: 525
    functionDepth: 2
    functionLinenumber: 525
    functionLinenumberEnd: 549
    functionName: print_float_g
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached:
    - print_dec_ll
    - print_remainder
    - memmove
    linkageType: ''
    returnType: int
    signature: int print_float_g(char* buf, int max, double value, int prec)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: print_float_g
      Src: /src/unbound/compat/snprintf.c:564,1
    - Dst: print_num
      Src: /src/unbound/compat/snprintf.c:566,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 11
    argNames:
    - at
    - left
    - ret
    - value
    - minw
    - precision
    - prgiven
    - zeropad
    - minus
    - plus
    - space
    argTypes:
    - char**
    - size_t*
    - int*
    - double
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 553
    functionDepth: 3
    functionLinenumber: 553
    functionLinenumberEnd: 568
    functionName: print_num_g
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached:
    - print_float_g
    - print_num
    linkageType: ''
    returnType: void
    signature: "void print_num_g(char** at, size_t* left, int* ret, double value,\n\tint
      minw, int precision, int prgiven, int zeropad, int minus,\n\tint plus, int space)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - s
    - max
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 572
    functionDepth: 0
    functionLinenumber: 572
    functionLinenumberEnd: 580
    functionName: my_strnlen
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int my_strnlen(const char* s, int max)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: my_strnlen
      Src: /src/unbound/compat/snprintf.c:590,1
    - Dst: strlen
      Src: /src/unbound/compat/snprintf.c:591,1
    - Dst: print_pad
      Src: /src/unbound/compat/snprintf.c:593,1
    - Dst: spool_str
      Src: /src/unbound/compat/snprintf.c:594,1
    - Dst: print_pad
      Src: /src/unbound/compat/snprintf.c:596,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 8
    argNames:
    - at
    - left
    - ret
    - s
    - minw
    - precision
    - prgiven
    - minus
    argTypes:
    - char**
    - size_t*
    - int*
    - char*
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 583
    functionDepth: 1
    functionLinenumber: 583
    functionLinenumberEnd: 597
    functionName: print_str
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached:
    - my_strnlen
    - print_pad
    - strlen
    - spool_str
    linkageType: ''
    returnType: void
    signature: "void print_str(char** at, size_t* left, int* ret, char* s,\n\tint
      minw, int precision, int prgiven, int minus)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: print_pad
      Src: /src/unbound/compat/snprintf.c:605,1
    - Dst: print_pad
      Src: /src/unbound/compat/snprintf.c:606,1
    - Dst: print_pad
      Src: /src/unbound/compat/snprintf.c:608,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 6
    argNames:
    - at
    - left
    - ret
    - c
    - minw
    - minus
    argTypes:
    - char**
    - size_t*
    - int*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 600
    functionDepth: 1
    functionLinenumber: 600
    functionLinenumberEnd: 609
    functionName: print_char
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached:
    - print_pad
    linkageType: ''
    returnType: void
    signature: "void print_char(char** at, size_t* left, int* ret, int c,\n\tint minw,
      int minus)"
  - BBCount: 39
    BranchProfiles: []
    Callsites:
    - Dst: va_arg
      Src: /src/unbound/compat/snprintf.c:709,1
    - Dst: va_arg
      Src: /src/unbound/compat/snprintf.c:725,1
    - Dst: print_num_d
      Src: /src/unbound/compat/snprintf.c:754,1
    - Dst: va_arg
      Src: /src/unbound/compat/snprintf.c:754,1
    - Dst: print_num_ld
      Src: /src/unbound/compat/snprintf.c:757,1
    - Dst: va_arg
      Src: /src/unbound/compat/snprintf.c:757,1
    - Dst: print_num_lld
      Src: /src/unbound/compat/snprintf.c:760,1
    - Dst: va_arg
      Src: /src/unbound/compat/snprintf.c:761,1
    - Dst: print_num_u
      Src: /src/unbound/compat/snprintf.c:766,1
    - Dst: va_arg
      Src: /src/unbound/compat/snprintf.c:767,1
    - Dst: print_num_lu
      Src: /src/unbound/compat/snprintf.c:770,1
    - Dst: va_arg
      Src: /src/unbound/compat/snprintf.c:771,1
    - Dst: print_num_llu
      Src: /src/unbound/compat/snprintf.c:774,1
    - Dst: va_arg
      Src: /src/unbound/compat/snprintf.c:775,1
    - Dst: print_num_x
      Src: /src/unbound/compat/snprintf.c:780,1
    - Dst: va_arg
      Src: /src/unbound/compat/snprintf.c:781,1
    - Dst: print_num_lx
      Src: /src/unbound/compat/snprintf.c:784,1
    - Dst: va_arg
      Src: /src/unbound/compat/snprintf.c:785,1
    - Dst: print_num_llx
      Src: /src/unbound/compat/snprintf.c:788,1
    - Dst: va_arg
      Src: /src/unbound/compat/snprintf.c:789,1
    - Dst: print_str
      Src: /src/unbound/compat/snprintf.c:793,1
    - Dst: va_arg
      Src: /src/unbound/compat/snprintf.c:793,1
    - Dst: print_char
      Src: /src/unbound/compat/snprintf.c:797,1
    - Dst: va_arg
      Src: /src/unbound/compat/snprintf.c:797,1
    - Dst: print_str
      Src: /src/unbound/compat/snprintf.c:807,1
    - Dst: strerror
      Src: /src/unbound/compat/snprintf.c:807,1
    - Dst: print_num_llp
      Src: /src/unbound/compat/snprintf.c:811,1
    - Dst: va_arg
      Src: /src/unbound/compat/snprintf.c:811,1
    - Dst: print_pad
      Src: /src/unbound/compat/snprintf.c:815,1
    - Dst: print_num_f
      Src: /src/unbound/compat/snprintf.c:818,1
    - Dst: va_arg
      Src: /src/unbound/compat/snprintf.c:818,1
    - Dst: print_num_g
      Src: /src/unbound/compat/snprintf.c:822,1
    - Dst: va_arg
      Src: /src/unbound/compat/snprintf.c:822,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 126
    argCount: 4
    argNames:
    - str
    - size
    - format
    - arg
    argTypes:
    - char*
    - size_t
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 835
      start: 630
    functionDepth: 4
    functionLinenumber: 630
    functionLinenumberEnd: 835
    functionName: vsnprintf
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 7
    functionsReached:
    - print_num_lx
    - print_num_llx
    - print_num_u
    - print_num_ld
    - print_num_lu
    - print_num_lld
    - print_char
    - print_num_d
    - print_num_f
    - print_num_llp
    - print_num_g
    - strerror
    - print_num_llu
    - print_str
    - print_num_x
    - print_pad
    - va_arg
    linkageType: ''
    returnType: int
    signature: int vsnprintf(char* str, size_t size, const char* format, va_list arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - bufsz
    - ','
    - result
    - ','
    - retval
    - ','
    - '...'
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 841
    functionDepth: 0
    functionLinenumber: 841
    functionLinenumberEnd: 860
    functionName: DOTEST
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: DOTEST(bufsz, result, retval, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:867,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:868,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:872,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:873,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:876,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:877,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:878,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:879,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:880,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:881,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:882,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:883,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:884,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:885,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:886,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:887,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:888,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:891,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:892,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:893,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:894,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:895,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:896,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:897,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:898,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:899,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:900,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:901,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:902,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:903,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:906,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:907,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:910,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:911,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:912,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:915,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:916,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:917,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:920,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:922,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:924,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:928,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:929,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:930,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:931,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:932,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:933,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:936,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:942,1
    - Dst: printf
      Src: /src/unbound/compat/snprintf.c:943,1
    - Dst: exit
      Src: /src/unbound/compat/snprintf.c:943,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:947,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:950,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:951,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:954,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:957,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:958,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:960,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:961,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:962,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:963,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:965,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:966,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:967,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:971,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:972,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:973,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:974,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:975,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:976,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:977,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:978,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:979,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:980,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:981,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:982,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:983,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:984,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:985,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:986,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:987,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:990,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:991,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:992,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:993,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:994,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:995,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:996,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:997,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:998,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:999,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1000,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1001,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1002,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1003,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1004,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1005,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1006,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1007,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1008,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1009,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1010,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1011,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1012,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1013,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1014,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1015,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1016,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1017,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1018,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1019,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1020,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1021,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1022,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1023,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1024,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1025,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1026,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1027,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1030,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1032,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1034,1
    - Dst: DOTEST
      Src: /src/unbound/compat/snprintf.c:1036,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 128
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1039
      start: 862
    functionDepth: 1
    functionLinenumber: 862
    functionLinenumberEnd: 1039
    functionName: main
    functionSourceFile: /src/unbound/compat/snprintf.c
    functionUses: 6
    functionsReached:
    - exit
    - DOTEST
    - printf
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: arc4_min
    functionSourceFile: /src/unbound/compat/arc4random.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: arc4_min(a, b)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 93
    functionName: fallback_gotdata
    functionSourceFile: /src/unbound/compat/arc4random.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fallback_gotdata(char *buf, size_t len)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/unbound/compat/arc4random.c:112,1
    - Dst: fcntl
      Src: /src/unbound/compat/arc4random.c:120,1
    - Dst: fcntl
      Src: /src/unbound/compat/arc4random.c:120,1
    - Dst: read
      Src: /src/unbound/compat/arc4random.c:125,1
    - Dst: close
      Src: /src/unbound/compat/arc4random.c:130,1
    - Dst: close
      Src: /src/unbound/compat/arc4random.c:135,1
    - Dst: fallback_gotdata
      Src: /src/unbound/compat/arc4random.c:136,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 143
    functionName: fallback_getentropy_urandom
    functionSourceFile: /src/unbound/compat/arc4random.c
    functionUses: 0
    functionsReached:
    - read
    - fallback_gotdata
    - open
    - close
    - fcntl
    linkageType: ''
    returnType: int
    signature: int fallback_getentropy_urandom(void *buf, size_t len)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/compat/arc4random.c:148,1
    - Dst: mmap
      Src: /src/unbound/compat/arc4random.c:154,1
    - Dst: abort
      Src: /src/unbound/compat/arc4random.c:156,1
    - Dst: minherit
      Src: /src/unbound/compat/arc4random.c:158,1
    - Dst: abort
      Src: /src/unbound/compat/arc4random.c:159,1
    - Dst: malloc
      Src: /src/unbound/compat/arc4random.c:162,1
    - Dst: abort
      Src: /src/unbound/compat/arc4random.c:164,1
    - Dst: mmap
      Src: /src/unbound/compat/arc4random.c:169,1
    - Dst: abort
      Src: /src/unbound/compat/arc4random.c:171,1
    - Dst: malloc
      Src: /src/unbound/compat/arc4random.c:173,1
    - Dst: abort
      Src: /src/unbound/compat/arc4random.c:175,1
    - Dst: chacha_keysetup
      Src: /src/unbound/compat/arc4random.c:179,1
    - Dst: chacha_ivsetup
      Src: /src/unbound/compat/arc4random.c:180,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 2
    argNames:
    - buf
    - n
    argTypes:
    - u_char*
    - size_t
    assertStmts:
    - condition: (buf)
      pos:
        line_end: 147
        line_start: 147
        source_file: /src/unbound/compat/arc4random.c
    constantsTouched: []
    func_position:
      end: 181
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 181
    functionName: _rs_init
    functionSourceFile: /src/unbound/compat/arc4random.c
    functionUses: 0
    functionsReached:
    - mmap
    - chacha_ivsetup
    - assert
    - malloc
    - chacha_keysetup
    - abort
    - minherit
    linkageType: ''
    returnType: void
    signature: void _rs_init(u_char *buf, size_t n)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: getentropy
      Src: /src/unbound/compat/arc4random.c:189,1
    - Dst: fallback_getentropy_urandom
      Src: /src/unbound/compat/arc4random.c:191,1
    - Dst: raise
      Src: /src/unbound/compat/arc4random.c:194,1
    - Dst: fatal_exit
      Src: /src/unbound/compat/arc4random.c:196,1
    - Dst: exit
      Src: /src/unbound/compat/arc4random.c:199,1
    - Dst: _rs_init
      Src: /src/unbound/compat/arc4random.c:205,1
    - Dst: _rs_rekey
      Src: /src/unbound/compat/arc4random.c:207,1
    - Dst: explicit_bzero
      Src: /src/unbound/compat/arc4random.c:208,1
    - Dst: memset
      Src: /src/unbound/compat/arc4random.c:212,1
    - Dst: chacha_encrypt_bytes
      Src: /src/unbound/compat/arc4random.c:215,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 183
    functionDepth: 3
    functionLinenumber: 183
    functionLinenumberEnd: 218
    functionName: _rs_stir
    functionSourceFile: /src/unbound/compat/arc4random.c
    functionUses: 0
    functionsReached:
    - getentropy
    - exit
    - chacha_encrypt_bytes
    - _rs_rekey
    - fatal_exit
    - _rs_init
    - fallback_getentropy_urandom
    - explicit_bzero
    - memset
    - raise
    linkageType: ''
    returnType: void
    signature: void _rs_stir(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getpid
      Src: /src/unbound/compat/arc4random.c:225,1
    - Dst: _rs_stir
      Src: /src/unbound/compat/arc4random.c:235,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 1
    argNames:
    - len
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 220
    functionDepth: 4
    functionLinenumber: 220
    functionLinenumberEnd: 240
    functionName: _rs_stir_if_needed
    functionSourceFile: /src/unbound/compat/arc4random.c
    functionUses: 0
    functionsReached:
    - _rs_stir
    - getpid
    linkageType: ''
    returnType: void
    signature: void _rs_stir_if_needed(size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/compat/arc4random.c:246,1
    - Dst: chacha_encrypt_bytes
      Src: /src/unbound/compat/arc4random.c:249,1
    - Dst: arc4_min
      Src: /src/unbound/compat/arc4random.c:255,1
    - Dst: _rs_init
      Src: /src/unbound/compat/arc4random.c:260,1
    - Dst: memset
      Src: /src/unbound/compat/arc4random.c:261,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - dat
    - datlen
    argTypes:
    - u_char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 242
    functionDepth: 3
    functionLinenumber: 242
    functionLinenumberEnd: 263
    functionName: _rs_rekey
    functionSourceFile: /src/unbound/compat/arc4random.c
    functionUses: 1
    functionsReached:
    - _rs_init
    - memset
    - chacha_encrypt_bytes
    - arc4_min
    linkageType: ''
    returnType: void
    signature: void _rs_rekey(u_char *dat, size_t datlen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: _rs_stir_if_needed
      Src: /src/unbound/compat/arc4random.c:272,1
    - Dst: arc4_min
      Src: /src/unbound/compat/arc4random.c:275,1
    - Dst: memcpy
      Src: /src/unbound/compat/arc4random.c:278,1
    - Dst: memset
      Src: /src/unbound/compat/arc4random.c:279,1
    - Dst: _rs_rekey
      Src: /src/unbound/compat/arc4random.c:285,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - _buf
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 265
    functionDepth: 5
    functionLinenumber: 265
    functionLinenumberEnd: 287
    functionName: _rs_random_buf
    functionSourceFile: /src/unbound/compat/arc4random.c
    functionUses: 0
    functionsReached:
    - _rs_stir_if_needed
    - memcpy
    - _rs_rekey
    - arc4_min
    - memset
    linkageType: ''
    returnType: void
    signature: void _rs_random_buf(void *_buf, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: _rs_stir_if_needed
      Src: /src/unbound/compat/arc4random.c:293,1
    - Dst: _rs_rekey
      Src: /src/unbound/compat/arc4random.c:295,1
    - Dst: memcpy
      Src: /src/unbound/compat/arc4random.c:297,1
    - Dst: memset
      Src: /src/unbound/compat/arc4random.c:298,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - val
    argTypes:
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 300
      start: 289
    functionDepth: 5
    functionLinenumber: 289
    functionLinenumberEnd: 300
    functionName: _rs_random_u32
    functionSourceFile: /src/unbound/compat/arc4random.c
    functionUses: 0
    functionsReached:
    - _rs_stir_if_needed
    - memset
    - memcpy
    - _rs_rekey
    linkageType: ''
    returnType: void
    signature: void _rs_random_u32(uint32_t *val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _ARC4_LOCK
      Src: /src/unbound/compat/arc4random.c:307,1
    - Dst: _rs_random_u32
      Src: /src/unbound/compat/arc4random.c:308,1
    - Dst: _ARC4_UNLOCK
      Src: /src/unbound/compat/arc4random.c:309,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 302
    functionDepth: 6
    functionLinenumber: 302
    functionLinenumberEnd: 311
    functionName: arc4random
    functionSourceFile: /src/unbound/compat/arc4random.c
    functionUses: 1
    functionsReached:
    - _ARC4_LOCK
    - _ARC4_UNLOCK
    - _rs_random_u32
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t arc4random(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: _ARC4_LOCK
      Src: /src/unbound/compat/arc4random.c:316,1
    - Dst: _rs_random_buf
      Src: /src/unbound/compat/arc4random.c:317,1
    - Dst: _ARC4_UNLOCK
      Src: /src/unbound/compat/arc4random.c:318,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - buf
    - n
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 313
    functionDepth: 6
    functionLinenumber: 313
    functionLinenumberEnd: 319
    functionName: arc4random_buf
    functionSourceFile: /src/unbound/compat/arc4random.c
    functionUses: 0
    functionsReached:
    - _rs_random_buf
    - _ARC4_LOCK
    - _ARC4_UNLOCK
    linkageType: ''
    returnType: void
    signature: void arc4random_buf(void *buf, size_t n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sysctl
      Src: /src/unbound/compat/getentropy_freebsd.c:44,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - buf
    - size
    argTypes:
    - u_char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 32
    functionDepth: 0
    functionLinenumber: 32
    functionLinenumberEnd: 52
    functionName: getentropy_sysctl
    functionSourceFile: /src/unbound/compat/getentropy_freebsd.c
    functionUses: 1
    functionsReached:
    - sysctl
    linkageType: ''
    returnType: size_t
    signature: size_t getentropy_sysctl(u_char *buf, size_t size)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: getentropy_sysctl
      Src: /src/unbound/compat/getentropy_freebsd.c:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 62
    functionName: getentropy
    functionSourceFile: /src/unbound/compat/getentropy_freebsd.c
    functionUses: 1
    functionsReached:
    - getentropy_sysctl
    linkageType: ''
    returnType: int
    signature: int getentropy(void *buf, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SecRandomCopyBytes
      Src: /src/unbound/compat/getentropy_osx.c:37,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 44
      start: 30
    functionDepth: 0
    functionLinenumber: 30
    functionLinenumberEnd: 44
    functionName: getentropy
    functionSourceFile: /src/unbound/compat/getentropy_osx.c
    functionUses: 1
    functionsReached:
    - SecRandomCopyBytes
    linkageType: ''
    returnType: int
    signature: int getentropy(void *buf, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 41
    functionDepth: 0
    functionLinenumber: 41
    functionLinenumberEnd: 45
    functionName: isblank
    functionSourceFile: /src/unbound/compat/isblank.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int isblank(int c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: min
    functionSourceFile: /src/unbound/compat/getentropy_solaris.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: min(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 67
    functionName: HX
    functionSourceFile: /src/unbound/compat/getentropy_solaris.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HX(a, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 69
    functionName: HR
    functionSourceFile: /src/unbound/compat/getentropy_solaris.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HR(x, l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 69
    functionDepth: 0
    functionLinenumber: 69
    functionLinenumberEnd: 70
    functionName: HD
    functionSourceFile: /src/unbound/compat/getentropy_solaris.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HD(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 71
    functionName: HF
    functionSourceFile: /src/unbound/compat/getentropy_solaris.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: HF(x)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: getentropy_urandom
      Src: /src/unbound/compat/getentropy_solaris.c:103,1
    - Dst: getentropy_urandom
      Src: /src/unbound/compat/getentropy_solaris.c:116,1
    - Dst: raise
      Src: /src/unbound/compat/getentropy_solaris.c:146,1
    - Dst: getentropy_fallback
      Src: /src/unbound/compat/getentropy_solaris.c:148,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 154
    functionName: getentropy
    functionSourceFile: /src/unbound/compat/getentropy_solaris.c
    functionUses: 1
    functionsReached:
    - getentropy_fallback
    - getentropy_urandom
    - raise
    linkageType: ''
    returnType: int
    signature: int getentropy(void *buf, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 159
    functionDepth: 0
    functionLinenumber: 159
    functionLinenumberEnd: 170
    functionName: gotdata
    functionSourceFile: /src/unbound/compat/getentropy_solaris.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int gotdata(char *buf, size_t len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/unbound/compat/getentropy_solaris.c:189,1
    - Dst: fcntl
      Src: /src/unbound/compat/getentropy_solaris.c:196,1
    - Dst: fcntl
      Src: /src/unbound/compat/getentropy_solaris.c:196,1
    - Dst: fstat
      Src: /src/unbound/compat/getentropy_solaris.c:200,1
    - Dst: S_ISCHR
      Src: /src/unbound/compat/getentropy_solaris.c:200,1
    - Dst: strcmp
      Src: /src/unbound/compat/getentropy_solaris.c:201,1
    - Dst: close
      Src: /src/unbound/compat/getentropy_solaris.c:202,1
    - Dst: read
      Src: /src/unbound/compat/getentropy_solaris.c:207,1
    - Dst: close
      Src: /src/unbound/compat/getentropy_solaris.c:212,1
    - Dst: close
      Src: /src/unbound/compat/getentropy_solaris.c:217,1
    - Dst: gotdata
      Src: /src/unbound/compat/getentropy_solaris.c:218,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 39
    argCount: 4
    argNames:
    - buf
    - len
    - path
    - devfscheck
    argTypes:
    - void*
    - size_t
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 225
    functionName: getentropy_urandom
    functionSourceFile: /src/unbound/compat/getentropy_solaris.c
    functionUses: 3
    functionsReached:
    - read
    - strcmp
    - S_ISCHR
    - open
    - close
    - fcntl
    - gotdata
    - fstat
    linkageType: ''
    returnType: int
    signature: int getentropy_urandom(void *buf, size_t len, const char *path, int
      devfscheck)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: getpagesize
      Src: /src/unbound/compat/getentropy_solaris.c:256,1
    - Dst: getpid
      Src: /src/unbound/compat/getentropy_solaris.c:270,1
    - Dst: SHA512_Init
      Src: /src/unbound/compat/getentropy_solaris.c:281,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:283,1
    - Dst: gettimeofday
      Src: /src/unbound/compat/getentropy_solaris.c:283,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:290,1
    - Dst: clock_gettime
      Src: /src/unbound/compat/getentropy_solaris.c:290,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:292,1
    - Dst: getpid
      Src: /src/unbound/compat/getentropy_solaris.c:292,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:293,1
    - Dst: getsid
      Src: /src/unbound/compat/getentropy_solaris.c:293,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:294,1
    - Dst: getppid
      Src: /src/unbound/compat/getentropy_solaris.c:294,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:295,1
    - Dst: getpgid
      Src: /src/unbound/compat/getentropy_solaris.c:295,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:296,1
    - Dst: getpriority
      Src: /src/unbound/compat/getentropy_solaris.c:296,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:297,1
    - Dst: getloadavg
      Src: /src/unbound/compat/getentropy_solaris.c:297,1
    - Dst: nanosleep
      Src: /src/unbound/compat/getentropy_solaris.c:302,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:305,1
    - Dst: sigpending
      Src: /src/unbound/compat/getentropy_solaris.c:305,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:306,1
    - Dst: sigprocmask
      Src: /src/unbound/compat/getentropy_solaris.c:306,1
    - Dst: HF
      Src: /src/unbound/compat/getentropy_solaris.c:310,1
    - Dst: HF
      Src: /src/unbound/compat/getentropy_solaris.c:312,1
    - Dst: HF
      Src: /src/unbound/compat/getentropy_solaris.c:313,1
    - Dst: HD
      Src: /src/unbound/compat/getentropy_solaris.c:315,1
    - Dst: HD
      Src: /src/unbound/compat/getentropy_solaris.c:317,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:343,1
    - Dst: mmap
      Src: /src/unbound/compat/getentropy_solaris.c:343,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:363,1
    - Dst: clock_gettime
      Src: /src/unbound/compat/getentropy_solaris.c:363,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:369,1
    - Dst: getrusage
      Src: /src/unbound/compat/getentropy_solaris.c:369,1
    - Dst: munmap
      Src: /src/unbound/compat/getentropy_solaris.c:379,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:383,1
    - Dst: stat
      Src: /src/unbound/compat/getentropy_solaris.c:383,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:384,1
    - Dst: statvfs
      Src: /src/unbound/compat/getentropy_solaris.c:384,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:386,1
    - Dst: stat
      Src: /src/unbound/compat/getentropy_solaris.c:386,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:387,1
    - Dst: statvfs
      Src: /src/unbound/compat/getentropy_solaris.c:387,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:389,1
    - Dst: fstat
      Src: /src/unbound/compat/getentropy_solaris.c:389,1
    - Dst: S_ISREG
      Src: /src/unbound/compat/getentropy_solaris.c:391,1
    - Dst: S_ISFIFO
      Src: /src/unbound/compat/getentropy_solaris.c:392,1
    - Dst: S_ISSOCK
      Src: /src/unbound/compat/getentropy_solaris.c:393,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:394,1
    - Dst: fstatvfs
      Src: /src/unbound/compat/getentropy_solaris.c:394,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:396,1
    - Dst: lseek
      Src: /src/unbound/compat/getentropy_solaris.c:396,1
    - Dst: S_ISCHR
      Src: /src/unbound/compat/getentropy_solaris.c:399,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:400,1
    - Dst: tcgetattr
      Src: /src/unbound/compat/getentropy_solaris.c:400,1
    - Dst: S_ISSOCK
      Src: /src/unbound/compat/getentropy_solaris.c:402,1
    - Dst: memset
      Src: /src/unbound/compat/getentropy_solaris.c:403,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:405,1
    - Dst: getpeername
      Src: /src/unbound/compat/getentropy_solaris.c:405,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:411,1
    - Dst: getrusage
      Src: /src/unbound/compat/getentropy_solaris.c:411,1
    - Dst: HD
      Src: /src/unbound/compat/getentropy_solaris.c:419,1
    - Dst: HX
      Src: /src/unbound/compat/getentropy_solaris.c:422,1
    - Dst: gettimeofday
      Src: /src/unbound/compat/getentropy_solaris.c:422,1
    - Dst: HD
      Src: /src/unbound/compat/getentropy_solaris.c:428,1
    - Dst: SHA512_Final
      Src: /src/unbound/compat/getentropy_solaris.c:430,1
    - Dst: memcpy
      Src: /src/unbound/compat/getentropy_solaris.c:431,1
    - Dst: min
      Src: /src/unbound/compat/getentropy_solaris.c:431,1
    - Dst: min
      Src: /src/unbound/compat/getentropy_solaris.c:432,1
    - Dst: memset
      Src: /src/unbound/compat/getentropy_solaris.c:434,1
    - Dst: gotdata
      Src: /src/unbound/compat/getentropy_solaris.c:435,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 110
    argCount: 2
    argNames:
    - buf
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 441
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 441
    functionName: getentropy_fallback
    functionSourceFile: /src/unbound/compat/getentropy_solaris.c
    functionUses: 2
    functionsReached:
    - S_ISSOCK
    - getpid
    - stat
    - memset
    - min
    - S_ISREG
    - mmap
    - getpeername
    - munmap
    - tcgetattr
    - SHA512_Final
    - clock_gettime
    - sigprocmask
    - sigpending
    - getpagesize
    - memcpy
    - getloadavg
    - getsid
    - HD
    - getrusage
    - HX
    - gettimeofday
    - SHA512_Init
    - fstat
    - statvfs
    - S_ISCHR
    - getpriority
    - HF
    - getpgid
    - lseek
    - gotdata
    - fstatvfs
    - S_ISFIFO
    - nanosleep
    - getppid
    linkageType: ''
    returnType: int
    signature: int getentropy_fallback(void *buf, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/compat/malloc.c:19,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - n
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 20
      start: 14
    functionDepth: 1
    functionLinenumber: 14
    functionLinenumberEnd: 20
    functionName: rpl_malloc_unbound
    functionSourceFile: /src/unbound/compat/malloc.c
    functionUses: 0
    functionsReached:
    - malloc
    linkageType: ''
    returnType: void
    signature: 'void *

      rpl_malloc_unbound (size_t n)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 65
    functionName: IN6_IS_ADDR_LOOPBACK
    functionSourceFile: /src/unbound/compat/fake-rfc2553.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: IN6_IS_ADDR_LOOPBACK(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 153
    functionName: getaddrinfo
    functionSourceFile: /src/unbound/compat/fake-rfc2553.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: getaddrinfo(a,b,c,d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 159
    functionName: gai_strerror
    functionSourceFile: /src/unbound/compat/fake-rfc2553.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: gai_strerror(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - a
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 163
    functionDepth: 0
    functionLinenumber: 163
    functionLinenumberEnd: 164
    functionName: freeaddrinfo
    functionSourceFile: /src/unbound/compat/fake-rfc2553.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: freeaddrinfo(a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 15
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - ','
    - d
    - ','
    - e
    - ','
    - f
    - ','
    - g
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 169
    functionName: getnameinfo
    functionSourceFile: /src/unbound/compat/fake-rfc2553.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: getnameinfo(a,b,c,d,e,f,g)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop4
      Src: /src/unbound/compat/inet_ntop.c:65,1
    - Dst: inet_ntop6
      Src: /src/unbound/compat/inet_ntop.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 4
    argNames:
    - af
    - src
    - dst
    - size
    argTypes:
    - int
    - void*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 77
    functionName: inet_ntop
    functionSourceFile: /src/unbound/compat/inet_ntop.c
    functionUses: 8
    functionsReached:
    - inet_ntop4
    - inet_ntop6
    linkageType: ''
    returnType: char
    signature: 'char *

      inet_ntop(int af, const void *src, char *dst, size_t size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/compat/inet_ntop.c:97,1
    - Dst: strlcpy
      Src: /src/unbound/compat/inet_ntop.c:102,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - src
    - dst
    - size
    argTypes:
    - u_char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 104
    functionName: inet_ntop4
    functionSourceFile: /src/unbound/compat/inet_ntop.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - snprintf
    linkageType: ''
    returnType: char
    signature: 'char *

      inet_ntop4(const u_char *src, char *dst, size_t size)'
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/compat/inet_ntop.c:134,1
    - Dst: inet_ntop4
      Src: /src/unbound/compat/inet_ntop.c:187,1
    - Dst: strlen
      Src: /src/unbound/compat/inet_ntop.c:189,1
    - Dst: snprintf
      Src: /src/unbound/compat/inet_ntop.c:192,1
    - Dst: strlcpy
      Src: /src/unbound/compat/inet_ntop.c:214,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 68
    argCount: 3
    argNames:
    - src
    - dst
    - size
    argTypes:
    - u_char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 112
    functionDepth: 3
    functionLinenumber: 112
    functionLinenumberEnd: 216
    functionName: inet_ntop6
    functionSourceFile: /src/unbound/compat/inet_ntop.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - snprintf
    - strlen
    - memset
    - inet_ntop4
    linkageType: ''
    returnType: char
    signature: 'char *

      inet_ntop6(const u_char *src, char *dst, size_t size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/services/view.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - v1
    - v2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 55
    functionName: view_cmp
    functionSourceFile: /src/unbound/services/view.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int view_cmp(const void* v1, const void* v2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/view.c:60,1
    - Dst: rbtree_init
      Src: /src/unbound/services/view.c:64,1
    - Dst: lock_rw_init
      Src: /src/unbound/services/view.c:65,1
    - Dst: lock_protect
      Src: /src/unbound/services/view.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 68
    functionName: views_create
    functionSourceFile: /src/unbound/services/view.c
    functionUses: 2
    functionsReached:
    - rbtree_init
    - calloc
    - lock_protect
    - lock_rw_init
    linkageType: ''
    returnType: struct views
    signature: "struct views * \nviews_create(void)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/services/view.c:75,1
    - Dst: local_zones_delete
      Src: /src/unbound/services/view.c:76,1
    - Dst: respip_set_delete
      Src: /src/unbound/services/view.c:77,1
    - Dst: free
      Src: /src/unbound/services/view.c:78,1
    - Dst: free
      Src: /src/unbound/services/view.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - v
    argTypes:
    - struct view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 80
    functionName: view_delete
    functionSourceFile: /src/unbound/services/view.c
    functionUses: 0
    functionsReached:
    - free
    - local_zones_delete
    - lock_rw_destroy
    - respip_set_delete
    linkageType: ''
    returnType: void
    signature: void view_delete(struct view* v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: view_delete
      Src: /src/unbound/services/view.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - n
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 82
    functionDepth: 2
    functionLinenumber: 82
    functionLinenumberEnd: 87
    functionName: delviewnode
    functionSourceFile: /src/unbound/services/view.c
    functionUses: 0
    functionsReached:
    - view_delete
    linkageType: ''
    returnType: void
    signature: void delviewnode(rbnode_type* n, void* ATTR_UNUSED(arg))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/services/view.c:94,1
    - Dst: traverse_postorder
      Src: /src/unbound/services/view.c:95,1
    - Dst: free
      Src: /src/unbound/services/view.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - v
    argTypes:
    - struct views*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 97
    functionName: views_delete
    functionSourceFile: /src/unbound/services/view.c
    functionUses: 2
    functionsReached:
    - free
    - traverse_postorder
    - lock_rw_destroy
    linkageType: ''
    returnType: void
    signature: void views_delete(struct views* v)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/view.c:103,1
    - Dst: strdup
      Src: /src/unbound/services/view.c:107,1
    - Dst: free
      Src: /src/unbound/services/view.c:108,1
    - Dst: lock_rw_init
      Src: /src/unbound/services/view.c:111,1
    - Dst: lock_protect
      Src: /src/unbound/services/view.c:112,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 114
    functionName: view_create
    functionSourceFile: /src/unbound/services/view.c
    functionUses: 0
    functionsReached:
    - lock_rw_init
    - free
    - lock_protect
    - calloc
    - strdup
    linkageType: ''
    returnType: struct view
    signature: 'struct view *

      view_create(char* name)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: view_create
      Src: /src/unbound/services/view.c:120,1
    - Dst: log_err
      Src: /src/unbound/services/view.c:122,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/view.c:127,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/view.c:128,1
    - Dst: rbtree_insert
      Src: /src/unbound/services/view.c:129,1
    - Dst: log_warn
      Src: /src/unbound/services/view.c:130,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/view.c:131,1
    - Dst: view_delete
      Src: /src/unbound/services/view.c:132,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/view.c:133,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/view.c:136,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - vs
    - name
    argTypes:
    - struct views*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 117
    functionDepth: 2
    functionLinenumber: 117
    functionLinenumberEnd: 138
    functionName: views_enter_view_name
    functionSourceFile: /src/unbound/services/view.c
    functionUses: 0
    functionsReached:
    - view_create
    - log_err
    - lock_rw_wrlock
    - lock_rw_unlock
    - view_delete
    - log_warn
    - rbtree_insert
    linkageType: ''
    returnType: struct view
    signature: 'struct view *

      views_enter_view_name(struct views* vs, char* name)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/services/view.c:149,1
    - Dst: views_enter_view_name
      Src: /src/unbound/services/view.c:154,1
    - Dst: local_zones_create
      Src: /src/unbound/services/view.c:158,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/view.c:159,1
    - Dst: memset
      Src: /src/unbound/services/view.c:162,1
    - Dst: strdup
      Src: /src/unbound/services/view.c:179,1
    - Dst: log_err
      Src: /src/unbound/services/view.c:181,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/view.c:182,1
    - Dst: strdup
      Src: /src/unbound/services/view.c:185,1
    - Dst: log_err
      Src: /src/unbound/services/view.c:187,1
    - Dst: free
      Src: /src/unbound/services/view.c:188,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/view.c:189,1
    - Dst: cfg_str2list_insert
      Src: /src/unbound/services/view.c:192,1
    - Dst: log_err
      Src: /src/unbound/services/view.c:195,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/view.c:198,1
    - Dst: local_zones_apply_cfg
      Src: /src/unbound/services/view.c:203,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/view.c:204,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/view.c:214,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 52
    argCount: 2
    argNames:
    - vs
    - cfg
    argTypes:
    - struct views*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 140
    functionDepth: 3
    functionLinenumber: 140
    functionLinenumberEnd: 217
    functionName: views_apply_cfg
    functionSourceFile: /src/unbound/services/view.c
    functionUses: 2
    functionsReached:
    - views_enter_view_name
    - log_err
    - cfg_str2list_insert
    - lock_rw_unlock
    - local_zones_create
    - free
    - local_zones_apply_cfg
    - memset
    - strdup
    linkageType: ''
    returnType: int
    signature: int views_apply_cfg(struct views* vs, struct config_file* cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/view.c:227,1
    - Dst: rbtree_search
      Src: /src/unbound/services/view.c:228,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/view.c:229,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/view.c:233,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/view.c:235,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/view.c:237,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - vs
    - name
    - write
    argTypes:
    - struct views*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 239
    functionName: views_find_view
    functionSourceFile: /src/unbound/services/view.c
    functionUses: 9
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - lock_rw_rdlock
    - rbtree_search
    linkageType: ''
    returnType: struct view
    signature: 'struct view *

      views_find_view(struct views* vs, const char* name, int write)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - v
    argTypes:
    - struct views*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 245
    functionName: views_print
    functionSourceFile: /src/unbound/services/view.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void views_print(struct views* v)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/view.c:253,1
    - Dst: view_get_mem
      Src: /src/unbound/services/view.c:255,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/view.c:257,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - vs
    argTypes:
    - struct views*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 247
    functionDepth: 1
    functionLinenumber: 247
    functionLinenumberEnd: 259
    functionName: views_get_mem
    functionSourceFile: /src/unbound/services/view.c
    functionUses: 1
    functionsReached:
    - lock_rw_unlock
    - lock_rw_rdlock
    - view_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t views_get_mem(struct views* vs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: view_get_mem
      Src: /src/unbound/services/view.c:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - vtree
    argTypes:
    - vs
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 254
    functionDepth: 1
    functionLinenumber: 254
    functionLinenumberEnd: 256
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/view.c
    functionUses: 0
    functionsReached:
    - view_get_mem
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(v, struct view*, &vs->vtree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/view.c:264,1
    - Dst: getmem_str
      Src: /src/unbound/services/view.c:265,1
    - Dst: local_zones_get_mem
      Src: /src/unbound/services/view.c:266,1
    - Dst: respip_set_get_mem
      Src: /src/unbound/services/view.c:267,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/view.c:268,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - v
    argTypes:
    - struct view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 270
    functionName: view_get_mem
    functionSourceFile: /src/unbound/services/view.c
    functionUses: 2
    functionsReached:
    - respip_set_get_mem
    - lock_rw_unlock
    - local_zones_get_mem
    - getmem_str
    - lock_rw_rdlock
    linkageType: ''
    returnType: size_t
    signature: size_t view_get_mem(struct view* v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - vs
    - data
    argTypes:
    - struct views*
    - struct views*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 272
    functionDepth: 0
    functionLinenumber: 272
    functionLinenumberEnd: 280
    functionName: views_swap_tree
    functionSourceFile: /src/unbound/services/view.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void views_swap_tree(struct views* vs, struct views* data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct outbound_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 51
      start: 47
    functionDepth: 0
    functionLinenumber: 47
    functionLinenumberEnd: 51
    functionName: outbound_list_init
    functionSourceFile: /src/unbound/services/outbound_list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void outbound_list_init(struct outbound_list* list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: outnet_serviced_query_stop
      Src: /src/unbound/services/outbound_list.c:60,1
    - Dst: outbound_list_init
      Src: /src/unbound/services/outbound_list.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct outbound_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 65
    functionName: outbound_list_clear
    functionSourceFile: /src/unbound/services/outbound_list.c
    functionUses: 0
    functionsReached:
    - outnet_serviced_query_stop
    - outbound_list_init
    linkageType: ''
    returnType: void
    signature: void outbound_list_clear(struct outbound_list* list)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - list
    - e
    argTypes:
    - struct outbound_list*
    - struct outbound_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 75
    functionName: outbound_list_insert
    functionSourceFile: /src/unbound/services/outbound_list.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void outbound_list_insert(struct outbound_list* list, struct outbound_entry*
      e)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: outnet_serviced_query_stop
      Src: /src/unbound/services/outbound_list.c:82,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - list
    - e
    argTypes:
    - struct outbound_list*
    - struct outbound_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 89
    functionName: outbound_list_remove
    functionSourceFile: /src/unbound/services/outbound_list.c
    functionUses: 0
    functionsReached:
    - outnet_serviced_query_stop
    linkageType: ''
    returnType: void
    signature: void outbound_list_remove(struct outbound_list* list, struct outbound_entry*
      e)
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 1
    argNames:
    - a
    argTypes:
    - enum rpz_action
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 83
    functionName: rpz_action_to_string
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      rpz_action_to_string(enum rpz_action a)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/services/rpz.c:89,1
    - Dst: strcmp
      Src: /src/unbound/services/rpz.c:90,1
    - Dst: strcmp
      Src: /src/unbound/services/rpz.c:91,1
    - Dst: strcmp
      Src: /src/unbound/services/rpz.c:92,1
    - Dst: strcmp
      Src: /src/unbound/services/rpz.c:93,1
    - Dst: strcmp
      Src: /src/unbound/services/rpz.c:94,1
    - Dst: strcmp
      Src: /src/unbound/services/rpz.c:95,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - a
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 97
    functionName: rpz_config_to_action
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: enum rpz_action
    signature: enum rpz_action rpz_config_to_action(char* a)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - r
    argTypes:
    - enum rpz_trigger
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 112
    functionName: rpz_trigger_to_string
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      rpz_trigger_to_string(enum rpz_trigger r)'
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - dname
    - maxdnamelen
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 143
    functionName: get_tld_label
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint8_t
    signature: 'uint8_t *

      get_tld_label(uint8_t* dname, size_t maxdnamelen)'
  - BBCount: 12
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 1
    argNames:
    - rr_type
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 169
    functionName: rpz_type_ignored
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rpz_type_ignored(uint16_t rr_type)
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/rpz.c:205,1
    - Dst: dname_valid
      Src: /src/unbound/services/rpz.c:210,1
    - Dst: dname_count_labels
      Src: /src/unbound/services/rpz.c:213,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/services/rpz.c:217,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/services/rpz.c:219,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/services/rpz.c:222,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/services/rpz.c:224,1
    - Dst: get_tld_label
      Src: /src/unbound/services/rpz.c:230,1
    - Dst: dname_lab_startswith
      Src: /src/unbound/services/rpz.c:231,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 3
    argNames:
    - rr_type
    - rdatawl
    - rdatalen
    argTypes:
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 236
    functionName: rpz_rr_to_action
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    - dname_lab_startswith
    - log_assert
    - dname_valid
    - get_tld_label
    - dname_count_labels
    linkageType: ''
    returnType: enum rpz_action
    signature: enum rpz_action rpz_rr_to_action(uint16_t rr_type, uint8_t* rdatawl,
      size_t rdatalen)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - a
    argTypes:
    - enum rpz_action
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 256
    functionName: rpz_action_to_localzone_type
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum localzone_type
    signature: enum localzone_type rpz_action_to_localzone_type(enum rpz_action a)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 1
    argNames:
    - a
    argTypes:
    - enum rpz_action
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 258
    functionDepth: 0
    functionLinenumber: 258
    functionLinenumberEnd: 276
    functionName: rpz_action_to_respip_action
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum respip_action
    signature: enum respip_action rpz_action_to_respip_action(enum rpz_action a)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - lzt
    argTypes:
    - enum localzone_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 278
    functionDepth: 0
    functionLinenumber: 278
    functionLinenumberEnd: 293
    functionName: localzone_type_to_rpz_action
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum rpz_action
    signature: enum rpz_action localzone_type_to_rpz_action(enum localzone_type lzt)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - a
    argTypes:
    - enum respip_action
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 295
    functionDepth: 0
    functionLinenumber: 295
    functionLinenumberEnd: 310
    functionName: respip_action_to_rpz_action
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: enum rpz_action
    signature: enum rpz_action respip_action_to_rpz_action(enum respip_action a)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dname_valid
      Src: /src/unbound/services/rpz.c:324,1
    - Dst: get_tld_label
      Src: /src/unbound/services/rpz.c:327,1
    - Dst: dname_lab_startswith
      Src: /src/unbound/services/rpz.c:328,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/services/rpz.c:331,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/services/rpz.c:334,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/services/rpz.c:336,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/services/rpz.c:338,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - dname
    - dname_len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 342
    functionName: rpz_dname_to_trigger
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - dname_lab_startswith
    - get_tld_label
    - dname_valid
    - dname_subdomain_c
    linkageType: ''
    returnType: enum rpz_trigger
    signature: enum rpz_trigger rpz_dname_to_trigger(uint8_t* dname, size_t dname_len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/rpz.c:347,1
    - Dst: regional_create
      Src: /src/unbound/services/rpz.c:351,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:353,1
    - Dst: addr_tree_init
      Src: /src/unbound/services/rpz.c:356,1
    - Dst: lock_rw_init
      Src: /src/unbound/services/rpz.c:357,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 359
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 359
    functionName: rpz_clientip_synthesized_set_create
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - regional_create
    - lock_rw_init
    - addr_tree_init
    - free
    - calloc
    linkageType: ''
    returnType: struct clientip_synthesized_rrset
    signature: 'struct clientip_synthesized_rrset *

      rpz_clientip_synthesized_set_create(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/services/rpz.c:365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - n
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 369
    functionName: rpz_clientip_synthesized_rr_delete
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - lock_rw_destroy
    linkageType: ''
    returnType: void
    signature: void rpz_clientip_synthesized_rr_delete(rbnode_type* n, void* ATTR_UNUSED(arg))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/services/rpz.c:377,1
    - Dst: traverse_postorder
      Src: /src/unbound/services/rpz.c:378,1
    - Dst: regional_destroy
      Src: /src/unbound/services/rpz.c:379,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:380,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct clientip_synthesized_rrset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 371
    functionDepth: 1
    functionLinenumber: 371
    functionLinenumberEnd: 381
    functionName: rpz_clientip_synthesized_set_delete
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - free
    - traverse_postorder
    - lock_rw_destroy
    - regional_destroy
    linkageType: ''
    returnType: void
    signature: void rpz_clientip_synthesized_set_delete(struct clientip_synthesized_rrset*
      set)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: local_zones_delete
      Src: /src/unbound/services/rpz.c:388,1
    - Dst: local_zones_delete
      Src: /src/unbound/services/rpz.c:389,1
    - Dst: respip_set_delete
      Src: /src/unbound/services/rpz.c:390,1
    - Dst: rpz_clientip_synthesized_set_delete
      Src: /src/unbound/services/rpz.c:391,1
    - Dst: rpz_clientip_synthesized_set_delete
      Src: /src/unbound/services/rpz.c:392,1
    - Dst: regional_destroy
      Src: /src/unbound/services/rpz.c:393,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:394,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:395,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:396,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct rpz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 397
      start: 383
    functionDepth: 2
    functionLinenumber: 383
    functionLinenumberEnd: 397
    functionName: rpz_delete
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - respip_set_delete
    - rpz_clientip_synthesized_set_delete
    - local_zones_delete
    - free
    - regional_destroy
    linkageType: ''
    returnType: void
    signature: void rpz_delete(struct rpz* r)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: local_zones_delete
      Src: /src/unbound/services/rpz.c:403,1
    - Dst: local_zones_delete
      Src: /src/unbound/services/rpz.c:405,1
    - Dst: respip_set_delete
      Src: /src/unbound/services/rpz.c:407,1
    - Dst: rpz_clientip_synthesized_set_delete
      Src: /src/unbound/services/rpz.c:409,1
    - Dst: rpz_clientip_synthesized_set_delete
      Src: /src/unbound/services/rpz.c:411,1
    - Dst: local_zones_create
      Src: /src/unbound/services/rpz.c:413,1
    - Dst: local_zones_create
      Src: /src/unbound/services/rpz.c:416,1
    - Dst: respip_set_create
      Src: /src/unbound/services/rpz.c:420,1
    - Dst: rpz_clientip_synthesized_set_create
      Src: /src/unbound/services/rpz.c:423,1
    - Dst: rpz_clientip_synthesized_set_create
      Src: /src/unbound/services/rpz.c:426,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct rpz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 399
    functionDepth: 2
    functionLinenumber: 399
    functionLinenumberEnd: 430
    functionName: rpz_clear
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - respip_set_delete
    - rpz_clientip_synthesized_set_delete
    - respip_set_create
    - local_zones_delete
    - local_zones_create
    - rpz_clientip_synthesized_set_create
    linkageType: ''
    returnType: int
    signature: int rpz_clear(struct rpz* r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/rpz.c:435,1
    - Dst: addr_tree_init_parents
      Src: /src/unbound/services/rpz.c:436,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:437,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/rpz.c:439,1
    - Dst: addr_tree_init_parents
      Src: /src/unbound/services/rpz.c:440,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:441,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/rpz.c:443,1
    - Dst: addr_tree_init_parents
      Src: /src/unbound/services/rpz.c:444,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct rpz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 432
    functionDepth: 1
    functionLinenumber: 432
    functionLinenumberEnd: 446
    functionName: rpz_finish_config
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - addr_tree_init_parents
    linkageType: ''
    returnType: void
    signature: void rpz_finish_config(struct rpz* r)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/unbound/services/rpz.c:454,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/rpz.c:455,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:458,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/rpz.c:462,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:464,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/rpz.c:471,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/rpz.c:472,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/rpz.c:473,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:475,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/rpz.c:480,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:482,1
    - Dst: memmove
      Src: /src/unbound/services/rpz.c:485,1
    - Dst: memmove
      Src: /src/unbound/services/rpz.c:486,1
    - Dst: htons
      Src: /src/unbound/services/rpz.c:489,1
    - Dst: htons
      Src: /src/unbound/services/rpz.c:490,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 35
    argCount: 3
    argNames:
    - region
    - ct
    - ctlen
    argTypes:
    - struct regional*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 492
    functionName: new_cname_override
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - htons
    - log_err
    - memmove
    - regional_alloc_zero
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: 'struct ub_packed_rrset_key *

      new_cname_override(struct regional* region, uint8_t* ct, size_t ctlen)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_free_all
      Src: /src/unbound/services/rpz.c:500,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct rpz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 503
    functionName: delete_cname_override
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - regional_free_all
    linkageType: ''
    returnType: void
    signature: void delete_cname_override(struct rpz* r)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memdup
      Src: /src/unbound/services/rpz.c:511,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:513,1
    - Dst: rpz_config_to_action
      Src: /src/unbound/services/rpz.c:519,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:529,1
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/services/rpz.c:534,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:535,1
    - Dst: new_cname_override
      Src: /src/unbound/services/rpz.c:539,1
    - Dst: strdup
      Src: /src/unbound/services/rpz.c:547,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:548,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 2
    argNames:
    - r
    - p
    argTypes:
    - struct rpz*
    - struct config_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 506
    functionDepth: 3
    functionLinenumber: 506
    functionLinenumberEnd: 553
    functionName: rpz_apply_cfg_elements
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - log_err
    - rpz_config_to_action
    - sldns_str2wire_dname_buf
    - new_cname_override
    - memdup
    - strdup
    linkageType: ''
    returnType: int
    signature: int rpz_apply_cfg_elements(struct rpz* r, struct config_auth* p)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/rpz.c:558,1
    - Dst: regional_create_custom
      Src: /src/unbound/services/rpz.c:562,1
    - Dst: local_zones_create
      Src: /src/unbound/services/rpz.c:567,1
    - Dst: local_zones_create
      Src: /src/unbound/services/rpz.c:571,1
    - Dst: respip_set_create
      Src: /src/unbound/services/rpz.c:576,1
    - Dst: rpz_clientip_synthesized_set_create
      Src: /src/unbound/services/rpz.c:580,1
    - Dst: rpz_clientip_synthesized_set_create
      Src: /src/unbound/services/rpz.c:585,1
    - Dst: rpz_apply_cfg_elements
      Src: /src/unbound/services/rpz.c:590,1
    - Dst: local_zones_delete
      Src: /src/unbound/services/rpz.c:596,1
    - Dst: local_zones_delete
      Src: /src/unbound/services/rpz.c:598,1
    - Dst: respip_set_delete
      Src: /src/unbound/services/rpz.c:600,1
    - Dst: rpz_clientip_synthesized_set_delete
      Src: /src/unbound/services/rpz.c:602,1
    - Dst: rpz_clientip_synthesized_set_delete
      Src: /src/unbound/services/rpz.c:604,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:606,1
    - Dst: regional_destroy
      Src: /src/unbound/services/rpz.c:608,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:609,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 56
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct config_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 555
    functionDepth: 4
    functionLinenumber: 555
    functionLinenumberEnd: 612
    functionName: rpz_create
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - respip_set_delete
    - rpz_clientip_synthesized_set_delete
    - respip_set_create
    - local_zones_delete
    - regional_create_custom
    - local_zones_create
    - free
    - calloc
    - rpz_clientip_synthesized_set_create
    - rpz_apply_cfg_elements
    - regional_destroy
    linkageType: ''
    returnType: struct rpz
    signature: 'struct rpz *

      rpz_create(struct config_auth* p)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/services/rpz.c:622,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:629,1
    - Dst: delete_cname_override
      Src: /src/unbound/services/rpz.c:633,1
    - Dst: rpz_apply_cfg_elements
      Src: /src/unbound/services/rpz.c:635,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - r
    - p
    argTypes:
    - struct rpz*
    - struct config_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 614
    functionDepth: 4
    functionLinenumber: 614
    functionLinenumberEnd: 638
    functionName: rpz_config
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - free
    - rpz_apply_cfg_elements
    - delete_cname_override
    linkageType: ''
    returnType: int
    signature: int rpz_config(struct rpz* r, struct config_auth* p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/services/rpz.c:654,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 5
    argNames:
    - dname
    - dnamelen
    - originlen
    - newdname
    - maxnewdnamelen
    argTypes:
    - uint8_t*
    - size_t
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 644
    functionDepth: 1
    functionLinenumber: 644
    functionLinenumberEnd: 657
    functionName: strip_dname_origin
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - memmove
    linkageType: ''
    returnType: size_t
    signature: "size_t strip_dname_origin(uint8_t* dname, size_t dnamelen, size_t
      originlen,\n\tuint8_t* newdname, size_t maxnewdnamelen)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/services/rpz.c:666,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:679,1
    - Dst: dname_str
      Src: /src/unbound/services/rpz.c:682,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:683,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/services/rpz.c:684,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:685,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/rpz.c:689,1
    - Dst: local_zones_find
      Src: /src/unbound/services/rpz.c:691,1
    - Dst: sldns_wire2str_rr
      Src: /src/unbound/services/rpz.c:693,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:695,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:696,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:697,1
    - Dst: strlen
      Src: /src/unbound/services/rpz.c:701,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:702,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:703,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:704,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:705,1
    - Dst: rpz_action_to_localzone_type
      Src: /src/unbound/services/rpz.c:709,1
    - Dst: local_zones_add_zone
      Src: /src/unbound/services/rpz.c:710,1
    - Dst: log_warn
      Src: /src/unbound/services/rpz.c:713,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:714,1
    - Dst: sldns_wire2str_rr
      Src: /src/unbound/services/rpz.c:721,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:723,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:725,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:726,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/rpz.c:729,1
    - Dst: local_zone_enter_rr
      Src: /src/unbound/services/rpz.c:730,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:732,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:734,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:735,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:736,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:737,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:740,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:741,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:744,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:746,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 63
    argCount: 11
    argNames:
    - lz
    - dname
    - dnamelen
    - a
    - rrtype
    - rrclass
    - ttl
    - rdata
    - rdata_len
    - rr
    - rr_len
    argTypes:
    - struct local_zones*
    - uint8_t*
    - size_t
    - enum rpz_action
    - uint16_t
    - uint16_t
    - uint32_t
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 747
      start: 659
    functionDepth: 2
    functionLinenumber: 659
    functionLinenumberEnd: 747
    functionName: rpz_insert_local_zones_trigger
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - log_err
    - verbose
    - lock_rw_wrlock
    - lock_rw_unlock
    - dname_str
    - local_zones_add_zone
    - free
    - rpz_action_to_string
    - sldns_wire2str_rr
    - local_zone_enter_rr
    - local_zones_find
    - strlen
    - log_warn
    - rpz_action_to_localzone_type
    - dname_count_labels
    linkageType: ''
    returnType: void
    signature: "void rpz_insert_local_zones_trigger(struct local_zones* lz, uint8_t*
      dname,\n\tsize_t dnamelen, enum rpz_action a, uint16_t rrtype, uint16_t rrclass,\n\tuint32_t
      ttl, uint8_t* rdata, size_t rdata_len, uint8_t* rr, size_t rr_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_str
      Src: /src/unbound/services/rpz.c:754,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:755,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - msg
    - dname
    - dname_len
    argTypes:
    - char*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 749
    functionDepth: 1
    functionLinenumber: 749
    functionLinenumberEnd: 756
    functionName: rpz_log_dname
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - verbose
    - dname_str
    linkageType: ''
    returnType: void
    signature: void rpz_log_dname(char const* msg, uint8_t* dname, size_t dname_len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:764,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:765,1
    - Dst: rpz_insert_local_zones_trigger
      Src: /src/unbound/services/rpz.c:769,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 11
    argNames:
    - r
    - dname
    - dnamelen
    - a
    - rrtype
    - rrclass
    - ttl
    - rdata
    - rdata_len
    - rr
    - rr_len
    argTypes:
    - struct rpz*
    - uint8_t*
    - size_t
    - enum rpz_action
    - uint16_t
    - uint16_t
    - uint32_t
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 758
    functionDepth: 3
    functionLinenumber: 758
    functionLinenumberEnd: 771
    functionName: rpz_insert_qname_trigger
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - free
    - verbose
    - rpz_insert_local_zones_trigger
    linkageType: ''
    returnType: void
    signature: "void rpz_insert_qname_trigger(struct rpz* r, uint8_t* dname, size_t
      dnamelen,\n\tenum rpz_action a, uint16_t rrtype, uint16_t rrclass, uint32_t
      ttl,\n\tuint8_t* rdata, size_t rdata_len, uint8_t* rr, size_t rr_len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_tld_label
      Src: /src/unbound/services/rpz.c:777,1
    - Dst: memdup
      Src: /src/unbound/services/rpz.c:785,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:788,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/services/rpz.c:798,1
    - Dst: memdup
      Src: /src/unbound/services/rpz.c:799,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:803,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 4
    argNames:
    - dname
    - maxdnamelen
    - stripdname
    - stripdnamelen
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 807
      start: 773
    functionDepth: 1
    functionLinenumber: 773
    functionLinenumberEnd: 807
    functionName: rpz_strip_nsdname_suffix
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - get_tld_label
    - dname_count_size_labels
    - memdup
    - log_err
    linkageType: ''
    returnType: int
    signature: "int rpz_strip_nsdname_suffix(uint8_t* dname, size_t maxdnamelen,\n\tuint8_t**
      stripdname, size_t* stripdnamelen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rpz_strip_nsdname_suffix
      Src: /src/unbound/services/rpz.c:817,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:821,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:822,1
    - Dst: rpz_insert_local_zones_trigger
      Src: /src/unbound/services/rpz.c:827,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 11
    argNames:
    - r
    - dname
    - dnamelen
    - a
    - rrtype
    - rrclass
    - ttl
    - rdata
    - rdata_len
    - rr
    - rr_len
    argTypes:
    - struct rpz*
    - uint8_t*
    - size_t
    - enum rpz_action
    - uint16_t
    - uint16_t
    - uint32_t
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 809
    functionDepth: 3
    functionLinenumber: 809
    functionLinenumberEnd: 830
    functionName: rpz_insert_nsdname_trigger
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - free
    - verbose
    - rpz_insert_local_zones_trigger
    - rpz_strip_nsdname_suffix
    linkageType: ''
    returnType: void
    signature: "void rpz_insert_nsdname_trigger(struct rpz* r, uint8_t* dname, size_t
      dnamelen,\n\tenum rpz_action a, uint16_t rrtype, uint16_t rrclass, uint32_t
      ttl,\n\tuint8_t* rdata, size_t rdata_len, uint8_t* rr, size_t rr_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rpz_action_to_respip_action
      Src: /src/unbound/services/rpz.c:840,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/rpz.c:842,1
    - Dst: sldns_wire2str_rr
      Src: /src/unbound/services/rpz.c:843,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:845,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:846,1
    - Dst: respip_sockaddr_find_or_create
      Src: /src/unbound/services/rpz.c:850,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:852,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:853,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/rpz.c:857,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:858,1
    - Dst: respip_enter_rr
      Src: /src/unbound/services/rpz.c:863,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:867,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:868,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 12
    argNames:
    - set
    - addr
    - addrlen
    - net
    - a
    - rrtype
    - rrclass
    - ttl
    - rdata
    - rdata_len
    - rr
    - rr_len
    argTypes:
    - struct respip_set*
    - struct sockaddr_storage*
    - socklen_t
    - int
    - enum rpz_action
    - uint16_t
    - uint16_t
    - uint32_t
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 832
    functionDepth: 2
    functionLinenumber: 832
    functionLinenumberEnd: 870
    functionName: rpz_insert_ipaddr_based_trigger
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - log_err
    - lock_rw_wrlock
    - lock_rw_unlock
    - respip_enter_rr
    - free
    - sldns_wire2str_rr
    - respip_sockaddr_find_or_create
    - rpz_action_to_respip_action
    linkageType: ''
    returnType: int
    signature: "int rpz_insert_ipaddr_based_trigger(struct respip_set* set, struct
      sockaddr_storage* addr,\n\tsocklen_t addrlen, int net, enum rpz_action a, uint16_t
      rrtype,\n\tuint16_t rrclass, uint32_t ttl, uint8_t* rdata, size_t rdata_len,\n\tuint8_t*
      rr, size_t rr_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: addr_tree_find
      Src: /src/unbound/services/rpz.c:878,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/rpz.c:884,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:886,1
    - Dst: lock_rw_init
      Src: /src/unbound/services/rpz.c:890,1
    - Dst: addr_tree_insert
      Src: /src/unbound/services/rpz.c:892,1
    - Dst: log_warn
      Src: /src/unbound/services/rpz.c:895,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - set
    - addr
    - addrlen
    - net
    argTypes:
    - struct clientip_synthesized_rrset*
    - struct sockaddr_storage*
    - socklen_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 872
    functionDepth: 1
    functionLinenumber: 872
    functionLinenumberEnd: 902
    functionName: rpz_clientip_ensure_entry
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - log_err
    - addr_tree_find
    - lock_rw_init
    - addr_tree_insert
    - log_warn
    linkageType: ''
    returnType: struct clientip_synthesized_rr
    signature: "struct clientip_synthesized_rr *\nrpz_clientip_ensure_entry(struct
      clientip_synthesized_rrset* set,\n\tstruct sockaddr_storage* addr, socklen_t
      addrlen, int net)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_rr
      Src: /src/unbound/services/rpz.c:906,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:908,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:911,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:912,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - msg
    - rr
    - rr_len
    argTypes:
    - char*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 904
    functionDepth: 2
    functionLinenumber: 904
    functionLinenumberEnd: 913
    functionName: rpz_report_rrset_error
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - free
    - sldns_wire2str_rr
    - log_err
    linkageType: ''
    returnType: void
    signature: void rpz_report_rrset_error(const char* msg, uint8_t* rr, size_t rr_len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/rpz.c:922,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:924,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/rpz.c:928,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:930,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/rpz.c:934,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:936,1
    - Dst: htons
      Src: /src/unbound/services/rpz.c:942,1
    - Dst: htons
      Src: /src/unbound/services/rpz.c:943,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/rpz.c:944,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:946,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 3
    argNames:
    - region
    - rrtype
    - rrclass
    argTypes:
    - struct regional*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 951
      start: 916
    functionDepth: 1
    functionLinenumber: 916
    functionLinenumberEnd: 951
    functionName: rpz_clientip_new_rrset
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - log_err
    - htons
    linkageType: ''
    returnType: struct local_rrset
    signature: "struct local_rrset *\nrpz_clientip_new_rrset(struct regional* region,
      uint16_t rrtype,\n\tuint16_t rrclass)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:960,1
    - Dst: rpz_clientip_new_rrset
      Src: /src/unbound/services/rpz.c:965,1
    - Dst: rrset_insert_rr
      Src: /src/unbound/services/rpz.c:970,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 7
    argNames:
    - region
    - raddr
    - rrtype
    - rrclass
    - ttl
    - rdata
    - rdata_len
    argTypes:
    - struct regional*
    - struct clientip_synthesized_rr*
    - uint16_t
    - uint16_t
    - time_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 977
      start: 953
    functionDepth: 2
    functionLinenumber: 953
    functionLinenumberEnd: 977
    functionName: rpz_clientip_enter_rr
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - log_err
    - rrset_insert_rr
    - rpz_clientip_new_rrset
    linkageType: ''
    returnType: int
    signature: "int rpz_clientip_enter_rr(struct regional* region, struct clientip_synthesized_rr*
      raddr,\n\tuint16_t rrtype, uint16_t rrclass, time_t ttl, uint8_t* rdata,\n\tsize_t
      rdata_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/rpz.c:987,1
    - Dst: rpz_clientip_ensure_entry
      Src: /src/unbound/services/rpz.c:989,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:991,1
    - Dst: rpz_report_rrset_error
      Src: /src/unbound/services/rpz.c:992,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/rpz.c:996,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:997,1
    - Dst: rpz_clientip_enter_rr
      Src: /src/unbound/services/rpz.c:1000,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:1002,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1003,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1010,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 12
    argNames:
    - set
    - addr
    - addrlen
    - net
    - a
    - rrtype
    - rrclass
    - ttl
    - rdata
    - rdata_len
    - rr
    - rr_len
    argTypes:
    - struct clientip_synthesized_rrset*
    - struct sockaddr_storage*
    - socklen_t
    - int
    - enum rpz_action
    - uint16_t
    - uint16_t
    - uint32_t
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 979
    functionDepth: 3
    functionLinenumber: 979
    functionLinenumberEnd: 1013
    functionName: rpz_clientip_insert_trigger_rr
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - rpz_clientip_ensure_entry
    - lock_rw_wrlock
    - lock_rw_unlock
    - rpz_clientip_enter_rr
    - verbose
    - rpz_report_rrset_error
    linkageType: ''
    returnType: int
    signature: "int rpz_clientip_insert_trigger_rr(struct clientip_synthesized_rrset*
      set, struct sockaddr_storage* addr,\n\tsocklen_t addrlen, int net, enum rpz_action
      a, uint16_t rrtype,\n\tuint16_t rrclass, uint32_t ttl, uint8_t* rdata, size_t
      rdata_len,\n\tuint8_t* rr, size_t rr_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: netblockdnametoaddr
      Src: /src/unbound/services/rpz.c:1028,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:1029,1
    - Dst: rpz_clientip_insert_trigger_rr
      Src: /src/unbound/services/rpz.c:1033,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 11
    argNames:
    - r
    - dname
    - dnamelen
    - a
    - rrtype
    - rrclass
    - ttl
    - rdata
    - rdata_len
    - rr
    - rr_len
    argTypes:
    - struct rpz*
    - uint8_t*
    - size_t
    - enum rpz_action
    - uint16_t
    - uint16_t
    - uint32_t
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1015
    functionDepth: 4
    functionLinenumber: 1015
    functionLinenumberEnd: 1035
    functionName: rpz_insert_clientip_trigger
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - netblockdnametoaddr
    - verbose
    - rpz_clientip_insert_trigger_rr
    linkageType: ''
    returnType: int
    signature: "int rpz_insert_clientip_trigger(struct rpz* r, uint8_t* dname, size_t
      dnamelen,\n\tenum rpz_action a, uint16_t rrtype, uint16_t rrclass, uint32_t
      ttl,\n\tuint8_t* rdata, size_t rdata_len, uint8_t* rr, size_t rr_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: netblockdnametoaddr
      Src: /src/unbound/services/rpz.c:1050,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:1051,1
    - Dst: rpz_clientip_insert_trigger_rr
      Src: /src/unbound/services/rpz.c:1055,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 11
    argNames:
    - r
    - dname
    - dnamelen
    - a
    - rrtype
    - rrclass
    - ttl
    - rdata
    - rdata_len
    - rr
    - rr_len
    argTypes:
    - struct rpz*
    - uint8_t*
    - size_t
    - enum rpz_action
    - uint16_t
    - uint16_t
    - uint32_t
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1037
    functionDepth: 4
    functionLinenumber: 1037
    functionLinenumberEnd: 1057
    functionName: rpz_insert_nsip_trigger
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - netblockdnametoaddr
    - verbose
    - rpz_clientip_insert_trigger_rr
    linkageType: ''
    returnType: int
    signature: "int rpz_insert_nsip_trigger(struct rpz* r, uint8_t* dname, size_t
      dnamelen,\n\tenum rpz_action a, uint16_t rrtype, uint16_t rrclass, uint32_t
      ttl,\n\tuint8_t* rdata, size_t rdata_len, uint8_t* rr, size_t rr_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: netblockdnametoaddr
      Src: /src/unbound/services/rpz.c:1073,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:1074,1
    - Dst: rpz_action_to_respip_action
      Src: /src/unbound/services/rpz.c:1079,1
    - Dst: dname_str
      Src: /src/unbound/services/rpz.c:1081,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:1082,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/services/rpz.c:1083,1
    - Dst: rpz_insert_ipaddr_based_trigger
      Src: /src/unbound/services/rpz.c:1087,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 11
    argNames:
    - r
    - dname
    - dnamelen
    - a
    - rrtype
    - rrclass
    - ttl
    - rdata
    - rdata_len
    - rr
    - rr_len
    argTypes:
    - struct rpz*
    - uint8_t*
    - size_t
    - enum rpz_action
    - uint16_t
    - uint16_t
    - uint32_t
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1060
    functionDepth: 3
    functionLinenumber: 1060
    functionLinenumberEnd: 1089
    functionName: rpz_insert_response_ip_trigger
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - netblockdnametoaddr
    - verbose
    - rpz_insert_ipaddr_based_trigger
    - dname_str
    - rpz_action_to_string
    - rpz_action_to_respip_action
    linkageType: ''
    returnType: int
    signature: "int rpz_insert_response_ip_trigger(struct rpz* r, uint8_t* dname,
      size_t dnamelen,\n\tenum rpz_action a, uint16_t rrtype, uint16_t rrclass, uint32_t
      ttl,\n\tuint8_t* rdata, size_t rdata_len, uint8_t* rr, size_t rr_len)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: rpz_type_ignored
      Src: /src/unbound/services/rpz.c:1102,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/services/rpz.c:1106,1
    - Dst: sldns_wire2str_dname
      Src: /src/unbound/services/rpz.c:1107,1
    - Dst: sldns_wire2str_dname
      Src: /src/unbound/services/rpz.c:1108,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:1110,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:1114,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:1117,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:1118,1
    - Dst: log_assert
      Src: /src/unbound/services/rpz.c:1122,1
    - Dst: calloc
      Src: /src/unbound/services/rpz.c:1123,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:1124,1
    - Dst: rpz_rr_to_action
      Src: /src/unbound/services/rpz.c:1128,1
    - Dst: strip_dname_origin
      Src: /src/unbound/services/rpz.c:1129,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:1131,1
    - Dst: rpz_dname_to_trigger
      Src: /src/unbound/services/rpz.c:1134,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:1136,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:1137,1
    - Dst: rpz_insert_qname_trigger
      Src: /src/unbound/services/rpz.c:1142,1
    - Dst: rpz_insert_response_ip_trigger
      Src: /src/unbound/services/rpz.c:1146,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:1149,1
    - Dst: rpz_insert_clientip_trigger
      Src: /src/unbound/services/rpz.c:1151,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:1154,1
    - Dst: rpz_insert_nsip_trigger
      Src: /src/unbound/services/rpz.c:1156,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:1159,1
    - Dst: rpz_insert_nsdname_trigger
      Src: /src/unbound/services/rpz.c:1161,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:1164,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:1166,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:1167,1
    - Dst: rpz_trigger_to_string
      Src: /src/unbound/services/rpz.c:1168,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 53
    argCount: 12
    argNames:
    - r
    - azname
    - aznamelen
    - dname
    - dnamelen
    - rr_type
    - rr_class
    - rr_ttl
    - rdatawl
    - rdatalen
    - rr
    - rr_len
    argTypes:
    - struct rpz*
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - uint32_t
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1091
    functionDepth: 5
    functionLinenumber: 1091
    functionLinenumberEnd: 1171
    functionName: rpz_insert_rr
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    - log_err
    - rpz_rr_to_action
    - rpz_insert_qname_trigger
    - rpz_dname_to_trigger
    - rpz_insert_clientip_trigger
    - rpz_insert_nsip_trigger
    - rpz_insert_nsdname_trigger
    - verbose
    - rpz_insert_response_ip_trigger
    - free
    - rpz_trigger_to_string
    - sldns_wire2str_dname
    - log_assert
    - calloc
    - strip_dname_origin
    - rpz_type_ignored
    linkageType: ''
    returnType: int
    signature: "int rpz_insert_rr(struct rpz* r, uint8_t* azname, size_t aznamelen,
      uint8_t* dname,\n\tsize_t dnamelen, uint16_t rr_type, uint16_t rr_class, uint32_t
      rr_ttl,\n\tuint8_t* rdatawl, size_t rdatalen, uint8_t* rr, size_t rr_len)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/rpz.c:1197,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/rpz.c:1199,1
    - Dst: local_zones_find_le
      Src: /src/unbound/services/rpz.c:1201,1
    - Dst: dname_count_labels
      Src: /src/unbound/services/rpz.c:1202,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1206,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/rpz.c:1211,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/rpz.c:1213,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1216,1
    - Dst: dname_get_shared_topdomain
      Src: /src/unbound/services/rpz.c:1226,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1228,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1230,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/services/rpz.c:1234,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1236,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1238,1
    - Dst: memmove
      Src: /src/unbound/services/rpz.c:1244,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1245,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/rpz.c:1249,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/rpz.c:1251,1
    - Dst: local_zones_find_le
      Src: /src/unbound/services/rpz.c:1254,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1257,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/rpz.c:1261,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/rpz.c:1263,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1266,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 64
    argCount: 7
    argNames:
    - zones
    - qname
    - qname_len
    - qclass
    - only_exact
    - wr
    - zones_keep_lock
    argTypes:
    - struct local_zones*
    - uint8_t*
    - size_t
    - uint16_t
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1185
    functionDepth: 1
    functionLinenumber: 1185
    functionLinenumberEnd: 1269
    functionName: rpz_find_zone
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - memmove
    - lock_rw_wrlock
    - lock_rw_unlock
    - dname_count_size_labels
    - local_zones_find_le
    - dname_get_shared_topdomain
    - lock_rw_rdlock
    - dname_count_labels
    linkageType: ''
    returnType: struct local_zone
    signature: "struct local_zone *\nrpz_find_zone(struct local_zones* zones, uint8_t*
      qname, size_t qname_len, uint16_t qclass,\n\tint only_exact, int wr, int zones_keep_lock)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/unbound/services/rpz.c:1279,1
    - Dst: ntohs
      Src: /src/unbound/services/rpz.c:1282,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 3
    argNames:
    - qtype
    - data
    - alias_ok
    argTypes:
    - uint16_t
    - struct clientip_synthesized_rr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1289
      start: 1272
    functionDepth: 0
    functionLinenumber: 1272
    functionLinenumberEnd: 1289
    functionName: rpz_find_synthesized_rrset
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - htons
    - ntohs
    linkageType: ''
    returnType: struct local_rrset
    signature: "struct local_rrset *\nrpz_find_synthesized_rrset(uint16_t qtype,\n\tstruct
      clientip_synthesized_rr* data, int alias_ok)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: local_zone_find_data
      Src: /src/unbound/services/rpz.c:1309,1
    - Dst: dname_count_labels
      Src: /src/unbound/services/rpz.c:1310,1
    - Dst: ntohs
      Src: /src/unbound/services/rpz.c:1313,1
    - Dst: packed_rrset_find_rr
      Src: /src/unbound/services/rpz.c:1320,1
    - Dst: local_rrset_remove_rr
      Src: /src/unbound/services/rpz.c:1327,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 6
    argNames:
    - z
    - policydname
    - policydnamelen
    - rr_type
    - rdata
    - rdatalen
    argTypes:
    - struct local_zone*
    - uint8_t*
    - size_t
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1335
      start: 1301
    functionDepth: 1
    functionLinenumber: 1301
    functionLinenumberEnd: 1335
    functionName: rpz_data_delete_rr
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - local_zone_find_data
    - local_rrset_remove_rr
    - packed_rrset_find_rr
    - dname_count_labels
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int rpz_data_delete_rr(struct local_zone* z, uint8_t* policydname,\n\tsize_t
      policydnamelen, uint16_t rr_type, uint8_t* rdata,\n\tsize_t rdatalen)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/services/rpz.c:1354,1
    - Dst: packed_rrset_find_rr
      Src: /src/unbound/services/rpz.c:1357,1
    - Dst: local_rrset_remove_rr
      Src: /src/unbound/services/rpz.c:1365,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 4
    argNames:
    - raddr
    - rr_type
    - rdata
    - rdatalen
    argTypes:
    - struct resp_addr*
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1371
      start: 1345
    functionDepth: 1
    functionLinenumber: 1345
    functionLinenumberEnd: 1371
    functionName: rpz_rrset_delete_rr
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - packed_rrset_find_rr
    - local_rrset_remove_rr
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int rpz_rrset_delete_rr(struct resp_addr* raddr, uint16_t rr_type,
      uint8_t* rdata,\n\tsize_t rdatalen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rpz_find_zone
      Src: /src/unbound/services/rpz.c:1381,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:1384,1
    - Dst: rpz_data_delete_rr
      Src: /src/unbound/services/rpz.c:1389,1
    - Dst: localzone_type_to_rpz_action
      Src: /src/unbound/services/rpz.c:1391,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1392,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1393,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1396,1
    - Dst: local_zones_del_zone
      Src: /src/unbound/services/rpz.c:1398,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1400,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 8
    argNames:
    - zones
    - dname
    - dnamelen
    - a
    - rr_type
    - rr_class
    - rdatawl
    - rdatalen
    argTypes:
    - struct local_zones*
    - uint8_t*
    - size_t
    - enum rpz_action
    - uint16_t
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1401
      start: 1374
    functionDepth: 2
    functionLinenumber: 1374
    functionLinenumberEnd: 1401
    functionName: rpz_remove_local_zones_trigger
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - verbose
    - lock_rw_unlock
    - rpz_data_delete_rr
    - local_zones_del_zone
    - rpz_find_zone
    - localzone_type_to_rpz_action
    linkageType: ''
    returnType: void
    signature: "void rpz_remove_local_zones_trigger(struct local_zones* zones, uint8_t*
      dname,\n\tsize_t dnamelen, enum rpz_action a, uint16_t rr_type,\n\tuint16_t
      rr_class, uint8_t* rdatawl, size_t rdatalen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rpz_remove_local_zones_trigger
      Src: /src/unbound/services/rpz.c:1409,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 8
    argNames:
    - r
    - dname
    - dnamelen
    - a
    - rr_type
    - rr_class
    - rdatawl
    - rdatalen
    argTypes:
    - struct rpz*
    - uint8_t*
    - size_t
    - enum rpz_action
    - uint16_t
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1411
      start: 1404
    functionDepth: 3
    functionLinenumber: 1404
    functionLinenumberEnd: 1411
    functionName: rpz_remove_qname_trigger
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - rpz_remove_local_zones_trigger
    linkageType: ''
    returnType: void
    signature: "void rpz_remove_qname_trigger(struct rpz* r, uint8_t* dname, size_t
      dnamelen,\n\tenum rpz_action a, uint16_t rr_type, uint16_t rr_class,\n\tuint8_t*
      rdatawl, size_t rdatalen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: netblockdnametoaddr
      Src: /src/unbound/services/rpz.c:1423,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/rpz.c:1426,1
    - Dst: addr_tree_find
      Src: /src/unbound/services/rpz.c:1427,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:1429,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1431,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/rpz.c:1435,1
    - Dst: rpz_rrset_delete_rr
      Src: /src/unbound/services/rpz.c:1438,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1441,1
    - Dst: respip_sockaddr_delete
      Src: /src/unbound/services/rpz.c:1443,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1444,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 7
    argNames:
    - r
    - dname
    - dnamelen
    - a
    - rr_type
    - rdatawl
    - rdatalen
    argTypes:
    - struct rpz*
    - uint8_t*
    - size_t
    - enum rpz_action
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1445
      start: 1413
    functionDepth: 2
    functionLinenumber: 1413
    functionLinenumberEnd: 1445
    functionName: rpz_remove_response_ip_trigger
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - respip_sockaddr_delete
    - netblockdnametoaddr
    - lock_rw_wrlock
    - lock_rw_unlock
    - verbose
    - addr_tree_find
    - rpz_rrset_delete_rr
    linkageType: ''
    returnType: void
    signature: "void rpz_remove_response_ip_trigger(struct rpz* r, uint8_t* dname,
      size_t dnamelen,\n\tenum rpz_action a, uint16_t rr_type, uint8_t* rdatawl, size_t
      rdatalen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/services/rpz.c:1452,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - list_head
    - dtype
    argTypes:
    - struct local_rrset**
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1462
      start: 1448
    functionDepth: 0
    functionLinenumber: 1448
    functionLinenumberEnd: 1462
    functionName: del_local_rrset_from_list
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - ntohs
    linkageType: ''
    returnType: void
    signature: void del_local_rrset_from_list(struct local_rrset** list_head, uint16_t
      dtype)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: rpz_find_synthesized_rrset
      Src: /src/unbound/services/rpz.c:1473,1
    - Dst: packed_rrset_find_rr
      Src: /src/unbound/services/rpz.c:1477,1
    - Dst: del_local_rrset_from_list
      Src: /src/unbound/services/rpz.c:1482,1
    - Dst: local_rrset_remove_rr
      Src: /src/unbound/services/rpz.c:1487,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 4
    argNames:
    - node
    - rr_type
    - rdatawl
    - rdatalen
    argTypes:
    - struct clientip_synthesized_rr*
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1467
    functionDepth: 1
    functionLinenumber: 1467
    functionLinenumberEnd: 1491
    functionName: rpz_remove_clientip_rr
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - del_local_rrset_from_list
    - packed_rrset_find_rr
    - local_rrset_remove_rr
    - rpz_find_synthesized_rrset
    linkageType: ''
    returnType: int
    signature: "int rpz_remove_clientip_rr(struct clientip_synthesized_rr* node,\n\tuint16_t
      rr_type, uint8_t* rdatawl, size_t rdatalen)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/rpz.c:1502,1
    - Dst: addr_tree_find
      Src: /src/unbound/services/rpz.c:1503,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:1507,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1509,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/rpz.c:1512,1
    - Dst: rpz_remove_clientip_rr
      Src: /src/unbound/services/rpz.c:1515,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/rpz.c:1522,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1524,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1525,1
    - Dst: lock_rw_destroy
      Src: /src/unbound/services/rpz.c:1527,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 8
    argNames:
    - set
    - addr
    - addrlen
    - net
    - a
    - rr_type
    - rdatawl
    - rdatalen
    argTypes:
    - struct clientip_synthesized_rrset*
    - struct sockaddr_storage*
    - socklen_t
    - int
    - enum rpz_action
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1529
      start: 1494
    functionDepth: 2
    functionLinenumber: 1494
    functionLinenumberEnd: 1529
    functionName: rpz_clientip_remove_trigger_rr
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - rbtree_delete
    - rpz_remove_clientip_rr
    - lock_rw_wrlock
    - lock_rw_unlock
    - verbose
    - lock_rw_destroy
    - addr_tree_find
    linkageType: ''
    returnType: void
    signature: "void rpz_clientip_remove_trigger_rr(struct clientip_synthesized_rrset*
      set,\n\tstruct sockaddr_storage* addr, socklen_t addrlen, int net,\n\tenum rpz_action
      a, uint16_t rr_type, uint8_t* rdatawl, size_t rdatalen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: netblockdnametoaddr
      Src: /src/unbound/services/rpz.c:1541,1
    - Dst: rpz_clientip_remove_trigger_rr
      Src: /src/unbound/services/rpz.c:1543,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 7
    argNames:
    - r
    - dname
    - dnamelen
    - a
    - rr_type
    - rdatawl
    - rdatalen
    argTypes:
    - struct rpz*
    - uint8_t*
    - size_t
    - enum rpz_action
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1545
      start: 1532
    functionDepth: 3
    functionLinenumber: 1532
    functionLinenumberEnd: 1545
    functionName: rpz_remove_clientip_trigger
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - netblockdnametoaddr
    - rpz_clientip_remove_trigger_rr
    linkageType: ''
    returnType: void
    signature: "void rpz_remove_clientip_trigger(struct rpz* r, uint8_t* dname, size_t
      dnamelen,\n\tenum rpz_action a, uint16_t rr_type, uint8_t* rdatawl, size_t rdatalen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: netblockdnametoaddr
      Src: /src/unbound/services/rpz.c:1557,1
    - Dst: rpz_clientip_remove_trigger_rr
      Src: /src/unbound/services/rpz.c:1559,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 7
    argNames:
    - r
    - dname
    - dnamelen
    - a
    - rr_type
    - rdatawl
    - rdatalen
    argTypes:
    - struct rpz*
    - uint8_t*
    - size_t
    - enum rpz_action
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1561
      start: 1548
    functionDepth: 3
    functionLinenumber: 1548
    functionLinenumberEnd: 1561
    functionName: rpz_remove_nsip_trigger
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - netblockdnametoaddr
    - rpz_clientip_remove_trigger_rr
    linkageType: ''
    returnType: void
    signature: "void rpz_remove_nsip_trigger(struct rpz* r, uint8_t* dname, size_t
      dnamelen,\n\tenum rpz_action a, uint16_t rr_type, uint8_t* rdatawl, size_t rdatalen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rpz_strip_nsdname_suffix
      Src: /src/unbound/services/rpz.c:1573,1
    - Dst: rpz_remove_local_zones_trigger
      Src: /src/unbound/services/rpz.c:1576,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:1578,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 8
    argNames:
    - r
    - dname
    - dnamelen
    - a
    - rr_type
    - rr_class
    - rdatawl
    - rdatalen
    argTypes:
    - struct rpz*
    - uint8_t*
    - size_t
    - enum rpz_action
    - uint16_t
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1579
      start: 1564
    functionDepth: 3
    functionLinenumber: 1564
    functionLinenumberEnd: 1579
    functionName: rpz_remove_nsdname_trigger
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - free
    - rpz_remove_local_zones_trigger
    - rpz_strip_nsdname_suffix
    linkageType: ''
    returnType: void
    signature: "void rpz_remove_nsdname_trigger(struct rpz* r, uint8_t* dname, size_t
      dnamelen,\n\tenum rpz_action a, uint16_t rr_type, uint16_t rr_class,\n\tuint8_t*
      rdatawl, size_t rdatalen)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: rpz_type_ignored
      Src: /src/unbound/services/rpz.c:1591,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/services/rpz.c:1595,1
    - Dst: calloc
      Src: /src/unbound/services/rpz.c:1600,1
    - Dst: rpz_rr_to_action
      Src: /src/unbound/services/rpz.c:1603,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:1605,1
    - Dst: strip_dname_origin
      Src: /src/unbound/services/rpz.c:1608,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:1610,1
    - Dst: rpz_dname_to_trigger
      Src: /src/unbound/services/rpz.c:1613,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:1616,1
    - Dst: rpz_remove_qname_trigger
      Src: /src/unbound/services/rpz.c:1620,1
    - Dst: rpz_remove_response_ip_trigger
      Src: /src/unbound/services/rpz.c:1623,1
    - Dst: rpz_remove_clientip_trigger
      Src: /src/unbound/services/rpz.c:1626,1
    - Dst: rpz_remove_nsip_trigger
      Src: /src/unbound/services/rpz.c:1629,1
    - Dst: rpz_remove_nsdname_trigger
      Src: /src/unbound/services/rpz.c:1632,1
    - Dst: free
      Src: /src/unbound/services/rpz.c:1636,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 39
    argCount: 9
    argNames:
    - r
    - azname
    - aznamelen
    - dname
    - dnamelen
    - rr_type
    - rr_class
    - rdatawl
    - rdatalen
    argTypes:
    - struct rpz*
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1637
      start: 1581
    functionDepth: 4
    functionLinenumber: 1581
    functionLinenumberEnd: 1637
    functionName: rpz_remove_rr
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    - rpz_rr_to_action
    - rpz_dname_to_trigger
    - rpz_remove_clientip_trigger
    - rpz_remove_qname_trigger
    - free
    - calloc
    - rpz_remove_response_ip_trigger
    - strip_dname_origin
    - rpz_remove_nsdname_trigger
    - rpz_remove_nsip_trigger
    - rpz_type_ignored
    linkageType: ''
    returnType: void
    signature: "void rpz_remove_rr(struct rpz* r, uint8_t* azname, size_t aznamelen,
      uint8_t* dname,\n\tsize_t dnamelen, uint16_t rr_type, uint16_t rr_class, uint8_t*
      rdatawl,\n\tsize_t rdatalen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dname_str
      Src: /src/unbound/services/rpz.c:1654,1
    - Dst: addr_to_str
      Src: /src/unbound/services/rpz.c:1657,1
    - Dst: snprintf
      Src: /src/unbound/services/rpz.c:1658,1
    - Dst: addr_to_str
      Src: /src/unbound/services/rpz.c:1663,1
    - Dst: ntohs
      Src: /src/unbound/services/rpz.c:1664,1
    - Dst: addr_to_str
      Src: /src/unbound/services/rpz.c:1666,1
    - Dst: ntohs
      Src: /src/unbound/services/rpz.c:1669,1
    - Dst: snprintf
      Src: /src/unbound/services/rpz.c:1674,1
    - Dst: snprintf
      Src: /src/unbound/services/rpz.c:1675,1
    - Dst: strcmp
      Src: /src/unbound/services/rpz.c:1677,1
    - Dst: strcmp
      Src: /src/unbound/services/rpz.c:1678,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/services/rpz.c:1679,1
    - Dst: log_nametypeclass
      Src: /src/unbound/services/rpz.c:1681,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 8
    argNames:
    - trigger
    - dname
    - addrnode
    - a
    - qinfo
    - repinfo
    - ms
    - log_name
    argTypes:
    - char*
    - uint8_t*
    - struct addr_tree_node*
    - enum rpz_action
    - struct query_info*
    - struct comm_reply*
    - struct module_qstate*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1682
      start: 1645
    functionDepth: 2
    functionLinenumber: 1645
    functionLinenumberEnd: 1682
    functionName: log_rpz_apply
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - addr_to_str
    - strcmp
    - log_nametypeclass
    - snprintf
    - dname_str
    - rpz_action_to_string
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void log_rpz_apply(char* trigger, uint8_t* dname, struct addr_tree_node*
      addrnode,\n\tenum rpz_action a, struct query_info* qinfo,\n\tstruct comm_reply*
      repinfo, struct module_qstate* ms, char* log_name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/rpz.c:1691,1
    - Dst: addr_tree_lookup
      Src: /src/unbound/services/rpz.c:1693,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/rpz.c:1696,1
    - Dst: addr_to_str
      Src: /src/unbound/services/rpz.c:1700,1
    - Dst: addr_to_str
      Src: /src/unbound/services/rpz.c:1701,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:1703,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/services/rpz.c:1704,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1707,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - set
    - addr
    - addrlen
    - triggername
    argTypes:
    - struct clientip_synthesized_rrset*
    - struct sockaddr_storage*
    - socklen_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1710
      start: 1684
    functionDepth: 1
    functionLinenumber: 1684
    functionLinenumberEnd: 1710
    functionName: rpz_ipbased_trigger_lookup
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - addr_to_str
    - verbose
    - lock_rw_unlock
    - rpz_action_to_string
    - lock_rw_rdlock
    - addr_tree_lookup
    linkageType: ''
    returnType: struct clientip_synthesized_rr
    signature: "struct clientip_synthesized_rr *\nrpz_ipbased_trigger_lookup(struct
      clientip_synthesized_rrset* set,\n\tstruct sockaddr_storage* addr, socklen_t
      addrlen, char* triggername)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/rpz.c:1725,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/rpz.c:1728,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1731,1
    - Dst: taglist_intersect
      Src: /src/unbound/services/rpz.c:1734,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1736,1
    - Dst: rpz_find_zone
      Src: /src/unbound/services/rpz.c:1739,1
    - Dst: rpz_ipbased_trigger_lookup
      Src: /src/unbound/services/rpz.c:1741,1
    - Dst: log_rpz_apply
      Src: /src/unbound/services/rpz.c:1746,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1753,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1757,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1765,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:1768,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 38
    argCount: 9
    argNames:
    - az
    - qinfo
    - repinfo
    - taglist
    - taglen
    - stats
    - z_out
    - a_out
    - r_out
    argTypes:
    - struct auth_zones*
    - struct query_info*
    - struct comm_reply*
    - uint8_t*
    - size_t
    - struct ub_server_stats*
    - struct local_zone**
    - struct auth_zone**
    - struct rpz**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1775
      start: 1712
    functionDepth: 3
    functionLinenumber: 1712
    functionLinenumberEnd: 1775
    functionName: rpz_resolve_client_action_and_zone
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - log_rpz_apply
    - lock_rw_unlock
    - rpz_find_zone
    - rpz_ipbased_trigger_lookup
    - taglist_intersect
    - lock_rw_rdlock
    linkageType: ''
    returnType: struct clientip_synthesized_rr
    signature: "struct clientip_synthesized_rr *\nrpz_resolve_client_action_and_zone(struct
      auth_zones* az, struct query_info* qinfo,\n\tstruct comm_reply* repinfo, uint8_t*
      taglist, size_t taglen,\n\tstruct ub_server_stats* stats,\n\t/* output parameters
      */\n\tstruct local_zone** z_out, struct auth_zone** a_out, struct rpz** r_out)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - repinfo
    argTypes:
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1784
      start: 1777
    functionDepth: 0
    functionLinenumber: 1777
    functionLinenumberEnd: 1784
    functionName: rpz_is_udp_query
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rpz_is_udp_query(struct comm_reply* repinfo)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/rpz.c:1797,1
    - Dst: inplace_cb_reply_local_call
      Src: /src/unbound/services/rpz.c:1821,1
    - Dst: reply_info_answer_encode
      Src: /src/unbound/services/rpz.c:1823,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/rpz.c:1824,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/services/rpz.c:1824,1
    - Dst: error_encode
      Src: /src/unbound/services/rpz.c:1826,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/rpz.c:1827,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/services/rpz.c:1828,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 10
    argNames:
    - env
    - qinfo
    - edns
    - repinfo
    - buf
    - temp
    - rrset
    - ansec
    - rcode
    - soa_rrset
    argTypes:
    - struct module_env*
    - struct query_info*
    - struct edns_data*
    - struct comm_reply*
    - sldns_buffer*
    - struct regional*
    - struct ub_packed_rrset_key*
    - int
    - int
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1832
      start: 1787
    functionDepth: 4
    functionLinenumber: 1787
    functionLinenumberEnd: 1832
    functionName: rpz_local_encode
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - reply_info_answer_encode
    - inplace_cb_reply_local_call
    - sldns_buffer_begin
    - memset
    - sldns_buffer_read_u16_at
    - error_encode
    linkageType: ''
    returnType: int
    signature: "int rpz_local_encode(struct module_env* env, struct query_info* qinfo,\n\tstruct
      edns_data* edns, struct comm_reply* repinfo, sldns_buffer* buf,\n\tstruct regional*
      temp, struct ub_packed_rrset_key* rrset, int ansec,\n\tint rcode, struct ub_packed_rrset_key*
      soa_rrset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/rpz.c:1842,1
    - Dst: htons
      Src: /src/unbound/services/rpz.c:1844,1
    - Dst: htons
      Src: /src/unbound/services/rpz.c:1845,1
    - Dst: rrset_key_hash
      Src: /src/unbound/services/rpz.c:1850,1
    - Dst: respip_copy_rrset
      Src: /src/unbound/services/rpz.c:1852,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - auth_zone
    - soa
    - temp
    argTypes:
    - struct auth_zone*
    - struct auth_rrset*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1853
      start: 1835
    functionDepth: 1
    functionLinenumber: 1835
    functionLinenumberEnd: 1853
    functionName: make_soa_ubrrset
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - htons
    - memset
    - respip_copy_rrset
    - rrset_key_hash
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: "struct ub_packed_rrset_key *\nmake_soa_ubrrset(struct auth_zone* auth_zone,
      struct auth_rrset* soa,\n\tstruct regional* temp)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:1871,1
    - Dst: rpz_find_synthesized_rrset
      Src: /src/unbound/services/rpz.c:1876,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:1878,1
    - Dst: respip_copy_rrset
      Src: /src/unbound/services/rpz.c:1883,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:1885,1
    - Dst: rrset_key_hash
      Src: /src/unbound/services/rpz.c:1892,1
    - Dst: auth_zone_get_soa_rrset
      Src: /src/unbound/services/rpz.c:1896,1
    - Dst: make_soa_ubrrset
      Src: /src/unbound/services/rpz.c:1898,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:1900,1
    - Dst: rpz_local_encode
      Src: /src/unbound/services/rpz.c:1906,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 8
    argNames:
    - raddr
    - env
    - qinfo
    - edns
    - repinfo
    - buf
    - temp
    - auth_zone
    argTypes:
    - struct clientip_synthesized_rr*
    - struct module_env*
    - struct query_info*
    - struct edns_data*
    - struct comm_reply*
    - sldns_buffer*
    - struct regional*
    - struct auth_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1908
      start: 1855
    functionDepth: 5
    functionLinenumber: 1855
    functionLinenumberEnd: 1908
    functionName: rpz_apply_clientip_localdata_action
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - rpz_local_encode
    - rpz_find_synthesized_rrset
    - verbose
    - rrset_key_hash
    - respip_copy_rrset
    - auth_zone_get_soa_rrset
    - make_soa_ubrrset
    linkageType: ''
    returnType: void
    signature: "void rpz_apply_clientip_localdata_action(struct clientip_synthesized_rr*
      raddr,\n\tstruct module_env* env, struct query_info* qinfo,\n\tstruct edns_data*
      edns, struct comm_reply* repinfo, sldns_buffer* buf,\n\tstruct regional* temp,
      struct auth_zone* auth_zone)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/rpz.c:1918,1
    - Dst: respip_copy_rrset
      Src: /src/unbound/services/rpz.c:1922,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - r
    - qinfo
    - temp
    argTypes:
    - struct rpz*
    - struct query_info*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1930
      start: 1912
    functionDepth: 1
    functionLinenumber: 1912
    functionLinenumberEnd: 1930
    functionName: rpz_apply_cname_override_action
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - respip_copy_rrset
    linkageType: ''
    returnType: int
    signature: "int rpz_apply_cname_override_action(struct rpz* r,\n\tstruct query_info*
      qinfo, struct regional* temp)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: auth_zone_get_soa_rrset
      Src: /src/unbound/services/rpz.c:1944,1
    - Dst: make_soa_ubrrset
      Src: /src/unbound/services/rpz.c:1947,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/rpz.c:1950,1
    - Dst: memcpy
      Src: /src/unbound/services/rpz.c:1955,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 3
    argNames:
    - rep
    - ms
    - az
    argTypes:
    - struct reply_info*
    - struct module_qstate*
    - struct auth_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1960
      start: 1936
    functionDepth: 2
    functionLinenumber: 1936
    functionLinenumberEnd: 1960
    functionName: rpz_add_soa
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - auth_zone_get_soa_rrset
    - memcpy
    - make_soa_ubrrset
    linkageType: ''
    returnType: int
    signature: "int rpz_add_soa(struct reply_info* rep, struct module_qstate* ms,\n\tstruct
      auth_zone* az)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/services/rpz.c:1966,1
    - Dst: memset
      Src: /src/unbound/services/rpz.c:1969,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - region
    argTypes:
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1972
      start: 1962
    functionDepth: 0
    functionLinenumber: 1962
    functionLinenumberEnd: 1972
    functionName: rpz_dns_msg_new
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - memset
    - regional_alloc
    linkageType: ''
    returnType: struct dns_msg
    signature: 'struct dns_msg *

      rpz_dns_msg_new(struct regional* region)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rpz_dns_msg_new
      Src: /src/unbound/services/rpz.c:1978,1
    - Dst: construct_reply_info_base
      Src: /src/unbound/services/rpz.c:1981,1
    - Dst: rpz_add_soa
      Src: /src/unbound/services/rpz.c:1997,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 4
    argNames:
    - ATTR_UNUSED(r)
    - ms
    - qinfo
    - az
    argTypes:
    - struct rpz*
    - struct module_qstate*
    - struct query_info*
    - struct auth_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2000
      start: 1974
    functionDepth: 3
    functionLinenumber: 1974
    functionLinenumberEnd: 2000
    functionName: rpz_synthesize_nodata
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - rpz_add_soa
    - rpz_dns_msg_new
    - construct_reply_info_base
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg *\nrpz_synthesize_nodata(struct rpz* ATTR_UNUSED(r),
      struct module_qstate* ms,\n\tstruct query_info* qinfo, struct auth_zone* az)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rpz_dns_msg_new
      Src: /src/unbound/services/rpz.c:2006,1
    - Dst: construct_reply_info_base
      Src: /src/unbound/services/rpz.c:2013,1
    - Dst: rpz_add_soa
      Src: /src/unbound/services/rpz.c:2029,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - r
    - ms
    - qinfo
    - az
    argTypes:
    - struct rpz*
    - struct module_qstate*
    - struct query_info*
    - struct auth_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2032
      start: 2002
    functionDepth: 3
    functionLinenumber: 2002
    functionLinenumberEnd: 2032
    functionName: rpz_synthesize_nxdomain
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - rpz_add_soa
    - rpz_dns_msg_new
    - construct_reply_info_base
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg *\nrpz_synthesize_nxdomain(struct rpz* r, struct module_qstate*
      ms,\n\tstruct query_info* qinfo, struct auth_zone* az)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rpz_dns_msg_new
      Src: /src/unbound/services/rpz.c:2043,1
    - Dst: construct_reply_info_base
      Src: /src/unbound/services/rpz.c:2047,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:2061,1
    - Dst: respip_copy_rrset
      Src: /src/unbound/services/rpz.c:2065,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:2067,1
    - Dst: rpz_add_soa
      Src: /src/unbound/services/rpz.c:2083,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 5
    argNames:
    - ATTR_UNUSED(r)
    - ms
    - qi
    - rrset
    - az
    argTypes:
    - struct rpz*
    - struct module_qstate*
    - struct query_info*
    - struct local_rrset*
    - struct auth_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2086
      start: 2034
    functionDepth: 3
    functionLinenumber: 2034
    functionLinenumberEnd: 2086
    functionName: rpz_synthesize_localdata_from_rrset
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - log_err
    - construct_reply_info_base
    - rpz_add_soa
    - rpz_dns_msg_new
    - respip_copy_rrset
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg *\nrpz_synthesize_localdata_from_rrset(struct rpz*
      ATTR_UNUSED(r), struct module_qstate* ms,\n\tstruct query_info* qi, struct local_rrset*
      rrset, struct auth_zone* az)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rpz_find_synthesized_rrset
      Src: /src/unbound/services/rpz.c:2095,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2097,1
    - Dst: rpz_synthesize_localdata_from_rrset
      Src: /src/unbound/services/rpz.c:2101,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - r
    - ms
    - qi
    - data
    - az
    argTypes:
    - struct rpz*
    - struct module_qstate*
    - struct query_info*
    - struct clientip_synthesized_rr*
    - struct auth_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2102
      start: 2088
    functionDepth: 4
    functionLinenumber: 2088
    functionLinenumberEnd: 2102
    functionName: rpz_synthesize_nsip_localdata
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - rpz_synthesize_localdata_from_rrset
    - verbose
    - rpz_find_synthesized_rrset
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg *\nrpz_synthesize_nsip_localdata(struct rpz* r, struct
      module_qstate* ms,\n\tstruct query_info* qi, struct clientip_synthesized_rr*
      data,\n\tstruct auth_zone* az)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/unbound/services/rpz.c:2109,1
    - Dst: htons
      Src: /src/unbound/services/rpz.c:2113,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - data
    - type
    - alias_ok
    argTypes:
    - struct local_data*
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2119
      start: 2105
    functionDepth: 0
    functionLinenumber: 2105
    functionLinenumberEnd: 2119
    functionName: local_data_find_type
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: struct local_rrset
    signature: 'struct local_rrset *

      local_data_find_type(struct local_data* data, uint16_t type, int alias_ok)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/services/rpz.c:2136,1
    - Dst: rpz_log_dname
      Src: /src/unbound/services/rpz.c:2138,1
    - Dst: rbtree_search
      Src: /src/unbound/services/rpz.c:2140,1
    - Dst: dname_is_wild
      Src: /src/unbound/services/rpz.c:2141,1
    - Dst: rbtree_search
      Src: /src/unbound/services/rpz.c:2145,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2151,1
    - Dst: local_data_find_type
      Src: /src/unbound/services/rpz.c:2155,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2157,1
    - Dst: rpz_synthesize_localdata_from_rrset
      Src: /src/unbound/services/rpz.c:2161,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 6
    argNames:
    - r
    - ms
    - qi
    - z
    - match
    - az
    argTypes:
    - struct rpz*
    - struct module_qstate*
    - struct query_info*
    - struct local_zone*
    - struct matched_delegation_point*
    - struct auth_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2162
      start: 2122
    functionDepth: 4
    functionLinenumber: 2122
    functionLinenumberEnd: 2162
    functionName: rpz_synthesize_nsdname_localdata
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - rpz_log_dname
    - dname_is_wild
    - verbose
    - local_data_find_type
    - rpz_synthesize_localdata_from_rrset
    - dname_count_labels
    - rbtree_search
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg *\nrpz_synthesize_nsdname_localdata(struct rpz* r,
      struct module_qstate* ms,\n\tstruct query_info* qi, struct local_zone* z,\n\tstruct
      matched_delegation_point const* match, struct auth_zone* az)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/services/rpz.c:2175,1
    - Dst: rbtree_search
      Src: /src/unbound/services/rpz.c:2176,1
    - Dst: dname_is_wild
      Src: /src/unbound/services/rpz.c:2177,1
    - Dst: rbtree_search
      Src: /src/unbound/services/rpz.c:2181,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2187,1
    - Dst: local_data_find_type
      Src: /src/unbound/services/rpz.c:2190,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2192,1
    - Dst: rpz_synthesize_localdata_from_rrset
      Src: /src/unbound/services/rpz.c:2195,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 5
    argNames:
    - r
    - ms
    - qinfo
    - z
    - az
    argTypes:
    - struct rpz*
    - struct module_qstate*
    - struct query_info*
    - struct local_zone*
    - struct auth_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2196
      start: 2165
    functionDepth: 4
    functionLinenumber: 2165
    functionLinenumberEnd: 2196
    functionName: rpz_synthesize_qname_localdata_msg
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - dname_is_wild
    - verbose
    - rbtree_search
    - rpz_synthesize_localdata_from_rrset
    - dname_count_labels
    - local_data_find_type
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg *\nrpz_synthesize_qname_localdata_msg(struct rpz* r,
      struct module_qstate* ms,\n\tstruct query_info* qinfo, struct local_zone* z,
      struct auth_zone* az)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rpz_dns_msg_new
      Src: /src/unbound/services/rpz.c:2207,1
    - Dst: construct_reply_info_base
      Src: /src/unbound/services/rpz.c:2211,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:2225,1
    - Dst: respip_copy_rrset
      Src: /src/unbound/services/rpz.c:2230,1
    - Dst: log_err
      Src: /src/unbound/services/rpz.c:2232,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 3
    argNames:
    - r
    - ms
    - qinfo
    argTypes:
    - struct rpz*
    - struct module_qstate*
    - struct query_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2250
      start: 2199
    functionDepth: 1
    functionLinenumber: 2199
    functionLinenumberEnd: 2250
    functionName: rpz_synthesize_cname_override_msg
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - log_err
    - respip_copy_rrset
    - rpz_dns_msg_new
    - construct_reply_info_base
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg *\nrpz_synthesize_cname_override_msg(struct rpz* r,
      struct module_qstate* ms,\n\tstruct query_info* qinfo)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: rpz_apply_cname_override_action
      Src: /src/unbound/services/rpz.c:2261,1
    - Dst: log_rpz_apply
      Src: /src/unbound/services/rpz.c:2264,1
    - Dst: local_data_answer
      Src: /src/unbound/services/rpz.c:2271,1
    - Dst: dname_count_labels
      Src: /src/unbound/services/rpz.c:2272,1
    - Dst: log_rpz_apply
      Src: /src/unbound/services/rpz.c:2275,1
    - Dst: localzone_type_to_rpz_action
      Src: /src/unbound/services/rpz.c:2276,1
    - Dst: localzone_type_to_rpz_action
      Src: /src/unbound/services/rpz.c:2279,1
    - Dst: local_zones_zone_answer
      Src: /src/unbound/services/rpz.c:2283,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/rpz.c:2285,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/rpz.c:2285,1
    - Dst: LDNS_RA_CLR
      Src: /src/unbound/services/rpz.c:2287,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/rpz.c:2287,1
    - Dst: log_rpz_apply
      Src: /src/unbound/services/rpz.c:2289,1
    - Dst: localzone_type_to_rpz_action
      Src: /src/unbound/services/rpz.c:2289,1
    - Dst: localzone_type_to_rpz_action
      Src: /src/unbound/services/rpz.c:2292,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 10
    argNames:
    - env
    - r
    - z
    - lzt
    - qinfo
    - edns
    - buf
    - temp
    - repinfo
    - stats
    argTypes:
    - struct module_env*
    - struct rpz*
    - struct local_zone*
    - enum localzone_type
    - struct query_info*
    - struct edns_data*
    - sldns_buffer*
    - struct regional*
    - struct comm_reply*
    - struct ub_server_stats*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2294
      start: 2252
    functionDepth: 3
    functionLinenumber: 2252
    functionLinenumberEnd: 2294
    functionName: rpz_synthesize_qname_localdata
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - log_rpz_apply
    - local_data_answer
    - rpz_apply_cname_override_action
    - local_zones_zone_answer
    - LDNS_RCODE_WIRE
    - sldns_buffer_begin
    - LDNS_RA_CLR
    - dname_count_labels
    - localzone_type_to_rpz_action
    linkageType: ''
    returnType: int
    signature: "int rpz_synthesize_qname_localdata(struct module_env* env, struct
      rpz* r,\n\tstruct local_zone* z, enum localzone_type lzt, struct query_info*
      qinfo,\n\tstruct edns_data* edns, sldns_buffer* buf, struct regional* temp,\n\tstruct
      comm_reply* repinfo, struct ub_server_stats* stats)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rpz_ipbased_trigger_lookup
      Src: /src/unbound/services/rpz.c:2306,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - rpz
    - is
    argTypes:
    - struct rpz*
    - struct iter_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2311
      start: 2296
    functionDepth: 2
    functionLinenumber: 2296
    functionLinenumberEnd: 2311
    functionName: rpz_delegation_point_ipbased_trigger_lookup
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - rpz_ipbased_trigger_lookup
    linkageType: ''
    returnType: struct clientip_synthesized_rr
    signature: 'struct clientip_synthesized_rr *

      rpz_delegation_point_ipbased_trigger_lookup(struct rpz* rpz, struct iter_qstate*
      is)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2322,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/services/rpz.c:2323,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/services/rpz.c:2323,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2328,1
    - Dst: rpz_synthesize_nodata
      Src: /src/unbound/services/rpz.c:2329,1
    - Dst: rpz_synthesize_nxdomain
      Src: /src/unbound/services/rpz.c:2336,1
    - Dst: rpz_synthesize_nodata
      Src: /src/unbound/services/rpz.c:2340,1
    - Dst: rpz_synthesize_nodata
      Src: /src/unbound/services/rpz.c:2350,1
    - Dst: rpz_synthesize_nsip_localdata
      Src: /src/unbound/services/rpz.c:2355,1
    - Dst: rpz_synthesize_nodata
      Src: /src/unbound/services/rpz.c:2356,1
    - Dst: rpz_synthesize_cname_override_msg
      Src: /src/unbound/services/rpz.c:2364,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2368,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/services/rpz.c:2369,1
    - Dst: log_rpz_apply
      Src: /src/unbound/services/rpz.c:2375,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2379,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 57
    argCount: 5
    argNames:
    - ms
    - qchase
    - r
    - raddr
    - az
    argTypes:
    - struct module_qstate*
    - struct query_info*
    - struct rpz*
    - struct clientip_synthesized_rr*
    - struct auth_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2381
      start: 2313
    functionDepth: 5
    functionLinenumber: 2313
    functionLinenumberEnd: 2381
    functionName: rpz_apply_nsip_trigger
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - rpz_synthesize_nodata
    - log_rpz_apply
    - rpz_synthesize_nxdomain
    - verbose
    - lock_rw_unlock
    - rpz_synthesize_cname_override_msg
    - rpz_action_to_string
    - rpz_synthesize_nsip_localdata
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg *\nrpz_apply_nsip_trigger(struct module_qstate* ms,
      struct query_info* qchase,\n\tstruct rpz* r, struct clientip_synthesized_rr*
      raddr,\n\tstruct auth_zone* az)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: localzone_type_to_rpz_action
      Src: /src/unbound/services/rpz.c:2389,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2392,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/services/rpz.c:2393,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/services/rpz.c:2393,1
    - Dst: rpz_synthesize_nxdomain
      Src: /src/unbound/services/rpz.c:2399,1
    - Dst: rpz_synthesize_nodata
      Src: /src/unbound/services/rpz.c:2403,1
    - Dst: rpz_synthesize_nodata
      Src: /src/unbound/services/rpz.c:2413,1
    - Dst: rpz_synthesize_nsdname_localdata
      Src: /src/unbound/services/rpz.c:2418,1
    - Dst: rpz_synthesize_nodata
      Src: /src/unbound/services/rpz.c:2419,1
    - Dst: rpz_synthesize_cname_override_msg
      Src: /src/unbound/services/rpz.c:2427,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2431,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/services/rpz.c:2432,1
    - Dst: log_rpz_apply
      Src: /src/unbound/services/rpz.c:2437,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2441,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 48
    argCount: 6
    argNames:
    - ms
    - qchase
    - r
    - z
    - match
    - az
    argTypes:
    - struct module_qstate*
    - struct query_info*
    - struct rpz*
    - struct local_zone*
    - struct matched_delegation_point*
    - struct auth_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2443
      start: 2383
    functionDepth: 5
    functionLinenumber: 2383
    functionLinenumberEnd: 2443
    functionName: rpz_apply_nsdname_trigger
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - rpz_synthesize_nodata
    - log_rpz_apply
    - rpz_synthesize_nxdomain
    - verbose
    - lock_rw_unlock
    - rpz_synthesize_cname_override_msg
    - rpz_action_to_string
    - rpz_synthesize_nsdname_localdata
    - localzone_type_to_rpz_action
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg *\nrpz_apply_nsdname_trigger(struct module_qstate*
      ms, struct query_info* qchase,\n\tstruct rpz* r, struct local_zone* z,\n\tstruct
      matched_delegation_point const* match, struct auth_zone* az)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rpz_find_zone
      Src: /src/unbound/services/rpz.c:2459,1
    - Dst: dname_str
      Src: /src/unbound/services/rpz.c:2467,1
    - Dst: dname_str
      Src: /src/unbound/services/rpz.c:2468,1
    - Dst: strcmp
      Src: /src/unbound/services/rpz.c:2469,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2470,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/services/rpz.c:2471,1
    - Dst: localzone_type_to_rpz_action
      Src: /src/unbound/services/rpz.c:2471,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2473,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/services/rpz.c:2474,1
    - Dst: localzone_type_to_rpz_action
      Src: /src/unbound/services/rpz.c:2474,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - dp
    - zones
    - qclass
    - match
    argTypes:
    - struct delegpt*
    - struct local_zones*
    - uint16_t
    - struct matched_delegation_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2481
      start: 2445
    functionDepth: 2
    functionLinenumber: 2445
    functionLinenumberEnd: 2481
    functionName: rpz_delegation_point_zone_lookup
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - strcmp
    - verbose
    - dname_str
    - rpz_action_to_string
    - rpz_find_zone
    - localzone_type_to_rpz_action
    linkageType: ''
    returnType: struct local_zone
    signature: "struct local_zone *\nrpz_delegation_point_zone_lookup(struct delegpt*
      dp, struct local_zones* zones,\n\tuint16_t qclass,\n\t/* output parameter */\n\tstruct
      matched_delegation_point* match)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2495,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/rpz.c:2502,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2504,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/rpz.c:2514,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2517,1
    - Dst: taglist_intersect
      Src: /src/unbound/services/rpz.c:2521,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2524,1
    - Dst: rpz_delegation_point_zone_lookup
      Src: /src/unbound/services/rpz.c:2529,1
    - Dst: rpz_delegation_point_ipbased_trigger_lookup
      Src: /src/unbound/services/rpz.c:2535,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2539,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2542,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2549,1
    - Dst: rpz_apply_nsip_trigger
      Src: /src/unbound/services/rpz.c:2551,1
    - Dst: rpz_apply_nsdname_trigger
      Src: /src/unbound/services/rpz.c:2553,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2555,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 45
    argCount: 2
    argNames:
    - ms
    - is
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2557
      start: 2483
    functionDepth: 6
    functionLinenumber: 2483
    functionLinenumberEnd: 2557
    functionName: rpz_callback_from_iterator_module
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - rpz_apply_nsip_trigger
    - verbose
    - lock_rw_unlock
    - rpz_delegation_point_ipbased_trigger_lookup
    - rpz_delegation_point_zone_lookup
    - taglist_intersect
    - lock_rw_rdlock
    - rpz_apply_nsdname_trigger
    linkageType: ''
    returnType: struct dns_msg
    signature: 'struct dns_msg *

      rpz_callback_from_iterator_module(struct module_qstate* ms, struct iter_qstate*
      is)'
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2570,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/rpz.c:2577,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/rpz.c:2580,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2583,1
    - Dst: taglist_intersect
      Src: /src/unbound/services/rpz.c:2587,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2590,1
    - Dst: rpz_find_zone
      Src: /src/unbound/services/rpz.c:2593,1
    - Dst: log_rpz_apply
      Src: /src/unbound/services/rpz.c:2597,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2602,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2609,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2611,1
    - Dst: rpz_action_to_localzone_type
      Src: /src/unbound/services/rpz.c:2618,1
    - Dst: dname_str
      Src: /src/unbound/services/rpz.c:2623,1
    - Dst: dname_str
      Src: /src/unbound/services/rpz.c:2624,1
    - Dst: strcmp
      Src: /src/unbound/services/rpz.c:2625,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2626,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/services/rpz.c:2627,1
    - Dst: localzone_type_to_rpz_action
      Src: /src/unbound/services/rpz.c:2627,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2629,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/services/rpz.c:2630,1
    - Dst: localzone_type_to_rpz_action
      Src: /src/unbound/services/rpz.c:2630,1
    - Dst: localzone_type_to_rpz_action
      Src: /src/unbound/services/rpz.c:2632,1
    - Dst: rpz_synthesize_nxdomain
      Src: /src/unbound/services/rpz.c:2634,1
    - Dst: rpz_synthesize_nodata
      Src: /src/unbound/services/rpz.c:2638,1
    - Dst: rpz_synthesize_nodata
      Src: /src/unbound/services/rpz.c:2648,1
    - Dst: rpz_synthesize_qname_localdata_msg
      Src: /src/unbound/services/rpz.c:2653,1
    - Dst: rpz_synthesize_nodata
      Src: /src/unbound/services/rpz.c:2654,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2662,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/services/rpz.c:2663,1
    - Dst: localzone_type_to_rpz_action
      Src: /src/unbound/services/rpz.c:2663,1
    - Dst: log_rpz_apply
      Src: /src/unbound/services/rpz.c:2667,1
    - Dst: localzone_type_to_rpz_action
      Src: /src/unbound/services/rpz.c:2668,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2670,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2671,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 88
    argCount: 2
    argNames:
    - ms
    - is
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2673
      start: 2559
    functionDepth: 5
    functionLinenumber: 2559
    functionLinenumberEnd: 2673
    functionName: rpz_callback_from_iterator_cname
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - rpz_synthesize_nodata
    - log_rpz_apply
    - strcmp
    - rpz_synthesize_nxdomain
    - verbose
    - lock_rw_unlock
    - rpz_synthesize_qname_localdata_msg
    - dname_str
    - rpz_action_to_string
    - rpz_find_zone
    - rpz_action_to_localzone_type
    - taglist_intersect
    - lock_rw_rdlock
    - localzone_type_to_rpz_action
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg * rpz_callback_from_iterator_cname(struct module_qstate*
      ms,\n\tstruct iter_qstate* is)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: rpz_resolve_client_action_and_zone
      Src: /src/unbound/services/rpz.c:2686,1
    - Dst: log_rpz_apply
      Src: /src/unbound/services/rpz.c:2696,1
    - Dst: rpz_is_udp_query
      Src: /src/unbound/services/rpz.c:2711,1
    - Dst: rpz_apply_clientip_localdata_action
      Src: /src/unbound/services/rpz.c:2717,1
    - Dst: rpz_apply_cname_override_action
      Src: /src/unbound/services/rpz.c:2721,1
    - Dst: local_zones_zone_answer
      Src: /src/unbound/services/rpz.c:2728,1
    - Dst: rpz_action_to_localzone_type
      Src: /src/unbound/services/rpz.c:2730,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/rpz.c:2732,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/rpz.c:2732,1
    - Dst: LDNS_RA_CLR
      Src: /src/unbound/services/rpz.c:2734,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/rpz.c:2734,1
    - Dst: log_rpz_apply
      Src: /src/unbound/services/rpz.c:2738,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2749,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 49
    argCount: 14
    argNames:
    - az
    - env
    - qinfo
    - edns
    - repinfo
    - taglist
    - taglen
    - stats
    - buf
    - temp
    - z_out
    - a_out
    - r_out
    - passthru
    argTypes:
    - struct auth_zones*
    - struct module_env*
    - struct query_info*
    - struct edns_data*
    - struct comm_reply*
    - uint8_t*
    - size_t
    - struct ub_server_stats*
    - sldns_buffer*
    - struct regional*
    - struct local_zone**
    - struct auth_zone**
    - struct rpz**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2752
      start: 2675
    functionDepth: 6
    functionLinenumber: 2675
    functionLinenumberEnd: 2752
    functionName: rpz_apply_maybe_clientip_trigger
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - log_rpz_apply
    - rpz_apply_clientip_localdata_action
    - lock_rw_unlock
    - rpz_resolve_client_action_and_zone
    - rpz_apply_cname_override_action
    - local_zones_zone_answer
    - rpz_is_udp_query
    - LDNS_RCODE_WIRE
    - sldns_buffer_begin
    - LDNS_RA_CLR
    - rpz_action_to_localzone_type
    linkageType: ''
    returnType: int
    signature: "int rpz_apply_maybe_clientip_trigger(struct auth_zones* az, struct
      module_env* env,\n\tstruct query_info* qinfo, struct edns_data* edns, struct
      comm_reply* repinfo,\n\tuint8_t* taglist, size_t taglen, struct ub_server_stats*
      stats,\n\tsldns_buffer* buf, struct regional* temp,\n\t/* output parameters
      */\n\tstruct local_zone** z_out, struct auth_zone** a_out, struct rpz** r_out,\n\tint*
      passthru)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: rpz_apply_maybe_clientip_trigger
      Src: /src/unbound/services/rpz.c:2766,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2771,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2774,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2781,1
    - Dst: log_assert
      Src: /src/unbound/services/rpz.c:2786,1
    - Dst: rpz_action_to_localzone_type
      Src: /src/unbound/services/rpz.c:2791,1
    - Dst: dname_str
      Src: /src/unbound/services/rpz.c:2800,1
    - Dst: dname_str
      Src: /src/unbound/services/rpz.c:2801,1
    - Dst: strcmp
      Src: /src/unbound/services/rpz.c:2802,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2803,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/services/rpz.c:2804,1
    - Dst: localzone_type_to_rpz_action
      Src: /src/unbound/services/rpz.c:2804,1
    - Dst: verbose
      Src: /src/unbound/services/rpz.c:2806,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/services/rpz.c:2807,1
    - Dst: localzone_type_to_rpz_action
      Src: /src/unbound/services/rpz.c:2807,1
    - Dst: rpz_synthesize_qname_localdata
      Src: /src/unbound/services/rpz.c:2810,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2813,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2814,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 11
    argNames:
    - az
    - env
    - qinfo
    - edns
    - buf
    - temp
    - repinfo
    - taglist
    - taglen
    - stats
    - passthru
    argTypes:
    - struct auth_zones*
    - struct module_env*
    - struct query_info*
    - struct edns_data*
    - sldns_buffer*
    - struct regional*
    - struct comm_reply*
    - uint8_t*
    - size_t
    - struct ub_server_stats*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2817
      start: 2754
    functionDepth: 7
    functionLinenumber: 2754
    functionLinenumberEnd: 2817
    functionName: rpz_callback_from_worker_request
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 1
    functionsReached:
    - strcmp
    - rpz_synthesize_qname_localdata
    - verbose
    - lock_rw_unlock
    - dname_str
    - rpz_action_to_string
    - rpz_apply_maybe_clientip_trigger
    - log_assert
    - rpz_action_to_localzone_type
    - localzone_type_to_rpz_action
    linkageType: ''
    returnType: int
    signature: "int rpz_callback_from_worker_request(struct auth_zones* az, struct
      module_env* env,\n\tstruct query_info* qinfo, struct edns_data* edns, sldns_buffer*
      buf,\n\tstruct regional* temp, struct comm_reply* repinfo, uint8_t* taglist,\n\tsize_t
      taglen, struct ub_server_stats* stats, int* passthru)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct rpz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2824
      start: 2819
    functionDepth: 0
    functionLinenumber: 2819
    functionLinenumberEnd: 2824
    functionName: rpz_enable
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rpz_enable(struct rpz* r)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct rpz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2831
      start: 2826
    functionDepth: 0
    functionLinenumber: 2826
    functionLinenumberEnd: 2831
    functionName: rpz_disable
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rpz_disable(struct rpz* r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/rpz.c:2839,1
    - Dst: regional_get_mem
      Src: /src/unbound/services/rpz.c:2840,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/rpz.c:2841,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct clientip_synthesized_rrset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2843
      start: 2835
    functionDepth: 1
    functionLinenumber: 2835
    functionLinenumberEnd: 2843
    functionName: rpz_clientip_synthesized_set_get_mem
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - regional_get_mem
    - lock_rw_unlock
    - lock_rw_rdlock
    linkageType: ''
    returnType: size_t
    signature: size_t rpz_clientip_synthesized_set_get_mem(struct clientip_synthesized_rrset*
      set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/services/rpz.c:2851,1
    - Dst: regional_get_mem
      Src: /src/unbound/services/rpz.c:2852,1
    - Dst: local_zones_get_mem
      Src: /src/unbound/services/rpz.c:2853,1
    - Dst: local_zones_get_mem
      Src: /src/unbound/services/rpz.c:2854,1
    - Dst: respip_set_get_mem
      Src: /src/unbound/services/rpz.c:2855,1
    - Dst: rpz_clientip_synthesized_set_get_mem
      Src: /src/unbound/services/rpz.c:2856,1
    - Dst: rpz_clientip_synthesized_set_get_mem
      Src: /src/unbound/services/rpz.c:2857,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct rpz*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2859
      start: 2845
    functionDepth: 2
    functionLinenumber: 2845
    functionLinenumberEnd: 2859
    functionName: rpz_get_mem
    functionSourceFile: /src/unbound/services/rpz.c
    functionUses: 0
    functionsReached:
    - rpz_clientip_synthesized_set_get_mem
    - respip_set_get_mem
    - local_zones_get_mem
    - strlen
    - regional_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t rpz_get_mem(struct rpz* r)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/unbound/services/listen_dnsport.c:151,1
    - Dst: strlcpy
      Src: /src/unbound/services/listen_dnsport.c:153,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:156,1
    - Dst: ntohs
      Src: /src/unbound/services/listen_dnsport.c:162,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - addr
    - additional
    argTypes:
    - struct addrinfo*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 140
    functionDepth: 2
    functionLinenumber: 140
    functionLinenumberEnd: 165
    functionName: verbose_print_addr
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - inet_ntop
    - verbose
    - ntohs
    linkageType: ''
    returnType: void
    signature: void verbose_print_addr(struct addrinfo *addr, const char* additional)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/services/listen_dnsport.c:172,1
    - Dst: addr_to_str
      Src: /src/unbound/services/listen_dnsport.c:173,1
    - Dst: log_info
      Src: /src/unbound/services/listen_dnsport.c:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ub_sock
    argTypes:
    - struct unbound_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 179
    functionName: verbose_print_unbound_socket
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - log_info
    - addr_to_str
    linkageType: ''
    returnType: void
    signature: void verbose_print_unbound_socket(struct unbound_socket* ub_sock)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: sd_booted
      Src: /src/unbound/services/listen_dnsport.c:194,1
    - Dst: log_warn
      Src: /src/unbound/services/listen_dnsport.c:196,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:198,1
    - Dst: strerror
      Src: /src/unbound/services/listen_dnsport.c:198,1
    - Dst: getenv
      Src: /src/unbound/services/listen_dnsport.c:202,1
    - Dst: getenv
      Src: /src/unbound/services/listen_dnsport.c:203,1
    - Dst: log_warn
      Src: /src/unbound/services/listen_dnsport.c:206,1
    - Dst: log_warn
      Src: /src/unbound/services/listen_dnsport.c:211,1
    - Dst: sd_listen_fds
      Src: /src/unbound/services/listen_dnsport.c:215,1
    - Dst: log_warn
      Src: /src/unbound/services/listen_dnsport.c:217,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:219,1
    - Dst: strerror
      Src: /src/unbound/services/listen_dnsport.c:219,1
    - Dst: sd_is_socket
      Src: /src/unbound/services/listen_dnsport.c:224,1
    - Dst: log_err_addr
      Src: /src/unbound/services/listen_dnsport.c:231,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:235,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 6
    argNames:
    - family
    - socktype
    - listen
    - addr
    - addrlen
    - path
    argTypes:
    - int
    - int
    - int
    - struct sockaddr*
    - socklen_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 238
    functionName: systemd_get_activated
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - log_err
    - sd_listen_fds
    - sd_booted
    - getenv
    - log_err_addr
    - strerror
    - log_warn
    - sd_is_socket
    linkageType: ''
    returnType: int
    signature: "int systemd_get_activated(int family, int socktype, int listen,\n\t\t
      \     struct sockaddr *addr, socklen_t addrlen,\n\t\t      const char *path)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/unbound/services/listen_dnsport.c:953,1
    - Dst: sock_strerror
      Src: /src/unbound/services/listen_dnsport.c:955,1
    - Dst: setsockopt
      Src: /src/unbound/services/listen_dnsport.c:961,1
    - Dst: sock_strerror
      Src: /src/unbound/services/listen_dnsport.c:962,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - socket
    - addrfamily
    - dscp
    argTypes:
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 942
    functionDepth: 1
    functionLinenumber: 942
    functionLinenumberEnd: 966
    functionName: set_ip_dscp
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - setsockopt
    - sock_strerror
    linkageType: ''
    returnType: char
    signature: 'char *

      set_ip_dscp(int socket, int addrfamily, int dscp)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/services/listen_dnsport.c:1057,1
    - Dst: getaddrinfo
      Src: /src/unbound/services/listen_dnsport.c:1060,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1067,1
    - Dst: gai_strerror
      Src: /src/unbound/services/listen_dnsport.c:1068,1
    - Dst: EAI_SYSTEM
      Src: /src/unbound/services/listen_dnsport.c:1069,1
    - Dst: strerror
      Src: /src/unbound/services/listen_dnsport.c:1070,1
    - Dst: verbose_print_addr
      Src: /src/unbound/services/listen_dnsport.c:1078,1
    - Dst: create_udp_sock
      Src: /src/unbound/services/listen_dnsport.c:1079,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1084,1
    - Dst: create_tcp_accept_sock
      Src: /src/unbound/services/listen_dnsport.c:1089,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1098,1
    - Dst: freeaddrinfo
      Src: /src/unbound/services/listen_dnsport.c:1099,1
    - Dst: sock_close
      Src: /src/unbound/services/listen_dnsport.c:1100,1
    - Dst: memdup
      Src: /src/unbound/services/listen_dnsport.c:1103,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1106,1
    - Dst: freeaddrinfo
      Src: /src/unbound/services/listen_dnsport.c:1107,1
    - Dst: sock_close
      Src: /src/unbound/services/listen_dnsport.c:1108,1
    - Dst: freeaddrinfo
      Src: /src/unbound/services/listen_dnsport.c:1111,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 46
    argCount: 17
    argNames:
    - stype
    - ifname
    - port
    - hints
    - v6only
    - noip6
    - rcv
    - snd
    - reuseport
    - transparent
    - tcp_mss
    - nodelay
    - freebind
    - use_systemd
    - dscp
    - ub_sock
    - additional
    argTypes:
    - int
    - char*
    - int
    - struct addrinfo*
    - int
    - int*
    - size_t
    - size_t
    - int*
    - int
    - int
    - int
    - int
    - int
    - int
    - struct unbound_socket*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1118
      start: 1047
    functionDepth: 3
    functionLinenumber: 1047
    functionLinenumberEnd: 1118
    functionName: make_sock
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - getaddrinfo
    - log_err
    - create_udp_sock
    - memdup
    - freeaddrinfo
    - EAI_SYSTEM
    - sock_close
    - snprintf
    - gai_strerror
    - strerror
    - verbose_print_addr
    - create_tcp_accept_sock
    linkageType: ''
    returnType: int
    signature: "int make_sock(int stype, const char* ifname, int port,\n\tstruct addrinfo
      *hints, int v6only, int* noip6, size_t rcv, size_t snd,\n\tint* reuseport, int
      transparent, int tcp_mss, int nodelay, int freebind,\n\tint use_systemd, int
      dscp, struct unbound_socket* ub_sock,\n\tconst char* additional)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/services/listen_dnsport.c:1128,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1134,1
    - Dst: atoi
      Src: /src/unbound/services/listen_dnsport.c:1138,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1140,1
    - Dst: strlcpy
      Src: /src/unbound/services/listen_dnsport.c:1144,1
    - Dst: make_sock
      Src: /src/unbound/services/listen_dnsport.c:1146,1
    - Dst: make_sock
      Src: /src/unbound/services/listen_dnsport.c:1150,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 17
    argNames:
    - stype
    - ifname
    - port
    - hints
    - v6only
    - noip6
    - rcv
    - snd
    - reuseport
    - transparent
    - tcp_mss
    - nodelay
    - freebind
    - use_systemd
    - dscp
    - ub_sock
    - additional
    argTypes:
    - int
    - char*
    - int
    - struct addrinfo*
    - int
    - int*
    - size_t
    - size_t
    - int*
    - int
    - int
    - int
    - int
    - int
    - int
    - struct unbound_socket*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1153
      start: 1121
    functionDepth: 4
    functionLinenumber: 1121
    functionLinenumberEnd: 1153
    functionName: make_sock_port
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - log_err
    - strlcpy
    - atoi
    - make_sock
    - strchr
    linkageType: ''
    returnType: int
    signature: "int make_sock_port(int stype, const char* ifname, int port,\n\tstruct
      addrinfo *hints, int v6only, int* noip6, size_t rcv, size_t snd,\n\tint* reuseport,
      int transparent, int tcp_mss, int nodelay, int freebind,\n\tint use_systemd,
      int dscp, struct unbound_socket* ub_sock,\n\tconst char* additional)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/services/listen_dnsport.c:1168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - list
    - s
    - ftype
    - pp2_enabled
    - ub_sock
    argTypes:
    - struct listen_port**
    - int
    - enum listen_type
    - int
    - struct unbound_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1164
    functionDepth: 1
    functionLinenumber: 1164
    functionLinenumberEnd: 1179
    functionName: port_insert
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - malloc
    linkageType: ''
    returnType: int
    signature: "int port_insert(struct listen_port** list, int s, enum listen_type
      ftype,\n\tint pp2_enabled, struct unbound_socket* ub_sock)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/unbound/services/listen_dnsport.c:1187,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1188,1
    - Dst: strerror
      Src: /src/unbound/services/listen_dnsport.c:1189,1
    - Dst: setsockopt
      Src: /src/unbound/services/listen_dnsport.c:1196,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1197,1
    - Dst: strerror
      Src: /src/unbound/services/listen_dnsport.c:1198,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1203,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - s
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1182
    functionDepth: 1
    functionLinenumber: 1182
    functionLinenumberEnd: 1207
    functionName: set_recvtimestamp
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - setsockopt
    - log_err
    - strerror
    linkageType: ''
    returnType: int
    signature: int set_recvtimestamp(int s)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/unbound/services/listen_dnsport.c:1220,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1222,1
    - Dst: strerror
      Src: /src/unbound/services/listen_dnsport.c:1223,1
    - Dst: setsockopt
      Src: /src/unbound/services/listen_dnsport.c:1227,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1229,1
    - Dst: strerror
      Src: /src/unbound/services/listen_dnsport.c:1230,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1234,1
    - Dst: setsockopt
      Src: /src/unbound/services/listen_dnsport.c:1241,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1243,1
    - Dst: strerror
      Src: /src/unbound/services/listen_dnsport.c:1244,1
    - Dst: setsockopt
      Src: /src/unbound/services/listen_dnsport.c:1248,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1250,1
    - Dst: strerror
      Src: /src/unbound/services/listen_dnsport.c:1251,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1255,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 2
    argNames:
    - s
    - family
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1262
      start: 1210
    functionDepth: 1
    functionLinenumber: 1210
    functionLinenumberEnd: 1262
    functionName: set_recvpktinfo
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - setsockopt
    - log_err
    - strerror
    linkageType: ''
    returnType: int
    signature: int set_recvpktinfo(int s, int family)
  - BBCount: 42
    BranchProfiles: []
    Callsites:
    - Dst: if_is_ssl
      Src: /src/unbound/services/listen_dnsport.c:1307,1
    - Dst: if_is_https
      Src: /src/unbound/services/listen_dnsport.c:1308,1
    - Dst: if_is_dnscrypt
      Src: /src/unbound/services/listen_dnsport.c:1309,1
    - Dst: if_is_pp2
      Src: /src/unbound/services/listen_dnsport.c:1310,1
    - Dst: if_is_quic
      Src: /src/unbound/services/listen_dnsport.c:1311,1
    - Dst: fatal_exit
      Src: /src/unbound/services/listen_dnsport.c:1326,1
    - Dst: fatal_exit
      Src: /src/unbound/services/listen_dnsport.c:1329,1
    - Dst: fatal_exit
      Src: /src/unbound/services/listen_dnsport.c:1332,1
    - Dst: calloc
      Src: /src/unbound/services/listen_dnsport.c:1345,1
    - Dst: if_listens_on
      Src: /src/unbound/services/listen_dnsport.c:1354,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1355,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1359,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1360,1
    - Dst: make_sock_port
      Src: /src/unbound/services/listen_dnsport.c:1367,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1371,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1372,1
    - Dst: log_warn
      Src: /src/unbound/services/listen_dnsport.c:1374,1
    - Dst: set_recvpktinfo
      Src: /src/unbound/services/listen_dnsport.c:1380,1
    - Dst: sock_close
      Src: /src/unbound/services/listen_dnsport.c:1381,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1382,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1383,1
    - Dst: set_recvtimestamp
      Src: /src/unbound/services/listen_dnsport.c:1386,1
    - Dst: log_warn
      Src: /src/unbound/services/listen_dnsport.c:1387,1
    - Dst: port_insert
      Src: /src/unbound/services/listen_dnsport.c:1389,1
    - Dst: sock_close
      Src: /src/unbound/services/listen_dnsport.c:1390,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1391,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1392,1
    - Dst: calloc
      Src: /src/unbound/services/listen_dnsport.c:1397,1
    - Dst: if_listens_on
      Src: /src/unbound/services/listen_dnsport.c:1406,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1407,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1411,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1412,1
    - Dst: make_sock_port
      Src: /src/unbound/services/listen_dnsport.c:1420,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1424,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1425,1
    - Dst: log_warn
      Src: /src/unbound/services/listen_dnsport.c:1427,1
    - Dst: set_recvpktinfo
      Src: /src/unbound/services/listen_dnsport.c:1433,1
    - Dst: sock_close
      Src: /src/unbound/services/listen_dnsport.c:1434,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1435,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1436,1
    - Dst: set_recvtimestamp
      Src: /src/unbound/services/listen_dnsport.c:1443,1
    - Dst: log_warn
      Src: /src/unbound/services/listen_dnsport.c:1444,1
    - Dst: port_insert
      Src: /src/unbound/services/listen_dnsport.c:1450,1
    - Dst: sock_close
      Src: /src/unbound/services/listen_dnsport.c:1451,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1452,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1453,1
    - Dst: calloc
      Src: /src/unbound/services/listen_dnsport.c:1459,1
    - Dst: make_sock_port
      Src: /src/unbound/services/listen_dnsport.c:1477,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1480,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1481,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:1489,1
    - Dst: port_insert
      Src: /src/unbound/services/listen_dnsport.c:1490,1
    - Dst: sock_close
      Src: /src/unbound/services/listen_dnsport.c:1491,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1492,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1493,1
    CyclomaticComplexity: 48
    EdgeCount: 48
    ICount: 158
    argCount: 24
    argNames:
    - ifname
    - do_auto
    - do_udp
    - do_tcp
    - hints
    - port
    - list
    - rcv
    - snd
    - ssl_port
    - tls_additional_port
    - https_port
    - proxy_protocol_port
    - reuseport
    - transparent
    - tcp_mss
    - freebind
    - http2_nodelay
    - use_systemd
    - dnscrypt_port
    - dscp
    - quic_port
    - http_notls_downstream
    - sock_queue_timeout
    argTypes:
    - char*
    - int
    - int
    - int
    - struct addrinfo*
    - int
    - struct listen_port**
    - size_t
    - size_t
    - int
    - struct config_strlist*
    - int
    - struct config_strlist*
    - int*
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1498
      start: 1296
    functionDepth: 5
    functionLinenumber: 1296
    functionLinenumberEnd: 1498
    functionName: ports_create_if
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - log_err
    - make_sock_port
    - sock_close
    - if_is_dnscrypt
    - if_is_https
    - verbose
    - if_is_quic
    - if_is_pp2
    - fatal_exit
    - free
    - set_recvpktinfo
    - calloc
    - log_warn
    - if_is_ssl
    - if_listens_on
    - set_recvtimestamp
    - port_insert
    linkageType: ''
    returnType: int
    signature: "int ports_create_if(const char* ifname, int do_auto, int do_udp, int
      do_tcp,\n\tstruct addrinfo *hints, int port, struct listen_port** list,\n\tsize_t
      rcv, size_t snd, int ssl_port,\n\tstruct config_strlist* tls_additional_port,
      int https_port,\n\tstruct config_strlist* proxy_protocol_port,\n\tint* reuseport,
      int transparent, int tcp_mss, int freebind,\n\tint http2_nodelay, int use_systemd,
      int dnscrypt_port, int dscp,\n\tint quic_port, int http_notls_downstream, int
      sock_queue_timeout)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/services/listen_dnsport.c:1509,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - c
    - front
    argTypes:
    - struct comm_point*
    - struct listen_dnsport*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1517
      start: 1506
    functionDepth: 1
    functionLinenumber: 1506
    functionLinenumberEnd: 1517
    functionName: listen_cp_insert
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - malloc
    linkageType: ''
    returnType: int
    signature: int listen_cp_insert(struct comm_point* c, struct listen_dnsport* front)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_init
      Src: /src/unbound/services/listen_dnsport.c:1522,1
    - Dst: lock_basic_init
      Src: /src/unbound/services/listen_dnsport.c:1526,1
    - Dst: lock_basic_init
      Src: /src/unbound/services/listen_dnsport.c:1530,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1533
      start: 1519
    functionDepth: 0
    functionLinenumber: 1519
    functionLinenumberEnd: 1533
    functionName: listen_setup_locks
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - lock_basic_init
    linkageType: ''
    returnType: void
    signature: void listen_setup_locks(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_destroy
      Src: /src/unbound/services/listen_dnsport.c:1539,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/services/listen_dnsport.c:1543,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/services/listen_dnsport.c:1547,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1549
      start: 1535
    functionDepth: 0
    functionLinenumber: 1535
    functionLinenumberEnd: 1549
    functionName: listen_desetup_locks
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - lock_basic_destroy
    linkageType: ''
    returnType: void
    signature: void listen_desetup_locks(void)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/services/listen_dnsport.c:1563,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/services/listen_dnsport.c:1567,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1572,1
    - Dst: comm_point_create_udp
      Src: /src/unbound/services/listen_dnsport.c:1581,1
    - Dst: log_warn
      Src: /src/unbound/services/listen_dnsport.c:1586,1
    - Dst: comm_point_create_doq
      Src: /src/unbound/services/listen_dnsport.c:1590,1
    - Dst: comm_point_create_tcp
      Src: /src/unbound/services/listen_dnsport.c:1595,1
    - Dst: comm_point_create_tcp
      Src: /src/unbound/services/listen_dnsport.c:1603,1
    - Dst: log_warn
      Src: /src/unbound/services/listen_dnsport.c:1612,1
    - Dst: log_warn
      Src: /src/unbound/services/listen_dnsport.c:1618,1
    - Dst: log_warn
      Src: /src/unbound/services/listen_dnsport.c:1627,1
    - Dst: comm_point_create_udp_ancil
      Src: /src/unbound/services/listen_dnsport.c:1635,1
    - Dst: log_warn
      Src: /src/unbound/services/listen_dnsport.c:1639,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1643,1
    - Dst: listen_delete
      Src: /src/unbound/services/listen_dnsport.c:1644,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/services/listen_dnsport.c:1669,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1671,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/listen_dnsport.c:1672,1
    - Dst: listen_delete
      Src: /src/unbound/services/listen_dnsport.c:1673,1
    - Dst: listen_cp_insert
      Src: /src/unbound/services/listen_dnsport.c:1679,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1680,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/listen_dnsport.c:1681,1
    - Dst: listen_delete
      Src: /src/unbound/services/listen_dnsport.c:1682,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1688,1
    - Dst: listen_delete
      Src: /src/unbound/services/listen_dnsport.c:1689,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 80
    argCount: 19
    argNames:
    - base
    - ports
    - bufsize
    - tcp_accept_count
    - tcp_idle_timeout
    - harden_large_queries
    - http_max_streams
    - http_endpoint
    - http_notls
    - tcp_conn_limit
    - dot_sslctx
    - doh_sslctx
    - quic_sslctx
    - dtenv
    - doq_table
    - rnd
    - cfg
    - cb
    - cb_arg
    argTypes:
    - struct comm_base*
    - struct listen_port*
    - size_t
    - int
    - int
    - int
    - uint32_t
    - char*
    - int
    - struct tcl_list*
    - void*
    - void*
    - void*
    - struct dt_env*
    - struct doq_table*
    - struct ub_randstate*
    - struct config_file*
    - comm_point_callback_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1694
      start: 1551
    functionDepth: 2
    functionLinenumber: 1551
    functionLinenumberEnd: 1694
    functionName: listen_create
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - comm_point_create_udp_ancil
    - comm_point_create_tcp
    - sldns_buffer_new
    - log_err
    - listen_cp_insert
    - malloc
    - free
    - comm_point_create_doq
    - log_warn
    - listen_delete
    - comm_point_delete
    - comm_point_create_udp
    linkageType: ''
    returnType: struct listen_dnsport
    signature: "struct listen_dnsport *\nlisten_create(struct comm_base* base, struct
      listen_port* ports,\n\tsize_t bufsize, int tcp_accept_count, int tcp_idle_timeout,\n\tint
      harden_large_queries, uint32_t http_max_streams,\n\tchar* http_endpoint, int
      http_notls, struct tcl_list* tcp_conn_limit,\n\tvoid* dot_sslctx, void* doh_sslctx,
      void* quic_sslctx,\n\tstruct dt_env* dtenv,\n\tstruct doq_table* doq_table,\n\tstruct
      ub_randstate* rnd,struct config_file* cfg,\n\tcomm_point_callback_type* cb,
      void *cb_arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: comm_point_delete
      Src: /src/unbound/services/listen_dnsport.c:1702,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1703,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct listen_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1706
      start: 1696
    functionDepth: 1
    functionLinenumber: 1696
    functionLinenumberEnd: 1706
    functionName: listen_list_delete
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - free
    - comm_point_delete
    linkageType: ''
    returnType: void
    signature: void listen_list_delete(struct listen_list* list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: listen_list_delete
      Src: /src/unbound/services/listen_dnsport.c:1713,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/services/listen_dnsport.c:1717,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/services/listen_dnsport.c:1720,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:1721,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - front
    argTypes:
    - struct listen_dnsport*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1722
      start: 1708
    functionDepth: 2
    functionLinenumber: 1708
    functionLinenumberEnd: 1722
    functionName: listen_delete
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 2
    functionsReached:
    - free
    - sldns_buffer_free
    - listen_list_delete
    linkageType: ''
    returnType: void
    signature: void listen_delete(struct listen_dnsport* front)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/unbound/services/listen_dnsport.c:1741,1
    - Dst: strlen
      Src: /src/unbound/services/listen_dnsport.c:1742,1
    - Dst: strncmp
      Src: /src/unbound/services/listen_dnsport.c:1743,1
    - Dst: strcmp
      Src: /src/unbound/services/listen_dnsport.c:1747,1
    - Dst: inet_ntop
      Src: /src/unbound/services/listen_dnsport.c:1760,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1761,1
    - Dst: snprintf
      Src: /src/unbound/services/listen_dnsport.c:1764,1
    - Dst: inet_ntop
      Src: /src/unbound/services/listen_dnsport.c:1774,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1775,1
    - Dst: if_indextoname
      Src: /src/unbound/services/listen_dnsport.c:1778,1
    - Dst: strlen
      Src: /src/unbound/services/listen_dnsport.c:1780,1
    - Dst: snprintf
      Src: /src/unbound/services/listen_dnsport.c:1781,1
    - Dst: snprintf
      Src: /src/unbound/services/listen_dnsport.c:1784,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:1792,1
    - Dst: realloc
      Src: /src/unbound/services/listen_dnsport.c:1794,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1796,1
    - Dst: strdup
      Src: /src/unbound/services/listen_dnsport.c:1801,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1803,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 4
    argNames:
    - ifas
    - search_ifa
    - ip_addresses
    - ip_addresses_size
    argTypes:
    - struct ifaddrs*
    - char*
    - char***
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1807
      start: 1725
    functionDepth: 2
    functionLinenumber: 1725
    functionLinenumberEnd: 1807
    functionName: resolve_ifa_name
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - log_err
    - strncmp
    - strcmp
    - inet_ntop
    - realloc
    - snprintf
    - strrchr
    - verbose
    - strlen
    - if_indextoname
    - strdup
    linkageType: ''
    returnType: int
    signature: int resolve_ifa_name(struct ifaddrs *ifas, const char *search_ifa,
      char ***ip_addresses, int *ip_addresses_size)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: getifaddrs
      Src: /src/unbound/services/listen_dnsport.c:1838,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1839,1
    - Dst: strerror
      Src: /src/unbound/services/listen_dnsport.c:1840,1
    - Dst: freeifaddrs
      Src: /src/unbound/services/listen_dnsport.c:1841,1
    - Dst: resolve_ifa_name
      Src: /src/unbound/services/listen_dnsport.c:1847,1
    - Dst: freeifaddrs
      Src: /src/unbound/services/listen_dnsport.c:1848,1
    - Dst: config_del_strarray
      Src: /src/unbound/services/listen_dnsport.c:1849,1
    - Dst: resolve_ifa_name
      Src: /src/unbound/services/listen_dnsport.c:1859,1
    - Dst: freeifaddrs
      Src: /src/unbound/services/listen_dnsport.c:1860,1
    - Dst: config_del_strarray
      Src: /src/unbound/services/listen_dnsport.c:1861,1
    - Dst: freeifaddrs
      Src: /src/unbound/services/listen_dnsport.c:1868,1
    - Dst: calloc
      Src: /src/unbound/services/listen_dnsport.c:1881,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1883,1
    - Dst: strdup
      Src: /src/unbound/services/listen_dnsport.c:1889,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1891,1
    - Dst: config_del_strarray
      Src: /src/unbound/services/listen_dnsport.c:1892,1
    - Dst: strdup
      Src: /src/unbound/services/listen_dnsport.c:1902,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1904,1
    - Dst: config_del_strarray
      Src: /src/unbound/services/listen_dnsport.c:1905,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 75
    argCount: 5
    argNames:
    - ifs
    - num_ifs
    - list
    - resif
    - num_resif
    argTypes:
    - char**
    - int
    - struct config_strlist*
    - char***
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1915
      start: 1828
    functionDepth: 3
    functionLinenumber: 1828
    functionLinenumberEnd: 1915
    functionName: resolve_interface_names
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 7
    functionsReached:
    - log_err
    - getifaddrs
    - resolve_ifa_name
    - freeifaddrs
    - calloc
    - strerror
    - config_del_strarray
    - strdup
    linkageType: ''
    returnType: int
    signature: "int resolve_interface_names(char** ifs, int num_ifs,\n\tstruct config_strlist*
      list, char*** resif, int* num_resif)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:1933,1
    - Dst: isspace
      Src: /src/unbound/services/listen_dnsport.c:1953,1
    - Dst: strtol
      Src: /src/unbound/services/listen_dnsport.c:1958,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1960,1
    - Dst: listening_ports_free
      Src: /src/unbound/services/listen_dnsport.c:1961,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:1965,1
    - Dst: listening_ports_free
      Src: /src/unbound/services/listen_dnsport.c:1966,1
    - Dst: ports_create_if
      Src: /src/unbound/services/listen_dnsport.c:1972,1
    - Dst: listening_ports_free
      Src: /src/unbound/services/listen_dnsport.c:1985,1
    - Dst: ports_create_if
      Src: /src/unbound/services/listen_dnsport.c:1991,1
    - Dst: listening_ports_free
      Src: /src/unbound/services/listen_dnsport.c:2004,1
    - Dst: ports_create_if
      Src: /src/unbound/services/listen_dnsport.c:2013,1
    - Dst: listening_ports_free
      Src: /src/unbound/services/listen_dnsport.c:2025,1
    - Dst: ports_create_if
      Src: /src/unbound/services/listen_dnsport.c:2031,1
    - Dst: listening_ports_free
      Src: /src/unbound/services/listen_dnsport.c:2043,1
    - Dst: str_is_ip6
      Src: /src/unbound/services/listen_dnsport.c:2048,1
    - Dst: ports_create_if
      Src: /src/unbound/services/listen_dnsport.c:2052,1
    - Dst: listening_ports_free
      Src: /src/unbound/services/listen_dnsport.c:2063,1
    - Dst: ports_create_if
      Src: /src/unbound/services/listen_dnsport.c:2070,1
    - Dst: listening_ports_free
      Src: /src/unbound/services/listen_dnsport.c:2081,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 88
    argCount: 4
    argNames:
    - cfg
    - ifs
    - num_ifs
    - reuseport
    argTypes:
    - struct config_file*
    - char**
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2088
      start: 1917
    functionDepth: 6
    functionLinenumber: 1917
    functionLinenumberEnd: 2088
    functionName: listening_ports_open
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - log_err
    - isspace
    - ports_create_if
    - listening_ports_free
    - str_is_ip6
    - memset
    - strtol
    linkageType: ''
    returnType: struct listen_port
    signature: "struct listen_port *\nlistening_ports_open(struct config_file* cfg,
      char** ifs, int num_ifs,\n\tint* reuseport)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sock_close
      Src: /src/unbound/services/listen_dnsport.c:2096,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:2100,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:2101,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:2103,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct listen_port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2106
      start: 2090
    functionDepth: 1
    functionLinenumber: 2090
    functionLinenumberEnd: 2106
    functionName: listening_ports_free
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 4
    functionsReached:
    - free
    - sock_close
    linkageType: ''
    returnType: void
    signature: void listening_ports_free(struct listen_port* list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/listen_dnsport.c:2113,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/listen_dnsport.c:2117,1
    - Dst: comm_point_get_mem
      Src: /src/unbound/services/listen_dnsport.c:2122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - listen
    argTypes:
    - struct listen_dnsport*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2125
      start: 2108
    functionDepth: 1
    functionLinenumber: 2108
    functionLinenumberEnd: 2125
    functionName: listen_get_mem
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - sldns_buffer_capacity
    - comm_point_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t listen_get_mem(struct listen_dnsport* listen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: comm_point_stop_listening
      Src: /src/unbound/services/listen_dnsport.c:2135,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - listen
    argTypes:
    - struct listen_dnsport*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2138
      start: 2127
    functionDepth: 0
    functionLinenumber: 2127
    functionLinenumberEnd: 2138
    functionName: listen_stop_accept
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - comm_point_stop_listening
    linkageType: ''
    returnType: void
    signature: void listen_stop_accept(struct listen_dnsport* listen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: comm_point_start_listening
      Src: /src/unbound/services/listen_dnsport.c:2148,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - listen
    argTypes:
    - struct listen_dnsport*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2151
      start: 2140
    functionDepth: 0
    functionLinenumber: 2140
    functionLinenumberEnd: 2151
    functionName: listen_start_accept
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - comm_point_start_listening
    linkageType: ''
    returnType: void
    signature: void listen_start_accept(struct listen_dnsport* listen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/services/listen_dnsport.c:2156,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:2158,1
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:2161,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - spoolbuf
    argTypes:
    - struct sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2164
      start: 2153
    functionDepth: 1
    functionLinenumber: 2153
    functionLinenumberEnd: 2164
    functionName: tcp_req_info_create
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - malloc
    - log_err
    - memset
    linkageType: ''
    returnType: struct tcp_req_info
    signature: 'struct tcp_req_info *

      tcp_req_info_create(struct sldns_buffer* spoolbuf)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tcp_req_info_clear
      Src: /src/unbound/services/listen_dnsport.c:2170,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:2174,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct tcp_req_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2175
      start: 2166
    functionDepth: 1
    functionLinenumber: 2166
    functionLinenumberEnd: 2175
    functionName: tcp_req_info_delete
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - free
    - tcp_req_info_clear
    linkageType: ''
    returnType: void
    signature: void tcp_req_info_delete(struct tcp_req_info* req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mesh_state_remove_reply
      Src: /src/unbound/services/listen_dnsport.c:2187,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:2189,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:2199,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:2202,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:2203,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:2204,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct tcp_req_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2210
      start: 2177
    functionDepth: 1
    functionLinenumber: 2177
    functionLinenumberEnd: 2210
    functionName: tcp_req_info_clear
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - free
    - lock_basic_unlock
    - mesh_state_remove_reply
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: void tcp_req_info_clear(struct tcp_req_info* req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:2225,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - req
    - m
    argTypes:
    - struct tcp_req_info*
    - struct mesh_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2235
      start: 2212
    functionDepth: 1
    functionLinenumber: 2212
    functionLinenumberEnd: 2235
    functionName: tcp_req_info_remove_mesh_state
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void tcp_req_info_remove_mesh_state(struct tcp_req_info* req, struct
      mesh_state* m)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: comm_point_stop_listening
      Src: /src/unbound/services/listen_dnsport.c:2256,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/services/listen_dnsport.c:2257,1
    - Dst: adjusted_tcp_timeout
      Src: /src/unbound/services/listen_dnsport.c:2258,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/services/listen_dnsport.c:2261,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/services/listen_dnsport.c:2262,1
    - Dst: adjusted_tcp_timeout
      Src: /src/unbound/services/listen_dnsport.c:2263,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/services/listen_dnsport.c:2269,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/services/listen_dnsport.c:2270,1
    - Dst: adjusted_tcp_timeout
      Src: /src/unbound/services/listen_dnsport.c:2271,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/services/listen_dnsport.c:2272,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct tcp_req_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2274
      start: 2238
    functionDepth: 1
    functionLinenumber: 2238
    functionLinenumberEnd: 2274
    functionName: tcp_req_info_setup_listen
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - comm_point_start_listening
    - comm_point_listen_for_rw
    - comm_point_stop_listening
    - adjusted_tcp_timeout
    linkageType: ''
    returnType: void
    signature: void tcp_req_info_setup_listen(struct tcp_req_info* req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/listen_dnsport.c:2281,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:2283,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:2285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct tcp_req_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2289
      start: 2277
    functionDepth: 1
    functionLinenumber: 2277
    functionLinenumberEnd: 2289
    functionName: tcp_req_info_pop_done
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - log_assert
    - lock_basic_lock
    linkageType: ''
    returnType: struct tcp_req_done_item
    signature: 'struct tcp_req_done_item *

      tcp_req_info_pop_done(struct tcp_req_info* req)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/listen_dnsport.c:2296,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/services/listen_dnsport.c:2297,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/listen_dnsport.c:2298,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - req
    - buf
    - len
    argTypes:
    - struct tcp_req_info*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2301
      start: 2292
    functionDepth: 5
    functionLinenumber: 2292
    functionLinenumberEnd: 2301
    functionName: tcp_req_info_start_write_buf
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_flip
    - sldns_buffer_write
    - sldns_buffer_clear
    linkageType: ''
    returnType: void
    signature: "void tcp_req_info_start_write_buf(struct tcp_req_info* req, uint8_t*
      buf,\n\tsize_t len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tcp_req_info_pop_done
      Src: /src/unbound/services/listen_dnsport.c:2309,1
    - Dst: tcp_req_info_start_write_buf
      Src: /src/unbound/services/listen_dnsport.c:2310,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:2311,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:2312,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct tcp_req_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2314
      start: 2304
    functionDepth: 6
    functionLinenumber: 2304
    functionLinenumberEnd: 2314
    functionName: tcp_req_pickup_next_result
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - tcp_req_info_pop_done
    - tcp_req_info_start_write_buf
    - free
    linkageType: ''
    returnType: void
    signature: void tcp_req_pickup_next_result(struct tcp_req_info* req)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2320,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct tcp_req_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2323
      start: 2317
    functionDepth: 1
    functionLinenumber: 2317
    functionLinenumberEnd: 2323
    functionName: tcp_req_info_handle_read_close
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - verbose
    linkageType: ''
    returnType: int
    signature: int tcp_req_info_handle_read_close(struct tcp_req_info* req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/listen_dnsport.c:2329,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/services/listen_dnsport.c:2332,1
    - Dst: tcp_req_pickup_next_result
      Src: /src/unbound/services/listen_dnsport.c:2337,1
    - Dst: tcp_req_info_setup_listen
      Src: /src/unbound/services/listen_dnsport.c:2342,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct tcp_req_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2343
      start: 2325
    functionDepth: 7
    functionLinenumber: 2325
    functionLinenumberEnd: 2343
    functionName: tcp_req_info_handle_writedone
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - tcp_req_pickup_next_result
    - tcp_req_info_setup_listen
    - sldns_buffer_clear
    - comm_point_drop_reply
    linkageType: ''
    returnType: void
    signature: void tcp_req_info_handle_writedone(struct tcp_req_info* req)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/services/listen_dnsport.c:2356,1
    - Dst: fptr_ok
      Src: /src/unbound/services/listen_dnsport.c:2361,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/services/listen_dnsport.c:2361,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/services/listen_dnsport.c:2370,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/services/listen_dnsport.c:2371,1
    - Dst: adjusted_tcp_timeout
      Src: /src/unbound/services/listen_dnsport.c:2371,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/listen_dnsport.c:2388,1
    - Dst: tcp_req_pickup_next_result
      Src: /src/unbound/services/listen_dnsport.c:2390,1
    - Dst: tcp_req_info_setup_listen
      Src: /src/unbound/services/listen_dnsport.c:2394,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct tcp_req_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2395
      start: 2345
    functionDepth: 7
    functionLinenumber: 2345
    functionLinenumberEnd: 2395
    functionName: tcp_req_info_handle_readdone
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - comm_point_stop_listening
    - adjusted_tcp_timeout
    - fptr_whitelist_comm_point
    - sldns_buffer_clear
    - fptr_ok
    - comm_point_start_listening
    - sldns_buffer_set_limit
    - tcp_req_info_setup_listen
    - tcp_req_pickup_next_result
    linkageType: ''
    returnType: void
    signature: void tcp_req_info_handle_readdone(struct tcp_req_info* req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/listen_dnsport.c:2402,1
    - Dst: malloc
      Src: /src/unbound/services/listen_dnsport.c:2403,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - req
    - mesh
    - m
    argTypes:
    - struct tcp_req_info*
    - struct mesh_area*
    - struct mesh_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2411
      start: 2397
    functionDepth: 1
    functionLinenumber: 2397
    functionLinenumberEnd: 2411
    functionName: tcp_req_info_add_meshstate
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - malloc
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int tcp_req_info_add_meshstate(struct tcp_req_info* req,\n\tstruct
      mesh_area* mesh, struct mesh_state* m)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:2423,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:2425,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2426,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:2430,1
    - Dst: malloc
      Src: /src/unbound/services/listen_dnsport.c:2438,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:2440,1
    - Dst: memdup
      Src: /src/unbound/services/listen_dnsport.c:2445,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:2447,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:2448,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 3
    argNames:
    - req
    - buf
    - len
    argTypes:
    - struct tcp_req_info*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2457
      start: 2414
    functionDepth: 1
    functionLinenumber: 2414
    functionLinenumberEnd: 2457
    functionName: tcp_req_info_add_result
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - log_err
    - lock_basic_unlock
    - verbose
    - malloc
    - free
    - lock_basic_lock
    - memdup
    linkageType: ''
    returnType: int
    signature: int tcp_req_info_add_result(struct tcp_req_info* req, uint8_t* buf,
      size_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/listen_dnsport.c:2466,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/services/listen_dnsport.c:2467,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/listen_dnsport.c:2468,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/listen_dnsport.c:2469,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/listen_dnsport.c:2470,1
    - Dst: tcp_req_info_start_write_buf
      Src: /src/unbound/services/listen_dnsport.c:2483,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/listen_dnsport.c:2484,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/listen_dnsport.c:2485,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/services/listen_dnsport.c:2487,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/services/listen_dnsport.c:2488,1
    - Dst: adjusted_tcp_timeout
      Src: /src/unbound/services/listen_dnsport.c:2489,1
    - Dst: tcp_req_info_add_result
      Src: /src/unbound/services/listen_dnsport.c:2493,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/listen_dnsport.c:2493,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/listen_dnsport.c:2494,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/services/listen_dnsport.c:2496,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - req
    argTypes:
    - struct tcp_req_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2498
      start: 2459
    functionDepth: 6
    functionLinenumber: 2459
    functionLinenumberEnd: 2498
    functionName: tcp_req_info_send_reply
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - comm_point_stop_listening
    - sldns_buffer_write
    - adjusted_tcp_timeout
    - sldns_buffer_flip
    - sldns_buffer_limit
    - sldns_buffer_clear
    - tcp_req_info_start_write_buf
    - comm_point_start_listening
    - sldns_buffer_begin
    - tcp_req_info_add_result
    - comm_point_drop_reply
    linkageType: ''
    returnType: void
    signature: void tcp_req_info_send_reply(struct tcp_req_info* req)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:2505,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:2507,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2509
      start: 2500
    functionDepth: 0
    functionLinenumber: 2500
    functionLinenumberEnd: 2509
    functionName: tcp_req_info_get_stream_buffer_size
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: size_t
    signature: size_t tcp_req_info_get_stream_buffer_size(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:2516,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:2518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2520
      start: 2511
    functionDepth: 0
    functionLinenumber: 2511
    functionLinenumberEnd: 2520
    functionName: http2_get_query_buffer_size
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: size_t
    signature: size_t http2_get_query_buffer_size(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:2527,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:2529,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2531
      start: 2522
    functionDepth: 0
    functionLinenumber: 2522
    functionLinenumberEnd: 2531
    functionName: http2_get_response_buffer_size
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: size_t
    signature: size_t http2_get_response_buffer_size(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_session_get_stream_user_data
      Src: /src/unbound/services/listen_dnsport.c:2543,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2545,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/listen_dnsport.c:2550,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2551,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/listen_dnsport.c:2557,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/listen_dnsport.c:2558,1
    - Dst: memcpy
      Src: /src/unbound/services/listen_dnsport.c:2562,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/services/listen_dnsport.c:2562,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/services/listen_dnsport.c:2563,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/listen_dnsport.c:2565,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:2567,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/listen_dnsport.c:2569,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:2570,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/services/listen_dnsport.c:2571,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 7
    argNames:
    - ATTR_UNUSED(session)
    - stream_id
    - buf
    - length
    - data_flags
    - source
    - ATTR_UNUSED(cb_arg)
    argTypes:
    - nghttp2_session*
    - int32_t
    - uint8_t*
    - size_t
    - uint32_t*
    - nghttp2_data_source*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2576
      start: 2535
    functionDepth: 3
    functionLinenumber: 2535
    functionLinenumberEnd: 2576
    functionName: http2_submit_response_read_callback
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_capacity
    - memcpy
    - nghttp2_session_get_stream_user_data
    - verbose
    - sldns_buffer_skip
    - lock_basic_unlock
    - sldns_buffer_free
    - lock_basic_lock
    - sldns_buffer_current
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t http2_submit_response_read_callback(\n\tnghttp2_session* ATTR_UNUSED(session),\n\tint32_t
      stream_id, uint8_t* buf, size_t length, uint32_t* data_flags,\n\tnghttp2_data_source*
      source, void* ATTR_UNUSED(cb_arg))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_submit_rst_stream
      Src: /src/unbound/services/listen_dnsport.c:2587,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2591,1
    - Dst: nghttp2_strerror
      Src: /src/unbound/services/listen_dnsport.c:2592,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - h2_session
    - h2_stream
    argTypes:
    - struct http2_session*
    - struct http2_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2596
      start: 2584
    functionDepth: 1
    functionLinenumber: 2584
    functionLinenumberEnd: 2596
    functionName: http2_submit_rst_stream
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - verbose
    - nghttp2_submit_rst_stream
    - nghttp2_strerror
    linkageType: ''
    returnType: int
    signature: "int http2_submit_rst_stream(struct http2_session* h2_session,\n\t\tstruct
      http2_stream* h2_stream)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:2616,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/listen_dnsport.c:2620,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:2621,1
    - Dst: snprintf
      Src: /src/unbound/services/listen_dnsport.c:2625,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2626,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/listen_dnsport.c:2631,1
    - Dst: snprintf
      Src: /src/unbound/services/listen_dnsport.c:2632,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:2634,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:2636,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2637,1
    - Dst: http2_submit_rst_stream
      Src: /src/unbound/services/listen_dnsport.c:2639,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:2642,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/services/listen_dnsport.c:2644,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:2645,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:2647,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:2648,1
    - Dst: strlen
      Src: /src/unbound/services/listen_dnsport.c:2667,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/services/listen_dnsport.c:2670,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/services/listen_dnsport.c:2671,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/listen_dnsport.c:2672,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/listen_dnsport.c:2673,1
    - Dst: nghttp2_submit_response
      Src: /src/unbound/services/listen_dnsport.c:2677,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2680,1
    - Dst: nghttp2_strerror
      Src: /src/unbound/services/listen_dnsport.c:2681,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 55
    argCount: 1
    argNames:
    - h2_session
    argTypes:
    - struct http2_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2685
      start: 2605
    functionDepth: 5
    functionLinenumber: 2605
    functionLinenumberEnd: 2685
    functionName: http2_submit_dns_response
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - log_err
    - sldns_buffer_new
    - sldns_buffer_write
    - nghttp2_strerror
    - verbose
    - snprintf
    - lock_basic_unlock
    - sldns_buffer_flip
    - nghttp2_submit_response
    - http2_submit_rst_stream
    - lock_basic_lock
    - strlen
    - sldns_buffer_current
    linkageType: ''
    returnType: int
    signature: int http2_submit_dns_response(struct http2_session* h2_session)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(v)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2690
      start: 2687
    functionDepth: 0
    functionLinenumber: 2687
    functionLinenumberEnd: 2690
    functionName: http2_submit_dns_response
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int http2_submit_dns_response(void* ATTR_UNUSED(v))
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - s
    argTypes:
    - enum http_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2714
      start: 2695
    functionDepth: 0
    functionLinenumber: 2695
    functionLinenumberEnd: 2714
    functionName: http_status_to_str
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * http_status_to_str(enum http_status s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_session_get_stream_user_data
      Src: /src/unbound/services/listen_dnsport.c:2725,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2727,1
    - Dst: http_status_to_str
      Src: /src/unbound/services/listen_dnsport.c:2732,1
    - Dst: strlen
      Src: /src/unbound/services/listen_dnsport.c:2733,1
    - Dst: memcpy
      Src: /src/unbound/services/listen_dnsport.c:2735,1
    - Dst: strlen
      Src: /src/unbound/services/listen_dnsport.c:2735,1
    - Dst: strlen
      Src: /src/unbound/services/listen_dnsport.c:2736,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 7
    argNames:
    - ATTR_UNUSED(session)
    - stream_id
    - buf
    - length
    - data_flags
    - source
    - ATTR_UNUSED(cb_arg)
    argTypes:
    - nghttp2_session*
    - int32_t
    - uint8_t*
    - size_t
    - uint32_t*
    - nghttp2_data_source*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2738
      start: 2717
    functionDepth: 1
    functionLinenumber: 2717
    functionLinenumberEnd: 2738
    functionName: http2_submit_error_read_callback
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - http_status_to_str
    - memcpy
    - nghttp2_session_get_stream_user_data
    - verbose
    - strlen
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t http2_submit_error_read_callback(\n\tnghttp2_session* ATTR_UNUSED(session),\n\tint32_t
      stream_id, uint8_t* buf, size_t length, uint32_t* data_flags,\n\tnghttp2_data_source*
      source, void* ATTR_UNUSED(cb_arg))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/services/listen_dnsport.c:2754,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2755,1
    - Dst: nghttp2_submit_response
      Src: /src/unbound/services/listen_dnsport.c:2768,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2771,1
    - Dst: nghttp2_strerror
      Src: /src/unbound/services/listen_dnsport.c:2772,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 2
    argNames:
    - h2_session
    - h2_stream
    argTypes:
    - struct http2_session*
    - struct http2_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2776
      start: 2747
    functionDepth: 2
    functionLinenumber: 2747
    functionLinenumberEnd: 2776
    functionName: http2_submit_error
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - snprintf
    - nghttp2_submit_response
    - verbose
    - nghttp2_strerror
    linkageType: ''
    returnType: int
    signature: "int http2_submit_error(struct http2_session* h2_session,\n\tstruct
      http2_stream* h2_stream)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/listen_dnsport.c:2788,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2791,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/listen_dnsport.c:2798,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/listen_dnsport.c:2799,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/listen_dnsport.c:2800,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/listen_dnsport.c:2802,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2803,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/services/listen_dnsport.c:2808,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/services/listen_dnsport.c:2809,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/listen_dnsport.c:2810,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:2812,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/listen_dnsport.c:2813,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:2814,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/services/listen_dnsport.c:2815,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/listen_dnsport.c:2818,1
    - Dst: fptr_ok
      Src: /src/unbound/services/listen_dnsport.c:2820,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/services/listen_dnsport.c:2820,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/listen_dnsport.c:2825,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 2
    argNames:
    - h2_session
    - h2_stream
    argTypes:
    - struct http2_session*
    - struct http2_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2828
      start: 2785
    functionDepth: 5
    functionLinenumber: 2785
    functionLinenumberEnd: 2828
    functionName: http2_query_read_done
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_capacity
    - sldns_buffer_write
    - verbose
    - lock_basic_unlock
    - sldns_buffer_flip
    - fptr_whitelist_comm_point
    - sldns_buffer_clear
    - fptr_ok
    - log_assert
    - lock_basic_lock
    - sldns_buffer_free
    - sldns_buffer_current
    linkageType: ''
    returnType: int
    signature: "int http2_query_read_done(struct http2_session* h2_session,\n\tstruct
      http2_stream* h2_stream)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_session_get_stream_user_data
      Src: /src/unbound/services/listen_dnsport.c:2845,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2880,1
    - Dst: http2_submit_error
      Src: /src/unbound/services/listen_dnsport.c:2882,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/listen_dnsport.c:2889,1
    - Dst: http2_query_read_done
      Src: /src/unbound/services/listen_dnsport.c:2891,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2901,1
    - Dst: http2_submit_dns_response
      Src: /src/unbound/services/listen_dnsport.c:2907,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/listen_dnsport.c:2908,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2912,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/listen_dnsport.c:2913,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 65
    argCount: 3
    argNames:
    - session
    - frame
    - cb_arg
    argTypes:
    - nghttp2_session*
    - nghttp2_frame*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2916
      start: 2832
    functionDepth: 6
    functionLinenumber: 2832
    functionLinenumberEnd: 2916
    functionName: http2_req_frame_recv_cb
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - http2_query_read_done
    - nghttp2_session_get_stream_user_data
    - verbose
    - sldns_buffer_flip
    - sldns_buffer_clear
    - http2_submit_error
    - http2_submit_dns_response
    linkageType: ''
    returnType: int
    signature: "int http2_req_frame_recv_cb(nghttp2_session* session,\n\tconst nghttp2_frame*
      frame, void* cb_arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: http2_stream_create
      Src: /src/unbound/services/listen_dnsport.c:2930,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:2931,1
    - Dst: http2_session_add_stream
      Src: /src/unbound/services/listen_dnsport.c:2934,1
    - Dst: nghttp2_session_set_stream_user_data
      Src: /src/unbound/services/listen_dnsport.c:2935,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2939,1
    - Dst: nghttp2_strerror
      Src: /src/unbound/services/listen_dnsport.c:2940,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - session
    - frame
    - cb_arg
    argTypes:
    - nghttp2_session*
    - nghttp2_frame*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2945
      start: 2919
    functionDepth: 1
    functionLinenumber: 2919
    functionLinenumberEnd: 2945
    functionName: http2_req_begin_headers_cb
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - log_err
    - nghttp2_session_set_stream_user_data
    - nghttp2_strerror
    - http2_stream_create
    - verbose
    - http2_session_add_stream
    linkageType: ''
    returnType: int
    signature: "int http2_req_begin_headers_cb(nghttp2_session* session,\n\tconst
      nghttp2_frame* frame, void* cb_arg)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2966,1
    - Dst: sldns_b64_pton_calculate_size
      Src: /src/unbound/services/listen_dnsport.c:2973,1
    - Dst: log_assert
      Src: /src/unbound/services/listen_dnsport.c:2974,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:2981,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:2983,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:2984,1
    - Dst: http2_submit_rst_stream
      Src: /src/unbound/services/listen_dnsport.c:2986,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:2989,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/services/listen_dnsport.c:2990,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:2991,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:2993,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:2994,1
    - Dst: sldns_b64_contains_nonurl
      Src: /src/unbound/services/listen_dnsport.c:2999,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:3001,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:3006,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:3008,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/services/listen_dnsport.c:3009,1
    - Dst: memmove
      Src: /src/unbound/services/listen_dnsport.c:3013,1
    - Dst: sldns_b64_pton
      Src: /src/unbound/services/listen_dnsport.c:3015,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/services/listen_dnsport.c:3015,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:3017,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:3019,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/services/listen_dnsport.c:3020,1
    - Dst: sldns_b64url_pton
      Src: /src/unbound/services/listen_dnsport.c:3025,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/services/listen_dnsport.c:3027,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:3029,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:3031,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/services/listen_dnsport.c:3032,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/services/listen_dnsport.c:3039,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 62
    argCount: 4
    argNames:
    - h2_session
    - h2_stream
    - start
    - length
    argTypes:
    - struct http2_session*
    - struct http2_stream*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3041
      start: 2956
    functionDepth: 2
    functionLinenumber: 2956
    functionLinenumberEnd: 3041
    functionName: http2_buffer_uri_query
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - log_err
    - sldns_buffer_new
    - memmove
    - sldns_b64url_pton
    - verbose
    - lock_basic_unlock
    - sldns_buffer_skip
    - http2_submit_rst_stream
    - log_assert
    - lock_basic_lock
    - sldns_b64_contains_nonurl
    - sldns_buffer_free
    - sldns_b64_pton
    - sldns_buffer_current
    - sldns_b64_pton_calculate_size
    linkageType: ''
    returnType: int
    signature: "int http2_buffer_uri_query(struct http2_session* h2_session,\n\tstruct
      http2_stream* h2_stream, const uint8_t* start, size_t length)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_session_get_stream_user_data
      Src: /src/unbound/services/listen_dnsport.c:3058,1
    - Dst: memcmp
      Src: /src/unbound/services/listen_dnsport.c:3076,1
    - Dst: strcasecmp
      Src: /src/unbound/services/listen_dnsport.c:3080,1
    - Dst: strcasecmp
      Src: /src/unbound/services/listen_dnsport.c:3083,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:3087,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/listen_dnsport.c:3089,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:3090,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/services/listen_dnsport.c:3091,1
    - Dst: memcmp
      Src: /src/unbound/services/listen_dnsport.c:3098,1
    - Dst: strlen
      Src: /src/unbound/services/listen_dnsport.c:3103,1
    - Dst: strlen
      Src: /src/unbound/services/listen_dnsport.c:3104,1
    - Dst: memcmp
      Src: /src/unbound/services/listen_dnsport.c:3106,1
    - Dst: memcmp
      Src: /src/unbound/services/listen_dnsport.c:3114,1
    - Dst: http2_buffer_uri_query
      Src: /src/unbound/services/listen_dnsport.c:3120,1
    - Dst: memcmp
      Src: /src/unbound/services/listen_dnsport.c:3134,1
    - Dst: memcmp
      Src: /src/unbound/services/listen_dnsport.c:3135,1
    - Dst: memcmp
      Src: /src/unbound/services/listen_dnsport.c:3146,1
    - Dst: atoi
      Src: /src/unbound/services/listen_dnsport.c:3152,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 56
    argCount: 8
    argNames:
    - session
    - frame
    - name
    - namelen
    - value
    - valuelen
    - ATTR_UNUSED
    - cb_arg
    argTypes:
    - nghttp2_session*
    - nghttp2_frame*
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - uint8_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3160
      start: 3044
    functionDepth: 3
    functionLinenumber: 3044
    functionLinenumberEnd: 3160
    functionName: http2_req_header_cb
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - nghttp2_session_get_stream_user_data
    - lock_basic_unlock
    - atoi
    - sldns_buffer_free
    - lock_basic_lock
    - strlen
    - memcmp
    - http2_buffer_uri_query
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: "int http2_req_header_cb(nghttp2_session* session,\n\tconst nghttp2_frame*
      frame, const uint8_t* name, size_t namelen,\n\tconst uint8_t* value, size_t
      valuelen, uint8_t ATTR_UNUSED(flags),\n\tvoid* cb_arg)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_session_get_stream_user_data
      Src: /src/unbound/services/listen_dnsport.c:3172,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:3197,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:3199,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:3200,1
    - Dst: http2_submit_rst_stream
      Src: /src/unbound/services/listen_dnsport.c:3202,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:3205,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/services/listen_dnsport.c:3206,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:3207,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:3209,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/listen_dnsport.c:3214,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:3215,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/services/listen_dnsport.c:3222,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 6
    argNames:
    - ATTR_UNUSED(session)
    - ATTR_UNUSED
    - stream_id
    - data
    - len
    - cb_arg
    argTypes:
    - nghttp2_session*
    - uint8_t
    - int32_t
    - uint8_t*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3225
      start: 3164
    functionDepth: 5
    functionLinenumber: 3164
    functionLinenumberEnd: 3225
    functionName: http2_req_data_chunk_recv_cb
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_new
    - sldns_buffer_write
    - nghttp2_session_get_stream_user_data
    - lock_basic_unlock
    - verbose
    - http2_submit_rst_stream
    - lock_basic_lock
    linkageType: ''
    returnType: int
    signature: "int http2_req_data_chunk_recv_cb(nghttp2_session* ATTR_UNUSED(session),\n\tuint8_t
      ATTR_UNUSED(flags), int32_t stream_id, const uint8_t* data,\n\tsize_t len, void*
      cb_arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:3230,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/listen_dnsport.c:3232,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:3233,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/services/listen_dnsport.c:3234,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:3238,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/listen_dnsport.c:3240,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:3241,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/services/listen_dnsport.c:3242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - h2_stream
    argTypes:
    - struct http2_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3245
      start: 3227
    functionDepth: 2
    functionLinenumber: 3227
    functionLinenumberEnd: 3245
    functionName: http2_req_stream_clear
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - lock_basic_unlock
    - sldns_buffer_free
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: void http2_req_stream_clear(struct http2_stream* h2_stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_session_callbacks_new
      Src: /src/unbound/services/listen_dnsport.c:3250,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:3251,1
    - Dst: nghttp2_session_callbacks_set_on_begin_headers_callback
      Src: /src/unbound/services/listen_dnsport.c:3255,1
    - Dst: nghttp2_session_callbacks_set_on_frame_recv_callback
      Src: /src/unbound/services/listen_dnsport.c:3259,1
    - Dst: nghttp2_session_callbacks_set_on_header_callback
      Src: /src/unbound/services/listen_dnsport.c:3262,1
    - Dst: nghttp2_session_callbacks_set_on_data_chunk_recv_callback
      Src: /src/unbound/services/listen_dnsport.c:3265,1
    - Dst: nghttp2_session_callbacks_set_recv_callback
      Src: /src/unbound/services/listen_dnsport.c:3269,1
    - Dst: nghttp2_session_callbacks_set_send_callback
      Src: /src/unbound/services/listen_dnsport.c:3270,1
    - Dst: nghttp2_session_callbacks_set_on_stream_close_callback
      Src: /src/unbound/services/listen_dnsport.c:3271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3275
      start: 3247
    functionDepth: 1
    functionLinenumber: 3247
    functionLinenumberEnd: 3275
    functionName: http2_req_callbacks_create
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - log_err
    - nghttp2_session_callbacks_new
    - nghttp2_session_callbacks_set_on_begin_headers_callback
    - nghttp2_session_callbacks_set_send_callback
    - nghttp2_session_callbacks_set_recv_callback
    - nghttp2_session_callbacks_set_on_data_chunk_recv_callback
    - nghttp2_session_callbacks_set_on_frame_recv_callback
    - nghttp2_session_callbacks_set_on_header_callback
    - nghttp2_session_callbacks_set_on_stream_close_callback
    linkageType: ''
    returnType: nghttp2_session_callbacks
    signature: nghttp2_session_callbacks * http2_req_callbacks_create(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/listen_dnsport.c:3286,1
    - Dst: ngtcp2_crypto_ossl_init
      Src: /src/unbound/services/listen_dnsport.c:3292,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:3293,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3294,1
    - Dst: ngtcp2_crypto_quictls_init
      Src: /src/unbound/services/listen_dnsport.c:3298,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:3299,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3300,1
    - Dst: malloc
      Src: /src/unbound/services/listen_dnsport.c:3308,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3310,1
    - Dst: doq_fill_rand
      Src: /src/unbound/services/listen_dnsport.c:3313,1
    - Dst: rbtree_create
      Src: /src/unbound/services/listen_dnsport.c:3314,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3316,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3317,1
    - Dst: rbtree_create
      Src: /src/unbound/services/listen_dnsport.c:3320,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3322,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3323,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3324,1
    - Dst: rbtree_create
      Src: /src/unbound/services/listen_dnsport.c:3327,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3329,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3330,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3331,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3332,1
    - Dst: lock_rw_init
      Src: /src/unbound/services/listen_dnsport.c:3335,1
    - Dst: lock_rw_init
      Src: /src/unbound/services/listen_dnsport.c:3336,1
    - Dst: lock_basic_init
      Src: /src/unbound/services/listen_dnsport.c:3337,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3338,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3340,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3342,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3344,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3346,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3348,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3349,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3350,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3352,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3354,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 60
    argCount: 2
    argNames:
    - cfg
    - rnd
    argTypes:
    - struct config_file*
    - struct ub_randstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3357
      start: 3279
    functionDepth: 1
    functionLinenumber: 3279
    functionLinenumberEnd: 3357
    functionName: doq_table_create
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - log_err
    - ngtcp2_crypto_quictls_init
    - lock_rw_init
    - lock_basic_init
    - ngtcp2_crypto_ossl_init
    - free
    - malloc
    - calloc
    - lock_protect
    - rbtree_create
    - doq_fill_rand
    linkageType: ''
    returnType: struct doq_table
    signature: 'struct doq_table *

      doq_table_create(struct config_file* cfg, struct ub_randstate* rnd)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doq_timer_list_remove
      Src: /src/unbound/services/listen_dnsport.c:3372,1
    - Dst: doq_timer_tree_remove
      Src: /src/unbound/services/listen_dnsport.c:3375,1
    - Dst: doq_table_quic_size_subtract
      Src: /src/unbound/services/listen_dnsport.c:3376,1
    - Dst: doq_conn_delete
      Src: /src/unbound/services/listen_dnsport.c:3377,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - node
    - arg
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3378
      start: 3360
    functionDepth: 1
    functionLinenumber: 3360
    functionLinenumberEnd: 3378
    functionName: conn_tree_del
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_conn_delete
    - doq_table_quic_size_subtract
    - doq_timer_tree_remove
    - doq_timer_list_remove
    linkageType: ''
    returnType: void
    signature: void conn_tree_del(rbnode_type* node, void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doq_conid_delete
      Src: /src/unbound/services/listen_dnsport.c:3386,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - node
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3387
      start: 3381
    functionDepth: 1
    functionLinenumber: 3381
    functionLinenumberEnd: 3387
    functionName: conid_tree_del
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_conid_delete
    linkageType: ''
    returnType: void
    signature: void conid_tree_del(rbnode_type* node, void* ATTR_UNUSED(arg))
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/services/listen_dnsport.c:3394,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3395,1
    - Dst: traverse_postorder
      Src: /src/unbound/services/listen_dnsport.c:3397,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3398,1
    - Dst: lock_rw_destroy
      Src: /src/unbound/services/listen_dnsport.c:3400,1
    - Dst: traverse_postorder
      Src: /src/unbound/services/listen_dnsport.c:3404,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3405,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/services/listen_dnsport.c:3407,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3412,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3416,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct doq_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3417
      start: 3389
    functionDepth: 1
    functionLinenumber: 3389
    functionLinenumberEnd: 3417
    functionName: doq_table_delete
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - free
    - lock_basic_destroy
    - traverse_postorder
    - lock_rw_destroy
    linkageType: ''
    returnType: void
    signature: void doq_table_delete(struct doq_table* table)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/listen_dnsport.c:3424,1
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:3425,1
    - Dst: rbtree_search
      Src: /src/unbound/services/listen_dnsport.c:3427,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - table
    - ts
    argTypes:
    - struct doq_table*
    - ngtcp2_tstamp
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3431
      start: 3419
    functionDepth: 1
    functionLinenumber: 3419
    functionLinenumberEnd: 3431
    functionName: doq_timer_find_time
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - memset
    - log_assert
    - rbtree_search
    linkageType: ''
    returnType: struct doq_timer
    signature: 'struct doq_timer *

      doq_timer_find_time(struct doq_table* table, ngtcp2_tstamp ts)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_delete
      Src: /src/unbound/services/listen_dnsport.c:3438,1
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:3453,1
    - Dst: rbtree_insert
      Src: /src/unbound/services/listen_dnsport.c:3455,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - table
    - timer
    argTypes:
    - struct doq_table*
    - struct doq_timer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3465
      start: 3433
    functionDepth: 1
    functionLinenumber: 3433
    functionLinenumberEnd: 3465
    functionName: doq_timer_tree_remove
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - memset
    - rbtree_insert
    - rbtree_delete
    linkageType: ''
    returnType: void
    signature: void doq_timer_tree_remove(struct doq_table* table, struct doq_timer*
      timer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: doq_timer_find_time
      Src: /src/unbound/services/listen_dnsport.c:3474,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - table
    - timer
    argTypes:
    - struct doq_table*
    - struct doq_timer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3488
      start: 3467
    functionDepth: 2
    functionLinenumber: 3467
    functionLinenumberEnd: 3488
    functionName: doq_timer_list_remove
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - doq_timer_find_time
    linkageType: ''
    returnType: void
    signature: void doq_timer_list_remove(struct doq_table* table, struct doq_timer*
      timer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/listen_dnsport.c:3494,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - rb_timer
    - timer
    argTypes:
    - struct doq_timer*
    - struct doq_timer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3503
      start: 3491
    functionDepth: 1
    functionLinenumber: 3491
    functionLinenumberEnd: 3503
    functionName: doq_timer_list_append
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void doq_timer_list_append(struct doq_timer* rb_timer, struct doq_timer*
      timer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doq_timer_list_remove
      Src: /src/unbound/services/listen_dnsport.c:3512,1
    - Dst: doq_timer_tree_remove
      Src: /src/unbound/services/listen_dnsport.c:3515,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - table
    - timer
    argTypes:
    - struct doq_table*
    - struct doq_timer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3517
      start: 3505
    functionDepth: 3
    functionLinenumber: 3505
    functionLinenumberEnd: 3517
    functionName: doq_timer_unset
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_timer_tree_remove
    - doq_timer_list_remove
    linkageType: ''
    returnType: void
    signature: void doq_timer_unset(struct doq_table* table, struct doq_timer* timer)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: addr_to_str
      Src: /src/unbound/services/listen_dnsport.c:3527,1
    - Dst: timeval_subtract
      Src: /src/unbound/services/listen_dnsport.c:3529,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:3530,1
    - Dst: doq_timer_unset
      Src: /src/unbound/services/listen_dnsport.c:3537,1
    - Dst: doq_timer_find_time
      Src: /src/unbound/services/listen_dnsport.c:3542,1
    - Dst: doq_timer_list_append
      Src: /src/unbound/services/listen_dnsport.c:3546,1
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:3550,1
    - Dst: rbtree_insert
      Src: /src/unbound/services/listen_dnsport.c:3552,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 5
    argNames:
    - table
    - timer
    - worker_doq_socket
    - tv
    - ts
    argTypes:
    - struct doq_table*
    - struct doq_timer*
    - struct doq_server_socket*
    - struct timeval*
    - ngtcp2_tstamp
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3558
      start: 3519
    functionDepth: 4
    functionLinenumber: 3519
    functionLinenumberEnd: 3558
    functionName: doq_timer_set
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - addr_to_str
    - verbose
    - doq_timer_list_append
    - timeval_subtract
    - doq_timer_find_time
    - memset
    - rbtree_insert
    - doq_timer_unset
    linkageType: ''
    returnType: void
    signature: "void doq_timer_set(struct doq_table* table, struct doq_timer* timer,\n\tstruct
      doq_server_socket* worker_doq_socket, struct timeval* tv,\n\tngtcp2_tstamp ts)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/listen_dnsport.c:3564,1
    - Dst: memmove
      Src: /src/unbound/services/listen_dnsport.c:3570,1
    - Dst: memmove
      Src: /src/unbound/services/listen_dnsport.c:3572,1
    - Dst: memdup
      Src: /src/unbound/services/listen_dnsport.c:3576,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3578,1
    - Dst: ngtcp2_ccerr_default
      Src: /src/unbound/services/listen_dnsport.c:3584,1
    - Dst: ngtcp2_connection_close_error_default
      Src: /src/unbound/services/listen_dnsport.c:3586,1
    - Dst: rbtree_init
      Src: /src/unbound/services/listen_dnsport.c:3588,1
    - Dst: lock_basic_init
      Src: /src/unbound/services/listen_dnsport.c:3590,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3591,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3592,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3593,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3594,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3595,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3596,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3597,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3599,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3601,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3603,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3604,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3605,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3606,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3607,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3608,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3609,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3610,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3611,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3612,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3613,1
    - Dst: lock_protect
      Src: /src/unbound/services/listen_dnsport.c:3614,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 45
    argCount: 5
    argNames:
    - c
    - paddr
    - dcid
    - dcidlen
    - version
    argTypes:
    - struct comm_point*
    - struct doq_pkt_addr*
    - uint8_t*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3616
      start: 3560
    functionDepth: 1
    functionLinenumber: 3560
    functionLinenumberEnd: 3616
    functionName: doq_conn_create
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - ngtcp2_connection_close_error_default
    - memmove
    - lock_basic_init
    - free
    - rbtree_init
    - lock_protect
    - ngtcp2_ccerr_default
    - calloc
    - memdup
    linkageType: ''
    returnType: struct doq_conn
    signature: "struct doq_conn *\ndoq_conn_create(struct comm_point* c, struct doq_pkt_addr*
      paddr,\n\tconst uint8_t* dcid, size_t dcidlen, uint32_t version)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mesh_state_remove_reply
      Src: /src/unbound/services/listen_dnsport.c:3637,1
    - Dst: doq_table_quic_size_subtract
      Src: /src/unbound/services/listen_dnsport.c:3642,1
    - Dst: doq_table_quic_size_subtract
      Src: /src/unbound/services/listen_dnsport.c:3644,1
    - Dst: doq_table_quic_size_subtract
      Src: /src/unbound/services/listen_dnsport.c:3645,1
    - Dst: doq_stream_delete
      Src: /src/unbound/services/listen_dnsport.c:3646,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - node
    - arg
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3647
      start: 3627
    functionDepth: 1
    functionLinenumber: 3627
    functionLinenumberEnd: 3647
    functionName: stream_tree_del
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_stream_delete
    - mesh_state_remove_reply
    - doq_table_quic_size_subtract
    linkageType: ''
    returnType: void
    signature: void stream_tree_del(rbnode_type* node, void* arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_destroy
      Src: /src/unbound/services/listen_dnsport.c:3654,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/listen_dnsport.c:3655,1
    - Dst: doq_conn_clear_conids
      Src: /src/unbound/services/listen_dnsport.c:3656,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/listen_dnsport.c:3657,1
    - Dst: SSL_set_app_data
      Src: /src/unbound/services/listen_dnsport.c:3661,1
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:3664,1
    - Dst: traverse_postorder
      Src: /src/unbound/services/listen_dnsport.c:3667,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3669,1
    - Dst: SSL_free
      Src: /src/unbound/services/listen_dnsport.c:3670,1
    - Dst: ngtcp2_crypto_ossl_ctx_del
      Src: /src/unbound/services/listen_dnsport.c:3672,1
    - Dst: ngtcp2_conn_del
      Src: /src/unbound/services/listen_dnsport.c:3674,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3675,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3676,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - conn
    - table
    argTypes:
    - struct doq_conn*
    - struct doq_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3677
      start: 3649
    functionDepth: 1
    functionLinenumber: 3649
    functionLinenumberEnd: 3677
    functionName: doq_conn_delete
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - doq_conn_clear_conids
    - ngtcp2_crypto_ossl_ctx_del
    - ngtcp2_conn_del
    - lock_rw_wrlock
    - lock_rw_unlock
    - SSL_free
    - free
    - traverse_postorder
    - lock_basic_destroy
    - memset
    - SSL_set_app_data
    linkageType: ''
    returnType: void
    signature: void doq_conn_delete(struct doq_conn* conn, struct doq_table* table)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/services/listen_dnsport.c:3698,1
    - Dst: memcmp
      Src: /src/unbound/services/listen_dnsport.c:3706,1
    - Dst: memcmp
      Src: /src/unbound/services/listen_dnsport.c:3719,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3722
      start: 3679
    functionDepth: 1
    functionLinenumber: 3679
    functionLinenumberEnd: 3722
    functionName: doq_conn_cmp
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int doq_conn_cmp(const void* key1, const void* key2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/services/listen_dnsport.c:3733,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3734
      start: 3724
    functionDepth: 1
    functionLinenumber: 3724
    functionLinenumberEnd: 3734
    functionName: doq_conid_cmp
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int doq_conid_cmp(const void* key1, const void* key2)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3745
      start: 3736
    functionDepth: 0
    functionLinenumber: 3736
    functionLinenumberEnd: 3745
    functionName: doq_timer_cmp
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int doq_timer_cmp(const void* key1, const void* key2)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3757
      start: 3747
    functionDepth: 0
    functionLinenumber: 3747
    functionLinenumberEnd: 3757
    functionName: doq_stream_cmp
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int doq_stream_cmp(const void* key1, const void* key2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:3766,1
    - Dst: addr_is_ip6
      Src: /src/unbound/services/listen_dnsport.c:3767,1
    - Dst: memmove
      Src: /src/unbound/services/listen_dnsport.c:3770,1
    - Dst: memmove
      Src: /src/unbound/services/listen_dnsport.c:3778,1
    - Dst: memmove
      Src: /src/unbound/services/listen_dnsport.c:3783,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - repinfo
    - localaddr
    - localaddrlen
    argTypes:
    - struct comm_reply*
    - struct doq_addr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3789
      start: 3760
    functionDepth: 1
    functionLinenumber: 3760
    functionLinenumberEnd: 3789
    functionName: doq_repinfo_store_localaddr
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - memset
    - addr_is_ip6
    - memmove
    linkageType: ''
    returnType: void
    signature: "void doq_repinfo_store_localaddr(struct comm_reply* repinfo,\n\tstruct
      doq_addr_storage* localaddr, socklen_t localaddrlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:3800,1
    - Dst: memmove
      Src: /src/unbound/services/listen_dnsport.c:3802,1
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:3810,1
    - Dst: memmove
      Src: /src/unbound/services/listen_dnsport.c:3812,1
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:3818,1
    - Dst: memmove
      Src: /src/unbound/services/listen_dnsport.c:3820,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 3
    argNames:
    - repinfo
    - localaddr
    - localaddrlen
    argTypes:
    - struct comm_reply*
    - struct doq_addr_storage*
    - socklen_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3825
      start: 3792
    functionDepth: 1
    functionLinenumber: 3792
    functionLinenumberEnd: 3825
    functionName: doq_repinfo_retrieve_localaddr
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - memset
    - memmove
    linkageType: ''
    returnType: void
    signature: "void doq_repinfo_retrieve_localaddr(struct comm_reply* repinfo,\n\tstruct
      doq_addr_storage* localaddr, socklen_t* localaddrlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/services/listen_dnsport.c:3835,1
    - Dst: memmove
      Src: /src/unbound/services/listen_dnsport.c:3838,1
    - Dst: doq_repinfo_store_localaddr
      Src: /src/unbound/services/listen_dnsport.c:3840,1
    - Dst: memmove
      Src: /src/unbound/services/listen_dnsport.c:3845,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - key
    - repinfo
    argTypes:
    - struct doq_conn_key*
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3847
      start: 3828
    functionDepth: 2
    functionLinenumber: 3828
    functionLinenumberEnd: 3847
    functionName: doq_conn_key_store_repinfo
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_repinfo_store_localaddr
    - memmove
    linkageType: ''
    returnType: int
    signature: "int doq_conn_key_store_repinfo(struct doq_conn_key* key,\n\tstruct
      comm_reply* repinfo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/services/listen_dnsport.c:3854,1
    - Dst: doq_repinfo_retrieve_localaddr
      Src: /src/unbound/services/listen_dnsport.c:3856,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - key
    - repinfo
    argTypes:
    - struct doq_conn_key*
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3860
      start: 3849
    functionDepth: 2
    functionLinenumber: 3849
    functionLinenumberEnd: 3860
    functionName: doq_conn_key_from_repinfo
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_repinfo_retrieve_localaddr
    - memmove
    linkageType: ''
    returnType: void
    signature: void doq_conn_key_from_repinfo(struct doq_conn_key* key, struct comm_reply*
      repinfo)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_insert
      Src: /src/unbound/services/listen_dnsport.c:3866,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - stream
    argTypes:
    - struct doq_conn*
    - struct doq_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3867
      start: 3863
    functionDepth: 1
    functionLinenumber: 3863
    functionLinenumberEnd: 3867
    functionName: doq_conn_add_stream
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - rbtree_insert
    linkageType: ''
    returnType: void
    signature: void doq_conn_add_stream(struct doq_conn* conn, struct doq_stream*
      stream)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_delete
      Src: /src/unbound/services/listen_dnsport.c:3873,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - stream
    argTypes:
    - struct doq_conn*
    - struct doq_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3874
      start: 3870
    functionDepth: 1
    functionLinenumber: 3870
    functionLinenumberEnd: 3874
    functionName: doq_conn_del_stream
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - rbtree_delete
    linkageType: ''
    returnType: void
    signature: void doq_conn_del_stream(struct doq_conn* conn, struct doq_stream*
      stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/listen_dnsport.c:3880,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - stream_id
    argTypes:
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3886
      start: 3877
    functionDepth: 1
    functionLinenumber: 3877
    functionLinenumberEnd: 3886
    functionName: doq_stream_create
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - calloc
    linkageType: ''
    returnType: struct doq_stream
    signature: 'struct doq_stream *

      doq_stream_create(int64_t stream_id)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3892,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3893,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3894,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct doq_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3895
      start: 3888
    functionDepth: 1
    functionLinenumber: 3888
    functionLinenumberEnd: 3895
    functionName: doq_stream_delete
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void doq_stream_delete(struct doq_stream* stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_search
      Src: /src/unbound/services/listen_dnsport.c:3904,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - conn
    - stream_id
    argTypes:
    - struct doq_conn*
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3908
      start: 3897
    functionDepth: 1
    functionLinenumber: 3897
    functionLinenumberEnd: 3908
    functionName: doq_stream_find
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - rbtree_search
    linkageType: ''
    returnType: struct doq_stream
    signature: 'struct doq_stream *

      doq_stream_find(struct doq_conn* conn, int64_t stream_id)'
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - conn
    - stream
    argTypes:
    - struct doq_conn*
    - struct doq_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3924
      start: 3911
    functionDepth: 0
    functionLinenumber: 3911
    functionLinenumberEnd: 3924
    functionName: doq_stream_on_write_list
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doq_stream_on_write_list(struct doq_conn* conn, struct doq_stream*
      stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - conn
    - stream
    argTypes:
    - struct doq_conn*
    - struct doq_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3941
      start: 3927
    functionDepth: 0
    functionLinenumber: 3927
    functionLinenumberEnd: 3941
    functionName: doq_stream_off_write_list
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doq_stream_off_write_list(struct doq_conn* conn, struct doq_stream*
      stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doq_table_quic_size_subtract
      Src: /src/unbound/services/listen_dnsport.c:3948,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3949,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - stream
    - table
    argTypes:
    - struct doq_stream*
    - struct doq_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3953
      start: 3944
    functionDepth: 1
    functionLinenumber: 3944
    functionLinenumberEnd: 3953
    functionName: doq_stream_remove_in_buffer
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - free
    - doq_table_quic_size_subtract
    linkageType: ''
    returnType: void
    signature: void doq_stream_remove_in_buffer(struct doq_stream* stream, struct
      doq_table* table)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doq_table_quic_size_subtract
      Src: /src/unbound/services/listen_dnsport.c:3961,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:3962,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - stream
    - table
    argTypes:
    - struct doq_stream*
    - struct doq_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3966
      start: 3956
    functionDepth: 1
    functionLinenumber: 3956
    functionLinenumberEnd: 3966
    functionName: doq_stream_remove_out_buffer
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - free
    - doq_table_quic_size_subtract
    linkageType: ''
    returnType: void
    signature: "void doq_stream_remove_out_buffer(struct doq_stream* stream,\n\tstruct
      doq_table* table)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: mesh_state_remove_reply
      Src: /src/unbound/services/listen_dnsport.c:3977,1
    - Dst: doq_stream_off_write_list
      Src: /src/unbound/services/listen_dnsport.c:3981,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:3983,1
    - Dst: ngtcp2_conn_shutdown_stream
      Src: /src/unbound/services/listen_dnsport.c:3985,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:3991,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/services/listen_dnsport.c:3992,1
    - Dst: doq_conn_write_enable
      Src: /src/unbound/services/listen_dnsport.c:3995,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:3997,1
    - Dst: ngtcp2_conn_extend_max_streams_bidi
      Src: /src/unbound/services/listen_dnsport.c:3998,1
    - Dst: doq_conn_write_enable
      Src: /src/unbound/services/listen_dnsport.c:3999,1
    - Dst: doq_stream_remove_in_buffer
      Src: /src/unbound/services/listen_dnsport.c:4000,1
    - Dst: doq_stream_remove_out_buffer
      Src: /src/unbound/services/listen_dnsport.c:4001,1
    - Dst: doq_table_quic_size_subtract
      Src: /src/unbound/services/listen_dnsport.c:4002,1
    - Dst: doq_conn_del_stream
      Src: /src/unbound/services/listen_dnsport.c:4003,1
    - Dst: doq_stream_delete
      Src: /src/unbound/services/listen_dnsport.c:4004,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 3
    argNames:
    - conn
    - stream
    - send_shutdown
    argTypes:
    - struct doq_conn*
    - struct doq_stream*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4006
      start: 3968
    functionDepth: 2
    functionLinenumber: 3968
    functionLinenumberEnd: 4006
    functionName: doq_stream_close
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - log_err
    - doq_stream_remove_out_buffer
    - doq_conn_del_stream
    - doq_table_quic_size_subtract
    - verbose
    - ngtcp2_strerror
    - doq_stream_remove_in_buffer
    - ngtcp2_conn_shutdown_stream
    - doq_stream_off_write_list
    - mesh_state_remove_reply
    - doq_stream_delete
    - ngtcp2_conn_extend_max_streams_bidi
    - doq_conn_write_enable
    linkageType: ''
    returnType: int
    signature: "int doq_stream_close(struct doq_conn* conn, struct doq_stream* stream,\n\tint
      send_shutdown)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:4015,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/listen_dnsport.c:4020,1
    - Dst: doq_table_quic_size_available
      Src: /src/unbound/services/listen_dnsport.c:4021,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4023,1
    - Dst: htons
      Src: /src/unbound/services/listen_dnsport.c:4029,1
    - Dst: memdup
      Src: /src/unbound/services/listen_dnsport.c:4030,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/listen_dnsport.c:4030,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/listen_dnsport.c:4030,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4032,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 3
    argNames:
    - conn
    - stream
    - buf
    argTypes:
    - struct doq_conn*
    - struct doq_stream*
    - struct sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4036
      start: 4009
    functionDepth: 2
    functionLinenumber: 4009
    functionLinenumberEnd: 4036
    functionName: doq_stream_pickup_answer
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - log_err
    - verbose
    - sldns_buffer_limit
    - free
    - htons
    - sldns_buffer_begin
    - doq_table_quic_size_available
    - memdup
    linkageType: ''
    returnType: int
    signature: "int doq_stream_pickup_answer(struct doq_conn* conn, struct doq_stream*
      stream,\n\tstruct sldns_buffer* buf)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/services/listen_dnsport.c:4043,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/listen_dnsport.c:4043,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/listen_dnsport.c:4044,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4045,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:4047,1
    - Dst: doq_table_quic_size_subtract
      Src: /src/unbound/services/listen_dnsport.c:4050,1
    - Dst: doq_stream_pickup_answer
      Src: /src/unbound/services/listen_dnsport.c:4052,1
    - Dst: doq_table_quic_size_add
      Src: /src/unbound/services/listen_dnsport.c:4054,1
    - Dst: doq_stream_on_write_list
      Src: /src/unbound/services/listen_dnsport.c:4055,1
    - Dst: doq_conn_write_enable
      Src: /src/unbound/services/listen_dnsport.c:4056,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - conn
    - stream
    - buf
    argTypes:
    - struct doq_conn*
    - struct doq_stream*
    - struct sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4058
      start: 4038
    functionDepth: 3
    functionLinenumber: 4038
    functionLinenumberEnd: 4058
    functionName: doq_stream_send_reply
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_table_quic_size_subtract
    - verbose
    - sldns_wire2str_pkt
    - sldns_buffer_limit
    - doq_table_quic_size_add
    - doq_stream_on_write_list
    - free
    - doq_conn_write_enable
    - sldns_buffer_begin
    - doq_stream_pickup_answer
    linkageType: ''
    returnType: int
    signature: "int doq_stream_send_reply(struct doq_conn* conn, struct doq_stream*
      stream,\n\tstruct sldns_buffer* buf)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - stream
    - mesh
    - m
    argTypes:
    - struct doq_stream*
    - struct mesh_area*
    - struct mesh_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4071
      start: 4061
    functionDepth: 0
    functionLinenumber: 4061
    functionLinenumberEnd: 4071
    functionName: doq_stream_add_meshstate
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void doq_stream_add_meshstate(struct doq_stream* stream,\n\tstruct
      mesh_area* mesh, struct mesh_state* m)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - stream
    argTypes:
    - struct doq_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4083
      start: 4073
    functionDepth: 0
    functionLinenumber: 4073
    functionLinenumberEnd: 4083
    functionName: doq_stream_remove_mesh_state
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doq_stream_remove_mesh_state(struct doq_stream* stream)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4093,1
    - Dst: doq_table_quic_size_available
      Src: /src/unbound/services/listen_dnsport.c:4097,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4099,1
    - Dst: calloc
      Src: /src/unbound/services/listen_dnsport.c:4102,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4104,1
    - Dst: doq_table_quic_size_add
      Src: /src/unbound/services/listen_dnsport.c:4108,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - conn
    - stream
    - table
    argTypes:
    - struct doq_conn*
    - struct doq_stream*
    - struct doq_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4110
      start: 4088
    functionDepth: 1
    functionLinenumber: 4088
    functionLinenumberEnd: 4110
    functionName: doq_stream_datalen_complete
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - log_err
    - verbose
    - doq_table_quic_size_add
    - calloc
    - doq_table_quic_size_available
    linkageType: ''
    returnType: int
    signature: "int doq_stream_datalen_complete(struct doq_conn* conn, struct doq_stream*
      stream,\n\tstruct doq_table* table)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/services/listen_dnsport.c:4118,1
    - Dst: addr_to_str
      Src: /src/unbound/services/listen_dnsport.c:4120,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4122,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:4124,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4129,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/listen_dnsport.c:4132,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4133,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/listen_dnsport.c:4136,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/services/listen_dnsport.c:4137,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/listen_dnsport.c:4138,1
    - Dst: doq_conn_key_store_repinfo
      Src: /src/unbound/services/listen_dnsport.c:4140,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4141,1
    - Dst: fptr_ok
      Src: /src/unbound/services/listen_dnsport.c:4148,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/services/listen_dnsport.c:4148,1
    - Dst: doq_stream_send_reply
      Src: /src/unbound/services/listen_dnsport.c:4151,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4152,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 2
    argNames:
    - conn
    - stream
    argTypes:
    - struct doq_conn*
    - struct doq_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4159
      start: 4113
    functionDepth: 5
    functionLinenumber: 4113
    functionLinenumberEnd: 4159
    functionName: doq_stream_data_complete
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - addr_to_str
    - doq_stream_send_reply
    - sldns_buffer_write
    - verbose
    - doq_conn_key_store_repinfo
    - sldns_wire2str_pkt
    - sldns_buffer_flip
    - sldns_buffer_clear
    - fptr_ok
    - free
    - fptr_whitelist_comm_point
    linkageType: ''
    returnType: int
    signature: int doq_stream_data_complete(struct doq_conn* conn, struct doq_stream*
      stream)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/services/listen_dnsport.c:4179,1
    - Dst: ntohs
      Src: /src/unbound/services/listen_dnsport.c:4185,1
    - Dst: doq_stream_datalen_complete
      Src: /src/unbound/services/listen_dnsport.c:4186,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4198,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4205,1
    - Dst: memmove
      Src: /src/unbound/services/listen_dnsport.c:4209,1
    - Dst: log_hex
      Src: /src/unbound/services/listen_dnsport.c:4219,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4225,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 51
    argCount: 6
    argNames:
    - conn
    - stream
    - data
    - datalen
    - recv_done
    - table
    argTypes:
    - struct doq_conn*
    - struct doq_stream*
    - uint8_t*
    - size_t
    - int*
    - struct doq_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4232
      start: 4162
    functionDepth: 2
    functionLinenumber: 4162
    functionLinenumberEnd: 4232
    functionName: doq_stream_recv_data
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_stream_datalen_complete
    - memmove
    - verbose
    - log_hex
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int doq_stream_recv_data(struct doq_conn* conn, struct doq_stream*
      stream,\n\tconst uint8_t* data, size_t datalen, int* recv_done,\n\tstruct doq_table*
      table)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4240,1
    - Dst: doq_stream_close
      Src: /src/unbound/services/listen_dnsport.c:4243,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - conn
    - stream
    - recv_done
    argTypes:
    - struct doq_conn*
    - struct doq_stream*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4247
      start: 4235
    functionDepth: 3
    functionLinenumber: 4235
    functionLinenumberEnd: 4247
    functionName: doq_stream_recv_fin
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - verbose
    - doq_stream_close
    linkageType: ''
    returnType: int
    signature: "int doq_stream_recv_fin(struct doq_conn* conn, struct doq_stream*
      stream, int\n\trecv_done)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ub_random
      Src: /src/unbound/services/listen_dnsport.c:4253,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - rnd
    - buf
    - len
    argTypes:
    - struct ub_randstate*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4254
      start: 4249
    functionDepth: 1
    functionLinenumber: 4249
    functionLinenumberEnd: 4254
    functionName: doq_fill_rand
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - ub_random
    linkageType: ''
    returnType: void
    signature: void doq_fill_rand(struct ub_randstate* rnd, uint8_t* buf, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doq_fill_rand
      Src: /src/unbound/services/listen_dnsport.c:4265,1
    - Dst: doq_conid_find
      Src: /src/unbound/services/listen_dnsport.c:4266,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4271,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - conn
    - data
    - datalen
    argTypes:
    - struct doq_conn*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4275
      start: 4258
    functionDepth: 2
    functionLinenumber: 4258
    functionLinenumberEnd: 4275
    functionName: doq_conn_generate_new_conid
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_conid_find
    - verbose
    - doq_fill_rand
    linkageType: ''
    returnType: int
    signature: "int doq_conn_generate_new_conid(struct doq_conn* conn, uint8_t* data,\n\tsize_t
      datalen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doq_fill_rand
      Src: /src/unbound/services/listen_dnsport.c:4283,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dest
    - destlen
    - rand_ctx
    argTypes:
    - uint8_t*
    - size_t
    - ngtcp2_rand_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4284
      start: 4278
    functionDepth: 2
    functionLinenumber: 4278
    functionLinenumberEnd: 4284
    functionName: doq_rand_cb
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_fill_rand
    linkageType: ''
    returnType: void
    signature: void doq_rand_cb(uint8_t* dest, size_t destlen, const ngtcp2_rand_ctx*
      rand_ctx)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/listen_dnsport.c:4295,1
    - Dst: doq_conn_generate_new_conid
      Src: /src/unbound/services/listen_dnsport.c:4296,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/listen_dnsport.c:4297,1
    - Dst: ngtcp2_crypto_generate_stateless_reset_token
      Src: /src/unbound/services/listen_dnsport.c:4301,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/listen_dnsport.c:4304,1
    - Dst: doq_conn_associate_conid
      Src: /src/unbound/services/listen_dnsport.c:4307,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/listen_dnsport.c:4308,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/listen_dnsport.c:4311,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 5
    argNames:
    - ATTR_UNUSED(conn)
    - cid
    - token
    - cidlen
    - user_data
    argTypes:
    - ngtcp2_conn*
    - ngtcp2_cid*
    - uint8_t*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4313
      start: 4287
    functionDepth: 3
    functionLinenumber: 4287
    functionLinenumberEnd: 4313
    functionName: doq_get_new_connection_id_cb
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_conn_associate_conid
    - doq_conn_generate_new_conid
    - lock_rw_wrlock
    - lock_rw_unlock
    - ngtcp2_crypto_generate_stateless_reset_token
    linkageType: ''
    returnType: int
    signature: "int doq_get_new_connection_id_cb(ngtcp2_conn* ATTR_UNUSED(conn), ngtcp2_cid*
      cid,\n\tuint8_t* token, size_t cidlen, void* user_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/listen_dnsport.c:4321,1
    - Dst: doq_conn_dissociate_conid
      Src: /src/unbound/services/listen_dnsport.c:4322,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/listen_dnsport.c:4323,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - ATTR_UNUSED(conn)
    - cid
    - user_data
    argTypes:
    - ngtcp2_conn*
    - ngtcp2_cid*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4325
      start: 4316
    functionDepth: 1
    functionLinenumber: 4316
    functionLinenumberEnd: 4325
    functionName: doq_remove_connection_id_cb
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - doq_conn_dissociate_conid
    linkageType: ''
    returnType: int
    signature: "int doq_remove_connection_id_cb(ngtcp2_conn* ATTR_UNUSED(conn),\n\tconst
      ngtcp2_cid* cid, void* user_data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ngtcp2_conn_get_path
      Src: /src/unbound/services/listen_dnsport.c:4334,1
    - Dst: ngtcp2_crypto_generate_regular_token
      Src: /src/unbound/services/listen_dnsport.c:4336,1
    - Dst: doq_get_timestamp_nanosec
      Src: /src/unbound/services/listen_dnsport.c:4339,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4341,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4345,1
    - Dst: ngtcp2_conn_submit_new_token
      Src: /src/unbound/services/listen_dnsport.c:4346,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4348,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/services/listen_dnsport.c:4349,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doq_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4353
      start: 4328
    functionDepth: 1
    functionLinenumber: 4328
    functionLinenumberEnd: 4353
    functionName: doq_submit_new_token
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - log_err
    - doq_get_timestamp_nanosec
    - ngtcp2_crypto_generate_regular_token
    - verbose
    - ngtcp2_strerror
    - ngtcp2_conn_get_path
    - ngtcp2_conn_submit_new_token
    linkageType: ''
    returnType: int
    signature: int doq_submit_new_token(struct doq_conn* conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4360,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4361,1
    - Dst: ngtcp2_conn_get_max_data_left
      Src: /src/unbound/services/listen_dnsport.c:4362,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4364,1
    - Dst: ngtcp2_conn_get_max_local_streams_uni
      Src: /src/unbound/services/listen_dnsport.c:4365,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4367,1
    - Dst: ngtcp2_conn_get_streams_uni_left
      Src: /src/unbound/services/listen_dnsport.c:4368,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4369,1
    - Dst: ngtcp2_conn_get_streams_bidi_left
      Src: /src/unbound/services/listen_dnsport.c:4370,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4371,1
    - Dst: SSL_get_cipher_name
      Src: /src/unbound/services/listen_dnsport.c:4372,1
    - Dst: SSL_get0_alpn_selected
      Src: /src/unbound/services/listen_dnsport.c:4377,1
    - Dst: memmove
      Src: /src/unbound/services/listen_dnsport.c:4380,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4382,1
    - Dst: doq_submit_new_token
      Src: /src/unbound/services/listen_dnsport.c:4385,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - ATTR_UNUSED(conn)
    - user_data
    argTypes:
    - ngtcp2_conn*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4388
      start: 4356
    functionDepth: 2
    functionLinenumber: 4356
    functionLinenumberEnd: 4388
    functionName: doq_handshake_completed_cb
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - ngtcp2_conn_get_max_data_left
    - SSL_get_cipher_name
    - SSL_get0_alpn_selected
    - ngtcp2_conn_get_max_local_streams_uni
    - doq_submit_new_token
    - memmove
    - ngtcp2_conn_get_streams_uni_left
    - verbose
    - ngtcp2_conn_get_streams_bidi_left
    linkageType: ''
    returnType: int
    signature: int doq_handshake_completed_cb(ngtcp2_conn* ATTR_UNUSED(conn), void*
      user_data)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4397,1
    - Dst: doq_stream_find
      Src: /src/unbound/services/listen_dnsport.c:4398,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4399,1
    - Dst: doq_table_quic_size_available
      Src: /src/unbound/services/listen_dnsport.c:4402,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4408,1
    - Dst: ngtcp2_conn_shutdown_stream
      Src: /src/unbound/services/listen_dnsport.c:4409,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4415,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/services/listen_dnsport.c:4416,1
    - Dst: doq_stream_create
      Src: /src/unbound/services/listen_dnsport.c:4421,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4423,1
    - Dst: doq_table_quic_size_add
      Src: /src/unbound/services/listen_dnsport.c:4426,1
    - Dst: doq_conn_add_stream
      Src: /src/unbound/services/listen_dnsport.c:4427,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - ATTR_UNUSED(conn)
    - stream_id
    - user_data
    argTypes:
    - ngtcp2_conn*
    - int64_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4429
      start: 4391
    functionDepth: 2
    functionLinenumber: 4391
    functionLinenumberEnd: 4429
    functionName: doq_stream_open_cb
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - log_err
    - doq_conn_add_stream
    - verbose
    - doq_stream_find
    - doq_stream_create
    - doq_table_quic_size_add
    - ngtcp2_strerror
    - ngtcp2_conn_shutdown_stream
    - doq_table_quic_size_available
    linkageType: ''
    returnType: int
    signature: "int doq_stream_open_cb(ngtcp2_conn* ATTR_UNUSED(conn), int64_t stream_id,\n\tvoid*
      user_data)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4440,1
    - Dst: NGTCP2_STREAM_DATA_FLAG_0RTT
      Src: /src/unbound/services/listen_dnsport.c:4443,1
    - Dst: doq_stream_find
      Src: /src/unbound/services/listen_dnsport.c:4449,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4451,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4456,1
    - Dst: doq_stream_recv_data
      Src: /src/unbound/services/listen_dnsport.c:4460,1
    - Dst: doq_stream_recv_fin
      Src: /src/unbound/services/listen_dnsport.c:4465,1
    - Dst: ngtcp2_conn_extend_max_stream_offset
      Src: /src/unbound/services/listen_dnsport.c:4468,1
    - Dst: ngtcp2_conn_extend_max_offset
      Src: /src/unbound/services/listen_dnsport.c:4470,1
    - Dst: doq_stream_data_complete
      Src: /src/unbound/services/listen_dnsport.c:4472,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 26
    argCount: 8
    argNames:
    - ATTR_UNUSED(conn)
    - flags
    - stream_id
    - offset
    - data
    - datalen
    - user_data
    - ATTR_UNUSED(stream_user_data)
    argTypes:
    - ngtcp2_conn*
    - uint32_t
    - int64_t
    - uint64_t
    - uint8_t*
    - size_t
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4476
      start: 4432
    functionDepth: 6
    functionLinenumber: 4432
    functionLinenumberEnd: 4476
    functionName: doq_recv_stream_data_cb
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - ngtcp2_conn_extend_max_offset
    - doq_stream_data_complete
    - verbose
    - doq_stream_recv_fin
    - ngtcp2_conn_extend_max_stream_offset
    - doq_stream_recv_data
    - doq_stream_find
    - NGTCP2_STREAM_DATA_FLAG_0RTT
    linkageType: ''
    returnType: int
    signature: "int doq_recv_stream_data_cb(ngtcp2_conn* ATTR_UNUSED(conn), uint32_t
      flags,\n\tint64_t stream_id, uint64_t offset, const uint8_t* data,\n\tsize_t
      datalen, void* user_data, void* ATTR_UNUSED(stream_user_data))"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4487,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4493,1
    - Dst: doq_stream_find
      Src: /src/unbound/services/listen_dnsport.c:4496,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4498,1
    - Dst: doq_stream_close
      Src: /src/unbound/services/listen_dnsport.c:4502,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 6
    argNames:
    - ATTR_UNUSED(conn)
    - flags
    - stream_id
    - app_error_code
    - user_data
    - ATTR_UNUSED(stream_user_data)
    argTypes:
    - ngtcp2_conn*
    - uint32_t
    - int64_t
    - uint64_t
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4505
      start: 4479
    functionDepth: 3
    functionLinenumber: 4479
    functionLinenumberEnd: 4505
    functionName: doq_stream_close_cb
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - verbose
    - doq_stream_close
    - doq_stream_find
    linkageType: ''
    returnType: int
    signature: "int doq_stream_close_cb(ngtcp2_conn* ATTR_UNUSED(conn), uint32_t flags,\n\tint64_t
      stream_id, uint64_t app_error_code, void* user_data,\n\tvoid* ATTR_UNUSED(stream_user_data))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4515,1
    - Dst: doq_stream_find
      Src: /src/unbound/services/listen_dnsport.c:4519,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4521,1
    - Dst: doq_stream_close
      Src: /src/unbound/services/listen_dnsport.c:4525,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 6
    argNames:
    - ATTR_UNUSED(conn)
    - stream_id
    - final_size
    - app_error_code
    - user_data
    - ATTR_UNUSED(stream_user_data)
    argTypes:
    - ngtcp2_conn*
    - int64_t
    - uint64_t
    - uint64_t
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4528
      start: 4508
    functionDepth: 3
    functionLinenumber: 4508
    functionLinenumberEnd: 4528
    functionName: doq_stream_reset_cb
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - verbose
    - doq_stream_close
    - doq_stream_find
    linkageType: ''
    returnType: int
    signature: "int doq_stream_reset_cb(ngtcp2_conn* ATTR_UNUSED(conn), int64_t stream_id,\n\tuint64_t
      final_size, uint64_t app_error_code, void* user_data,\n\tvoid* ATTR_UNUSED(stream_user_data))"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4537,1
    - Dst: doq_stream_find
      Src: /src/unbound/services/listen_dnsport.c:4541,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4543,1
    - Dst: doq_stream_on_write_list
      Src: /src/unbound/services/listen_dnsport.c:4548,1
    - Dst: doq_conn_write_enable
      Src: /src/unbound/services/listen_dnsport.c:4549,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 5
    argNames:
    - ATTR_UNUSED(conn)
    - stream_id
    - max_data
    - user_data
    - ATTR_UNUSED(stream_user_data)
    argTypes:
    - ngtcp2_conn*
    - int64_t
    - uint64_t
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4551
      start: 4531
    functionDepth: 2
    functionLinenumber: 4531
    functionLinenumberEnd: 4551
    functionName: doq_extend_max_stream_data_cb
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - verbose
    - doq_conn_write_enable
    - doq_stream_on_write_list
    - doq_stream_find
    linkageType: ''
    returnType: int
    signature: "int doq_extend_max_stream_data_cb(ngtcp2_conn* ATTR_UNUSED(conn),\n\tint64_t
      stream_id, uint64_t max_data, void* user_data,\n\tvoid* ATTR_UNUSED(stream_user_data))"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4561,1
    - Dst: doq_stream_find
      Src: /src/unbound/services/listen_dnsport.c:4564,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4566,1
    - Dst: doq_stream_remove_in_buffer
      Src: /src/unbound/services/listen_dnsport.c:4574,1
    - Dst: doq_stream_remove_out_buffer
      Src: /src/unbound/services/listen_dnsport.c:4576,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 6
    argNames:
    - ATTR_UNUSED(conn)
    - stream_id
    - offset
    - datalen
    - user_data
    - ATTR_UNUSED(stream_user_data)
    argTypes:
    - ngtcp2_conn*
    - int64_t
    - uint64_t
    - uint64_t
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4580
      start: 4554
    functionDepth: 2
    functionLinenumber: 4554
    functionLinenumberEnd: 4580
    functionName: doq_acked_stream_data_offset_cb
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - verbose
    - doq_stream_remove_in_buffer
    - doq_stream_remove_out_buffer
    - doq_stream_find
    linkageType: ''
    returnType: int
    signature: "int doq_acked_stream_data_offset_cb(ngtcp2_conn* ATTR_UNUSED(conn),\n\tint64_t
      stream_id, uint64_t offset, uint64_t datalen, void* user_data,\n\tvoid* ATTR_UNUSED(stream_user_data))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/services/listen_dnsport.c:4588,1
    - Dst: vsnprintf
      Src: /src/unbound/services/listen_dnsport.c:4589,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4590,1
    - Dst: va_end
      Src: /src/unbound/services/listen_dnsport.c:4591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - ATTR_UNUSED(user_data)
    - fmt
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4592
      start: 4583
    functionDepth: 5
    functionLinenumber: 4583
    functionLinenumberEnd: 4592
    functionName: doq_log_printf_cb
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - verbose
    - vsnprintf
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: void doq_log_printf_cb(void* ATTR_UNUSED(user_data), const char* fmt,
      ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4599,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4602,1
    - Dst: ngtcp2_conn_get_max_data_left
      Src: /src/unbound/services/listen_dnsport.c:4603,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4605,1
    - Dst: ngtcp2_conn_get_max_local_streams_uni
      Src: /src/unbound/services/listen_dnsport.c:4606,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4608,1
    - Dst: ngtcp2_conn_get_streams_uni_left
      Src: /src/unbound/services/listen_dnsport.c:4609,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4610,1
    - Dst: ngtcp2_conn_get_streams_bidi_left
      Src: /src/unbound/services/listen_dnsport.c:4611,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doq_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4613
      start: 4596
    functionDepth: 1
    functionLinenumber: 4596
    functionLinenumberEnd: 4613
    functionName: doq_application_tx_key_cb
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - ngtcp2_conn_get_max_data_left
    - ngtcp2_conn_get_max_local_streams_uni
    - ngtcp2_conn_get_streams_uni_left
    - verbose
    - ngtcp2_conn_get_streams_bidi_left
    linkageType: ''
    returnType: int
    signature: int doq_application_tx_key_cb(struct doq_conn* conn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_app_data
      Src: /src/unbound/services/listen_dnsport.c:4621,1
    - Dst: ngtcp2_crypto_ossl_from_ossl_encryption_level
      Src: /src/unbound/services/listen_dnsport.c:4629,1
    - Dst: ngtcp2_crypto_quictls_from_ossl_encryption_level
      Src: /src/unbound/services/listen_dnsport.c:4631,1
    - Dst: ngtcp2_crypto_openssl_from_ossl_encryption_level
      Src: /src/unbound/services/listen_dnsport.c:4633,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4637,1
    - Dst: ngtcp2_crypto_derive_and_install_rx_key
      Src: /src/unbound/services/listen_dnsport.c:4638,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4641,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4648,1
    - Dst: ngtcp2_crypto_derive_and_install_tx_key
      Src: /src/unbound/services/listen_dnsport.c:4649,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4652,1
    - Dst: doq_application_tx_key_cb
      Src: /src/unbound/services/listen_dnsport.c:4657,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 5
    argNames:
    - ssl
    - ossl_level
    - read_secret
    - write_secret
    - secret_len
    argTypes:
    - SSL*
    - OSSL_ENCRYPTION_LEVEL
    - uint8_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4662
      start: 4616
    functionDepth: 2
    functionLinenumber: 4616
    functionLinenumberEnd: 4662
    functionName: doq_set_encryption_secrets
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - log_err
    - ngtcp2_crypto_quictls_from_ossl_encryption_level
    - verbose
    - SSL_get_app_data
    - ngtcp2_crypto_derive_and_install_tx_key
    - ngtcp2_crypto_derive_and_install_rx_key
    - ngtcp2_crypto_ossl_from_ossl_encryption_level
    - doq_application_tx_key_cb
    - ngtcp2_crypto_openssl_from_ossl_encryption_level
    linkageType: ''
    returnType: int
    signature: "int doq_set_encryption_secrets(SSL *ssl, OSSL_ENCRYPTION_LEVEL ossl_level,\n\tconst
      uint8_t *read_secret, const uint8_t *write_secret,\n\tsize_t secret_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_app_data
      Src: /src/unbound/services/listen_dnsport.c:4669,1
    - Dst: ngtcp2_crypto_ossl_from_ossl_encryption_level
      Src: /src/unbound/services/listen_dnsport.c:4677,1
    - Dst: ngtcp2_crypto_quictls_from_ossl_encryption_level
      Src: /src/unbound/services/listen_dnsport.c:4679,1
    - Dst: ngtcp2_crypto_openssl_from_ossl_encryption_level
      Src: /src/unbound/services/listen_dnsport.c:4681,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4685,1
    - Dst: ngtcp2_conn_submit_crypto_data
      Src: /src/unbound/services/listen_dnsport.c:4687,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4689,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/services/listen_dnsport.c:4690,1
    - Dst: ngtcp2_conn_set_tls_error
      Src: /src/unbound/services/listen_dnsport.c:4691,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 4
    argNames:
    - ssl
    - ossl_level
    - data
    - len
    argTypes:
    - SSL*
    - OSSL_ENCRYPTION_LEVEL
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4695
      start: 4665
    functionDepth: 1
    functionLinenumber: 4665
    functionLinenumberEnd: 4695
    functionName: doq_add_handshake_data
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - log_err
    - ngtcp2_crypto_quictls_from_ossl_encryption_level
    - verbose
    - SSL_get_app_data
    - ngtcp2_conn_set_tls_error
    - ngtcp2_strerror
    - ngtcp2_conn_submit_crypto_data
    - ngtcp2_crypto_ossl_from_ossl_encryption_level
    - ngtcp2_crypto_openssl_from_ossl_encryption_level
    linkageType: ''
    returnType: int
    signature: "int doq_add_handshake_data(SSL *ssl, OSSL_ENCRYPTION_LEVEL ossl_level,\n\tconst
      uint8_t *data, size_t len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(ssl)
    argTypes:
    - SSL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4702
      start: 4698
    functionDepth: 0
    functionLinenumber: 4698
    functionLinenumberEnd: 4702
    functionName: doq_flush_flight
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int doq_flush_flight(SSL* ATTR_UNUSED(ssl))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_app_data
      Src: /src/unbound/services/listen_dnsport.c:4709,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ssl
    - ATTR_UNUSED
    - alert
    argTypes:
    - SSL*
    - enum ssl_encryption_level_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4712
      start: 4705
    functionDepth: 0
    functionLinenumber: 4705
    functionLinenumberEnd: 4712
    functionName: doq_send_alert
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - SSL_get_app_data
    linkageType: ''
    returnType: int
    signature: "int doq_send_alert(SSL *ssl, enum ssl_encryption_level_t ATTR_UNUSED(level),\n\tuint8_t
      alert)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_select_next_proto
      Src: /src/unbound/services/listen_dnsport.c:4722,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:4726,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - ATTR_UNUSED(ssl)
    - out
    - outlen
    - in
    - inlen
    - ATTR_UNUSED(arg)
    argTypes:
    - SSL*
    - unsigned char**
    - unsigned char*
    - unsigned char*
    - unsigned int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4729
      start: 4716
    functionDepth: 1
    functionLinenumber: 4716
    functionLinenumberEnd: 4729
    functionName: doq_alpn_select_cb
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - SSL_select_next_proto
    - verbose
    linkageType: ''
    returnType: int
    signature: "int doq_alpn_select_cb(SSL* ATTR_UNUSED(ssl), const unsigned char**
      out,\n\tunsigned char* outlen, const unsigned char* in, unsigned int inlen,\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_new
      Src: /src/unbound/services/listen_dnsport.c:4738,1
    - Dst: TLS_server_method
      Src: /src/unbound/services/listen_dnsport.c:4738,1
    - Dst: log_crypto_err
      Src: /src/unbound/services/listen_dnsport.c:4740,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4744,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/services/listen_dnsport.c:4745,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4749,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/services/listen_dnsport.c:4750,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/services/listen_dnsport.c:4753,1
    - Dst: SSL_CTX_set_mode
      Src: /src/unbound/services/listen_dnsport.c:4758,1
    - Dst: SSL_CTX_set_min_proto_version
      Src: /src/unbound/services/listen_dnsport.c:4759,1
    - Dst: SSL_CTX_set_max_proto_version
      Src: /src/unbound/services/listen_dnsport.c:4760,1
    - Dst: SSL_CTX_set_alpn_select_cb
      Src: /src/unbound/services/listen_dnsport.c:4762,1
    - Dst: SSL_CTX_set_default_verify_paths
      Src: /src/unbound/services/listen_dnsport.c:4764,1
    - Dst: SSL_CTX_use_certificate_chain_file
      Src: /src/unbound/services/listen_dnsport.c:4765,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4766,1
    - Dst: log_crypto_err
      Src: /src/unbound/services/listen_dnsport.c:4767,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/services/listen_dnsport.c:4769,1
    - Dst: SSL_CTX_use_PrivateKey_file
      Src: /src/unbound/services/listen_dnsport.c:4772,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4773,1
    - Dst: log_crypto_err
      Src: /src/unbound/services/listen_dnsport.c:4774,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/services/listen_dnsport.c:4775,1
    - Dst: SSL_CTX_check_private_key
      Src: /src/unbound/services/listen_dnsport.c:4778,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4779,1
    - Dst: log_crypto_err
      Src: /src/unbound/services/listen_dnsport.c:4780,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/services/listen_dnsport.c:4781,1
    - Dst: SSL_CTX_set_session_id_context
      Src: /src/unbound/services/listen_dnsport.c:4784,1
    - Dst: strlen
      Src: /src/unbound/services/listen_dnsport.c:4784,1
    - Dst: SSL_CTX_load_verify_locations
      Src: /src/unbound/services/listen_dnsport.c:4786,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4787,1
    - Dst: log_crypto_err
      Src: /src/unbound/services/listen_dnsport.c:4789,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/services/listen_dnsport.c:4791,1
    - Dst: SSL_CTX_set_client_CA_list
      Src: /src/unbound/services/listen_dnsport.c:4794,1
    - Dst: SSL_load_client_CA_file
      Src: /src/unbound/services/listen_dnsport.c:4794,1
    - Dst: SSL_CTX_set_verify
      Src: /src/unbound/services/listen_dnsport.c:4796,1
    - Dst: SSL_CTX_set_max_early_data
      Src: /src/unbound/services/listen_dnsport.c:4801,1
    - Dst: ngtcp2_crypto_quictls_configure_server_context
      Src: /src/unbound/services/listen_dnsport.c:4803,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4804,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/services/listen_dnsport.c:4805,1
    - Dst: calloc
      Src: /src/unbound/services/listen_dnsport.c:4812,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4814,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/services/listen_dnsport.c:4815,1
    - Dst: SSL_CTX_set_quic_method
      Src: /src/unbound/services/listen_dnsport.c:4823,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 73
    argCount: 3
    argNames:
    - key
    - pem
    - verifypem
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4830
      start: 4731
    functionDepth: 1
    functionLinenumber: 4731
    functionLinenumberEnd: 4830
    functionName: quic_sslctx_create
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - SSL_CTX_use_PrivateKey_file
    - SSL_CTX_set_max_proto_version
    - SSL_CTX_set_alpn_select_cb
    - log_err
    - SSL_CTX_new
    - SSL_CTX_set_default_verify_paths
    - calloc
    - strlen
    - SSL_load_client_CA_file
    - SSL_CTX_set_verify
    - ngtcp2_crypto_quictls_configure_server_context
    - SSL_CTX_use_certificate_chain_file
    - SSL_CTX_set_options
    - SSL_CTX_set_quic_method
    - SSL_CTX_set_max_early_data
    - SSL_CTX_set_session_id_context
    - log_crypto_err
    - TLS_server_method
    - SSL_CTX_check_private_key
    - SSL_CTX_load_verify_locations
    - SSL_CTX_free
    - SSL_CTX_set_min_proto_version
    - SSL_CTX_set_mode
    - SSL_CTX_set_client_CA_list
    linkageType: ''
    returnType: void
    signature: void * quic_sslctx_create(char* key, char* pem, char* verifypem)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn_ref
    argTypes:
    - ngtcp2_crypto_conn_ref*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4837
      start: 4833
    functionDepth: 0
    functionLinenumber: 4833
    functionLinenumberEnd: 4837
    functionName: doq_conn_ref_get_conn
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ngtcp2_conn
    signature: ngtcp2_conn * doq_conn_ref_get_conn(ngtcp2_crypto_conn_ref* conn_ref)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SSL_new
      Src: /src/unbound/services/listen_dnsport.c:4846,1
    - Dst: log_crypto_err
      Src: /src/unbound/services/listen_dnsport.c:4848,1
    - Dst: ngtcp2_crypto_ossl_ctx_new
      Src: /src/unbound/services/listen_dnsport.c:4852,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4853,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/services/listen_dnsport.c:4854,1
    - Dst: SSL_free
      Src: /src/unbound/services/listen_dnsport.c:4855,1
    - Dst: ngtcp2_crypto_ossl_ctx_set_ssl
      Src: /src/unbound/services/listen_dnsport.c:4858,1
    - Dst: ngtcp2_crypto_ossl_configure_server_session
      Src: /src/unbound/services/listen_dnsport.c:4859,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4860,1
    - Dst: SSL_free
      Src: /src/unbound/services/listen_dnsport.c:4861,1
    - Dst: SSL_set_app_data
      Src: /src/unbound/services/listen_dnsport.c:4868,1
    - Dst: SSL_set_app_data
      Src: /src/unbound/services/listen_dnsport.c:4870,1
    - Dst: SSL_set_accept_state
      Src: /src/unbound/services/listen_dnsport.c:4872,1
    - Dst: SSL_set_quic_tls_early_data_enabled
      Src: /src/unbound/services/listen_dnsport.c:4874,1
    - Dst: SSL_set_quic_early_data_enabled
      Src: /src/unbound/services/listen_dnsport.c:4876,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - ctx
    - conn
    argTypes:
    - SSL_CTX*
    - struct doq_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4879
      start: 4840
    functionDepth: 1
    functionLinenumber: 4840
    functionLinenumberEnd: 4879
    functionName: doq_ssl_server_setup
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - log_err
    - SSL_set_accept_state
    - ngtcp2_crypto_ossl_ctx_new
    - SSL_set_quic_early_data_enabled
    - SSL_free
    - ngtcp2_crypto_ossl_ctx_set_ssl
    - ngtcp2_strerror
    - log_crypto_err
    - SSL_new
    - SSL_set_quic_tls_early_data_enabled
    - SSL_set_app_data
    - ngtcp2_crypto_ossl_configure_server_session
    linkageType: ''
    returnType: SSL
    signature: 'SSL *

      doq_ssl_server_setup(SSL_CTX* ctx, struct doq_conn* conn)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:4891,1
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:4892,1
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:4893,1
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:4894,1
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:4895,1
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:4896,1
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:4897,1
    - Dst: ngtcp2_cid_init
      Src: /src/unbound/services/listen_dnsport.c:4899,1
    - Dst: ngtcp2_cid_init
      Src: /src/unbound/services/listen_dnsport.c:4900,1
    - Dst: ngtcp2_settings_default
      Src: /src/unbound/services/listen_dnsport.c:4931,1
    - Dst: doq_get_timestamp_nanosec
      Src: /src/unbound/services/listen_dnsport.c:4936,1
    - Dst: ngtcp2_transport_params_default
      Src: /src/unbound/services/listen_dnsport.c:4947,1
    - Dst: ngtcp2_cid_init
      Src: /src/unbound/services/listen_dnsport.c:4959,1
    - Dst: ngtcp2_cid_init
      Src: /src/unbound/services/listen_dnsport.c:4960,1
    - Dst: ngtcp2_cid_init
      Src: /src/unbound/services/listen_dnsport.c:4964,1
    - Dst: doq_fill_rand
      Src: /src/unbound/services/listen_dnsport.c:4970,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/listen_dnsport.c:4973,1
    - Dst: doq_conn_generate_new_conid
      Src: /src/unbound/services/listen_dnsport.c:4974,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/listen_dnsport.c:4975,1
    - Dst: ngtcp2_conn_server_new
      Src: /src/unbound/services/listen_dnsport.c:4979,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/listen_dnsport.c:4983,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4984,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/services/listen_dnsport.c:4985,1
    - Dst: doq_conn_setup_conids
      Src: /src/unbound/services/listen_dnsport.c:4988,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/listen_dnsport.c:4989,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4990,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/listen_dnsport.c:4993,1
    - Dst: doq_ssl_server_setup
      Src: /src/unbound/services/listen_dnsport.c:4994,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:4997,1
    - Dst: ngtcp2_conn_set_tls_native_handle
      Src: /src/unbound/services/listen_dnsport.c:5001,1
    - Dst: ngtcp2_conn_set_tls_native_handle
      Src: /src/unbound/services/listen_dnsport.c:5003,1
    - Dst: doq_conn_write_enable
      Src: /src/unbound/services/listen_dnsport.c:5005,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 91
    argCount: 7
    argNames:
    - conn
    - scid
    - scidlen
    - ocid
    - ocidlen
    - token
    - tokenlen
    argTypes:
    - struct doq_conn*
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5007
      start: 4881
    functionDepth: 3
    functionLinenumber: 4881
    functionLinenumberEnd: 5007
    functionName: doq_conn_setup
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_get_timestamp_nanosec
    - ngtcp2_conn_server_new
    - log_err
    - ngtcp2_cid_init
    - doq_conn_setup_conids
    - doq_conn_generate_new_conid
    - doq_ssl_server_setup
    - lock_rw_wrlock
    - lock_rw_unlock
    - ngtcp2_strerror
    - ngtcp2_transport_params_default
    - ngtcp2_conn_set_tls_native_handle
    - doq_fill_rand
    - memset
    - ngtcp2_settings_default
    - doq_conn_write_enable
    linkageType: ''
    returnType: int
    signature: "int doq_conn_setup(struct doq_conn* conn, uint8_t* scid, size_t scidlen,\n\tuint8_t*
      ocid, size_t ocidlen, const uint8_t* token, size_t tokenlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/listen_dnsport.c:5017,1
    - Dst: rbtree_search
      Src: /src/unbound/services/listen_dnsport.c:5018,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - table
    - data
    - datalen
    argTypes:
    - struct doq_table*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5022
      start: 5009
    functionDepth: 1
    functionLinenumber: 5009
    functionLinenumberEnd: 5022
    functionName: doq_conid_find
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - log_assert
    - rbtree_search
    linkageType: ''
    returnType: struct doq_conid
    signature: 'struct doq_conid *

      doq_conid_find(struct doq_table* table, const uint8_t* data, size_t datalen)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - conid
    argTypes:
    - struct doq_conn*
    - struct doq_conid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5033
      start: 5025
    functionDepth: 0
    functionLinenumber: 5025
    functionLinenumberEnd: 5033
    functionName: doq_conid_list_insert
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doq_conid_list_insert(struct doq_conn* conn, struct doq_conid*
      conid)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - conn
    - conid
    argTypes:
    - struct doq_conn*
    - struct doq_conid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5044
      start: 5036
    functionDepth: 0
    functionLinenumber: 5036
    functionLinenumberEnd: 5044
    functionName: doq_conid_list_remove
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doq_conid_list_remove(struct doq_conn* conn, struct doq_conid*
      conid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/listen_dnsport.c:5051,1
    - Dst: memdup
      Src: /src/unbound/services/listen_dnsport.c:5054,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:5056,1
    - Dst: memdup
      Src: /src/unbound/services/listen_dnsport.c:5062,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:5064,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:5065,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - data
    - datalen
    - key
    argTypes:
    - uint8_t*
    - size_t
    - struct doq_conn_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5069
      start: 5047
    functionDepth: 1
    functionLinenumber: 5047
    functionLinenumberEnd: 5069
    functionName: doq_conid_create
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - free
    - calloc
    - memdup
    linkageType: ''
    returnType: struct doq_conid
    signature: 'struct doq_conid *

      doq_conid_create(uint8_t* data, size_t datalen, struct doq_conn_key* key)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:5076,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:5077,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:5078,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - conid
    argTypes:
    - struct doq_conid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5079
      start: 5071
    functionDepth: 1
    functionLinenumber: 5071
    functionLinenumberEnd: 5079
    functionName: doq_conid_delete
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void doq_conid_delete(struct doq_conid* conid)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/services/listen_dnsport.c:5086,1
    - Dst: memcmp
      Src: /src/unbound/services/listen_dnsport.c:5088,1
    - Dst: memcmp
      Src: /src/unbound/services/listen_dnsport.c:5091,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - conid
    argTypes:
    - struct doq_conn*
    - struct doq_conid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5096
      start: 5082
    functionDepth: 1
    functionLinenumber: 5082
    functionLinenumberEnd: 5096
    functionName: conid_is_for_conn
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int conid_is_for_conn(struct doq_conn* conn, struct doq_conid* conid)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doq_conid_find
      Src: /src/unbound/services/listen_dnsport.c:5102,1
    - Dst: conid_is_for_conn
      Src: /src/unbound/services/listen_dnsport.c:5103,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:5104,1
    - Dst: doq_conid_create
      Src: /src/unbound/services/listen_dnsport.c:5116,1
    - Dst: doq_conid_list_insert
      Src: /src/unbound/services/listen_dnsport.c:5119,1
    - Dst: rbtree_insert
      Src: /src/unbound/services/listen_dnsport.c:5120,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - conn
    - data
    - datalen
    argTypes:
    - struct doq_conn*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5122
      start: 5098
    functionDepth: 2
    functionLinenumber: 5098
    functionLinenumberEnd: 5122
    functionName: doq_conn_associate_conid
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - verbose
    - doq_conid_list_insert
    - doq_conid_find
    - conid_is_for_conn
    - doq_conid_create
    - rbtree_insert
    linkageType: ''
    returnType: int
    signature: int doq_conn_associate_conid(struct doq_conn* conn, uint8_t* data,
      size_t datalen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doq_conid_find
      Src: /src/unbound/services/listen_dnsport.c:5129,1
    - Dst: conid_is_for_conn
      Src: /src/unbound/services/listen_dnsport.c:5130,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/listen_dnsport.c:5133,1
    - Dst: doq_conid_list_remove
      Src: /src/unbound/services/listen_dnsport.c:5135,1
    - Dst: doq_conid_delete
      Src: /src/unbound/services/listen_dnsport.c:5136,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - conn
    - data
    - datalen
    argTypes:
    - struct doq_conn*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5138
      start: 5124
    functionDepth: 2
    functionLinenumber: 5124
    functionLinenumberEnd: 5138
    functionName: doq_conn_dissociate_conid
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - rbtree_delete
    - doq_conid_find
    - conid_is_for_conn
    - doq_conid_delete
    - doq_conid_list_remove
    linkageType: ''
    returnType: void
    signature: "void doq_conn_dissociate_conid(struct doq_conn* conn, const uint8_t*
      data,\n\tsize_t datalen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doq_conn_associate_conid
      Src: /src/unbound/services/listen_dnsport.c:5148,1
    - Dst: doq_conn_associate_conid
      Src: /src/unbound/services/listen_dnsport.c:5152,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - conn
    - scids
    - num_scid
    argTypes:
    - struct doq_conn*
    - struct ngtcp2_cid*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5155
      start: 5142
    functionDepth: 3
    functionLinenumber: 5142
    functionLinenumberEnd: 5155
    functionName: doq_conn_setup_id_array_and_dcid
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_conn_associate_conid
    linkageType: ''
    returnType: int
    signature: "int doq_conn_setup_id_array_and_dcid(struct doq_conn* conn,\n\tstruct
      ngtcp2_cid* scids, size_t num_scid)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ngtcp2_conn_get_scid
      Src: /src/unbound/services/listen_dnsport.c:5162,1
    - Dst: ngtcp2_conn_get_num_scid
      Src: /src/unbound/services/listen_dnsport.c:5164,1
    - Dst: ngtcp2_conn_get_scid
      Src: /src/unbound/services/listen_dnsport.c:5170,1
    - Dst: doq_conn_setup_id_array_and_dcid
      Src: /src/unbound/services/listen_dnsport.c:5171,1
    - Dst: calloc
      Src: /src/unbound/services/listen_dnsport.c:5173,1
    - Dst: ngtcp2_conn_get_scid
      Src: /src/unbound/services/listen_dnsport.c:5177,1
    - Dst: doq_conn_setup_id_array_and_dcid
      Src: /src/unbound/services/listen_dnsport.c:5178,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:5179,1
    - Dst: free
      Src: /src/unbound/services/listen_dnsport.c:5182,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doq_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5185
      start: 5157
    functionDepth: 4
    functionLinenumber: 5157
    functionLinenumberEnd: 5185
    functionName: doq_conn_setup_conids
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - ngtcp2_conn_get_scid
    - ngtcp2_conn_get_num_scid
    - doq_conn_setup_id_array_and_dcid
    - free
    - calloc
    linkageType: ''
    returnType: int
    signature: int doq_conn_setup_conids(struct doq_conn* conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_delete
      Src: /src/unbound/services/listen_dnsport.c:5196,1
    - Dst: doq_conid_delete
      Src: /src/unbound/services/listen_dnsport.c:5197,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doq_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5201
      start: 5187
    functionDepth: 2
    functionLinenumber: 5187
    functionLinenumberEnd: 5201
    functionName: doq_conn_clear_conids
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - rbtree_delete
    - doq_conid_delete
    linkageType: ''
    returnType: void
    signature: void doq_conn_clear_conids(struct doq_conn* conn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:5223,1
    - Dst: gettimeofday
      Src: /src/unbound/services/listen_dnsport.c:5224,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:5225,1
    - Dst: strerror
      Src: /src/unbound/services/listen_dnsport.c:5225,1
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:5226,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5229
      start: 5220
    functionDepth: 1
    functionLinenumber: 5220
    functionLinenumberEnd: 5229
    functionName: doq_get_timevalue
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - memset
    - strerror
    - gettimeofday
    - log_err
    linkageType: ''
    returnType: struct timeval
    signature: struct timeval doq_get_timevalue(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: if
      Src: /src/unbound/services/listen_dnsport.c:5248,1
    - Dst: ngtcp2_conn_in_draining_period
      Src: /src/unbound/services/listen_dnsport.c:5250,1
    - Dst: ngtcp2_conn_is_in_draining_period
      Src: /src/unbound/services/listen_dnsport.c:5252,1
    - Dst: doq_conn_write_disable
      Src: /src/unbound/services/listen_dnsport.c:5255,1
    - Dst: ngtcp2_path_storage_zero
      Src: /src/unbound/services/listen_dnsport.c:5258,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/listen_dnsport.c:5259,1
    - Dst: ngtcp2_conn_write_connection_close
      Src: /src/unbound/services/listen_dnsport.c:5262,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/listen_dnsport.c:5263,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/listen_dnsport.c:5264,1
    - Dst: doq_get_timestamp_nanosec
      Src: /src/unbound/services/listen_dnsport.c:5270,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:5272,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/services/listen_dnsport.c:5273,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/services/listen_dnsport.c:5279,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/listen_dnsport.c:5280,1
    - Dst: memdup
      Src: /src/unbound/services/listen_dnsport.c:5284,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/listen_dnsport.c:5284,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/listen_dnsport.c:5285,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:5287,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/listen_dnsport.c:5290,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 2
    argNames:
    - c
    - conn
    argTypes:
    - struct comm_point*
    - struct doq_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5293
      start: 5232
    functionDepth: 3
    functionLinenumber: 5232
    functionLinenumberEnd: 5293
    functionName: doq_conn_start_closing_period
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_conn_write_disable
    - sldns_buffer_remaining
    - doq_get_timestamp_nanosec
    - log_err
    - if
    - sldns_buffer_flip
    - ngtcp2_conn_in_draining_period
    - sldns_buffer_clear
    - ngtcp2_conn_write_connection_close
    - ngtcp2_strerror
    - sldns_buffer_set_position
    - sldns_buffer_limit
    - sldns_buffer_begin
    - ngtcp2_path_storage_zero
    - memdup
    - ngtcp2_conn_is_in_draining_period
    linkageType: ''
    returnType: int
    signature: int doq_conn_start_closing_period(struct comm_point* c, struct doq_conn*
      conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/listen_dnsport.c:5303,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/listen_dnsport.c:5305,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/services/listen_dnsport.c:5306,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/listen_dnsport.c:5307,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:5308,1
    - Dst: doq_send_pkt
      Src: /src/unbound/services/listen_dnsport.c:5309,1
    - Dst: doq_conn_write_disable
      Src: /src/unbound/services/listen_dnsport.c:5310,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - c
    - conn
    argTypes:
    - struct comm_point*
    - struct doq_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5312
      start: 5296
    functionDepth: 5
    functionLinenumber: 5296
    functionLinenumberEnd: 5312
    functionName: doq_conn_send_close
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - doq_conn_write_disable
    - sldns_buffer_write
    - doq_send_pkt
    - verbose
    - sldns_buffer_flip
    - sldns_buffer_clear
    linkageType: ''
    returnType: int
    signature: int doq_conn_send_close(struct comm_point* c, struct doq_conn* conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: doq_conn_start_closing_period
      Src: /src/unbound/services/listen_dnsport.c:5327,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - c
    - conn
    argTypes:
    - struct comm_point*
    - struct doq_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5338
      start: 5316
    functionDepth: 4
    functionLinenumber: 5316
    functionLinenumberEnd: 5338
    functionName: doq_conn_close_error
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_conn_start_closing_period
    linkageType: ''
    returnType: int
    signature: int doq_conn_close_error(struct comm_point* c, struct doq_conn* conn)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:5352,1
    - Dst: ngtcp2_conn_read_pkt
      Src: /src/unbound/services/listen_dnsport.c:5358,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/listen_dnsport.c:5359,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/listen_dnsport.c:5360,1
    - Dst: doq_get_timestamp_nanosec
      Src: /src/unbound/services/listen_dnsport.c:5361,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:5368,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/services/listen_dnsport.c:5369,1
    - Dst: doq_conn_write_disable
      Src: /src/unbound/services/listen_dnsport.c:5370,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:5373,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/services/listen_dnsport.c:5374,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:5379,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/services/listen_dnsport.c:5380,1
    - Dst: ngtcp2_ccerr_set_tls_alert
      Src: /src/unbound/services/listen_dnsport.c:5398,1
    - Dst: ngtcp2_connection_close_error_set_transport_error_tls_alert
      Src: /src/unbound/services/listen_dnsport.c:5401,1
    - Dst: ngtcp2_ccerr_set_liberr
      Src: /src/unbound/services/listen_dnsport.c:5415,1
    - Dst: ngtcp2_connection_close_error_set_transport_error_liberr
      Src: /src/unbound/services/listen_dnsport.c:5418,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:5423,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/services/listen_dnsport.c:5424,1
    - Dst: doq_conn_close_error
      Src: /src/unbound/services/listen_dnsport.c:5425,1
    - Dst: doq_conn_write_enable
      Src: /src/unbound/services/listen_dnsport.c:5431,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 51
    argCount: 6
    argNames:
    - c
    - paddr
    - conn
    - pi
    - err_retry
    - err_drop
    argTypes:
    - struct comm_point*
    - struct doq_pkt_addr*
    - struct doq_conn*
    - struct ngtcp2_pkt_info*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5433
      start: 5345
    functionDepth: 5
    functionLinenumber: 5345
    functionLinenumberEnd: 5433
    functionName: doq_conn_recv
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_conn_write_disable
    - doq_get_timestamp_nanosec
    - log_err
    - verbose
    - doq_conn_close_error
    - ngtcp2_ccerr_set_tls_alert
    - ngtcp2_connection_close_error_set_transport_error_tls_alert
    - sldns_buffer_limit
    - ngtcp2_strerror
    - ngtcp2_connection_close_error_set_transport_error_liberr
    - sldns_buffer_begin
    - ngtcp2_conn_read_pkt
    - ngtcp2_ccerr_set_liberr
    - memset
    - doq_conn_write_enable
    linkageType: ''
    returnType: int
    signature: "int doq_conn_recv(struct comm_point* c, struct doq_pkt_addr* paddr,\n\tstruct
      doq_conn* conn, struct ngtcp2_pkt_info* pi, int* err_retry,\n\tint* err_drop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: doq_stream_off_write_list
      Src: /src/unbound/services/listen_dnsport.c:5440,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - conn
    - stream
    argTypes:
    - struct doq_conn*
    - struct doq_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5441
      start: 5436
    functionDepth: 1
    functionLinenumber: 5436
    functionLinenumberEnd: 5441
    functionName: doq_stream_write_is_done
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_stream_off_write_list
    linkageType: ''
    returnType: void
    signature: void doq_stream_write_is_done(struct doq_conn* conn, struct doq_stream*
      stream)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: ngtcp2_path_storage_zero
      Src: /src/unbound/services/listen_dnsport.c:5450,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:5463,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:5483,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/listen_dnsport.c:5497,1
    - Dst: ngtcp2_conn_writev_stream
      Src: /src/unbound/services/listen_dnsport.c:5498,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/listen_dnsport.c:5499,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/listen_dnsport.c:5500,1
    - Dst: doq_get_timestamp_nanosec
      Src: /src/unbound/services/listen_dnsport.c:5502,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:5505,1
    - Dst: doq_stream_write_is_done
      Src: /src/unbound/services/listen_dnsport.c:5510,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:5516,1
    - Dst: doq_stream_off_write_list
      Src: /src/unbound/services/listen_dnsport.c:5518,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:5525,1
    - Dst: ngtcp2_ccerr_set_application_error
      Src: /src/unbound/services/listen_dnsport.c:5527,1
    - Dst: ngtcp2_connection_close_error_set_application_error
      Src: /src/unbound/services/listen_dnsport.c:5530,1
    - Dst: doq_conn_close_error
      Src: /src/unbound/services/listen_dnsport.c:5534,1
    - Dst: log_err
      Src: /src/unbound/services/listen_dnsport.c:5541,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/services/listen_dnsport.c:5542,1
    - Dst: ngtcp2_ccerr_set_liberr
      Src: /src/unbound/services/listen_dnsport.c:5544,1
    - Dst: ngtcp2_connection_close_error_set_transport_error_liberr
      Src: /src/unbound/services/listen_dnsport.c:5546,1
    - Dst: doq_conn_close_error
      Src: /src/unbound/services/listen_dnsport.c:5551,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:5557,1
    - Dst: doq_stream_write_is_done
      Src: /src/unbound/services/listen_dnsport.c:5563,1
    - Dst: doq_conn_write_disable
      Src: /src/unbound/services/listen_dnsport.c:5567,1
    - Dst: ngtcp2_conn_update_pkt_tx_time
      Src: /src/unbound/services/listen_dnsport.c:5568,1
    - Dst: doq_get_timestamp_nanosec
      Src: /src/unbound/services/listen_dnsport.c:5569,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/services/listen_dnsport.c:5572,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/listen_dnsport.c:5573,1
    - Dst: doq_send_pkt
      Src: /src/unbound/services/listen_dnsport.c:5574,1
    - Dst: ngtcp2_conn_update_pkt_tx_time
      Src: /src/unbound/services/listen_dnsport.c:5583,1
    - Dst: doq_get_timestamp_nanosec
      Src: /src/unbound/services/listen_dnsport.c:5583,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 100
    argCount: 3
    argNames:
    - c
    - conn
    - err_drop
    argTypes:
    - struct comm_point*
    - struct doq_conn*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5585
      start: 5443
    functionDepth: 5
    functionLinenumber: 5443
    functionLinenumberEnd: 5585
    functionName: doq_conn_write_streams
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_send_pkt
    - ngtcp2_conn_update_pkt_tx_time
    - doq_stream_write_is_done
    - ngtcp2_ccerr_set_application_error
    - ngtcp2_strerror
    - ngtcp2_path_storage_zero
    - ngtcp2_ccerr_set_liberr
    - doq_get_timestamp_nanosec
    - log_err
    - ngtcp2_connection_close_error_set_transport_error_liberr
    - sldns_buffer_begin
    - verbose
    - sldns_buffer_set_position
    - sldns_buffer_remaining
    - doq_conn_write_disable
    - ngtcp2_conn_writev_stream
    - doq_conn_close_error
    - sldns_buffer_flip
    - sldns_buffer_clear
    - doq_stream_off_write_list
    - ngtcp2_connection_close_error_set_application_error
    linkageType: ''
    returnType: int
    signature: "int doq_conn_write_streams(struct comm_point* c, struct doq_conn*
      conn,\n\tint* err_drop)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doq_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5591
      start: 5587
    functionDepth: 0
    functionLinenumber: 5587
    functionLinenumberEnd: 5591
    functionName: doq_conn_write_enable
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doq_conn_write_enable(struct doq_conn* conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doq_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5597
      start: 5593
    functionDepth: 0
    functionLinenumber: 5593
    functionLinenumberEnd: 5597
    functionName: doq_conn_write_disable
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doq_conn_write_disable(struct doq_conn* conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - table
    - conn
    argTypes:
    - struct doq_table*
    - struct doq_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5612
      start: 5600
    functionDepth: 0
    functionLinenumber: 5600
    functionLinenumberEnd: 5612
    functionName: doq_conn_write_list_append
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doq_conn_write_list_append(struct doq_table* table, struct doq_conn*
      conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - table
    - conn
    argTypes:
    - struct doq_table*
    - struct doq_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5628
      start: 5614
    functionDepth: 0
    functionLinenumber: 5614
    functionLinenumberEnd: 5628
    functionName: doq_conn_write_list_remove
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doq_conn_write_list_remove(struct doq_table* table, struct doq_conn*
      conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doq_conn_write_list_append
      Src: /src/unbound/services/listen_dnsport.c:5638,1
    - Dst: doq_conn_write_list_remove
      Src: /src/unbound/services/listen_dnsport.c:5639,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - table
    - conn
    argTypes:
    - struct doq_table*
    - struct doq_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5640
      start: 5630
    functionDepth: 1
    functionLinenumber: 5630
    functionLinenumberEnd: 5640
    functionName: doq_conn_set_write_list
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_conn_write_list_remove
    - doq_conn_write_list_append
    linkageType: ''
    returnType: void
    signature: void doq_conn_set_write_list(struct doq_table* table, struct doq_conn*
      conn)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:5648,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct doq_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5657
      start: 5642
    functionDepth: 0
    functionLinenumber: 5642
    functionLinenumberEnd: 5657
    functionName: doq_table_pop_first
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - lock_basic_lock
    linkageType: ''
    returnType: struct doq_conn
    signature: 'struct doq_conn *

      doq_table_pop_first(struct doq_table* table)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ngtcp2_conn_get_expiry
      Src: /src/unbound/services/listen_dnsport.c:5662,1
    - Dst: doq_get_timestamp_nanosec
      Src: /src/unbound/services/listen_dnsport.c:5663,1
    - Dst: doq_get_timevalue
      Src: /src/unbound/services/listen_dnsport.c:5665,1
    - Dst: memcpy
      Src: /src/unbound/services/listen_dnsport.c:5675,1
    - Dst: memset
      Src: /src/unbound/services/listen_dnsport.c:5678,1
    - Dst: timeval_add
      Src: /src/unbound/services/listen_dnsport.c:5681,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - conn
    - tv
    - ts
    argTypes:
    - struct doq_conn*
    - struct timeval*
    - ngtcp2_tstamp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5692
      start: 5659
    functionDepth: 2
    functionLinenumber: 5659
    functionLinenumberEnd: 5692
    functionName: doq_conn_check_timer
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - ngtcp2_conn_get_expiry
    - doq_get_timestamp_nanosec
    - memcpy
    - timeval_add
    - doq_get_timevalue
    - memset
    linkageType: ''
    returnType: int
    signature: int doq_conn_check_timer(struct doq_conn* conn, struct timeval* tv,
      ngtcp2_tstamp* ts)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addr_to_str
      Src: /src/unbound/services/listen_dnsport.c:5699,1
    - Dst: addr_to_str
      Src: /src/unbound/services/listen_dnsport.c:5701,1
    - Dst: log_info
      Src: /src/unbound/services/listen_dnsport.c:5703,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - conn
    - s
    argTypes:
    - struct doq_conn*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5704
      start: 5695
    functionDepth: 1
    functionLinenumber: 5695
    functionLinenumberEnd: 5704
    functionName: doq_conn_log_line
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - addr_to_str
    - log_info
    linkageType: ''
    returnType: void
    signature: void doq_conn_log_line(struct doq_conn* conn, char* s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: doq_conn_log_line
      Src: /src/unbound/services/listen_dnsport.c:5712,1
    - Dst: ngtcp2_conn_handle_expiry
      Src: /src/unbound/services/listen_dnsport.c:5714,1
    - Dst: doq_get_timestamp_nanosec
      Src: /src/unbound/services/listen_dnsport.c:5714,1
    - Dst: verbose
      Src: /src/unbound/services/listen_dnsport.c:5716,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/services/listen_dnsport.c:5717,1
    - Dst: ngtcp2_ccerr_set_liberr
      Src: /src/unbound/services/listen_dnsport.c:5719,1
    - Dst: ngtcp2_connection_close_error_set_transport_error_liberr
      Src: /src/unbound/services/listen_dnsport.c:5721,1
    - Dst: doq_conn_close_error
      Src: /src/unbound/services/listen_dnsport.c:5724,1
    - Dst: doq_conn_write_enable
      Src: /src/unbound/services/listen_dnsport.c:5730,1
    - Dst: doq_conn_write_streams
      Src: /src/unbound/services/listen_dnsport.c:5731,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - conn
    argTypes:
    - struct doq_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5736
      start: 5706
    functionDepth: 6
    functionLinenumber: 5706
    functionLinenumberEnd: 5736
    functionName: doq_conn_handle_timeout
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 0
    functionsReached:
    - doq_get_timestamp_nanosec
    - verbose
    - doq_conn_close_error
    - ngtcp2_strerror
    - ngtcp2_connection_close_error_set_transport_error_liberr
    - doq_conn_write_enable
    - ngtcp2_conn_handle_expiry
    - doq_conn_write_streams
    - ngtcp2_ccerr_set_liberr
    - doq_conn_log_line
    linkageType: ''
    returnType: int
    signature: int doq_conn_handle_timeout(struct doq_conn* conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:5741,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:5743,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - table
    - add
    argTypes:
    - struct doq_table*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5744
      start: 5738
    functionDepth: 0
    functionLinenumber: 5738
    functionLinenumberEnd: 5744
    functionName: doq_table_quic_size_add
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 3
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: void doq_table_quic_size_add(struct doq_table* table, size_t add)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:5749,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:5753,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - table
    - subtract
    argTypes:
    - struct doq_table*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5754
      start: 5746
    functionDepth: 0
    functionLinenumber: 5746
    functionLinenumberEnd: 5754
    functionName: doq_table_quic_size_subtract
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 6
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: void doq_table_quic_size_subtract(struct doq_table* table, size_t subtract)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:5763,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:5765,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - table
    - cfg
    - mem
    argTypes:
    - struct doq_table*
    - struct config_file*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5770
      start: 5756
    functionDepth: 0
    functionLinenumber: 5756
    functionLinenumberEnd: 5770
    functionName: doq_table_quic_size_available
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 3
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: int
    signature: "int doq_table_quic_size_available(struct doq_table* table,\n\tstruct
      config_file* cfg, size_t mem)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/services/listen_dnsport.c:5777,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/listen_dnsport.c:5779,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct doq_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5781
      start: 5772
    functionDepth: 0
    functionLinenumber: 5772
    functionLinenumberEnd: 5781
    functionName: doq_table_quic_size_get
    functionSourceFile: /src/unbound/services/listen_dnsport.c
    functionUses: 1
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: size_t
    signature: size_t doq_table_quic_size_get(struct doq_table* table)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:112,1
    - Dst: sockaddr_cmp
      Src: /src/unbound/services/outside_network.c:113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 114
    functionName: pending_cmp
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - log_assert
    - sockaddr_cmp
    linkageType: ''
    returnType: int
    signature: int pending_cmp(const void* key1, const void* key2)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:126,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:127,1
    - Dst: memcmp
      Src: /src/unbound/services/outside_network.c:129,1
    - Dst: memcmp
      Src: /src/unbound/services/outside_network.c:131,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/outside_network.c:138,1
    - Dst: edns_opt_list_compare
      Src: /src/unbound/services/outside_network.c:140,1
    - Dst: sockaddr_cmp
      Src: /src/unbound/services/outside_network.c:142,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 143
    functionName: serviced_cmp
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - edns_opt_list_compare
    - query_dname_compare
    - log_assert
    - memcmp
    - sockaddr_cmp
    linkageType: ''
    returnType: int
    signature: int serviced_cmp(const void* key1, const void* key2)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sockaddr_cmp
      Src: /src/unbound/services/outside_network.c:154,1
    - Dst: strcmp
      Src: /src/unbound/services/outside_network.c:171,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 20
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 147
    functionDepth: 1
    functionLinenumber: 147
    functionLinenumberEnd: 177
    functionName: reuse_cmp_addrportssl
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - strcmp
    - sockaddr_cmp
    linkageType: ''
    returnType: int
    signature: int reuse_cmp_addrportssl(const void* key1, const void* key2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reuse_cmp_addrportssl
      Src: /src/unbound/services/outside_network.c:183,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 191
    functionName: reuse_cmp
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - reuse_cmp_addrportssl
    linkageType: ''
    returnType: int
    signature: int reuse_cmp(const void* key1, const void* key2)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 202
    functionName: reuse_id_cmp
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int reuse_id_cmp(const void* key1, const void* key2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/services/outside_network.c:211,1
    - Dst: comm_timer_delete
      Src: /src/unbound/services/outside_network.c:213,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:214,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - w
    argTypes:
    - struct waiting_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 207
    functionDepth: 1
    functionLinenumber: 207
    functionLinenumberEnd: 215
    functionName: waiting_tcp_delete
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - free
    - comm_timer_delete
    linkageType: ''
    returnType: void
    signature: void waiting_tcp_delete(struct waiting_tcp* w)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: addr_is_ip6
      Src: /src/unbound/services/outside_network.c:233,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:239,1
    - Dst: log_addr
      Src: /src/unbound/services/outside_network.c:240,1
    - Dst: sock_close
      Src: /src/unbound/services/outside_network.c:241,1
    - Dst: addr_is_ip6
      Src: /src/unbound/services/outside_network.c:245,1
    - Dst: ub_random_max
      Src: /src/unbound/services/outside_network.c:246,1
    - Dst: ub_random_max
      Src: /src/unbound/services/outside_network.c:249,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:250,1
    - Dst: addr_is_any
      Src: /src/unbound/services/outside_network.c:252,1
    - Dst: addr_is_ip6
      Src: /src/unbound/services/outside_network.c:257,1
    - Dst: bind
      Src: /src/unbound/services/outside_network.c:260,1
    - Dst: WSAGetLastError
      Src: /src/unbound/services/outside_network.c:266,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:268,1
    - Dst: sock_strerror
      Src: /src/unbound/services/outside_network.c:268,1
    - Dst: sock_close
      Src: /src/unbound/services/outside_network.c:269,1
    - Dst: log_addr
      Src: /src/unbound/services/outside_network.c:272,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 3
    argNames:
    - pend
    - w
    - s
    argTypes:
    - struct pending_tcp*
    - struct waiting_tcp*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 226
    functionDepth: 1
    functionLinenumber: 226
    functionLinenumberEnd: 274
    functionName: pick_outgoing_tcp
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - log_err
    - bind
    - ub_random_max
    - sock_close
    - WSAGetLastError
    - log_assert
    - addr_is_ip6
    - sock_strerror
    - log_addr
    - addr_is_any
    linkageType: ''
    returnType: int
    signature: int pick_outgoing_tcp(struct pending_tcp* pend, struct waiting_tcp*
      w, int s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: connect
      Src: /src/unbound/services/outside_network.c:358,1
    - Dst: tcp_connect_errno_needs_log
      Src: /src/unbound/services/outside_network.c:363,1
    - Dst: log_err_addr
      Src: /src/unbound/services/outside_network.c:365,1
    - Dst: strerror
      Src: /src/unbound/services/outside_network.c:366,1
    - Dst: close
      Src: /src/unbound/services/outside_network.c:367,1
    - Dst: WSAGetLastError
      Src: /src/unbound/services/outside_network.c:373,1
    - Dst: WSAGetLastError
      Src: /src/unbound/services/outside_network.c:374,1
    - Dst: closesocket
      Src: /src/unbound/services/outside_network.c:375,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - s
    - addr
    - addrlen
    argTypes:
    - int
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 381
    functionName: outnet_tcp_connect
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - tcp_connect_errno_needs_log
    - WSAGetLastError
    - log_err_addr
    - strerror
    - close
    - connect
    - closesocket
    linkageType: ''
    returnType: int
    signature: int outnet_tcp_connect(int s, struct sockaddr_storage* addr, socklen_t
      addrlen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: addr_to_str
      Src: /src/unbound/services/outside_network.c:392,1
    - Dst: ntohs
      Src: /src/unbound/services/outside_network.c:393,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:394,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - v
    - msg
    - reuse
    argTypes:
    - enum verbosity_value
    - char*
    - struct reuse_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 396
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 396
    functionName: log_reuse_tcp
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - verbose
    - addr_to_str
    - ntohs
    linkageType: ''
    returnType: void
    signature: void log_reuse_tcp(enum verbosity_value v, const char* msg, struct
      reuse_tcp* reuse)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:405,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:406,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - reuse
    argTypes:
    - struct reuse_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 415
      start: 399
    functionDepth: 1
    functionLinenumber: 399
    functionLinenumberEnd: 415
    functionName: reuse_write_wait_pop
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: struct waiting_tcp
    signature: 'struct waiting_tcp *

      reuse_write_wait_pop(struct reuse_tcp* reuse)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:421,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:422,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:430,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:435,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 2
    argNames:
    - reuse
    - w
    argTypes:
    - struct reuse_tcp*
    - struct waiting_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 418
    functionDepth: 1
    functionLinenumber: 418
    functionLinenumberEnd: 440
    functionName: reuse_write_wait_remove
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void reuse_write_wait_remove(struct reuse_tcp* reuse, struct waiting_tcp*
      w)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:447,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:450,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - reuse
    - w
    argTypes:
    - struct reuse_tcp*
    - struct waiting_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 443
    functionDepth: 1
    functionLinenumber: 443
    functionLinenumberEnd: 460
    functionName: reuse_write_wait_push_back
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void reuse_write_wait_push_back(struct reuse_tcp* reuse, struct waiting_tcp*
      w)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:469,1
    - Dst: rbtree_insert
      Src: /src/unbound/services/outside_network.c:476,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - reuse
    - w
    argTypes:
    - struct reuse_tcp*
    - struct waiting_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 478
    functionName: reuse_tree_by_id_insert
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - rbtree_insert
    - log_assert
    linkageType: ''
    returnType: void
    signature: void reuse_tree_by_id_insert(struct reuse_tcp* reuse, struct waiting_tcp*
      w)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/outside_network.c:486,1
    - Dst: rbtree_search
      Src: /src/unbound/services/outside_network.c:489,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - reuse
    - id
    argTypes:
    - struct reuse_tcp*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 481
    functionDepth: 1
    functionLinenumber: 481
    functionLinenumberEnd: 492
    functionName: reuse_tcp_by_id_find
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - memset
    - rbtree_search
    linkageType: ''
    returnType: struct waiting_tcp
    signature: 'struct waiting_tcp *

      reuse_tcp_by_id_find(struct reuse_tcp* reuse, uint16_t id)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - node
    argTypes:
    - rbnode_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 500
    functionName: tree_by_id_get_id
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t tree_by_id_get_id(rbnode_type* node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_reuse_tcp
      Src: /src/unbound/services/outside_network.c:506,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:509,1
    - Dst: rbtree_insert
      Src: /src/unbound/services/outside_network.c:515,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:519,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:526,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:528,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:536,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:538,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:540,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 2
    argNames:
    - outnet
    - pend_tcp
    argTypes:
    - struct outside_network*
    - struct pending_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 543
      start: 503
    functionDepth: 2
    functionLinenumber: 503
    functionLinenumberEnd: 543
    functionName: reuse_tcp_insert
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - log_err
    - rbtree_insert
    - log_assert
    - log_reuse_tcp
    linkageType: ''
    returnType: int
    signature: int reuse_tcp_insert(struct outside_network* outnet, struct pending_tcp*
      pend_tcp)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:554,1
    - Dst: memset
      Src: /src/unbound/services/outside_network.c:555,1
    - Dst: memset
      Src: /src/unbound/services/outside_network.c:556,1
    - Dst: memset
      Src: /src/unbound/services/outside_network.c:557,1
    - Dst: memmove
      Src: /src/unbound/services/outside_network.c:568,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:571,1
    - Dst: rbtree_find_less_equal
      Src: /src/unbound/services/outside_network.c:576,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:580,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:581,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:588,1
    - Dst: rbtree_first
      Src: /src/unbound/services/outside_network.c:589,1
    - Dst: reuse_cmp_addrportssl
      Src: /src/unbound/services/outside_network.c:600,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:601,1
    - Dst: rbtree_next
      Src: /src/unbound/services/outside_network.c:602,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:605,1
    - Dst: rbtree_previous
      Src: /src/unbound/services/outside_network.c:611,1
    - Dst: reuse_cmp_addrportssl
      Src: /src/unbound/services/outside_network.c:613,1
    - Dst: rbtree_previous
      Src: /src/unbound/services/outside_network.c:615,1
    - Dst: reuse_cmp_addrportssl
      Src: /src/unbound/services/outside_network.c:620,1
    - Dst: rbtree_next
      Src: /src/unbound/services/outside_network.c:627,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 5
    argNames:
    - outnet
    - addr
    - addrlen
    - use_ssl
    - tls_auth_name
    argTypes:
    - struct outside_network*
    - struct sockaddr_storage*
    - socklen_t
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 630
      start: 546
    functionDepth: 2
    functionLinenumber: 546
    functionLinenumberEnd: 630
    functionName: reuse_tcp_find
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - rbtree_find_less_equal
    - memmove
    - verbose
    - log_assert
    - rbtree_first
    - rbtree_next
    - reuse_cmp_addrportssl
    - memset
    - rbtree_previous
    linkageType: ''
    returnType: struct reuse_tcp
    signature: "struct reuse_tcp *\nreuse_tcp_find(struct outside_network* outnet,
      struct sockaddr_storage* addr,\n\tsocklen_t addrlen, int use_ssl, char* tls_auth_name)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:638,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/services/outside_network.c:646,1
    - Dst: comm_timer_set
      Src: /src/unbound/services/outside_network.c:657,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 3
    argNames:
    - s
    - pend
    - w
    argTypes:
    - int
    - struct pending_tcp*
    - struct waiting_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 658
      start: 633
    functionDepth: 1
    functionLinenumber: 633
    functionLinenumberEnd: 658
    functionName: outnet_tcp_take_query_setup
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - comm_point_start_listening
    - verbose
    - comm_timer_set
    linkageType: ''
    returnType: void
    signature: "void outnet_tcp_take_query_setup(int s, struct pending_tcp* pend,\n\tstruct
      waiting_tcp* w)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:842,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:845,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:852,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:856,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:857,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:865,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:870,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:872,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 2
    argNames:
    - outnet
    - reuse
    argTypes:
    - struct outside_network*
    - struct reuse_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 874
      start: 838
    functionDepth: 1
    functionLinenumber: 838
    functionLinenumberEnd: 874
    functionName: reuse_tcp_lru_touch
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - log_err
    - log_assert
    linkageType: ''
    returnType: void
    signature: void reuse_tcp_lru_touch(struct outside_network* outnet, struct reuse_tcp*
      reuse)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:883,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:891,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - outnet
    argTypes:
    - struct outside_network*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 897
      start: 877
    functionDepth: 1
    functionLinenumber: 877
    functionLinenumberEnd: 897
    functionName: reuse_tcp_lru_snip
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: struct reuse_tcp
    signature: 'struct reuse_tcp *

      reuse_tcp_lru_snip(struct outside_network* outnet)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:921,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - outnet
    - w
    argTypes:
    - struct outside_network*
    - struct waiting_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 922
      start: 900
    functionDepth: 1
    functionLinenumber: 900
    functionLinenumberEnd: 922
    functionName: outnet_waiting_tcp_list_remove
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void outnet_waiting_tcp_list_remove(struct outside_network* outnet,
      struct waiting_tcp* w)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:930,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - outnet
    argTypes:
    - struct outside_network*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 937
      start: 925
    functionDepth: 1
    functionLinenumber: 925
    functionLinenumberEnd: 937
    functionName: outnet_waiting_tcp_list_pop
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: struct waiting_tcp
    signature: 'struct waiting_tcp *

      outnet_waiting_tcp_list_pop(struct outside_network* outnet)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:945,1
    - Dst: comm_timer_set
      Src: /src/unbound/services/outside_network.c:959,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - outnet
    - w
    - set_timer
    argTypes:
    - struct outside_network*
    - struct waiting_tcp*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 961
      start: 940
    functionDepth: 1
    functionLinenumber: 940
    functionLinenumberEnd: 961
    functionName: outnet_waiting_tcp_list_add
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - comm_timer_set
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void outnet_waiting_tcp_list_add(struct outside_network* outnet,\n\tstruct
      waiting_tcp* w, int set_timer)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:969,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:973,1
    - Dst: comm_timer_set
      Src: /src/unbound/services/outside_network.c:983,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:985,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 3
    argNames:
    - outnet
    - w
    - reset_timer
    argTypes:
    - struct outside_network*
    - struct waiting_tcp*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 964
    functionDepth: 1
    functionLinenumber: 964
    functionLinenumberEnd: 988
    functionName: outnet_waiting_tcp_list_add_first
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - comm_timer_set
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void outnet_waiting_tcp_list_add_first(struct outside_network* outnet,\n\tstruct
      waiting_tcp* w, int reset_timer)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/services/outside_network.c:996,1
    - Dst: fptr_whitelist_pending_tcp
      Src: /src/unbound/services/outside_network.c:996,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 4
    argNames:
    - w
    - c
    - error
    - reply_info
    argTypes:
    - struct waiting_tcp*
    - struct comm_point*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 991
    functionDepth: 1
    functionLinenumber: 991
    functionLinenumberEnd: 999
    functionName: waiting_tcp_callback
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - fptr_whitelist_pending_tcp
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: "void waiting_tcp_callback(struct waiting_tcp* w, struct comm_point*
      c, int error,\n\tstruct comm_reply* reply_info)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: outnet_waiting_tcp_list_pop
      Src: /src/unbound/services/outside_network.c:1011,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1012,1
    - Dst: reuse_tcp_find
      Src: /src/unbound/services/outside_network.c:1015,1
    - Dst: tcp_select_id
      Src: /src/unbound/services/outside_network.c:1018,1
    - Dst: LDNS_ID_SET
      Src: /src/unbound/services/outside_network.c:1019,1
    - Dst: log_reuse_tcp
      Src: /src/unbound/services/outside_network.c:1021,1
    - Dst: reuse_tcp_lru_touch
      Src: /src/unbound/services/outside_network.c:1026,1
    - Dst: comm_timer_disable
      Src: /src/unbound/services/outside_network.c:1027,1
    - Dst: reuse_tree_by_id_insert
      Src: /src/unbound/services/outside_network.c:1029,1
    - Dst: reuse_write_wait_push_back
      Src: /src/unbound/services/outside_network.c:1032,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/services/outside_network.c:1036,1
    - Dst: outnet_tcp_take_query_setup
      Src: /src/unbound/services/outside_network.c:1038,1
    - Dst: rbtree_init
      Src: /src/unbound/services/outside_network.c:1044,1
    - Dst: memcpy
      Src: /src/unbound/services/outside_network.c:1046,1
    - Dst: outnet_tcp_take_into_use
      Src: /src/unbound/services/outside_network.c:1048,1
    - Dst: waiting_tcp_callback
      Src: /src/unbound/services/outside_network.c:1049,1
    - Dst: waiting_tcp_delete
      Src: /src/unbound/services/outside_network.c:1051,1
    - Dst: outnet_waiting_tcp_list_add_first
      Src: /src/unbound/services/outside_network.c:1061,1
    - Dst: sldns_buffer_init_frm_data
      Src: /src/unbound/services/outside_network.c:1069,1
    - Dst: dt_msg_send_outside_query
      Src: /src/unbound/services/outside_network.c:1070,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 42
    argCount: 1
    argNames:
    - outnet
    argTypes:
    - struct outside_network*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1002
    functionDepth: 5
    functionLinenumber: 1002
    functionLinenumberEnd: 1076
    functionName: use_free_buffer
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - waiting_tcp_callback
    - reuse_tcp_lru_touch
    - outnet_waiting_tcp_list_add_first
    - log_reuse_tcp
    - comm_point_stop_listening
    - reuse_write_wait_push_back
    - waiting_tcp_delete
    - sldns_buffer_init_frm_data
    - outnet_waiting_tcp_list_pop
    - reuse_tcp_find
    - memcpy
    - outnet_tcp_take_into_use
    - LDNS_ID_SET
    - comm_timer_disable
    - log_assert
    - dt_msg_send_outside_query
    - tcp_select_id
    - rbtree_init
    - outnet_tcp_take_query_setup
    - reuse_tree_by_id_insert
    linkageType: ''
    returnType: void
    signature: void use_free_buffer(struct outside_network* outnet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1085,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/outside_network.c:1091,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1092,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - reuse
    - w
    argTypes:
    - struct reuse_tcp*
    - struct waiting_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1094
      start: 1079
    functionDepth: 1
    functionLinenumber: 1079
    functionLinenumberEnd: 1094
    functionName: reuse_tree_by_id_delete
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - log_assert
    - rbtree_delete
    linkageType: ''
    returnType: void
    signature: void reuse_tree_by_id_delete(struct reuse_tcp* reuse, struct waiting_tcp*
      w)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/services/outside_network.c:1114,1
    - Dst: dname_valid
      Src: /src/unbound/services/outside_network.c:1115,1
    - Dst: dname_str
      Src: /src/unbound/services/outside_network.c:1117,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1118,1
    - Dst: reuse_tree_by_id_delete
      Src: /src/unbound/services/outside_network.c:1134,1
    - Dst: outnet_waiting_tcp_list_add
      Src: /src/unbound/services/outside_network.c:1135,1
    - Dst: reuse_write_wait_pop
      Src: /src/unbound/services/outside_network.c:1137,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/services/outside_network.c:1139,1
    - Dst: dname_valid
      Src: /src/unbound/services/outside_network.c:1140,1
    - Dst: dname_str
      Src: /src/unbound/services/outside_network.c:1142,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1143,1
    - Dst: reuse_tree_by_id_delete
      Src: /src/unbound/services/outside_network.c:1145,1
    - Dst: outnet_waiting_tcp_list_add
      Src: /src/unbound/services/outside_network.c:1146,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 26
    argCount: 2
    argNames:
    - outnet
    - pend
    argTypes:
    - struct outside_network*
    - struct pending_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1148
      start: 1097
    functionDepth: 2
    functionLinenumber: 1097
    functionLinenumberEnd: 1148
    functionName: reuse_move_writewait_away
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - verbose
    - LDNS_QDCOUNT
    - reuse_write_wait_pop
    - dname_str
    - outnet_waiting_tcp_list_add
    - dname_valid
    - reuse_tree_by_id_delete
    linkageType: ''
    returnType: void
    signature: "void reuse_move_writewait_away(struct outside_network* outnet,\n\tstruct
      pending_tcp* pend)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1155,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/outside_network.c:1158,1
    - Dst: addr_to_str
      Src: /src/unbound/services/outside_network.c:1161,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:1163,1
    - Dst: memset
      Src: /src/unbound/services/outside_network.c:1168,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1175,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1177,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1179,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1181,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1190,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1192,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1194,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1196,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1202,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 35
    argCount: 2
    argNames:
    - outnet
    - reuse
    argTypes:
    - struct outside_network*
    - struct reuse_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1209
      start: 1151
    functionDepth: 1
    functionLinenumber: 1151
    functionLinenumberEnd: 1209
    functionName: reuse_tcp_remove_tree_list
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - log_err
    - addr_to_str
    - rbtree_delete
    - verbose
    - log_assert
    - memset
    linkageType: ''
    returnType: void
    signature: "void reuse_tcp_remove_tree_list(struct outside_network* outnet,\n\tstruct
      reuse_tcp* reuse)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: waiting_tcp_delete
      Src: /src/unbound/services/outside_network.c:1216,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1213
    functionDepth: 2
    functionLinenumber: 1213
    functionLinenumberEnd: 1217
    functionName: reuse_del_readwait_elem
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - waiting_tcp_delete
    linkageType: ''
    returnType: void
    signature: void reuse_del_readwait_elem(rbnode_type* node, void* ATTR_UNUSED(arg))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: traverse_postorder
      Src: /src/unbound/services/outside_network.c:1225,1
    - Dst: rbtree_init
      Src: /src/unbound/services/outside_network.c:1226,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - tree_by_id
    argTypes:
    - rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1227
      start: 1220
    functionDepth: 1
    functionLinenumber: 1220
    functionLinenumberEnd: 1227
    functionName: reuse_del_readwait
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - rbtree_init
    - traverse_postorder
    linkageType: ''
    returnType: void
    signature: void reuse_del_readwait(rbtree_type* tree_by_id)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1234,1
    - Dst: reuse_tcp_remove_tree_list
      Src: /src/unbound/services/outside_network.c:1243,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:1246,1
    - Dst: SSL_shutdown
      Src: /src/unbound/services/outside_network.c:1253,1
    - Dst: SSL_free
      Src: /src/unbound/services/outside_network.c:1254,1
    - Dst: comm_point_close
      Src: /src/unbound/services/outside_network.c:1258,1
    - Dst: reuse_del_readwait
      Src: /src/unbound/services/outside_network.c:1266,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - outnet
    - pend
    argTypes:
    - struct outside_network*
    - struct pending_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1267
      start: 1230
    functionDepth: 2
    functionLinenumber: 1230
    functionLinenumberEnd: 1267
    functionName: decommission_pending_tcp
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - verbose
    - SSL_free
    - free
    - comm_point_close
    - reuse_tcp_remove_tree_list
    - reuse_del_readwait
    - SSL_shutdown
    linkageType: ''
    returnType: void
    signature: "void decommission_pending_tcp(struct outside_network* outnet, \n\tstruct
      pending_tcp* pend)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_first
      Src: /src/unbound/services/outside_network.c:1276,1
    - Dst: waiting_tcp_callback
      Src: /src/unbound/services/outside_network.c:1279,1
    - Dst: rbtree_next
      Src: /src/unbound/services/outside_network.c:1280,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - tree_by_id
    - err
    argTypes:
    - rbtree_type*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1270
    functionDepth: 2
    functionLinenumber: 1270
    functionLinenumberEnd: 1282
    functionName: reuse_cb_readwait_for_failure
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - rbtree_next
    - rbtree_first
    - waiting_tcp_callback
    linkageType: ''
    returnType: void
    signature: void reuse_cb_readwait_for_failure(rbtree_type* tree_by_id, int err)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - node
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1298
      start: 1285
    functionDepth: 0
    functionLinenumber: 1285
    functionLinenumberEnd: 1298
    functionName: mark_for_cb_and_decommission
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mark_for_cb_and_decommission(rbnode_type* node,\n\tvoid* ATTR_UNUSED(arg))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_init
      Src: /src/unbound/services/outside_network.c:1311,1
    - Dst: decommission_pending_tcp
      Src: /src/unbound/services/outside_network.c:1314,1
    - Dst: traverse_postorder
      Src: /src/unbound/services/outside_network.c:1316,1
    - Dst: reuse_cb_readwait_for_failure
      Src: /src/unbound/services/outside_network.c:1318,1
    - Dst: reuse_del_readwait
      Src: /src/unbound/services/outside_network.c:1319,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - outnet
    - pend
    - error
    argTypes:
    - struct outside_network*
    - struct pending_tcp*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1320
      start: 1305
    functionDepth: 3
    functionLinenumber: 1305
    functionLinenumberEnd: 1320
    functionName: reuse_cb_and_decommission
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - reuse_cb_readwait_for_failure
    - rbtree_init
    - reuse_del_readwait
    - traverse_postorder
    - decommission_pending_tcp
    linkageType: ''
    returnType: void
    signature: "void reuse_cb_and_decommission(struct outside_network* outnet,\n\tstruct
      pending_tcp* pend, int error)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_reuse_tcp
      Src: /src/unbound/services/outside_network.c:1326,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/services/outside_network.c:1327,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pend_tcp
    - tcp_reuse_timeout
    argTypes:
    - struct pending_tcp*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1328
      start: 1323
    functionDepth: 2
    functionLinenumber: 1323
    functionLinenumberEnd: 1328
    functionName: reuse_tcp_setup_timeout
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - comm_point_start_listening
    - log_reuse_tcp
    linkageType: ''
    returnType: void
    signature: void reuse_tcp_setup_timeout(struct pending_tcp* pend_tcp, int tcp_reuse_timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_reuse_tcp
      Src: /src/unbound/services/outside_network.c:1334,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/outside_network.c:1335,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/services/outside_network.c:1338,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/services/outside_network.c:1339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - pend_tcp
    - tcp_reuse_timeout
    argTypes:
    - struct pending_tcp*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1331
    functionDepth: 2
    functionLinenumber: 1331
    functionLinenumberEnd: 1340
    functionName: reuse_tcp_setup_read_and_timeout
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - comm_point_start_listening
    - log_reuse_tcp
    - sldns_buffer_clear
    - comm_point_stop_listening
    linkageType: ''
    returnType: void
    signature: void reuse_tcp_setup_read_and_timeout(struct pending_tcp* pend_tcp,
      int tcp_reuse_timeout)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1349,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1350,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1353,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1359,1
    - Dst: reuse_tcp_remove_tree_list
      Src: /src/unbound/services/outside_network.c:1365,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1368,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1369,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1370,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1371,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1375,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1379,1
    - Dst: reuse_write_wait_pop
      Src: /src/unbound/services/outside_network.c:1385,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/services/outside_network.c:1386,1
    - Dst: outnet_tcp_take_query_setup
      Src: /src/unbound/services/outside_network.c:1387,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1390,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/services/outside_network.c:1395,1
    - Dst: reuse_tcp_setup_timeout
      Src: /src/unbound/services/outside_network.c:1396,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1400,1
    - Dst: reuse_move_writewait_away
      Src: /src/unbound/services/outside_network.c:1401,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/outside_network.c:1405,1
    - Dst: log_addr
      Src: /src/unbound/services/outside_network.c:1406,1
    - Dst: LDNS_ID_WIRE
      Src: /src/unbound/services/outside_network.c:1411,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:1411,1
    - Dst: reuse_tcp_by_id_find
      Src: /src/unbound/services/outside_network.c:1414,1
    - Dst: log_addr
      Src: /src/unbound/services/outside_network.c:1425,1
    - Dst: reuse_tcp_insert
      Src: /src/unbound/services/outside_network.c:1434,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1438,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1439,1
    - Dst: reuse_tree_by_id_delete
      Src: /src/unbound/services/outside_network.c:1440,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1441,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/outside_network.c:1442,1
    - Dst: waiting_tcp_callback
      Src: /src/unbound/services/outside_network.c:1443,1
    - Dst: waiting_tcp_delete
      Src: /src/unbound/services/outside_network.c:1444,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1446,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1448,1
    - Dst: reuse_tcp_setup_read_and_timeout
      Src: /src/unbound/services/outside_network.c:1457,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1460,1
    - Dst: reuse_cb_and_decommission
      Src: /src/unbound/services/outside_network.c:1463,1
    - Dst: use_free_buffer
      Src: /src/unbound/services/outside_network.c:1465,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 80
    argCount: 4
    argNames:
    - c
    - arg
    - error
    - reply_info
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1467
      start: 1342
    functionDepth: 6
    functionLinenumber: 1342
    functionLinenumberEnd: 1467
    functionName: outnet_tcp_cb
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - waiting_tcp_callback
    - reuse_cb_and_decommission
    - reuse_write_wait_pop
    - reuse_tcp_insert
    - comm_point_stop_listening
    - waiting_tcp_delete
    - reuse_tcp_remove_tree_list
    - sldns_buffer_begin
    - reuse_tree_by_id_delete
    - reuse_move_writewait_away
    - verbose
    - reuse_tcp_by_id_find
    - reuse_tcp_setup_read_and_timeout
    - reuse_tcp_setup_timeout
    - log_assert
    - use_free_buffer
    - LDNS_ID_WIRE
    - sldns_buffer_limit
    - outnet_tcp_take_query_setup
    - log_addr
    linkageType: ''
    returnType: int
    signature: "int outnet_tcp_cb(struct comm_point* c, void* arg, int error,\n\tstruct
      comm_reply *reply_info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1479,1
    - Dst: comm_point_close
      Src: /src/unbound/services/outside_network.c:1480,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1482,1
    - Dst: shared_ports_return_port
      Src: /src/unbound/services/outside_network.c:1484,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 2
    argNames:
    - outnet
    - pc
    argTypes:
    - struct outside_network*
    - struct port_comm*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1491
      start: 1470
    functionDepth: 1
    functionLinenumber: 1470
    functionLinenumberEnd: 1491
    functionName: portcomm_loweruse
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - comm_point_close
    - verbose
    - shared_ports_return_port
    - log_assert
    linkageType: ''
    returnType: void
    signature: void portcomm_loweruse(struct outside_network* outnet, struct port_comm*
      pc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/outside_network.c:1504,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/services/outside_network.c:1505,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/outside_network.c:1506,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:1507,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1510,1
    - Dst: randomize_and_send_udp
      Src: /src/unbound/services/outside_network.c:1512,1
    - Dst: fptr_ok
      Src: /src/unbound/services/outside_network.c:1516,1
    - Dst: fptr_whitelist_pending_udp
      Src: /src/unbound/services/outside_network.c:1516,1
    - Dst: pending_delete
      Src: /src/unbound/services/outside_network.c:1520,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - outnet
    argTypes:
    - struct outside_network*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1525
      start: 1494
    functionDepth: 5
    functionLinenumber: 1494
    functionLinenumberEnd: 1525
    functionName: outnet_send_wait_udp
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_write
    - sldns_buffer_flip
    - sldns_buffer_clear
    - fptr_ok
    - free
    - fptr_whitelist_pending_udp
    - log_assert
    - randomize_and_send_udp
    - pending_delete
    linkageType: ''
    returnType: void
    signature: void outnet_send_wait_udp(struct outside_network* outnet)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1534,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1537,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/outside_network.c:1540,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1541,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:1544,1
    - Dst: LDNS_ID_WIRE
      Src: /src/unbound/services/outside_network.c:1547,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:1547,1
    - Dst: memcpy
      Src: /src/unbound/services/outside_network.c:1548,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1550,1
    - Dst: log_addr
      Src: /src/unbound/services/outside_network.c:1551,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1555,1
    - Dst: rbtree_search
      Src: /src/unbound/services/outside_network.c:1556,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1558,1
    - Dst: log_buf
      Src: /src/unbound/services/outside_network.c:1559,1
    - Dst: log_warn
      Src: /src/unbound/services/outside_network.c:1563,1
    - Dst: fptr_ok
      Src: /src/unbound/services/outside_network.c:1567,1
    - Dst: fptr_whitelist_alloc_cleanup
      Src: /src/unbound/services/outside_network.c:1567,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1575,1
    - Dst: log_buf
      Src: /src/unbound/services/outside_network.c:1576,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1578,1
    - Dst: log_warn
      Src: /src/unbound/services/outside_network.c:1583,1
    - Dst: fptr_ok
      Src: /src/unbound/services/outside_network.c:1587,1
    - Dst: fptr_whitelist_alloc_cleanup
      Src: /src/unbound/services/outside_network.c:1587,1
    - Dst: comm_timer_disable
      Src: /src/unbound/services/outside_network.c:1594,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1595,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/outside_network.c:1597,1
    - Dst: fptr_ok
      Src: /src/unbound/services/outside_network.c:1599,1
    - Dst: fptr_whitelist_pending_udp
      Src: /src/unbound/services/outside_network.c:1599,1
    - Dst: portcomm_loweruse
      Src: /src/unbound/services/outside_network.c:1602,1
    - Dst: pending_delete
      Src: /src/unbound/services/outside_network.c:1603,1
    - Dst: outnet_send_wait_udp
      Src: /src/unbound/services/outside_network.c:1604,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 54
    argCount: 4
    argNames:
    - c
    - arg
    - error
    - reply_info
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1606
      start: 1527
    functionDepth: 6
    functionLinenumber: 1527
    functionLinenumberEnd: 1606
    functionName: outnet_udp_cb
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - memcpy
    - rbtree_delete
    - verbose
    - sldns_buffer_limit
    - fptr_ok
    - portcomm_loweruse
    - comm_timer_disable
    - fptr_whitelist_pending_udp
    - fptr_whitelist_alloc_cleanup
    - log_assert
    - log_buf
    - sldns_buffer_begin
    - log_warn
    - log_addr
    - pending_delete
    - outnet_send_wait_udp
    - rbtree_search
    - LDNS_ID_WIRE
    linkageType: ''
    returnType: int
    signature: "int outnet_udp_cb(struct comm_point* c, void* arg, int error,\n\tstruct
      comm_reply *reply_info)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: str_is_ip6
      Src: /src/unbound/services/outside_network.c:1625,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 6
    argNames:
    - ifs
    - num_ifs
    - do_ip4
    - do_ip6
    - num_ip4
    - num_ip6
    argTypes:
    - char**
    - int
    - int
    - int
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1633
      start: 1609
    functionDepth: 1
    functionLinenumber: 1609
    functionLinenumberEnd: 1633
    functionName: calc_num46
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - str_is_ip6
    linkageType: ''
    returnType: void
    signature: "void calc_num46(char** ifs, int num_ifs, int do_ip4, int do_ip6, \n\tint*
      num_ip4, int* num_ip6)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1640,1
    - Dst: portcomm_loweruse
      Src: /src/unbound/services/outside_network.c:1641,1
    - Dst: pending_delete
      Src: /src/unbound/services/outside_network.c:1642,1
    - Dst: outnet_send_wait_udp
      Src: /src/unbound/services/outside_network.c:1643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1644
      start: 1635
    functionDepth: 6
    functionLinenumber: 1635
    functionLinenumberEnd: 1644
    functionName: pending_udp_timer_delay_cb
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - verbose
    - outnet_send_wait_udp
    - pending_delete
    - portcomm_loweruse
    linkageType: ''
    returnType: void
    signature: void pending_udp_timer_delay_cb(void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:1652,1
    - Dst: fptr_ok
      Src: /src/unbound/services/outside_network.c:1654,1
    - Dst: fptr_whitelist_pending_udp
      Src: /src/unbound/services/outside_network.c:1654,1
    - Dst: comm_timer_set
      Src: /src/unbound/services/outside_network.c:1664,1
    - Dst: portcomm_loweruse
      Src: /src/unbound/services/outside_network.c:1667,1
    - Dst: pending_delete
      Src: /src/unbound/services/outside_network.c:1668,1
    - Dst: outnet_send_wait_udp
      Src: /src/unbound/services/outside_network.c:1669,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1670
      start: 1646
    functionDepth: 6
    functionLinenumber: 1646
    functionLinenumberEnd: 1670
    functionName: pending_udp_timer_cb
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - verbose
    - portcomm_loweruse
    - fptr_ok
    - fptr_whitelist_pending_udp
    - comm_timer_set
    - outnet_send_wait_udp
    - pending_delete
    linkageType: ''
    returnType: void
    signature: void pending_udp_timer_cb(void *arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/outside_network.c:1679,1
    - Dst: calloc
      Src: /src/unbound/services/outside_network.c:1683,1
    - Dst: comm_point_create_tcp_out
      Src: /src/unbound/services/outside_network.c:1688,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - outnet
    - bufsize
    argTypes:
    - struct outside_network*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1695
      start: 1673
    functionDepth: 1
    functionLinenumber: 1673
    functionLinenumberEnd: 1695
    functionName: create_pending_tcp
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - comm_point_create_tcp_out
    - calloc
    linkageType: ''
    returnType: int
    signature: int create_pending_tcp(struct outside_network* outnet, size_t bufsize)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ipstrtoaddr
      Src: /src/unbound/services/outside_network.c:1701,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/services/outside_network.c:1702,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:1707,1
    - Dst: shared_ports_find_if
      Src: /src/unbound/services/outside_network.c:1712,1
    - Dst: calloc
      Src: /src/unbound/services/outside_network.c:1719,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 4
    argNames:
    - pif
    - addrstr
    - numfd
    - shp
    argTypes:
    - struct port_if*
    - char*
    - size_t
    - struct shared_ports*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1724
      start: 1698
    functionDepth: 1
    functionLinenumber: 1698
    functionLinenumberEnd: 1724
    functionName: setup_if
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - log_err
    - netblockstrtoaddr
    - shared_ports_find_if
    - ipstrtoaddr
    - calloc
    linkageType: ''
    returnType: int
    signature: "int setup_if(struct port_if* pif, const char* addrstr, size_t numfd,\n\tstruct
      shared_ports* shp)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/outside_network.c:1738,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:1741,1
    - Dst: comm_base_timept
      Src: /src/unbound/services/outside_network.c:1744,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:1782,1
    - Dst: outside_network_delete
      Src: /src/unbound/services/outside_network.c:1783,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:1788,1
    - Dst: outside_network_delete
      Src: /src/unbound/services/outside_network.c:1789,1
    - Dst: calc_num46
      Src: /src/unbound/services/outside_network.c:1796,1
    - Dst: calloc
      Src: /src/unbound/services/outside_network.c:1799,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:1801,1
    - Dst: outside_network_delete
      Src: /src/unbound/services/outside_network.c:1802,1
    - Dst: calloc
      Src: /src/unbound/services/outside_network.c:1807,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:1809,1
    - Dst: outside_network_delete
      Src: /src/unbound/services/outside_network.c:1810,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/services/outside_network.c:1814,1
    - Dst: rbtree_create
      Src: /src/unbound/services/outside_network.c:1815,1
    - Dst: rbtree_create
      Src: /src/unbound/services/outside_network.c:1816,1
    - Dst: create_pending_tcp
      Src: /src/unbound/services/outside_network.c:1817,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:1818,1
    - Dst: outside_network_delete
      Src: /src/unbound/services/outside_network.c:1819,1
    - Dst: rbtree_init
      Src: /src/unbound/services/outside_network.c:1822,1
    - Dst: calloc
      Src: /src/unbound/services/outside_network.c:1828,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:1830,1
    - Dst: outside_network_delete
      Src: /src/unbound/services/outside_network.c:1831,1
    - Dst: comm_point_create_udp
      Src: /src/unbound/services/outside_network.c:1834,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:1837,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:1838,1
    - Dst: outside_network_delete
      Src: /src/unbound/services/outside_network.c:1839,1
    - Dst: setup_if
      Src: /src/unbound/services/outside_network.c:1848,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:1850,1
    - Dst: outside_network_delete
      Src: /src/unbound/services/outside_network.c:1851,1
    - Dst: setup_if
      Src: /src/unbound/services/outside_network.c:1854,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:1856,1
    - Dst: outside_network_delete
      Src: /src/unbound/services/outside_network.c:1857,1
    - Dst: str_is_ip6
      Src: /src/unbound/services/outside_network.c:1864,1
    - Dst: setup_if
      Src: /src/unbound/services/outside_network.c:1865,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:1867,1
    - Dst: outside_network_delete
      Src: /src/unbound/services/outside_network.c:1868,1
    - Dst: str_is_ip6
      Src: /src/unbound/services/outside_network.c:1873,1
    - Dst: setup_if
      Src: /src/unbound/services/outside_network.c:1874,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:1876,1
    - Dst: outside_network_delete
      Src: /src/unbound/services/outside_network.c:1877,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 119
    argCount: 25
    argNames:
    - base
    - bufsize
    - num_ports
    - ifs
    - num_ifs
    - do_ip4
    - do_ip6
    - num_tcp
    - dscp
    - infra
    - rnd
    - use_caps_for_id
    - unwanted_threshold
    - tcp_mss
    - unwanted_param
    - do_udp
    - sslctx
    - delayclose
    - tls_use_sni
    - dtenv
    - udp_connect
    - max_reuse_tcp_queries
    - tcp_reuse_timeout
    - tcp_auth_query_timeout
    - shared_ports
    argTypes:
    - struct comm_base*
    - size_t
    - size_t
    - char**
    - int
    - int
    - int
    - size_t
    - int
    - struct infra_cache*
    - struct ub_randstate*
    - int
    - size_t
    - int
    - void*
    - int
    - void*
    - int
    - int
    - struct dt_env*
    - int
    - int
    - int
    - int
    - struct shared_ports*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1885
      start: 1726
    functionDepth: 2
    functionLinenumber: 1726
    functionLinenumberEnd: 1885
    functionName: outside_network_create
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 1
    functionsReached:
    - log_err
    - sldns_buffer_new
    - outside_network_delete
    - setup_if
    - create_pending_tcp
    - rbtree_init
    - free
    - calloc
    - str_is_ip6
    - rbtree_create
    - calc_num46
    - comm_base_timept
    - comm_point_create_udp
    linkageType: ''
    returnType: struct outside_network
    signature: "struct outside_network * \noutside_network_create(struct comm_base
      *base, size_t bufsize, \n\tsize_t num_ports, char** ifs, int num_ifs, int do_ip4,
      \n\tint do_ip6, size_t num_tcp, int dscp, struct infra_cache* infra,\n\tstruct
      ub_randstate* rnd, int use_caps_for_id,\n\tsize_t unwanted_threshold, int tcp_mss,\n\tvoid
      (*unwanted_action)(void*), void* unwanted_param, int do_udp,\n\tvoid* sslctx,
      int delayclose, int tls_use_sni, struct dt_env* dtenv,\n\tint udp_connect, int
      max_reuse_tcp_queries, int tcp_reuse_timeout,\n\tint tcp_auth_query_timeout,
      struct shared_ports* shared_ports)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pending_delete
      Src: /src/unbound/services/outside_network.c:1893,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - node
    - arg
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1894
      start: 1888
    functionDepth: 1
    functionLinenumber: 1888
    functionLinenumberEnd: 1894
    functionName: pending_node_del
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - pending_delete
    linkageType: ''
    returnType: void
    signature: void pending_node_del(rbnode_type* node, void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: alloc_reg_release
      Src: /src/unbound/services/outside_network.c:1901,1
    - Dst: comm_timer_delete
      Src: /src/unbound/services/outside_network.c:1903,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:1904,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - node
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1905
      start: 1897
    functionDepth: 1
    functionLinenumber: 1897
    functionLinenumberEnd: 1905
    functionName: serviced_node_del
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - free
    - alloc_reg_release
    - comm_timer_delete
    linkageType: ''
    returnType: void
    signature: void serviced_node_del(rbnode_type* node, void* ATTR_UNUSED(arg))
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - outnet
    argTypes:
    - struct outside_network*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1914
      start: 1907
    functionDepth: 0
    functionLinenumber: 1907
    functionLinenumberEnd: 1914
    functionName: outside_network_quit_prepare
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void outside_network_quit_prepare(struct outside_network* outnet)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: traverse_postorder
      Src: /src/unbound/services/outside_network.c:1925,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:1926,1
    - Dst: traverse_postorder
      Src: /src/unbound/services/outside_network.c:1929,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:1930,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/services/outside_network.c:1933,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/outside_network.c:1938,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:1939,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/outside_network.c:1950,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:1951,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:1953,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:1955,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/outside_network.c:1963,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:1964,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:1966,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:1968,1
    - Dst: decommission_pending_tcp
      Src: /src/unbound/services/outside_network.c:1979,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:1982,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/outside_network.c:1985,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:1986,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:1989,1
    - Dst: waiting_tcp_delete
      Src: /src/unbound/services/outside_network.c:1996,1
    - Dst: rbtree_init
      Src: /src/unbound/services/outside_network.c:2001,1
    - Dst: pending_delete
      Src: /src/unbound/services/outside_network.c:2008,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:2012,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 79
    argCount: 1
    argNames:
    - outnet
    argTypes:
    - struct outside_network*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2013
      start: 1916
    functionDepth: 3
    functionLinenumber: 1916
    functionLinenumberEnd: 2013
    functionName: outside_network_delete
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 2
    functionsReached:
    - waiting_tcp_delete
    - free
    - rbtree_init
    - sldns_buffer_free
    - pending_delete
    - traverse_postorder
    - comm_point_delete
    - decommission_pending_tcp
    linkageType: ''
    returnType: void
    signature: void outside_network_delete(struct outside_network* outnet)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2029,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/outside_network.c:2038,1
    - Dst: comm_timer_delete
      Src: /src/unbound/services/outside_network.c:2041,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:2042,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:2043,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 24
    argCount: 2
    argNames:
    - outnet
    - p
    argTypes:
    - struct outside_network*
    - struct pending*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2044
      start: 2015
    functionDepth: 1
    functionLinenumber: 2015
    functionLinenumberEnd: 2044
    functionName: pending_delete
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 6
    functionsReached:
    - free
    - log_assert
    - rbtree_delete
    - comm_timer_delete
    linkageType: ''
    returnType: void
    signature: void pending_delete(struct outside_network* outnet, struct pending*
      p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ub_random_max
      Src: /src/unbound/services/outside_network.c:2053,1
    - Dst: ub_random_max
      Src: /src/unbound/services/outside_network.c:2058,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - sa
    - pfxlen
    - rnd
    argTypes:
    - struct sockaddr_in6*
    - int
    - struct ub_randstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2060
      start: 2046
    functionDepth: 1
    functionLinenumber: 2046
    functionLinenumberEnd: 2060
    functionName: sai6_putrandom
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - ub_random_max
    linkageType: ''
    returnType: void
    signature: void sai6_putrandom(struct sockaddr_in6 *sa, int pfxlen, struct ub_randstate
      *rnd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: addr_is_ip6
      Src: /src/unbound/services/outside_network.c:2079,1
    - Dst: htons
      Src: /src/unbound/services/outside_network.c:2082,1
    - Dst: sai6_putrandom
      Src: /src/unbound/services/outside_network.c:2087,1
    - Dst: create_udp_sock
      Src: /src/unbound/services/outside_network.c:2089,1
    - Dst: htons
      Src: /src/unbound/services/outside_network.c:2094,1
    - Dst: create_udp_sock
      Src: /src/unbound/services/outside_network.c:2095,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 7
    argNames:
    - addr
    - addrlen
    - pfxlen
    - port
    - inuse
    - rnd
    - dscp
    argTypes:
    - struct sockaddr_storage*
    - socklen_t
    - int
    - int
    - int*
    - struct ub_randstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2100
      start: 2074
    functionDepth: 2
    functionLinenumber: 2074
    functionLinenumberEnd: 2100
    functionName: udp_sockport
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - htons
    - create_udp_sock
    - addr_is_ip6
    - sai6_putrandom
    linkageType: ''
    returnType: int
    signature: "int udp_sockport(struct sockaddr_storage* addr, socklen_t addrlen,
      int pfxlen,\n\tint port, int* inuse, struct ub_randstate* rnd, int dscp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GET_RANDOM_ID
      Src: /src/unbound/services/outside_network.c:2108,1
    - Dst: LDNS_ID_SET
      Src: /src/unbound/services/outside_network.c:2109,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:2109,1
    - Dst: rbtree_insert
      Src: /src/unbound/services/outside_network.c:2113,1
    - Dst: GET_RANDOM_ID
      Src: /src/unbound/services/outside_network.c:2115,1
    - Dst: LDNS_ID_SET
      Src: /src/unbound/services/outside_network.c:2116,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:2116,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:2120,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2124,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - outnet
    - pend
    - packet
    argTypes:
    - struct outside_network*
    - struct pending*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2126
      start: 2103
    functionDepth: 2
    functionLinenumber: 2103
    functionLinenumberEnd: 2126
    functionName: select_id
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 1
    functionsReached:
    - log_err
    - verbose
    - LDNS_ID_SET
    - GET_RANDOM_ID
    - sldns_buffer_begin
    - rbtree_insert
    linkageType: ''
    returnType: int
    signature: "int select_id(struct outside_network* outnet, struct pending* pend,\n\tsldns_buffer*
      packet)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: addr_is_ip6linklocal
      Src: /src/unbound/services/outside_network.c:2157,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 3
    argNames:
    - err
    - addr
    - addrlen
    argTypes:
    - int
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2167
      start: 2129
    functionDepth: 1
    functionLinenumber: 2129
    functionLinenumberEnd: 2167
    functionName: udp_connect_needs_log
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - addr_is_ip6linklocal
    linkageType: ''
    returnType: int
    signature: "int udp_connect_needs_log(int err, struct sockaddr_storage* addr,\n\tsocklen_t
      addrlen)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2182,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2186,1
    - Dst: ub_random_max
      Src: /src/unbound/services/outside_network.c:2189,1
    - Dst: shared_ports_fetch_random
      Src: /src/unbound/services/outside_network.c:2192,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:2198,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2203,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2205,1
    - Dst: udp_sockport
      Src: /src/unbound/services/outside_network.c:2213,1
    - Dst: shared_ports_return_port
      Src: /src/unbound/services/outside_network.c:2218,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2224,1
    - Dst: connect
      Src: /src/unbound/services/outside_network.c:2228,1
    - Dst: udp_connect_needs_log
      Src: /src/unbound/services/outside_network.c:2230,1
    - Dst: log_err_addr
      Src: /src/unbound/services/outside_network.c:2232,1
    - Dst: strerror
      Src: /src/unbound/services/outside_network.c:2233,1
    - Dst: sock_close
      Src: /src/unbound/services/outside_network.c:2236,1
    - Dst: shared_ports_return_port
      Src: /src/unbound/services/outside_network.c:2238,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/services/outside_network.c:2255,1
    - Dst: shared_ports_return_port
      Src: /src/unbound/services/outside_network.c:2264,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2267,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:2270,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2274,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 64
    argCount: 4
    argNames:
    - outnet
    - pend
    - num_if
    - ifs
    argTypes:
    - struct outside_network*
    - struct pending*
    - int
    - struct port_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2278
      start: 2171
    functionDepth: 3
    functionLinenumber: 2171
    functionLinenumberEnd: 2278
    functionName: select_ifport
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - log_err
    - shared_ports_fetch_random
    - ub_random_max
    - sock_close
    - verbose
    - udp_connect_needs_log
    - comm_point_start_listening
    - log_err_addr
    - log_assert
    - strerror
    - shared_ports_return_port
    - connect
    - udp_sockport
    linkageType: ''
    returnType: int
    signature: "int select_ifport(struct outside_network* outnet, struct pending*
      pend,\n\tint num_if, struct port_if* ifs)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: select_id
      Src: /src/unbound/services/outside_network.c:2287,1
    - Dst: addr_is_ip6
      Src: /src/unbound/services/outside_network.c:2292,1
    - Dst: select_ifport
      Src: /src/unbound/services/outside_network.c:2293,1
    - Dst: select_ifport
      Src: /src/unbound/services/outside_network.c:2297,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2301,1
    - Dst: comm_point_send_udp_msg
      Src: /src/unbound/services/outside_network.c:2304,1
    - Dst: portcomm_loweruse
      Src: /src/unbound/services/outside_network.c:2306,1
    - Dst: comm_timer_set
      Src: /src/unbound/services/outside_network.c:2317,1
    - Dst: log_addr
      Src: /src/unbound/services/outside_network.c:2330,1
    - Dst: log_addr
      Src: /src/unbound/services/outside_network.c:2331,1
    - Dst: dt_msg_send_outside_query
      Src: /src/unbound/services/outside_network.c:2332,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 3
    argNames:
    - pend
    - packet
    - timeout
    argTypes:
    - struct pending*
    - sldns_buffer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2337
      start: 2280
    functionDepth: 5
    functionLinenumber: 2280
    functionLinenumberEnd: 2337
    functionName: randomize_and_send_udp
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 1
    functionsReached:
    - select_id
    - select_ifport
    - portcomm_loweruse
    - comm_timer_set
    - log_assert
    - addr_is_ip6
    - dt_msg_send_outside_query
    - log_addr
    - comm_point_send_udp_msg
    linkageType: ''
    returnType: int
    signature: int randomize_and_send_udp(struct pending* pend, sldns_buffer* packet,
      int timeout)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/outside_network.c:2343,1
    - Dst: memmove
      Src: /src/unbound/services/outside_network.c:2348,1
    - Dst: comm_timer_create
      Src: /src/unbound/services/outside_network.c:2352,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:2355,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2361,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/outside_network.c:2363,1
    - Dst: memdup
      Src: /src/unbound/services/outside_network.c:2364,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:2364,1
    - Dst: comm_timer_delete
      Src: /src/unbound/services/outside_network.c:2367,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:2368,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2379,1
    - Dst: randomize_and_send_udp
      Src: /src/unbound/services/outside_network.c:2381,1
    - Dst: pending_delete
      Src: /src/unbound/services/outside_network.c:2382,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 39
    argCount: 5
    argNames:
    - sq
    - packet
    - timeout
    - cb
    - cb_arg
    argTypes:
    - struct serviced_query*
    - struct sldns_buffer*
    - int
    - comm_point_callback_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2387
      start: 2339
    functionDepth: 6
    functionLinenumber: 2339
    functionLinenumberEnd: 2387
    functionName: pending_udp_query
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - comm_timer_delete
    - memmove
    - verbose
    - sldns_buffer_limit
    - free
    - comm_timer_create
    - calloc
    - log_assert
    - randomize_and_send_udp
    - sldns_buffer_begin
    - pending_delete
    - memdup
    linkageType: ''
    returnType: struct pending
    signature: "struct pending * \npending_udp_query(struct serviced_query* sq, struct
      sldns_buffer* packet,\n\tint timeout, comm_point_callback_type* cb, void* cb_arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2394,1
    - Dst: outnet_waiting_tcp_list_remove
      Src: /src/unbound/services/outside_network.c:2397,1
    - Dst: waiting_tcp_callback
      Src: /src/unbound/services/outside_network.c:2398,1
    - Dst: waiting_tcp_delete
      Src: /src/unbound/services/outside_network.c:2399,1
    - Dst: reuse_cb_and_decommission
      Src: /src/unbound/services/outside_network.c:2403,1
    - Dst: use_free_buffer
      Src: /src/unbound/services/outside_network.c:2405,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2406
      start: 2389
    functionDepth: 6
    functionLinenumber: 2389
    functionLinenumberEnd: 2406
    functionName: outnet_tcptimer
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - waiting_tcp_callback
    - reuse_cb_and_decommission
    - verbose
    - waiting_tcp_delete
    - use_free_buffer
    - outnet_waiting_tcp_list_remove
    linkageType: ''
    returnType: void
    signature: void outnet_tcptimer(void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2414,1
    - Dst: reuse_tcp_lru_snip
      Src: /src/unbound/services/outside_network.c:2415,1
    - Dst: reuse_cb_and_decommission
      Src: /src/unbound/services/outside_network.c:2418,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - outnet
    argTypes:
    - struct outside_network*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2419
      start: 2410
    functionDepth: 4
    functionLinenumber: 2410
    functionLinenumberEnd: 2419
    functionName: reuse_tcp_close_oldest
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - reuse_tcp_lru_snip
    - verbose
    - reuse_cb_and_decommission
    linkageType: ''
    returnType: void
    signature: void reuse_tcp_close_oldest(struct outside_network* outnet)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reuse_tcp_select_id
      Src: /src/unbound/services/outside_network.c:2425,1
    - Dst: GET_RANDOM_ID
      Src: /src/unbound/services/outside_network.c:2426,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - outnet
    - reuse
    argTypes:
    - struct outside_network*
    - struct reuse_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2427
      start: 2421
    functionDepth: 1
    functionLinenumber: 2421
    functionLinenumberEnd: 2427
    functionName: tcp_select_id
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 2
    functionsReached:
    - GET_RANDOM_ID
    - reuse_tcp_select_id
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t tcp_select_id(struct outside_network* outnet, struct reuse_tcp*
      reuse)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: GET_RANDOM_ID
      Src: /src/unbound/services/outside_network.c:2442,1
    - Dst: GET_RANDOM_ID
      Src: /src/unbound/services/outside_network.c:2448,1
    - Dst: reuse_tcp_by_id_find
      Src: /src/unbound/services/outside_network.c:2449,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2457,1
    - Dst: ub_random_max
      Src: /src/unbound/services/outside_network.c:2458,1
    - Dst: rbtree_first
      Src: /src/unbound/services/outside_network.c:2462,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2463,1
    - Dst: tree_by_id_get_id
      Src: /src/unbound/services/outside_network.c:2465,1
    - Dst: tree_by_id_get_id
      Src: /src/unbound/services/outside_network.c:2467,1
    - Dst: rbtree_next
      Src: /src/unbound/services/outside_network.c:2470,1
    - Dst: tree_by_id_get_id
      Src: /src/unbound/services/outside_network.c:2472,1
    - Dst: tree_by_id_get_id
      Src: /src/unbound/services/outside_network.c:2473,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2474,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2478,1
    - Dst: rbtree_last
      Src: /src/unbound/services/outside_network.c:2492,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2493,1
    - Dst: tree_by_id_get_id
      Src: /src/unbound/services/outside_network.c:2494,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2495,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 2
    argNames:
    - reuse
    - outnet
    argTypes:
    - struct reuse_tcp*
    - struct outside_network*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2497
      start: 2431
    functionDepth: 2
    functionLinenumber: 2431
    functionLinenumberEnd: 2497
    functionName: reuse_tcp_select_id
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 1
    functionsReached:
    - ub_random_max
    - reuse_tcp_by_id_find
    - tree_by_id_get_id
    - GET_RANDOM_ID
    - log_assert
    - rbtree_first
    - rbtree_next
    - rbtree_last
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t reuse_tcp_select_id(struct reuse_tcp* reuse, struct outside_network*
      outnet)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2507,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/outside_network.c:2508,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2509,1
    - Dst: reuse_tcp_find
      Src: /src/unbound/services/outside_network.c:2515,1
    - Dst: log_reuse_tcp
      Src: /src/unbound/services/outside_network.c:2518,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2519,1
    - Dst: reuse_tcp_lru_touch
      Src: /src/unbound/services/outside_network.c:2521,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2524,1
    - Dst: reuse_tcp_close_oldest
      Src: /src/unbound/services/outside_network.c:2530,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2532,1
    - Dst: malloc
      Src: /src/unbound/services/outside_network.c:2536,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/outside_network.c:2537,1
    - Dst: comm_timer_create
      Src: /src/unbound/services/outside_network.c:2541,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:2542,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/outside_network.c:2546,1
    - Dst: memmove
      Src: /src/unbound/services/outside_network.c:2547,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:2547,1
    - Dst: tcp_select_id
      Src: /src/unbound/services/outside_network.c:2548,1
    - Dst: LDNS_ID_SET
      Src: /src/unbound/services/outside_network.c:2549,1
    - Dst: memcpy
      Src: /src/unbound/services/outside_network.c:2550,1
    - Dst: strdup
      Src: /src/unbound/services/outside_network.c:2559,1
    - Dst: comm_timer_delete
      Src: /src/unbound/services/outside_network.c:2561,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:2562,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2581,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2584,1
    - Dst: reuse_tree_by_id_insert
      Src: /src/unbound/services/outside_network.c:2586,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/services/outside_network.c:2591,1
    - Dst: outnet_tcp_take_query_setup
      Src: /src/unbound/services/outside_network.c:2593,1
    - Dst: reuse_write_wait_push_back
      Src: /src/unbound/services/outside_network.c:2598,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2603,1
    - Dst: rbtree_init
      Src: /src/unbound/services/outside_network.c:2604,1
    - Dst: memcpy
      Src: /src/unbound/services/outside_network.c:2606,1
    - Dst: outnet_tcp_take_into_use
      Src: /src/unbound/services/outside_network.c:2608,1
    - Dst: waiting_tcp_delete
      Src: /src/unbound/services/outside_network.c:2609,1
    - Dst: sldns_buffer_init_frm_data
      Src: /src/unbound/services/outside_network.c:2619,1
    - Dst: dt_msg_send_outside_query
      Src: /src/unbound/services/outside_network.c:2620,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2629,1
    - Dst: outnet_waiting_tcp_list_add
      Src: /src/unbound/services/outside_network.c:2633,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 92
    argCount: 5
    argNames:
    - sq
    - packet
    - timeout
    - callback
    - callback_arg
    argTypes:
    - struct serviced_query*
    - sldns_buffer*
    - int
    - comm_point_callback_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2636
      start: 2499
    functionDepth: 5
    functionLinenumber: 2499
    functionLinenumberEnd: 2636
    functionName: pending_tcp_query
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - reuse_tcp_lru_touch
    - log_reuse_tcp
    - comm_point_stop_listening
    - reuse_write_wait_push_back
    - waiting_tcp_delete
    - sldns_buffer_begin
    - sldns_buffer_init_frm_data
    - reuse_tcp_find
    - memcpy
    - verbose
    - outnet_tcp_take_into_use
    - LDNS_ID_SET
    - malloc
    - comm_timer_create
    - free
    - log_assert
    - dt_msg_send_outside_query
    - strdup
    - comm_timer_delete
    - memmove
    - reuse_tcp_close_oldest
    - tcp_select_id
    - sldns_buffer_limit
    - outnet_waiting_tcp_list_add
    - rbtree_init
    - outnet_tcp_take_query_setup
    - reuse_tree_by_id_insert
    linkageType: ''
    returnType: struct waiting_tcp
    signature: "struct waiting_tcp *\npending_tcp_query(struct serviced_query* sq,
      sldns_buffer* packet,\n\tint timeout, comm_point_callback_type* callback, void*
      callback_arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/outside_network.c:2643,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/services/outside_network.c:2645,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/services/outside_network.c:2646,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/services/outside_network.c:2647,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/services/outside_network.c:2648,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/services/outside_network.c:2649,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/services/outside_network.c:2650,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/services/outside_network.c:2651,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/services/outside_network.c:2652,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/outside_network.c:2653,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 6
    argNames:
    - buff
    - qname
    - qnamelen
    - qtype
    - qclass
    - flags
    argTypes:
    - sldns_buffer*
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2654
      start: 2639
    functionDepth: 5
    functionLinenumber: 2639
    functionLinenumberEnd: 2654
    functionName: serviced_gen_query
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_flip
    - sldns_buffer_write
    - sldns_buffer_clear
    - sldns_buffer_write_u16
    linkageType: ''
    returnType: void
    signature: "void serviced_gen_query(sldns_buffer* buff, uint8_t* qname, size_t
      qnamelen, \n\tuint16_t qtype, uint16_t qclass, uint16_t flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:2664,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/outside_network.c:2665,1
    - Dst: memcpy
      Src: /src/unbound/services/outside_network.c:2667,1
    - Dst: rbtree_search
      Src: /src/unbound/services/outside_network.c:2671,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 6
    argNames:
    - outnet
    - buff
    - dnssec
    - addr
    - addrlen
    - opt_list
    argTypes:
    - struct outside_network*
    - sldns_buffer*
    - int
    - struct sockaddr_storage*
    - socklen_t
    - struct edns_option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2672
      start: 2657
    functionDepth: 2
    functionLinenumber: 2657
    functionLinenumberEnd: 2672
    functionName: lookup_serviced
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - rbtree_search
    - memcpy
    - sldns_buffer_limit
    - sldns_buffer_begin
    linkageType: ''
    returnType: struct serviced_query
    signature: "struct serviced_query *\nlookup_serviced(struct outside_network* outnet,
      sldns_buffer* buff, int dnssec,\n\tstruct sockaddr_storage* addr, socklen_t
      addrlen,\n\tstruct edns_option* opt_list)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2679,1
    - Dst: serviced_udp_send
      Src: /src/unbound/services/outside_network.c:2686,1
    - Dst: serviced_tcp_send
      Src: /src/unbound/services/outside_network.c:2689,1
    - Dst: serviced_callbacks
      Src: /src/unbound/services/outside_network.c:2697,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2698
      start: 2674
    functionDepth: 1
    functionLinenumber: 2674
    functionLinenumberEnd: 2698
    functionName: serviced_timer_cb
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - serviced_tcp_send
    - verbose
    - serviced_callbacks
    - serviced_udp_send
    linkageType: ''
    returnType: void
    signature: void serviced_timer_cb(void* arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/services/outside_network.c:2709,1
    - Dst: alloc_reg_release
      Src: /src/unbound/services/outside_network.c:2715,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/outside_network.c:2721,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:2721,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/outside_network.c:2722,1
    - Dst: alloc_reg_release
      Src: /src/unbound/services/outside_network.c:2724,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:2725,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/outside_network.c:2728,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/outside_network.c:2729,1
    - Dst: alloc_reg_release
      Src: /src/unbound/services/outside_network.c:2731,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:2732,1
    - Dst: regional_strdup
      Src: /src/unbound/services/outside_network.c:2743,1
    - Dst: alloc_reg_release
      Src: /src/unbound/services/outside_network.c:2745,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:2746,1
    - Dst: memcpy
      Src: /src/unbound/services/outside_network.c:2752,1
    - Dst: comm_timer_create
      Src: /src/unbound/services/outside_network.c:2756,1
    - Dst: alloc_reg_release
      Src: /src/unbound/services/outside_network.c:2758,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:2759,1
    - Dst: memset
      Src: /src/unbound/services/outside_network.c:2762,1
    - Dst: comm_timer_set
      Src: /src/unbound/services/outside_network.c:2763,1
    - Dst: rbtree_insert
      Src: /src/unbound/services/outside_network.c:2776,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2777,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 60
    argCount: 17
    argNames:
    - outnet
    - buff
    - dnssec
    - want_dnssec
    - nocaps
    - tcp_upstream
    - ssl_upstream
    - tls_auth_name
    - addr
    - addrlen
    - zone
    - zonelen
    - qtype
    - opt_list
    - pad_queries_block_size
    - alloc
    - region
    argTypes:
    - struct outside_network*
    - sldns_buffer*
    - int
    - int
    - int
    - int
    - int
    - char*
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - int
    - struct edns_option*
    - size_t
    - struct alloc_cache*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2779
      start: 2701
    functionDepth: 2
    functionLinenumber: 2701
    functionLinenumberEnd: 2779
    functionName: serviced_create
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - memcpy
    - regional_strdup
    - alloc_reg_release
    - sldns_buffer_limit
    - malloc
    - free
    - comm_timer_create
    - comm_timer_set
    - log_assert
    - sldns_buffer_begin
    - regional_alloc_init
    - memset
    - rbtree_insert
    linkageType: ''
    returnType: struct serviced_query
    signature: "struct serviced_query *\nserviced_create(struct outside_network* outnet,
      sldns_buffer* buff, int dnssec,\n\tint want_dnssec, int nocaps, int tcp_upstream,
      int ssl_upstream,\n\tchar* tls_auth_name, struct sockaddr_storage* addr, socklen_t
      addrlen,\n\tuint8_t* zone, size_t zonelen, int qtype, struct edns_option* opt_list,\n\tsize_t
      pad_queries_block_size, struct alloc_cache* alloc,\n\tstruct regional* region)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2788,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2797,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2802,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2812,1
    - Dst: reuse_tcp_insert
      Src: /src/unbound/services/outside_network.c:2814,1
    - Dst: reuse_tcp_setup_timeout
      Src: /src/unbound/services/outside_network.c:2817,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - w
    - sq
    argTypes:
    - struct waiting_tcp*
    - struct serviced_query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2821
      start: 2783
    functionDepth: 3
    functionLinenumber: 2783
    functionLinenumberEnd: 2821
    functionName: reuse_tcp_remove_serviced_keep
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - reuse_tcp_insert
    - verbose
    - reuse_tcp_setup_timeout
    linkageType: ''
    returnType: int
    signature: "int reuse_tcp_remove_serviced_keep(struct waiting_tcp* w,\n\tstruct
      serviced_query* sq)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2827,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2835,1
    - Dst: portcomm_loweruse
      Src: /src/unbound/services/outside_network.c:2837,1
    - Dst: pending_delete
      Src: /src/unbound/services/outside_network.c:2838,1
    - Dst: outnet_send_wait_udp
      Src: /src/unbound/services/outside_network.c:2841,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2845,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2846,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2852,1
    - Dst: reuse_tree_by_id_delete
      Src: /src/unbound/services/outside_network.c:2854,1
    - Dst: reuse_write_wait_remove
      Src: /src/unbound/services/outside_network.c:2855,1
    - Dst: waiting_tcp_delete
      Src: /src/unbound/services/outside_network.c:2857,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2861,1
    - Dst: reuse_tcp_remove_serviced_keep
      Src: /src/unbound/services/outside_network.c:2866,1
    - Dst: reuse_cb_and_decommission
      Src: /src/unbound/services/outside_network.c:2868,1
    - Dst: use_free_buffer
      Src: /src/unbound/services/outside_network.c:2870,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2874,1
    - Dst: outnet_waiting_tcp_list_remove
      Src: /src/unbound/services/outside_network.c:2875,1
    - Dst: waiting_tcp_delete
      Src: /src/unbound/services/outside_network.c:2877,1
    - Dst: serviced_node_del
      Src: /src/unbound/services/outside_network.c:2882,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 1
    argNames:
    - sq
    argTypes:
    - struct serviced_query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2883
      start: 2824
    functionDepth: 6
    functionLinenumber: 2824
    functionLinenumberEnd: 2883
    functionName: serviced_delete
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - reuse_tcp_remove_serviced_keep
    - reuse_cb_and_decommission
    - verbose
    - serviced_node_del
    - reuse_write_wait_remove
    - waiting_tcp_delete
    - outnet_send_wait_udp
    - portcomm_loweruse
    - use_free_buffer
    - log_assert
    - pending_delete
    - outnet_waiting_tcp_list_remove
    - reuse_tree_by_id_delete
    linkageType: ''
    returnType: void
    signature: void serviced_delete(struct serviced_query* sq)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:2893,1
    - Dst: isalpha
      Src: /src/unbound/services/outside_network.c:2899,1
    - Dst: ub_random
      Src: /src/unbound/services/outside_network.c:2902,1
    - Dst: toupper
      Src: /src/unbound/services/outside_network.c:2906,1
    - Dst: tolower
      Src: /src/unbound/services/outside_network.c:2908,1
    - Dst: dname_str
      Src: /src/unbound/services/outside_network.c:2919,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:2920,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 3
    argNames:
    - rnd
    - qbuf
    - len
    argTypes:
    - struct ub_randstate*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2922
      start: 2886
    functionDepth: 1
    functionLinenumber: 2886
    functionLinenumberEnd: 2922
    functionName: serviced_perturb_qname
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - toupper
    - verbose
    - dname_str
    - tolower
    - log_assert
    - isalpha
    - ub_random
    linkageType: ''
    returnType: void
    signature: void serviced_perturb_qname(struct ub_randstate* rnd, uint8_t* qbuf,
      size_t len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: addr_is_ip6
      Src: /src/unbound/services/outside_network.c:2928,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - sq
    - status
    argTypes:
    - struct serviced_query*
    - enum serviced_query_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2941
      start: 2924
    functionDepth: 1
    functionLinenumber: 2924
    functionLinenumberEnd: 2941
    functionName: serviced_query_udp_size
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - addr_is_ip6
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t serviced_query_udp_size(struct serviced_query* sq, enum serviced_query_status
      status)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: serviced_perturb_qname
      Src: /src/unbound/services/outside_network.c:2949,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/outside_network.c:2952,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/services/outside_network.c:2953,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/services/outside_network.c:2954,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/outside_network.c:2955,1
    - Dst: serviced_query_udp_size
      Src: /src/unbound/services/outside_network.c:2966,1
    - Dst: LDNS_CD_SET
      Src: /src/unbound/services/outside_network.c:2971,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:2971,1
    - Dst: attach_edns_record
      Src: /src/unbound/services/outside_network.c:2980,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 3
    argNames:
    - sq
    - buff
    - with_edns
    argTypes:
    - struct serviced_query*
    - sldns_buffer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2982
      start: 2944
    functionDepth: 5
    functionLinenumber: 2944
    functionLinenumberEnd: 2982
    functionName: serviced_encode
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - LDNS_CD_SET
    - serviced_perturb_qname
    - sldns_buffer_write
    - attach_edns_record
    - sldns_buffer_flip
    - sldns_buffer_clear
    - sldns_buffer_write_u16
    - serviced_query_udp_size
    - sldns_buffer_begin
    linkageType: ''
    returnType: void
    signature: void serviced_encode(struct serviced_query* sq, sldns_buffer* buff,
      int with_edns)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: infra_host
      Src: /src/unbound/services/outside_network.c:2998,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:3002,1
    - Dst: serviced_encode
      Src: /src/unbound/services/outside_network.c:3010,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:3014,1
    - Dst: pending_udp_query
      Src: /src/unbound/services/outside_network.c:3015,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - sq
    - buff
    argTypes:
    - struct serviced_query*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3020
      start: 2991
    functionDepth: 6
    functionLinenumber: 2991
    functionLinenumberEnd: 3020
    functionName: serviced_udp_send
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 1
    functionsReached:
    - infra_host
    - verbose
    - serviced_encode
    - pending_udp_query
    linkageType: ''
    returnType: int
    signature: int serviced_udp_send(struct serviced_query* sq, sldns_buffer* buff)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:3026,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/outside_network.c:3030,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:3032,1
    - Dst: LABEL_IS_PTR
      Src: /src/unbound/services/outside_network.c:3036,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/services/outside_network.c:3038,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/outside_network.c:3038,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:3040,1
    - Dst: PTR_OFFSET
      Src: /src/unbound/services/outside_network.c:3040,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/services/outside_network.c:3042,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/outside_network.c:3042,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/services/outside_network.c:3056,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/outside_network.c:3056,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:3058,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:3059,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:3060,1
    - Dst: memcmp
      Src: /src/unbound/services/outside_network.c:3062,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 37
    argCount: 3
    argNames:
    - pkt
    - qbuf
    - qbuflen
    argTypes:
    - sldns_buffer*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3070
      start: 3023
    functionDepth: 2
    functionLinenumber: 3023
    functionLinenumberEnd: 3070
    functionName: serviced_check_qname
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - PTR_OFFSET
    - sldns_buffer_at
    - LABEL_IS_PTR
    - sldns_buffer_limit
    - log_assert
    - sldns_buffer_begin
    - memcmp
    linkageType: ''
    returnType: int
    signature: int serviced_check_qname(sldns_buffer* pkt, uint8_t* qbuf, size_t qbuflen)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: log_addr
      Src: /src/unbound/services/outside_network.c:3179,1
    - Dst: infra_update_tcp_works
      Src: /src/unbound/services/outside_network.c:3182,1
    - Dst: log_addr
      Src: /src/unbound/services/outside_network.c:3191,1
    - Dst: log_addr
      Src: /src/unbound/services/outside_network.c:3192,1
    - Dst: dt_msg_send_outside_response
      Src: /src/unbound/services/outside_network.c:3193,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/outside_network.c:3200,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:3200,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/outside_network.c:3201,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:3201,1
    - Dst: serviced_tcp_initiate
      Src: /src/unbound/services/outside_network.c:3205,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/outside_network.c:3209,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:3209,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/outside_network.c:3210,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:3211,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/outside_network.c:3212,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:3212,1
    - Dst: infra_edns_update
      Src: /src/unbound/services/outside_network.c:3218,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3221,1
    - Dst: infra_rtt_update
      Src: /src/unbound/services/outside_network.c:3227,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3230,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:3237,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:3238,1
    - Dst: infra_rtt_update
      Src: /src/unbound/services/outside_network.c:3242,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3245,1
    - Dst: memcpy
      Src: /src/unbound/services/outside_network.c:3255,1
    - Dst: serviced_callbacks
      Src: /src/unbound/services/outside_network.c:3257,1
    CyclomaticComplexity: 31
    EdgeCount: 31
    ICount: 48
    argCount: 4
    argNames:
    - c
    - arg
    - error
    - rep
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3259
      start: 3162
    functionDepth: 4
    functionLinenumber: 3162
    functionLinenumberEnd: 3259
    functionName: serviced_tcp_callback
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - log_err
    - infra_rtt_update
    - memcpy
    - verbose
    - infra_update_tcp_works
    - infra_edns_update
    - dt_msg_send_outside_response
    - LDNS_RCODE_WIRE
    - serviced_tcp_initiate
    - serviced_callbacks
    - log_assert
    - sldns_buffer_begin
    - log_addr
    linkageType: ''
    returnType: int
    signature: "int serviced_tcp_callback(struct comm_point* c, void* arg, int error,\n
      \       struct comm_reply* rep)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:3264,1
    - Dst: serviced_encode
      Src: /src/unbound/services/outside_network.c:3266,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:3268,1
    - Dst: pending_tcp_query
      Src: /src/unbound/services/outside_network.c:3270,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:3276,1
    - Dst: serviced_callbacks
      Src: /src/unbound/services/outside_network.c:3277,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - sq
    - buff
    argTypes:
    - struct serviced_query*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3279
      start: 3261
    functionDepth: 6
    functionLinenumber: 3261
    functionLinenumberEnd: 3279
    functionName: serviced_tcp_initiate
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 1
    functionsReached:
    - verbose
    - serviced_callbacks
    - pending_tcp_query
    - log_assert
    - serviced_encode
    linkageType: ''
    returnType: void
    signature: void serviced_tcp_initiate(struct serviced_query* sq, sldns_buffer*
      buff)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: infra_host
      Src: /src/unbound/services/outside_network.c:3287,1
    - Dst: serviced_encode
      Src: /src/unbound/services/outside_network.c:3295,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:3304,1
    - Dst: pending_tcp_query
      Src: /src/unbound/services/outside_network.c:3306,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - sq
    - buff
    argTypes:
    - struct serviced_query*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3310
      start: 3282
    functionDepth: 6
    functionLinenumber: 3282
    functionLinenumberEnd: 3310
    functionName: serviced_tcp_send
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 1
    functionsReached:
    - infra_host
    - pending_tcp_query
    - log_assert
    - serviced_encode
    linkageType: ''
    returnType: int
    signature: int serviced_tcp_send(struct serviced_query* sq, sldns_buffer* buff)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/outside_network.c:3321,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/outside_network.c:3324,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:3324,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/services/outside_network.c:3327,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:3327,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/services/outside_network.c:3328,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:3328,1
    - Dst: dname_valid
      Src: /src/unbound/services/outside_network.c:3331,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/services/outside_network.c:3331,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/outside_network.c:3332,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/outside_network.c:3338,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/services/outside_network.c:3343,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/services/outside_network.c:3344,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/services/outside_network.c:3345,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 17
    argCount: 2
    argNames:
    - buf
    - qtype
    argTypes:
    - struct sldns_buffer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3348
      start: 3317
    functionDepth: 2
    functionLinenumber: 3317
    functionLinenumberEnd: 3348
    functionName: packet_edns_malformed
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_at
    - LDNS_ANCOUNT
    - LDNS_QDCOUNT
    - sldns_buffer_limit
    - LDNS_RCODE_WIRE
    - dname_valid
    - sldns_buffer_begin
    linkageType: ''
    returnType: int
    signature: int packet_edns_malformed(struct sldns_buffer* buf, int qtype)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: serviced_query_udp_size
      Src: /src/unbound/services/outside_network.c:3364,1
    - Dst: serviced_query_udp_size
      Src: /src/unbound/services/outside_network.c:3364,1
    - Dst: log_name_addr
      Src: /src/unbound/services/outside_network.c:3367,1
    - Dst: serviced_udp_send
      Src: /src/unbound/services/outside_network.c:3369,1
    - Dst: serviced_callbacks
      Src: /src/unbound/services/outside_network.c:3370,1
    - Dst: infra_rtt_update
      Src: /src/unbound/services/outside_network.c:3379,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3382,1
    - Dst: log_name_addr
      Src: /src/unbound/services/outside_network.c:3384,1
    - Dst: serviced_udp_send
      Src: /src/unbound/services/outside_network.c:3386,1
    - Dst: serviced_callbacks
      Src: /src/unbound/services/outside_network.c:3387,1
    - Dst: serviced_callbacks
      Src: /src/unbound/services/outside_network.c:3394,1
    - Dst: log_addr
      Src: /src/unbound/services/outside_network.c:3404,1
    - Dst: log_addr
      Src: /src/unbound/services/outside_network.c:3405,1
    - Dst: dt_msg_send_outside_response
      Src: /src/unbound/services/outside_network.c:3407,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/outside_network.c:3415,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:3415,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/outside_network.c:3416,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:3417,1
    - Dst: packet_edns_malformed
      Src: /src/unbound/services/outside_network.c:3418,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:3421,1
    - Dst: serviced_udp_send
      Src: /src/unbound/services/outside_network.c:3424,1
    - Dst: serviced_callbacks
      Src: /src/unbound/services/outside_network.c:3425,1
    - Dst: log_addr
      Src: /src/unbound/services/outside_network.c:3431,1
    - Dst: infra_edns_update
      Src: /src/unbound/services/outside_network.c:3433,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3435,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/outside_network.c:3439,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:3440,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/outside_network.c:3441,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:3441,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/outside_network.c:3442,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:3442,1
    - Dst: log_addr
      Src: /src/unbound/services/outside_network.c:3448,1
    - Dst: infra_edns_update
      Src: /src/unbound/services/outside_network.c:3450,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3452,1
    - Dst: log_addr
      Src: /src/unbound/services/outside_network.c:3455,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:3467,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:3468,1
    - Dst: infra_rtt_update
      Src: /src/unbound/services/outside_network.c:3472,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3475,1
    - Dst: LDNS_TC_WIRE
      Src: /src/unbound/services/outside_network.c:3480,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/outside_network.c:3480,1
    - Dst: serviced_tcp_initiate
      Src: /src/unbound/services/outside_network.c:3489,1
    - Dst: serviced_callbacks
      Src: /src/unbound/services/outside_network.c:3493,1
    CyclomaticComplexity: 40
    EdgeCount: 40
    ICount: 78
    argCount: 4
    argNames:
    - c
    - arg
    - error
    - rep
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3495
      start: 3350
    functionDepth: 7
    functionLinenumber: 3350
    functionLinenumberEnd: 3495
    functionName: serviced_udp_callback
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - LDNS_TC_WIRE
    - log_err
    - infra_rtt_update
    - verbose
    - infra_edns_update
    - serviced_query_udp_size
    - dt_msg_send_outside_response
    - LDNS_RCODE_WIRE
    - serviced_tcp_initiate
    - serviced_callbacks
    - log_assert
    - sldns_buffer_begin
    - log_addr
    - serviced_udp_send
    - packet_edns_malformed
    - log_name_addr
    linkageType: ''
    returnType: int
    signature: "int serviced_udp_callback(struct comm_point* c, void* arg, int error,\n
      \       struct comm_reply* rep)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: alloc_reg_obtain
      Src: /src/unbound/services/outside_network.c:3520,1
    - Dst: edns_opt_copy_region
      Src: /src/unbound/services/outside_network.c:3523,1
    - Dst: alloc_reg_release
      Src: /src/unbound/services/outside_network.c:3526,1
    - Dst: inplace_cb_query_call
      Src: /src/unbound/services/outside_network.c:3532,1
    - Dst: alloc_reg_release
      Src: /src/unbound/services/outside_network.c:3534,1
    - Dst: edns_string_addr_lookup
      Src: /src/unbound/services/outside_network.c:3542,1
    - Dst: edns_opt_list_append
      Src: /src/unbound/services/outside_network.c:3544,1
    - Dst: serviced_gen_query
      Src: /src/unbound/services/outside_network.c:3550,1
    - Dst: lookup_serviced
      Src: /src/unbound/services/outside_network.c:3552,1
    - Dst: infra_ratelimit_inc
      Src: /src/unbound/services/outside_network.c:3558,1
    - Dst: ub_random_max
      Src: /src/unbound/services/outside_network.c:3566,1
    - Dst: alloc_reg_release
      Src: /src/unbound/services/outside_network.c:3569,1
    - Dst: log_nametypeclass
      Src: /src/unbound/services/outside_network.c:3572,1
    - Dst: serviced_create
      Src: /src/unbound/services/outside_network.c:3580,1
    - Dst: infra_ratelimit_dec
      Src: /src/unbound/services/outside_network.c:3589,1
    - Dst: regional_alloc
      Src: /src/unbound/services/outside_network.c:3594,1
    - Dst: infra_ratelimit_dec
      Src: /src/unbound/services/outside_network.c:3597,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/outside_network.c:3600,1
    - Dst: serviced_node_del
      Src: /src/unbound/services/outside_network.c:3601,1
    - Dst: alloc_reg_release
      Src: /src/unbound/services/outside_network.c:3608,1
    - Dst: regional_alloc
      Src: /src/unbound/services/outside_network.c:3612,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 62
    argCount: 21
    argNames:
    - outnet
    - qinfo
    - flags
    - dnssec
    - want_dnssec
    - nocaps
    - check_ratelimit
    - tcp_upstream
    - ssl_upstream
    - tls_auth_name
    - addr
    - addrlen
    - zone
    - zonelen
    - qstate
    - callback
    - callback_arg
    - buff
    - env
    - was_ratelimited
    - ratelimit_incremented
    argTypes:
    - struct outside_network*
    - struct query_info*
    - uint16_t
    - int
    - int
    - int
    - int
    - int
    - int
    - char*
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - struct module_qstate*
    - comm_point_callback_type*
    - void*
    - sldns_buffer*
    - struct module_env*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3623
      start: 3497
    functionDepth: 6
    functionLinenumber: 3497
    functionLinenumberEnd: 3623
    functionName: outnet_serviced_query
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 1
    functionsReached:
    - alloc_reg_obtain
    - inplace_cb_query_call
    - edns_opt_list_append
    - log_nametypeclass
    - ub_random_max
    - serviced_gen_query
    - rbtree_delete
    - lookup_serviced
    - alloc_reg_release
    - serviced_node_del
    - edns_string_addr_lookup
    - infra_ratelimit_inc
    - regional_alloc
    - infra_ratelimit_dec
    - serviced_create
    - edns_opt_copy_region
    linkageType: ''
    returnType: struct serviced_query
    signature: "struct serviced_query * \noutnet_serviced_query(struct outside_network*
      outnet,\n\tstruct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec,\n\tint
      nocaps, int check_ratelimit, int tcp_upstream, int ssl_upstream,\n\tchar* tls_auth_name,
      struct sockaddr_storage* addr, socklen_t addrlen,\n\tuint8_t* zone, size_t zonelen,
      struct module_qstate* qstate,\n\tcomm_point_callback_type* callback, void* callback_arg,\n\tsldns_buffer*
      buff, struct module_env* env, int* was_ratelimited,\n\tint* ratelimit_incremented)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - sq
    - cb_arg
    argTypes:
    - struct serviced_query*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3638
      start: 3626
    functionDepth: 0
    functionLinenumber: 3626
    functionLinenumberEnd: 3638
    functionName: callback_list_remove
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void callback_list_remove(struct serviced_query* sq, void* cb_arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: callback_list_remove
      Src: /src/unbound/services/outside_network.c:3644,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/outside_network.c:3647,1
    - Dst: serviced_delete
      Src: /src/unbound/services/outside_network.c:3648,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - sq
    - cb_arg
    argTypes:
    - struct serviced_query*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3650
      start: 3640
    functionDepth: 7
    functionLinenumber: 3640
    functionLinenumberEnd: 3650
    functionName: outnet_serviced_query_stop
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 2
    functionsReached:
    - serviced_delete
    - callback_list_remove
    - rbtree_delete
    linkageType: ''
    returnType: void
    signature: void outnet_serviced_query_stop(struct serviced_query* sq, void* cb_arg)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: addr_is_ip6
      Src: /src/unbound/services/outside_network.c:3675,1
    - Dst: addr_to_str
      Src: /src/unbound/services/outside_network.c:3678,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:3679,1
    - Dst: ub_random_max
      Src: /src/unbound/services/outside_network.c:3682,1
    - Dst: addr_to_str
      Src: /src/unbound/services/outside_network.c:3687,1
    - Dst: verbose
      Src: /src/unbound/services/outside_network.c:3688,1
    - Dst: ub_random_max
      Src: /src/unbound/services/outside_network.c:3691,1
    - Dst: shared_ports_fetch_random
      Src: /src/unbound/services/outside_network.c:3697,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:3704,1
    - Dst: addr_is_ip6
      Src: /src/unbound/services/outside_network.c:3710,1
    - Dst: htons
      Src: /src/unbound/services/outside_network.c:3712,1
    - Dst: create_udp_sock
      Src: /src/unbound/services/outside_network.c:3713,1
    - Dst: htons
      Src: /src/unbound/services/outside_network.c:3718,1
    - Dst: create_udp_sock
      Src: /src/unbound/services/outside_network.c:3719,1
    - Dst: shared_ports_return_port
      Src: /src/unbound/services/outside_network.c:3727,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3739,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 49
    argCount: 3
    argNames:
    - outnet
    - to_addr
    - to_addrlen
    argTypes:
    - struct outside_network*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3741
      start: 3653
    functionDepth: 1
    functionLinenumber: 3653
    functionLinenumberEnd: 3741
    functionName: fd_for_dest
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - create_udp_sock
    - log_err
    - addr_to_str
    - ub_random_max
    - shared_ports_fetch_random
    - verbose
    - htons
    - log_assert
    - addr_is_ip6
    - shared_ports_return_port
    linkageType: ''
    returnType: int
    signature: "int fd_for_dest(struct outside_network* outnet, struct sockaddr_storage*
      to_addr,\n\tsocklen_t to_addrlen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fd_for_dest
      Src: /src/unbound/services/outside_network.c:3749,1
    - Dst: comm_point_create_udp
      Src: /src/unbound/services/outside_network.c:3753,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3756,1
    - Dst: close
      Src: /src/unbound/services/outside_network.c:3757,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - outnet
    - cb
    - cb_arg
    - to_addr
    - to_addrlen
    argTypes:
    - struct outside_network*
    - comm_point_callback_type*
    - void*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3761
      start: 3743
    functionDepth: 2
    functionLinenumber: 3743
    functionLinenumberEnd: 3761
    functionName: outnet_comm_point_for_udp
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - log_err
    - close
    - fd_for_dest
    - comm_point_create_udp
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point *\noutnet_comm_point_for_udp(struct outside_network*
      outnet,\n\tcomm_point_callback_type* cb, void* cb_arg,\n\tstruct sockaddr_storage*
      to_addr, socklen_t to_addrlen)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: outgoing_ssl_fd
      Src: /src/unbound/services/outside_network.c:3768,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3770,1
    - Dst: comm_point_tcp_win_bio_cb
      Src: /src/unbound/services/outside_network.c:3774,1
    - Dst: SSL_set_tlsext_host_name
      Src: /src/unbound/services/outside_network.c:3780,1
    - Dst: SSL_CTX_get_verify_mode
      Src: /src/unbound/services/outside_network.c:3784,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/services/outside_network.c:3797,1
    - Dst: SSL_set1_ipaddr
      Src: /src/unbound/services/outside_network.c:3798,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3799,1
    - Dst: SSL_set1_dnsname
      Src: /src/unbound/services/outside_network.c:3803,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3804,1
    - Dst: SSL_CTX_get_verify_mode
      Src: /src/unbound/services/outside_network.c:3810,1
    - Dst: SSL_set1_host
      Src: /src/unbound/services/outside_network.c:3821,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3822,1
    - Dst: SSL_CTX_get_verify_mode
      Src: /src/unbound/services/outside_network.c:3829,1
    - Dst: SSL_get0_param
      Src: /src/unbound/services/outside_network.c:3830,1
    - Dst: X509_VERIFY_PARAM_set_hostflags
      Src: /src/unbound/services/outside_network.c:3832,1
    - Dst: X509_VERIFY_PARAM_set1_host
      Src: /src/unbound/services/outside_network.c:3834,1
    - Dst: strlen
      Src: /src/unbound/services/outside_network.c:3834,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3835,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 4
    argNames:
    - cp
    - outnet
    - fd
    - host
    argTypes:
    - struct comm_point*
    - struct outside_network*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3843
      start: 3764
    functionDepth: 1
    functionLinenumber: 3764
    functionLinenumberEnd: 3843
    functionName: setup_comm_ssl
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - log_err
    - comm_point_tcp_win_bio_cb
    - SSL_set1_ipaddr
    - ipstrtoaddr
    - SSL_set_tlsext_host_name
    - SSL_set1_dnsname
    - SSL_set1_host
    - SSL_CTX_get_verify_mode
    - X509_VERIFY_PARAM_set1_host
    - SSL_get0_param
    - strlen
    - X509_VERIFY_PARAM_set_hostflags
    - outgoing_ssl_fd
    linkageType: ''
    returnType: int
    signature: "int setup_comm_ssl(struct comm_point* cp, struct outside_network*
      outnet,\n\tint fd, char* host)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: outnet_get_tcp_fd
      Src: /src/unbound/services/outside_network.c:3852,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/services/outside_network.c:3857,1
    - Dst: outnet_tcp_connect
      Src: /src/unbound/services/outside_network.c:3858,1
    - Dst: comm_point_create_tcp_out
      Src: /src/unbound/services/outside_network.c:3862,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3864,1
    - Dst: close
      Src: /src/unbound/services/outside_network.c:3865,1
    - Dst: memcpy
      Src: /src/unbound/services/outside_network.c:3869,1
    - Dst: setup_comm_ssl
      Src: /src/unbound/services/outside_network.c:3873,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3874,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/outside_network.c:3875,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/services/outside_network.c:3881,1
    - Dst: sldns_buffer_copy
      Src: /src/unbound/services/outside_network.c:3883,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 9
    argNames:
    - outnet
    - cb
    - cb_arg
    - to_addr
    - to_addrlen
    - query
    - timeout
    - ssl
    - host
    argTypes:
    - struct outside_network*
    - comm_point_callback_type*
    - void*
    - struct sockaddr_storage*
    - socklen_t
    - sldns_buffer*
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3885
      start: 3845
    functionDepth: 2
    functionLinenumber: 3845
    functionLinenumberEnd: 3885
    functionName: outnet_comm_point_for_tcp
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - comm_point_create_tcp_out
    - log_err
    - memcpy
    - outnet_tcp_connect
    - setup_comm_ssl
    - comm_point_start_listening
    - fd_set_nonblock
    - sldns_buffer_copy
    - close
    - outnet_get_tcp_fd
    - comm_point_delete
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point *\noutnet_comm_point_for_tcp(struct outside_network*
      outnet,\n\tcomm_point_callback_type* cb, void* cb_arg,\n\tstruct sockaddr_storage*
      to_addr, socklen_t to_addrlen,\n\tsldns_buffer* query, int timeout, int ssl,
      char* host)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_printf
      Src: /src/unbound/services/outside_network.c:3893,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/services/outside_network.c:3896,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - buf
    - cfg
    argTypes:
    - sldns_buffer*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3898
      start: 3888
    functionDepth: 2
    functionLinenumber: 3888
    functionLinenumberEnd: 3898
    functionName: setup_http_user_agent
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_printf
    linkageType: ''
    returnType: void
    signature: void setup_http_user_agent(sldns_buffer* buf, struct config_file* cfg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/outside_network.c:3905,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/services/outside_network.c:3906,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/services/outside_network.c:3907,1
    - Dst: setup_http_user_agent
      Src: /src/unbound/services/outside_network.c:3908,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/services/outside_network.c:3912,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/outside_network.c:3913,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/outside_network.c:3913,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/outside_network.c:3916,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - buf
    - host
    - path
    - cfg
    argTypes:
    - sldns_buffer*
    - char*
    - char*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3918
      start: 3901
    functionDepth: 3
    functionLinenumber: 3901
    functionLinenumberEnd: 3918
    functionName: setup_http_request
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_capacity
    - setup_http_user_agent
    - sldns_buffer_flip
    - sldns_buffer_clear
    - sldns_buffer_printf
    linkageType: ''
    returnType: int
    signature: "int setup_http_request(sldns_buffer* buf, char* host, char* path,\n\tstruct
      config_file* cfg)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: outnet_get_tcp_fd
      Src: /src/unbound/services/outside_network.c:3928,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/services/outside_network.c:3933,1
    - Dst: outnet_tcp_connect
      Src: /src/unbound/services/outside_network.c:3934,1
    - Dst: comm_point_create_http_out
      Src: /src/unbound/services/outside_network.c:3938,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/outside_network.c:3939,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3942,1
    - Dst: close
      Src: /src/unbound/services/outside_network.c:3943,1
    - Dst: memcpy
      Src: /src/unbound/services/outside_network.c:3947,1
    - Dst: setup_comm_ssl
      Src: /src/unbound/services/outside_network.c:3951,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3952,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/outside_network.c:3953,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/services/outside_network.c:3959,1
    - Dst: setup_http_request
      Src: /src/unbound/services/outside_network.c:3962,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:3963,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/outside_network.c:3964,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 10
    argNames:
    - outnet
    - cb
    - cb_arg
    - to_addr
    - to_addrlen
    - timeout
    - ssl
    - host
    - path
    - cfg
    argTypes:
    - struct outside_network*
    - comm_point_callback_type*
    - void*
    - struct sockaddr_storage*
    - socklen_t
    - int
    - int
    - char*
    - char*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3968
      start: 3920
    functionDepth: 4
    functionLinenumber: 3920
    functionLinenumberEnd: 3968
    functionName: outnet_comm_point_for_http
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - log_err
    - memcpy
    - setup_http_request
    - outnet_tcp_connect
    - setup_comm_ssl
    - comm_point_start_listening
    - fd_set_nonblock
    - close
    - outnet_get_tcp_fd
    - comm_point_delete
    - comm_point_create_http_out
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point *\noutnet_comm_point_for_http(struct outside_network*
      outnet,\n\tcomm_point_callback_type* cb, void* cb_arg,\n\tstruct sockaddr_storage*
      to_addr, socklen_t to_addrlen, int timeout,\n\tint ssl, char* host, char* path,
      struct config_file* cfg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: comm_timer_get_mem
      Src: /src/unbound/services/outside_network.c:3978,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - w
    argTypes:
    - struct waiting_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3980
      start: 3971
    functionDepth: 0
    functionLinenumber: 3971
    functionLinenumberEnd: 3980
    functionName: waiting_tcp_get_mem
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - comm_timer_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t waiting_tcp_get_mem(struct waiting_tcp* w)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: comm_point_get_mem
      Src: /src/unbound/services/outside_network.c:3991,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - pif
    argTypes:
    - struct port_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3993
      start: 3983
    functionDepth: 0
    functionLinenumber: 3983
    functionLinenumberEnd: 3993
    functionName: if_get_mem
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - comm_point_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t if_get_mem(struct port_if* pif)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: comm_timer_get_mem
      Src: /src/unbound/services/outside_network.c:4000,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - w
    argTypes:
    - struct pending*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4002
      start: 3996
    functionDepth: 0
    functionLinenumber: 3996
    functionLinenumberEnd: 4002
    functionName: waiting_udp_get_mem
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - comm_timer_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t waiting_udp_get_mem(struct pending* w)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/outside_network.c:4015,1
    - Dst: comm_point_get_mem
      Src: /src/unbound/services/outside_network.c:4018,1
    - Dst: if_get_mem
      Src: /src/unbound/services/outside_network.c:4021,1
    - Dst: if_get_mem
      Src: /src/unbound/services/outside_network.c:4023,1
    - Dst: waiting_udp_get_mem
      Src: /src/unbound/services/outside_network.c:4025,1
    - Dst: comm_point_get_mem
      Src: /src/unbound/services/outside_network.c:4030,1
    - Dst: waiting_tcp_get_mem
      Src: /src/unbound/services/outside_network.c:4032,1
    - Dst: waiting_tcp_get_mem
      Src: /src/unbound/services/outside_network.c:4035,1
    - Dst: comm_timer_get_mem
      Src: /src/unbound/services/outside_network.c:4037,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - outnet
    argTypes:
    - struct outside_network*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4047
      start: 4004
    functionDepth: 1
    functionLinenumber: 4004
    functionLinenumberEnd: 4047
    functionName: outnet_get_mem
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 1
    functionsReached:
    - sldns_buffer_capacity
    - if_get_mem
    - comm_point_get_mem
    - waiting_tcp_get_mem
    - waiting_udp_get_mem
    - comm_timer_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t outnet_get_mem(struct outside_network* outnet)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - serviced
    argTypes:
    - outnet
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4045
      start: 4041
    functionDepth: 0
    functionLinenumber: 4041
    functionLinenumberEnd: 4045
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(sq, struct serviced_query*, outnet->serviced)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: comm_timer_get_mem
      Src: /src/unbound/services/outside_network.c:4062,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - sq
    argTypes:
    - struct serviced_query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4074
      start: 4049
    functionDepth: 0
    functionLinenumber: 4049
    functionLinenumberEnd: 4074
    functionName: serviced_get_mem
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 1
    functionsReached:
    - comm_timer_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t serviced_get_mem(struct serviced_query* sq)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memdup
      Src: /src/unbound/services/outside_network.c:4081,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/services/outside_network.c:4088,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/services/outside_network.c:4089,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - shpif
    - str
    - availports
    - numavailports
    argTypes:
    - struct shared_ports_if*
    - char*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4093
      start: 4078
    functionDepth: 1
    functionLinenumber: 4078
    functionLinenumberEnd: 4093
    functionName: shared_ports_setup_if
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - netblockstrtoaddr
    - memdup
    - ipstrtoaddr
    linkageType: ''
    returnType: int
    signature: "int shared_ports_setup_if(struct shared_ports_if* shpif, char* str,\n\tint*
      availports, int numavailports)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: calc_num46
      Src: /src/unbound/services/outside_network.c:4105,1
    - Dst: calloc
      Src: /src/unbound/services/outside_network.c:4108,1
    - Dst: calloc
      Src: /src/unbound/services/outside_network.c:4114,1
    - Dst: shared_ports_setup_if
      Src: /src/unbound/services/outside_network.c:4120,1
    - Dst: shared_ports_setup_if
      Src: /src/unbound/services/outside_network.c:4123,1
    - Dst: str_is_ip6
      Src: /src/unbound/services/outside_network.c:4130,1
    - Dst: shared_ports_setup_if
      Src: /src/unbound/services/outside_network.c:4132,1
    - Dst: str_is_ip6
      Src: /src/unbound/services/outside_network.c:4137,1
    - Dst: shared_ports_setup_if
      Src: /src/unbound/services/outside_network.c:4139,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 31
    argCount: 7
    argNames:
    - shp
    - ifs
    - num_ifs
    - do_ip4
    - do_ip6
    - availports
    - numavailports
    argTypes:
    - struct shared_ports*
    - char**
    - int
    - int
    - int
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4147
      start: 4098
    functionDepth: 2
    functionLinenumber: 4098
    functionLinenumberEnd: 4147
    functionName: shared_ports_alloc_ifs
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - str_is_ip6
    - calloc
    - calc_num46
    - shared_ports_setup_if
    linkageType: ''
    returnType: int
    signature: "int shared_ports_alloc_ifs(struct shared_ports* shp, char** ifs,\n\tint
      num_ifs, int do_ip4, int do_ip6, int* availports,\n\tint numavailports)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/outside_network.c:4153,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:4155,1
    - Dst: lock_basic_init
      Src: /src/unbound/services/outside_network.c:4158,1
    - Dst: lock_protect
      Src: /src/unbound/services/outside_network.c:4159,1
    - Dst: lock_protect
      Src: /src/unbound/services/outside_network.c:4160,1
    - Dst: lock_protect
      Src: /src/unbound/services/outside_network.c:4161,1
    - Dst: lock_protect
      Src: /src/unbound/services/outside_network.c:4162,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/outside_network.c:4166,1
    - Dst: shared_ports_alloc_ifs
      Src: /src/unbound/services/outside_network.c:4167,1
    - Dst: log_err
      Src: /src/unbound/services/outside_network.c:4169,1
    - Dst: shared_ports_delete
      Src: /src/unbound/services/outside_network.c:4170,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/outside_network.c:4173,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 24
    argCount: 6
    argNames:
    - ifs
    - num_ifs
    - do_ip4
    - do_ip6
    - availports
    - numavailports
    argTypes:
    - char**
    - int
    - int
    - int
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4179
      start: 4150
    functionDepth: 3
    functionLinenumber: 4150
    functionLinenumberEnd: 4179
    functionName: shared_ports_create
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 1
    functionsReached:
    - log_err
    - lock_basic_unlock
    - lock_basic_init
    - shared_ports_alloc_ifs
    - lock_protect
    - shared_ports_delete
    - calloc
    - lock_basic_lock
    linkageType: ''
    returnType: struct shared_ports
    signature: "struct shared_ports * shared_ports_create(char** ifs, int num_ifs,
      int do_ip4,\n\tint do_ip6, int* availports, int numavailports)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/services/outside_network.c:4187,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - shpif
    argTypes:
    - struct shared_ports_if*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4188
      start: 4183
    functionDepth: 1
    functionLinenumber: 4183
    functionLinenumberEnd: 4188
    functionName: shared_ports_if_delete
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void shared_ports_if_delete(struct shared_ports_if* shpif)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_destroy
      Src: /src/unbound/services/outside_network.c:4198,1
    - Dst: shared_ports_if_delete
      Src: /src/unbound/services/outside_network.c:4201,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:4203,1
    - Dst: shared_ports_if_delete
      Src: /src/unbound/services/outside_network.c:4205,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:4207,1
    - Dst: free
      Src: /src/unbound/services/outside_network.c:4209,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - shp
    argTypes:
    - struct shared_ports*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4210
      start: 4191
    functionDepth: 2
    functionLinenumber: 4191
    functionLinenumberEnd: 4210
    functionName: shared_ports_delete
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 2
    functionsReached:
    - free
    - lock_basic_destroy
    - shared_ports_if_delete
    linkageType: ''
    returnType: void
    signature: void shared_ports_delete(struct shared_ports* shp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/services/outside_network.c:4218,1
    - Dst: addr_is_ip6
      Src: /src/unbound/services/outside_network.c:4219,1
    - Dst: sockaddr_cmp
      Src: /src/unbound/services/outside_network.c:4227,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/outside_network.c:4231,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/outside_network.c:4235,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 4
    argNames:
    - shp
    - addr
    - addrlen
    - pfxlen
    argTypes:
    - struct shared_ports*
    - struct sockaddr_storage*
    - socklen_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4241
      start: 4212
    functionDepth: 1
    functionLinenumber: 4212
    functionLinenumberEnd: 4241
    functionName: shared_ports_find_if
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 1
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    - addr_is_ip6
    - sockaddr_cmp
    linkageType: ''
    returnType: struct shared_ports_if
    signature: "struct shared_ports_if * shared_ports_find_if(struct shared_ports*
      shp,\n\tstruct sockaddr_storage* addr, socklen_t addrlen, int pfxlen)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/services/outside_network.c:4254,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/outside_network.c:4258,1
    - Dst: ub_random_max
      Src: /src/unbound/services/outside_network.c:4261,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/outside_network.c:4266,1
    - Dst: ub_random_max
      Src: /src/unbound/services/outside_network.c:4270,1
    - Dst: ub_random_max
      Src: /src/unbound/services/outside_network.c:4275,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/outside_network.c:4279,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:4286,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:4287,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/outside_network.c:4292,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 48
    argCount: 7
    argNames:
    - shp
    - shpif
    - rnd
    - udp_connect
    - reusenum
    - port
    - reused
    argTypes:
    - struct shared_ports*
    - struct shared_ports_if*
    - struct ub_randstate*
    - int
    - int
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4303
      start: 4243
    functionDepth: 1
    functionLinenumber: 4243
    functionLinenumberEnd: 4303
    functionName: shared_ports_fetch_random
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 2
    functionsReached:
    - ub_random_max
    - lock_basic_unlock
    - log_assert
    - lock_basic_lock
    linkageType: ''
    returnType: int
    signature: "int shared_ports_fetch_random(struct shared_ports* shp,\n\tstruct
      shared_ports_if* shpif, struct ub_randstate* rnd,\n\tint udp_connect, int reusenum,
      int* port, int* reused)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/services/outside_network.c:4314,1
    - Dst: log_assert
      Src: /src/unbound/services/outside_network.c:4315,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/outside_network.c:4318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - shp
    - shpif
    - port
    argTypes:
    - struct shared_ports*
    - struct shared_ports_if*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4322
      start: 4305
    functionDepth: 1
    functionLinenumber: 4305
    functionLinenumberEnd: 4322
    functionName: shared_ports_return_port
    functionSourceFile: /src/unbound/services/outside_network.c
    functionUses: 3
    functionsReached:
    - lock_basic_unlock
    - log_assert
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: "void shared_ports_return_port(struct shared_ports* shp,\n\tstruct
      shared_ports_if* shpif, int port)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/services/modstack.c:79,1
    - Dst: isspace
      Src: /src/unbound/services/modstack.c:81,1
    - Dst: isspace
      Src: /src/unbound/services/modstack.c:84,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 89
    functionName: count_modules
    functionSourceFile: /src/unbound/services/modstack.c
    functionUses: 0
    functionsReached:
    - isspace
    linkageType: ''
    returnType: int
    signature: int count_modules(const char* s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - stack
    argTypes:
    - struct module_stack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 96
    functionName: modstack_init
    functionSourceFile: /src/unbound/services/modstack.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void modstack_init(struct module_stack* stack)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/services/modstack.c:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - stack
    argTypes:
    - struct module_stack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 106
    functionName: modstack_free
    functionSourceFile: /src/unbound/services/modstack.c
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void modstack_free(struct module_stack* stack)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/modstack.c:112,1
    - Dst: count_modules
      Src: /src/unbound/services/modstack.c:113,1
    - Dst: log_err
      Src: /src/unbound/services/modstack.c:115,1
    - Dst: log_err
      Src: /src/unbound/services/modstack.c:119,1
    - Dst: calloc
      Src: /src/unbound/services/modstack.c:123,1
    - Dst: log_err
      Src: /src/unbound/services/modstack.c:126,1
    - Dst: module_factory
      Src: /src/unbound/services/modstack.c:130,1
    - Dst: snprintf
      Src: /src/unbound/services/modstack.c:134,1
    - Dst: isspace
      Src: /src/unbound/services/modstack.c:136,1
    - Dst: strchr
      Src: /src/unbound/services/modstack.c:138,1
    - Dst: strchr
      Src: /src/unbound/services/modstack.c:138,1
    - Dst: strchr
      Src: /src/unbound/services/modstack.c:139,1
    - Dst: strchr
      Src: /src/unbound/services/modstack.c:139,1
    - Dst: log_err
      Src: /src/unbound/services/modstack.c:140,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 31
    argCount: 2
    argNames:
    - stack
    - module_conf
    argTypes:
    - struct module_stack*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 108
    functionDepth: 2
    functionLinenumber: 108
    functionLinenumberEnd: 147
    functionName: modstack_config
    functionSourceFile: /src/unbound/services/modstack.c
    functionUses: 0
    functionsReached:
    - module_factory
    - log_err
    - isspace
    - verbose
    - snprintf
    - calloc
    - strchr
    - count_modules
    linkageType: ''
    returnType: int
    signature: int modstack_config(struct module_stack* stack, const char* module_conf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 179
    functionName: module_list_avail
    functionSourceFile: /src/unbound/services/modstack.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char **

      module_list_avail(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 213
    functionName: module_funcs_avail
    functionSourceFile: /src/unbound/services/modstack.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: fbgetfunctype
    signature: 'fbgetfunctype *

      module_funcs_avail(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: module_list_avail
      Src: /src/unbound/services/modstack.c:220,1
    - Dst: module_funcs_avail
      Src: /src/unbound/services/modstack.c:221,1
    - Dst: isspace
      Src: /src/unbound/services/modstack.c:222,1
    - Dst: strncmp
      Src: /src/unbound/services/modstack.c:225,1
    - Dst: strlen
      Src: /src/unbound/services/modstack.c:225,1
    - Dst: strlen
      Src: /src/unbound/services/modstack.c:226,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - str
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 233
    functionName: module_factory
    functionSourceFile: /src/unbound/services/modstack.c
    functionUses: 1
    functionsReached:
    - module_list_avail
    - strncmp
    - isspace
    - module_funcs_avail
    - strlen
    linkageType: ''
    returnType: 'struct

      module_func_block'
    signature: 'struct

      module_func_block * module_factory(const char** str)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fatal_exit
      Src: /src/unbound/services/modstack.c:241,1
    - Dst: modstack_config
      Src: /src/unbound/services/modstack.c:243,1
    - Dst: verbose
      Src: /src/unbound/services/modstack.c:249,1
    - Dst: fptr_ok
      Src: /src/unbound/services/modstack.c:251,1
    - Dst: fptr_whitelist_mod_startup
      Src: /src/unbound/services/modstack.c:251,1
    - Dst: log_err
      Src: /src/unbound/services/modstack.c:253,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - stack
    - module_conf
    - env
    argTypes:
    - struct module_stack*
    - char*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 235
    functionDepth: 3
    functionLinenumber: 235
    functionLinenumberEnd: 259
    functionName: modstack_call_startup
    functionSourceFile: /src/unbound/services/modstack.c
    functionUses: 1
    functionsReached:
    - log_err
    - verbose
    - fatal_exit
    - fptr_whitelist_mod_startup
    - fptr_ok
    - modstack_config
    linkageType: ''
    returnType: int
    signature: "int modstack_call_startup(struct module_stack* stack, const char*
      module_conf,\n\tstruct module_env* env)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/services/modstack.c:269,1
    - Dst: strncmp
      Src: /src/unbound/services/modstack.c:271,1
    - Dst: strlen
      Src: /src/unbound/services/modstack.c:272,1
    - Dst: log_err
      Src: /src/unbound/services/modstack.c:274,1
    - Dst: isspace
      Src: /src/unbound/services/modstack.c:281,1
    - Dst: modstack_free
      Src: /src/unbound/services/modstack.c:285,1
    - Dst: modstack_config
      Src: /src/unbound/services/modstack.c:286,1
    - Dst: verbose
      Src: /src/unbound/services/modstack.c:292,1
    - Dst: fptr_ok
      Src: /src/unbound/services/modstack.c:294,1
    - Dst: fptr_whitelist_mod_init
      Src: /src/unbound/services/modstack.c:294,1
    - Dst: log_err
      Src: /src/unbound/services/modstack.c:296,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 3
    argNames:
    - stack
    - module_conf
    - env
    argTypes:
    - struct module_stack*
    - char*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 261
    functionDepth: 3
    functionLinenumber: 261
    functionLinenumberEnd: 302
    functionName: modstack_call_init
    functionSourceFile: /src/unbound/services/modstack.c
    functionUses: 1
    functionsReached:
    - modstack_free
    - log_err
    - strncmp
    - isspace
    - verbose
    - fptr_ok
    - modstack_config
    - strlen
    - fptr_whitelist_mod_init
    linkageType: ''
    returnType: int
    signature: "int modstack_call_init(struct module_stack* stack, const char* module_conf,\n\tstruct
      module_env* env)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/services/modstack.c:309,1
    - Dst: fptr_whitelist_mod_deinit
      Src: /src/unbound/services/modstack.c:309,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - stack
    - env
    argTypes:
    - struct module_stack*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 312
    functionName: modstack_call_deinit
    functionSourceFile: /src/unbound/services/modstack.c
    functionUses: 2
    functionsReached:
    - fptr_whitelist_mod_deinit
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: void modstack_call_deinit(struct module_stack* stack, struct module_env*
      env)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/services/modstack.c:321,1
    - Dst: fptr_whitelist_mod_destartup
      Src: /src/unbound/services/modstack.c:321,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - stack
    - env
    argTypes:
    - struct module_stack*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 324
    functionName: modstack_call_destartup
    functionSourceFile: /src/unbound/services/modstack.c
    functionUses: 1
    functionsReached:
    - fptr_whitelist_mod_destartup
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: void modstack_call_destartup(struct module_stack* stack, struct module_env*
      env)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/services/modstack.c:331,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - stack
    - name
    argTypes:
    - struct module_stack*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 335
    functionName: modstack_find
    functionSourceFile: /src/unbound/services/modstack.c
    functionUses: 10
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int modstack_find(struct module_stack* stack, const char* name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: modstack_find
      Src: /src/unbound/services/modstack.c:340,1
    - Dst: fptr_ok
      Src: /src/unbound/services/modstack.c:342,1
    - Dst: fptr_whitelist_mod_get_mem
      Src: /src/unbound/services/modstack.c:342,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - env
    - name
    argTypes:
    - struct module_env*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 347
    functionName: mod_get_mem
    functionSourceFile: /src/unbound/services/modstack.c
    functionUses: 3
    functionsReached:
    - modstack_find
    - fptr_whitelist_mod_get_mem
    - fptr_ok
    linkageType: ''
    returnType: size_t
    signature: size_t mod_get_mem(struct module_env* env, const char* name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/services/mesh.c:91,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - v_a
    - v_b
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 92
    functionName: view_name_compare
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int view_name_compare(const char* v_a, const char* v_b)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/services/mesh.c:130,1
    - Dst: memcmp
      Src: /src/unbound/services/mesh.c:142,1
    - Dst: view_name_compare
      Src: /src/unbound/services/mesh.c:151,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 37
    argCount: 2
    argNames:
    - ci_a
    - ci_b
    argTypes:
    - struct respip_client_info*
    - struct respip_client_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 158
    functionName: client_info_compare
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - view_name_compare
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int client_info_compare(const struct respip_client_info* ci_a,\n\tconst
      struct respip_client_info* ci_b)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: query_info_compare
      Src: /src/unbound/services/mesh.c:192,1
    - Dst: client_info_compare
      Src: /src/unbound/services/mesh.c:195,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 25
    argCount: 2
    argNames:
    - ap
    - bp
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 160
    functionDepth: 2
    functionLinenumber: 160
    functionLinenumberEnd: 196
    functionName: mesh_state_compare
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - query_info_compare
    - client_info_compare
    linkageType: ''
    returnType: int
    signature: int mesh_state_compare(const void* ap, const void* bp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mesh_state_compare
      Src: /src/unbound/services/mesh.c:203,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ap
    - bp
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 198
    functionDepth: 3
    functionLinenumber: 198
    functionLinenumberEnd: 204
    functionName: mesh_state_ref_compare
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - mesh_state_compare
    linkageType: ''
    returnType: int
    signature: int mesh_state_ref_compare(const void* ap, const void* bp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/mesh.c:209,1
    - Dst: log_err
      Src: /src/unbound/services/mesh.c:211,1
    - Dst: timehist_setup
      Src: /src/unbound/services/mesh.c:214,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/services/mesh.c:215,1
    - Dst: free
      Src: /src/unbound/services/mesh.c:217,1
    - Dst: log_err
      Src: /src/unbound/services/mesh.c:218,1
    - Dst: rbtree_init
      Src: /src/unbound/services/mesh.c:223,1
    - Dst: rbtree_init
      Src: /src/unbound/services/mesh.c:224,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 2
    argNames:
    - stack
    - env
    argTypes:
    - struct module_stack*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 206
    functionDepth: 2
    functionLinenumber: 206
    functionLinenumberEnd: 245
    functionName: mesh_create
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 1
    functionsReached:
    - log_err
    - sldns_buffer_new
    - timehist_setup
    - free
    - rbtree_init
    - calloc
    linkageType: ''
    returnType: struct mesh_area
    signature: 'struct mesh_area *

      mesh_create(struct module_stack* stack, struct module_env* env)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mesh_state_delete
      Src: /src/unbound/services/mesh.c:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - n
    argTypes:
    - rbnode_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 248
    functionDepth: 1
    functionLinenumber: 248
    functionLinenumberEnd: 258
    functionName: mesh_delete_helper
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - mesh_state_delete
    linkageType: ''
    returnType: void
    signature: void mesh_delete_helper(rbnode_type* n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mesh_delete_helper
      Src: /src/unbound/services/mesh.c:267,1
    - Dst: timehist_delete
      Src: /src/unbound/services/mesh.c:268,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/services/mesh.c:269,1
    - Dst: free
      Src: /src/unbound/services/mesh.c:270,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - mesh
    argTypes:
    - struct mesh_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 271
    functionName: mesh_delete
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 1
    functionsReached:
    - free
    - mesh_delete_helper
    - sldns_buffer_free
    - timehist_delete
    linkageType: ''
    returnType: void
    signature: void mesh_delete(struct mesh_area* mesh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mesh_delete_helper
      Src: /src/unbound/services/mesh.c:278,1
    - Dst: rbtree_init
      Src: /src/unbound/services/mesh.c:281,1
    - Dst: rbtree_init
      Src: /src/unbound/services/mesh.c:282,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - mesh
    argTypes:
    - struct mesh_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 291
      start: 273
    functionDepth: 2
    functionLinenumber: 273
    functionLinenumberEnd: 291
    functionName: mesh_delete_all
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 5
    functionsReached:
    - rbtree_init
    - mesh_delete_helper
    linkageType: ''
    returnType: void
    signature: void mesh_delete_all(struct mesh_area* mesh)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: timeval_subtract
      Src: /src/unbound/services/mesh.c:304,1
    - Dst: timeval_smaller
      Src: /src/unbound/services/mesh.c:307,1
    - Dst: log_nametypeclass
      Src: /src/unbound/services/mesh.c:309,1
    - Dst: sldns_buffer_copy
      Src: /src/unbound/services/mesh.c:314,1
    - Dst: verbose
      Src: /src/unbound/services/mesh.c:317,1
    - Dst: mesh_walk_supers
      Src: /src/unbound/services/mesh.c:320,1
    - Dst: mesh_state_delete
      Src: /src/unbound/services/mesh.c:323,1
    - Dst: sldns_buffer_copy
      Src: /src/unbound/services/mesh.c:326,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - mesh
    - qbuf
    argTypes:
    - struct mesh_area*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 293
    functionDepth: 2
    functionLinenumber: 293
    functionLinenumberEnd: 332
    functionName: mesh_make_new_space
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - log_nametypeclass
    - verbose
    - timeval_smaller
    - timeval_subtract
    - mesh_walk_supers
    - mesh_state_delete
    - sldns_buffer_copy
    linkageType: ''
    returnType: int
    signature: int mesh_make_new_space(struct mesh_area* mesh, sldns_buffer* qbuf)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: query_info_hash
      Src: /src/unbound/services/mesh.c:348,1
    - Dst: slabhash_lookup
      Src: /src/unbound/services/mesh.c:349,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/services/mesh.c:354,1
    - Dst: tomsg
      Src: /src/unbound/services/mesh.c:355,1
    - Dst: verbose
      Src: /src/unbound/services/mesh.c:369,1
    - Dst: verbose
      Src: /src/unbound/services/mesh.c:372,1
    - Dst: reply_all_rrsets_secure
      Src: /src/unbound/services/mesh.c:376,1
    - Dst: verbose
      Src: /src/unbound/services/mesh.c:377,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/mesh.c:382,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/mesh.c:386,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 35
    argCount: 3
    argNames:
    - qstate
    - lookup_qinfo
    - is_expired
    argTypes:
    - struct module_qstate*
    - struct query_info*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 388
    functionName: mesh_serve_expired_lookup
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - reply_all_rrsets_secure
    - verbose
    - lock_rw_unlock
    - TTL_IS_EXPIRED
    - slabhash_lookup
    - query_info_hash
    - tomsg
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg *\nmesh_serve_expired_lookup(struct module_qstate*
      qstate,\n\tstruct query_info* lookup_qinfo, int* is_expired)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/mesh.c:400,1
    - Dst: comm_timer_create
      Src: /src/unbound/services/mesh.c:414,1
    - Dst: comm_timer_set
      Src: /src/unbound/services/mesh.c:422,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - mstate
    - timeout
    argTypes:
    - struct mesh_state*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 392
    functionDepth: 1
    functionLinenumber: 392
    functionLinenumberEnd: 425
    functionName: mesh_serve_expired_init
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - comm_timer_create
    - comm_timer_set
    linkageType: ''
    returnType: int
    signature: int mesh_serve_expired_init(struct mesh_state* mstate, int timeout)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - s
    - todel
    argTypes:
    - struct mesh_state*
    - struct mesh_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 428
    functionDepth: 0
    functionLinenumber: 428
    functionLinenumberEnd: 444
    functionName: mesh_remove_reply_without_accounting
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mesh_remove_reply_without_accounting(struct mesh_state* s,\n\tstruct
      mesh_reply* todel)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - s
    - todel
    argTypes:
    - struct mesh_state*
    - struct mesh_cb*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 447
    functionDepth: 0
    functionLinenumber: 447
    functionLinenumberEnd: 463
    functionName: mesh_remove_callback_without_accounting
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mesh_remove_callback_without_accounting(struct mesh_state* s,\n\tstruct
      mesh_cb* todel)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mesh_schedule_prefetch_subnet
      Src: /src/unbound/services/mesh.c:947,1
    - Dst: mesh_schedule_prefetch
      Src: /src/unbound/services/mesh.c:951,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 7
    argNames:
    - mesh
    - qinfo
    - qflags
    - leeway
    - rpz_passthru
    - addr
    - opt_list
    argTypes:
    - struct mesh_area*
    - struct query_info*
    - uint16_t
    - time_t
    - int
    - struct sockaddr_storage*
    - struct edns_option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 939
    functionDepth: 0
    functionLinenumber: 939
    functionLinenumberEnd: 953
    functionName: mesh_new_prefetch
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 1
    functionsReached:
    - mesh_schedule_prefetch_subnet
    - mesh_schedule_prefetch
    linkageType: ''
    returnType: void
    signature: "void mesh_new_prefetch(struct mesh_area* mesh, struct query_info*
      qinfo,\n\tuint16_t qflags, time_t leeway, int rpz_passthru,\n\tstruct sockaddr_storage*
      addr, struct edns_option* opt_list)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mesh_run
      Src: /src/unbound/services/mesh.c:965,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - mesh
    - e
    - reply
    - what
    argTypes:
    - struct mesh_area*
    - struct outbound_entry*
    - struct comm_reply*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 955
    functionDepth: 1
    functionLinenumber: 955
    functionLinenumberEnd: 966
    functionName: mesh_report_reply
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 1
    functionsReached:
    - mesh_run
    linkageType: ''
    returnType: void
    signature: "void mesh_report_reply(struct mesh_area* mesh, struct outbound_entry*
      e,\n        struct comm_reply* reply, int what)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_init
      Src: /src/unbound/services/mesh.c:972,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/mesh.c:978,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/mesh.c:984,1
    - Dst: regional_strdup
      Src: /src/unbound/services/mesh.c:1001,1
    - Dst: regional_strdup
      Src: /src/unbound/services/mesh.c:1006,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 2
    argNames:
    - region
    - cinfo
    argTypes:
    - struct regional*
    - struct respip_client_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 968
    functionDepth: 1
    functionLinenumber: 968
    functionLinenumberEnd: 1012
    functionName: mesh_copy_client_info
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - regional_strdup
    - regional_alloc_init
    linkageType: ''
    returnType: struct respip_client_info
    signature: 'struct respip_client_info *

      mesh_copy_client_info(struct regional* region, struct respip_client_info* cinfo)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: alloc_reg_obtain
      Src: /src/unbound/services/mesh.c:1019,1
    - Dst: regional_alloc
      Src: /src/unbound/services/mesh.c:1024,1
    - Dst: alloc_reg_release
      Src: /src/unbound/services/mesh.c:1027,1
    - Dst: memset
      Src: /src/unbound/services/mesh.c:1030,1
    - Dst: rbtree_init
      Src: /src/unbound/services/mesh.c:1038,1
    - Dst: rbtree_init
      Src: /src/unbound/services/mesh.c:1039,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/mesh.c:1047,1
    - Dst: alloc_reg_release
      Src: /src/unbound/services/mesh.c:1050,1
    - Dst: mesh_copy_client_info
      Src: /src/unbound/services/mesh.c:1054,1
    - Dst: alloc_reg_release
      Src: /src/unbound/services/mesh.c:1056,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 63
    argCount: 6
    argNames:
    - env
    - qinfo
    - cinfo
    - qflags
    - prime
    - valrec
    argTypes:
    - struct module_env*
    - struct query_info*
    - struct respip_client_info*
    - uint16_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 1014
    functionDepth: 2
    functionLinenumber: 1014
    functionLinenumberEnd: 1092
    functionName: mesh_state_create
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - alloc_reg_obtain
    - alloc_reg_release
    - mesh_copy_client_info
    - regional_alloc
    - rbtree_init
    - regional_alloc_init
    - memset
    linkageType: ''
    returnType: struct mesh_state
    signature: "struct mesh_state *\nmesh_state_create(struct module_env* env, struct
      query_info* qinfo,\n\tstruct respip_client_info* cinfo, uint16_t qflags, int
      prime,\n\tint valrec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - mstate
    argTypes:
    - struct mesh_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1094
    functionDepth: 0
    functionLinenumber: 1094
    functionLinenumberEnd: 1098
    functionName: mesh_state_make_unique
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void mesh_state_make_unique(struct mesh_state* mstate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: comm_timer_delete
      Src: /src/unbound/services/mesh.c:1110,1
    - Dst: infra_wait_limit_dec
      Src: /src/unbound/services/mesh.c:1122,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/services/mesh.c:1124,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:1125,1
    - Dst: fptr_ok
      Src: /src/unbound/services/mesh.c:1130,1
    - Dst: fptr_whitelist_mesh_cb
      Src: /src/unbound/services/mesh.c:1130,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:1133,1
    - Dst: fptr_ok
      Src: /src/unbound/services/mesh.c:1140,1
    - Dst: fptr_whitelist_mod_clear
      Src: /src/unbound/services/mesh.c:1140,1
    - Dst: alloc_reg_release
      Src: /src/unbound/services/mesh.c:1145,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 1
    argNames:
    - mstate
    argTypes:
    - struct mesh_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1146
      start: 1100
    functionDepth: 1
    functionLinenumber: 1100
    functionLinenumberEnd: 1146
    functionName: mesh_state_cleanup
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - fptr_whitelist_mesh_cb
    - comm_timer_delete
    - alloc_reg_release
    - fptr_ok
    - log_assert
    - infra_wait_limit_dec
    - fptr_whitelist_mod_clear
    - comm_point_drop_reply
    linkageType: ''
    returnType: void
    signature: void mesh_state_cleanup(struct mesh_state* mstate)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: mesh_detach_subs
      Src: /src/unbound/services/mesh.c:1158,1
    - Dst: mesh_list_remove
      Src: /src/unbound/services/mesh.c:1161,1
    - Dst: mesh_list_remove
      Src: /src/unbound/services/mesh.c:1164,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:1169,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:1173,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/mesh.c:1179,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/mesh.c:1181,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/mesh.c:1182,1
    - Dst: mesh_state_cleanup
      Src: /src/unbound/services/mesh.c:1183,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 1
    argNames:
    - qstate
    argTypes:
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1184
      start: 1148
    functionDepth: 2
    functionLinenumber: 1148
    functionLinenumberEnd: 1184
    functionName: mesh_state_delete
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 2
    functionsReached:
    - rbtree_delete
    - mesh_state_cleanup
    - mesh_list_remove
    - log_assert
    - mesh_detach_subs
    linkageType: ''
    returnType: void
    signature: void mesh_state_delete(struct module_qstate* qstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_delete
      Src: /src/unbound/services/mesh.c:1179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - super_set
    argTypes:
    - mstate
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1180
      start: 1178
    functionDepth: 1
    functionLinenumber: 1178
    functionLinenumberEnd: 1180
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - rbtree_delete
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(super, struct mesh_state_ref*, &mstate->super_set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: find_in_subsub
      Src: /src/unbound/services/mesh.c:1194,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - m
    - tofind
    - c
    argTypes:
    - struct mesh_state*
    - struct mesh_state*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1198
      start: 1187
    functionDepth: 1
    functionLinenumber: 1187
    functionLinenumberEnd: 1198
    functionName: find_in_subsub
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 1
    functionsReached:
    - find_in_subsub
    linkageType: ''
    returnType: int
    signature: int find_in_subsub(struct mesh_state* m, struct mesh_state* tofind,
      size_t *c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: find_in_subsub
      Src: /src/unbound/services/mesh.c:1194,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 3
    argCount: 1
    argNames:
    - sub_set
    argTypes:
    - m
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1193
    functionDepth: 2
    functionLinenumber: 1193
    functionLinenumberEnd: 1196
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - find_in_subsub
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(r, struct mesh_state_ref*, &m->sub_set)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:1206,1
    - Dst: find_in_subsub
      Src: /src/unbound/services/mesh.c:1207,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - qstate
    - dep_m
    argTypes:
    - struct module_qstate*
    - struct mesh_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1213
      start: 1201
    functionDepth: 2
    functionLinenumber: 1201
    functionLinenumberEnd: 1213
    functionName: mesh_detect_cycle_found
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - log_assert
    - find_in_subsub
    linkageType: ''
    returnType: int
    signature: int mesh_detect_cycle_found(struct module_qstate* qstate, struct mesh_state*
      dep_m)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_delete
      Src: /src/unbound/services/mesh.c:1230,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:1231,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:1235,1
    - Dst: rbtree_init
      Src: /src/unbound/services/mesh.c:1239,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - qstate
    argTypes:
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1240
      start: 1215
    functionDepth: 1
    functionLinenumber: 1215
    functionLinenumberEnd: 1240
    functionName: mesh_detach_subs
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 1
    functionsReached:
    - rbtree_init
    - log_assert
    - rbtree_delete
    linkageType: ''
    returnType: void
    signature: void mesh_detach_subs(struct module_qstate* qstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_delete
      Src: /src/unbound/services/mesh.c:1230,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:1231,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:1235,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - sub_set
    argTypes:
    - qstate
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1238
      start: 1224
    functionDepth: 1
    functionLinenumber: 1224
    functionLinenumberEnd: 1238
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - log_assert
    - rbtree_delete
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(ref, struct mesh_state_ref*, &qstate->mesh_info->sub_set)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: mesh_add_sub
      Src: /src/unbound/services/mesh.c:1298,1
    - Dst: mesh_state_attachment
      Src: /src/unbound/services/mesh.c:1302,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:1308,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 7
    argNames:
    - qstate
    - qinfo
    - cinfo
    - qflags
    - prime
    - valrec
    - newq
    argTypes:
    - struct module_qstate*
    - struct query_info*
    - struct respip_client_info*
    - uint16_t
    - int
    - int
    - struct module_qstate**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1313
      start: 1291
    functionDepth: 1
    functionLinenumber: 1291
    functionLinenumberEnd: 1313
    functionName: mesh_attach_sub
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - log_assert
    - mesh_state_attachment
    - mesh_add_sub
    linkageType: ''
    returnType: int
    signature: "int mesh_attach_sub(struct module_qstate* qstate, struct query_info*
      qinfo,\n\tstruct respip_client_info* cinfo, uint16_t qflags, int prime,\n\tint
      valrec, struct module_qstate** newq)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/services/mesh.c:1322,1
    - Dst: regional_alloc
      Src: /src/unbound/services/mesh.c:1324,1
    - Dst: log_err
      Src: /src/unbound/services/mesh.c:1326,1
    - Dst: rbtree_insert
      Src: /src/unbound/services/mesh.c:1333,1
    - Dst: rbtree_insert
      Src: /src/unbound/services/mesh.c:1346,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:1347,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - super
    - sub
    argTypes:
    - struct mesh_state*
    - struct mesh_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1315
    functionDepth: 1
    functionLinenumber: 1315
    functionLinenumberEnd: 1350
    functionName: mesh_state_attachment
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 1
    functionsReached:
    - log_err
    - rbtree_insert
    - log_assert
    - regional_alloc
    linkageType: ''
    returnType: int
    signature: int mesh_state_attachment(struct mesh_state* super, struct mesh_state*
      sub)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: errinf_to_str_bogus
      Src: /src/unbound/services/mesh.c:1377,1
    - Dst: inplace_cb_reply_servfail_call
      Src: /src/unbound/services/mesh.c:1383,1
    - Dst: inplace_cb_reply_call
      Src: /src/unbound/services/mesh.c:1387,1
    - Dst: fptr_ok
      Src: /src/unbound/services/mesh.c:1391,1
    - Dst: fptr_whitelist_mesh_cb
      Src: /src/unbound/services/mesh.c:1391,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/mesh.c:1396,1
    - Dst: inplace_cb_reply_call
      Src: /src/unbound/services/mesh.c:1404,1
    - Dst: reply_info_answer_encode
      Src: /src/unbound/services/mesh.c:1406,1
    - Dst: fptr_ok
      Src: /src/unbound/services/mesh.c:1411,1
    - Dst: fptr_whitelist_mesh_cb
      Src: /src/unbound/services/mesh.c:1411,1
    - Dst: fptr_ok
      Src: /src/unbound/services/mesh.c:1415,1
    - Dst: fptr_whitelist_mesh_cb
      Src: /src/unbound/services/mesh.c:1415,1
    - Dst: free
      Src: /src/unbound/services/mesh.c:1421,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:1422,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 39
    argCount: 5
    argNames:
    - m
    - rcode
    - rep
    - r
    - start_time
    argTypes:
    - struct mesh_state*
    - int
    - struct reply_info*
    - struct mesh_cb*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1424
      start: 1361
    functionDepth: 2
    functionLinenumber: 1361
    functionLinenumberEnd: 1424
    functionName: mesh_do_callback
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - fptr_whitelist_mesh_cb
    - inplace_cb_reply_call
    - reply_info_answer_encode
    - inplace_cb_reply_servfail_call
    - sldns_buffer_clear
    - fptr_ok
    - free
    - errinf_to_str_bogus
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void mesh_do_callback(struct mesh_state* m, int rcode, struct reply_info*
      rep,\n\tstruct mesh_cb* r, struct timeval* start_time)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 2
    argCount: 1
    argNames:
    - m
    argTypes:
    - struct mesh_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1436
      start: 1426
    functionDepth: 0
    functionLinenumber: 1426
    functionLinenumberEnd: 1436
    functionName: mesh_is_rpz_respip_tcponly_action
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mesh_is_rpz_respip_tcponly_action(struct mesh_state const* m)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct mesh_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1442
      start: 1438
    functionDepth: 0
    functionLinenumber: 1438
    functionLinenumberEnd: 1442
    functionName: mesh_is_udp
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mesh_is_udp(struct mesh_reply const* r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/services/mesh.c:1464,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - m
    - rep
    - r
    argTypes:
    - struct mesh_state*
    - struct reply_info*
    - struct mesh_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1467
      start: 1444
    functionDepth: 1
    functionLinenumber: 1444
    functionLinenumberEnd: 1467
    functionName: mesh_find_and_attach_ede_and_reason
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - edns_opt_list_append_ede
    linkageType: ''
    returnType: void
    signature: "void mesh_find_and_attach_ede_and_reason(struct mesh_state* m,\n\tstruct
      reply_info* rep, struct mesh_reply* r)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: mesh_is_udp
      Src: /src/unbound/services/mesh.c:1495,1
    - Dst: mesh_is_rpz_respip_tcponly_action
      Src: /src/unbound/services/mesh.c:1495,1
    - Dst: edns_opt_list_compare
      Src: /src/unbound/services/mesh.c:1540,1
    - Dst: edns_opt_list_compare
      Src: /src/unbound/services/mesh.c:1541,1
    - Dst: sldns_buffer_copy
      Src: /src/unbound/services/mesh.c:1545,1
    - Dst: sldns_buffer_write_at
      Src: /src/unbound/services/mesh.c:1546,1
    - Dst: sldns_buffer_write_at
      Src: /src/unbound/services/mesh.c:1547,1
    - Dst: comm_point_send_reply
      Src: /src/unbound/services/mesh.c:1550,1
    - Dst: inplace_cb_reply_servfail_call
      Src: /src/unbound/services/mesh.c:1556,1
    - Dst: inplace_cb_reply_call
      Src: /src/unbound/services/mesh.c:1560,1
    - Dst: mesh_find_and_attach_ede_and_reason
      Src: /src/unbound/services/mesh.c:1569,1
    - Dst: error_encode
      Src: /src/unbound/services/mesh.c:1571,1
    - Dst: comm_point_send_reply
      Src: /src/unbound/services/mesh.c:1574,1
    - Dst: mesh_find_and_attach_ede_and_reason
      Src: /src/unbound/services/mesh.c:1593,1
    - Dst: inplace_cb_reply_call
      Src: /src/unbound/services/mesh.c:1596,1
    - Dst: reply_info_answer_encode
      Src: /src/unbound/services/mesh.c:1598,1
    - Dst: inplace_cb_reply_servfail_call
      Src: /src/unbound/services/mesh.c:1603,1
    - Dst: error_encode
      Src: /src/unbound/services/mesh.c:1608,1
    - Dst: comm_point_send_reply
      Src: /src/unbound/services/mesh.c:1612,1
    - Dst: infra_wait_limit_dec
      Src: /src/unbound/services/mesh.c:1615,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:1618,1
    - Dst: timeval_subtract
      Src: /src/unbound/services/mesh.c:1621,1
    - Dst: verbose
      Src: /src/unbound/services/mesh.c:1622,1
    - Dst: timeval_add
      Src: /src/unbound/services/mesh.c:1625,1
    - Dst: timehist_insert
      Src: /src/unbound/services/mesh.c:1626,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/services/mesh.c:1628,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/services/mesh.c:1628,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/services/mesh.c:1632,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/mesh.c:1632,1
    - Dst: log_reply_info
      Src: /src/unbound/services/mesh.c:1637,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 85
    argCount: 7
    argNames:
    - m
    - rcode
    - rep
    - r
    - r_buffer
    - prev
    - prev_buffer
    argTypes:
    - struct mesh_state*
    - int
    - struct reply_info*
    - struct mesh_reply*
    - struct sldns_buffer*
    - struct mesh_reply*
    - struct sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1643
      start: 1479
    functionDepth: 4
    functionLinenumber: 1479
    functionLinenumberEnd: 1643
    functionName: mesh_send_reply
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - mesh_find_and_attach_ede_and_reason
    - LDNS_ANCOUNT
    - timeval_add
    - mesh_is_rpz_respip_tcponly_action
    - sldns_buffer_write_at
    - timeval_subtract
    - sldns_buffer_begin
    - sldns_buffer_read_u16_at
    - error_encode
    - mesh_is_udp
    - reply_info_answer_encode
    - verbose
    - timehist_insert
    - log_assert
    - sldns_buffer_copy
    - FLAGS_GET_RCODE
    - inplace_cb_reply_call
    - edns_opt_list_compare
    - log_reply_info
    - inplace_cb_reply_servfail_call
    - infra_wait_limit_dec
    - comm_point_send_reply
    linkageType: ''
    returnType: void
    signature: "void mesh_send_reply(struct mesh_state* m, int rcode, struct reply_info*
      rep,\n\tstruct mesh_reply* r, struct sldns_buffer* r_buffer,\n\tstruct mesh_reply*
      prev, struct sldns_buffer* prev_buffer)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: edns_opt_list_find
      Src: /src/unbound/services/mesh.c:1673,1
    - Dst: dname_valid
      Src: /src/unbound/services/mesh.c:1677,1
    - Dst: errinf_to_reason_bogus
      Src: /src/unbound/services/mesh.c:1687,1
    - Dst: memmove
      Src: /src/unbound/services/mesh.c:1706,1
    - Dst: snprintf
      Src: /src/unbound/services/mesh.c:1709,1
    - Dst: memmove
      Src: /src/unbound/services/mesh.c:1719,1
    - Dst: snprintf
      Src: /src/unbound/services/mesh.c:1722,1
    - Dst: memmove
      Src: /src/unbound/services/mesh.c:1731,1
    - Dst: memmove
      Src: /src/unbound/services/mesh.c:1735,1
    - Dst: log_query_info
      Src: /src/unbound/services/mesh.c:1744,1
    - Dst: mesh_add_sub
      Src: /src/unbound/services/mesh.c:1746,1
    - Dst: verbose
      Src: /src/unbound/services/mesh.c:1751,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 55
    argCount: 2
    argNames:
    - qstate
    - rep
    argTypes:
    - struct module_qstate*
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1754
      start: 1652
    functionDepth: 2
    functionLinenumber: 1652
    functionLinenumberEnd: 1754
    functionName: dns_error_reporting
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - edns_opt_list_find
    - errinf_to_reason_bogus
    - mesh_add_sub
    - memmove
    - snprintf
    - log_query_info
    - verbose
    - dname_valid
    linkageType: ''
    returnType: void
    signature: "void dns_error_reporting(struct module_qstate* qstate,\n\tstruct reply_info*
      rep)"
  - BBCount: 27
    BranchProfiles: []
    Callsites:
    - Dst: comm_timer_delete
      Src: /src/unbound/services/mesh.c:1768,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/services/mesh.c:1772,1
    - Dst: mesh_respond_serve_expired
      Src: /src/unbound/services/mesh.c:1775,1
    - Dst: errinf_to_str_servfail
      Src: /src/unbound/services/mesh.c:1780,1
    - Dst: log_err
      Src: /src/unbound/services/mesh.c:1781,1
    - Dst: dns_error_reporting
      Src: /src/unbound/services/mesh.c:1787,1
    - Dst: mesh_is_udp
      Src: /src/unbound/services/mesh.c:1790,1
    - Dst: timeval_subtract
      Src: /src/unbound/services/mesh.c:1799,1
    - Dst: verbose
      Src: /src/unbound/services/mesh.c:1810,1
    - Dst: infra_wait_limit_dec
      Src: /src/unbound/services/mesh.c:1811,1
    - Dst: http2_stream_remove_mesh_state
      Src: /src/unbound/services/mesh.c:1815,1
    - Dst: doq_stream_remove_mesh_state
      Src: /src/unbound/services/mesh.c:1817,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/services/mesh.c:1818,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:1820,1
    - Dst: respip_inform_print
      Src: /src/unbound/services/mesh.c:1834,1
    - Dst: infra_wait_limit_dec
      Src: /src/unbound/services/mesh.c:1850,1
    - Dst: http2_stream_remove_mesh_state
      Src: /src/unbound/services/mesh.c:1854,1
    - Dst: doq_stream_remove_mesh_state
      Src: /src/unbound/services/mesh.c:1856,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/services/mesh.c:1858,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:1860,1
    - Dst: mesh_send_reply
      Src: /src/unbound/services/mesh.c:1868,1
    - Dst: tcp_req_info_remove_mesh_state
      Src: /src/unbound/services/mesh.c:1871,1
    - Dst: respip_action_to_rpz_action
      Src: /src/unbound/services/mesh.c:1890,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:1905,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:1919,1
    - Dst: mesh_do_callback
      Src: /src/unbound/services/mesh.c:1926,1
    CyclomaticComplexity: 52
    EdgeCount: 52
    ICount: 100
    argCount: 1
    argNames:
    - mstate
    argTypes:
    - struct mesh_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1928
      start: 1756
    functionDepth: 5
    functionLinenumber: 1756
    functionLinenumberEnd: 1928
    functionName: mesh_query_done
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - mesh_send_reply
    - mesh_do_callback
    - doq_stream_remove_mesh_state
    - comm_point_drop_reply
    - log_err
    - timeval_subtract
    - mesh_respond_serve_expired
    - mesh_is_udp
    - http2_stream_remove_mesh_state
    - respip_action_to_rpz_action
    - verbose
    - log_assert
    - tcp_req_info_remove_mesh_state
    - dns_error_reporting
    - FLAGS_GET_RCODE
    - comm_timer_delete
    - errinf_to_str_servfail
    - respip_inform_print
    - infra_wait_limit_dec
    linkageType: ''
    returnType: void
    signature: void mesh_query_done(struct mesh_state* mstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_insert
      Src: /src/unbound/services/mesh.c:1936,1
    - Dst: fptr_ok
      Src: /src/unbound/services/mesh.c:1938,1
    - Dst: fptr_whitelist_mod_inform_super
      Src: /src/unbound/services/mesh.c:1938,1
    - Dst: copy_state_to_super
      Src: /src/unbound/services/mesh.c:1943,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - mesh
    - mstate
    argTypes:
    - struct mesh_area*
    - struct mesh_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1945
      start: 1930
    functionDepth: 1
    functionLinenumber: 1930
    functionLinenumberEnd: 1945
    functionName: mesh_walk_supers
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 1
    functionsReached:
    - copy_state_to_super
    - rbtree_insert
    - fptr_whitelist_mod_inform_super
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: void mesh_walk_supers(struct mesh_area* mesh, struct mesh_state* mstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_insert
      Src: /src/unbound/services/mesh.c:1936,1
    - Dst: fptr_ok
      Src: /src/unbound/services/mesh.c:1938,1
    - Dst: fptr_whitelist_mod_inform_super
      Src: /src/unbound/services/mesh.c:1938,1
    - Dst: copy_state_to_super
      Src: /src/unbound/services/mesh.c:1943,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - super_set
    argTypes:
    - mstate
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1944
      start: 1933
    functionDepth: 1
    functionLinenumber: 1933
    functionLinenumberEnd: 1944
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - copy_state_to_super
    - rbtree_insert
    - fptr_whitelist_mod_inform_super
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(ref, struct mesh_state_ref*, &mstate->super_set)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_search
      Src: /src/unbound/services/mesh.c:1965,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 6
    argNames:
    - mesh
    - cinfo
    - qinfo
    - qflags
    - prime
    - valrec
    argTypes:
    - struct mesh_area*
    - struct respip_client_info*
    - struct query_info*
    - uint16_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1967
      start: 1947
    functionDepth: 1
    functionLinenumber: 1947
    functionLinenumberEnd: 1967
    functionName: mesh_area_find
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - rbtree_search
    linkageType: ''
    returnType: struct mesh_state
    signature: "struct mesh_state * mesh_area_find(struct mesh_area* mesh,\n\tstruct
      respip_client_info* cinfo, struct query_info* qinfo,\n\tuint16_t qflags, int
      prime, int valrec)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_search
      Src: /src/unbound/services/mesh.c:1984,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 7
    argNames:
    - mesh
    - cinfo
    - qinfo
    - qflags
    - prime
    - valrec
    - unique_info
    argTypes:
    - struct mesh_area*
    - struct respip_client_info*
    - struct query_info*
    - uint16_t
    - int
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1986
      start: 1969
    functionDepth: 1
    functionLinenumber: 1969
    functionLinenumberEnd: 1986
    functionName: mesh_area_find_unique
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - rbtree_search
    linkageType: ''
    returnType: struct mesh_state
    signature: "struct mesh_state * mesh_area_find_unique(struct mesh_area* mesh,\n\tstruct
      respip_client_info* cinfo, struct query_info* qinfo,\n\tuint16_t qflags, int
      prime, int valrec, void* unique_info)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - s
    - cb
    - cb_arg
    argTypes:
    - struct mesh_state*
    - mesh_cb_func_type
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2005
      start: 1989
    functionDepth: 0
    functionLinenumber: 1989
    functionLinenumberEnd: 2005
    functionName: mesh_state_del_cb
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mesh_state_del_cb(struct mesh_state* s, mesh_cb_func_type cb, void*
      cb_arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/services/mesh.c:2011,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:2016,1
    - Dst: fptr_whitelist_mesh_cb
      Src: /src/unbound/services/mesh.c:2016,1
    - Dst: edns_opt_copy_region
      Src: /src/unbound/services/mesh.c:2021,1
    - Dst: edns_opt_copy_region
      Src: /src/unbound/services/mesh.c:2024,1
    - Dst: edns_opt_copy_region
      Src: /src/unbound/services/mesh.c:2027,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 8
    argNames:
    - s
    - edns
    - buf
    - cb
    - cb_arg
    - qid
    - qflags
    - result
    argTypes:
    - struct mesh_state*
    - struct edns_data*
    - sldns_buffer*
    - mesh_cb_func_type
    - void*
    - uint16_t
    - uint16_t
    - struct mesh_cb**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2036
      start: 2007
    functionDepth: 1
    functionLinenumber: 2007
    functionLinenumberEnd: 2036
    functionName: mesh_state_add_cb
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - fptr_whitelist_mesh_cb
    - log_assert
    - regional_alloc
    - edns_opt_copy_region
    linkageType: ''
    returnType: int
    signature: "int mesh_state_add_cb(struct mesh_state* s, struct edns_data* edns,\n
      \       sldns_buffer* buf, mesh_cb_func_type cb, void* cb_arg,\n\tuint16_t qid,
      uint16_t qflags, struct mesh_cb** result)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/services/mesh.c:2042,1
    - Dst: edns_opt_copy_region
      Src: /src/unbound/services/mesh.c:2049,1
    - Dst: edns_opt_copy_region
      Src: /src/unbound/services/mesh.c:2052,1
    - Dst: edns_opt_copy_region
      Src: /src/unbound/services/mesh.c:2055,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/mesh.c:2065,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/mesh.c:2082,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/mesh.c:2086,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:2095,1
    - Dst: htons
      Src: /src/unbound/services/mesh.c:2097,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/mesh.c:2102,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/mesh.c:2110,1
    - Dst: rrset_insert_rr
      Src: /src/unbound/services/mesh.c:2114,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 51
    argCount: 7
    argNames:
    - s
    - edns
    - rep
    - qid
    - qflags
    - qinfo
    - result
    argTypes:
    - struct mesh_state*
    - struct edns_data*
    - struct comm_reply*
    - uint16_t
    - uint16_t
    - struct query_info*
    - struct mesh_reply**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2123
      start: 2038
    functionDepth: 1
    functionLinenumber: 2038
    functionLinenumberEnd: 2123
    functionName: mesh_state_add_reply
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - regional_alloc
    - htons
    - log_assert
    - regional_alloc_init
    - rrset_insert_rr
    - edns_opt_copy_region
    linkageType: ''
    returnType: int
    signature: "int mesh_state_add_reply(struct mesh_state* s, struct edns_data* edns,\n
      \       struct comm_reply* rep, uint16_t qid, uint16_t qflags,\n        const
      struct query_info* qinfo, struct mesh_reply** result)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_init
      Src: /src/unbound/services/mesh.c:2135,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/mesh.c:2138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - mstate
    - qinfop
    - qflags
    argTypes:
    - struct mesh_state*
    - struct query_info**
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2144
      start: 2128
    functionDepth: 1
    functionLinenumber: 2128
    functionLinenumberEnd: 2144
    functionName: mesh_copy_qinfo
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - regional_alloc_init
    linkageType: ''
    returnType: void
    signature: "void mesh_copy_qinfo(struct mesh_state* mstate, struct query_info**
      qinfop,\n\tuint16_t* qflags)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/services/mesh.c:2168,1
    - Dst: log_query_info
      Src: /src/unbound/services/mesh.c:2170,1
    - Dst: log_err
      Src: /src/unbound/services/mesh.c:2178,1
    - Dst: log_query_info
      Src: /src/unbound/services/mesh.c:2179,1
    - Dst: mesh_continue
      Src: /src/unbound/services/mesh.c:2182,1
    - Dst: fptr_ok
      Src: /src/unbound/services/mesh.c:2188,1
    - Dst: fptr_whitelist_mod_clear
      Src: /src/unbound/services/mesh.c:2188,1
    - Dst: log_err
      Src: /src/unbound/services/mesh.c:2200,1
    - Dst: log_query_info
      Src: /src/unbound/services/mesh.c:2201,1
    - Dst: mesh_query_done
      Src: /src/unbound/services/mesh.c:2210,1
    - Dst: mesh_walk_supers
      Src: /src/unbound/services/mesh.c:2211,1
    - Dst: mesh_state_delete
      Src: /src/unbound/services/mesh.c:2212,1
    - Dst: modstack_find
      Src: /src/unbound/services/mesh.c:2226,1
    - Dst: memset
      Src: /src/unbound/services/mesh.c:2231,1
    - Dst: mesh_query_done
      Src: /src/unbound/services/mesh.c:2233,1
    - Dst: mesh_walk_supers
      Src: /src/unbound/services/mesh.c:2234,1
    - Dst: mesh_copy_qinfo
      Src: /src/unbound/services/mesh.c:2241,1
    - Dst: edns_opt_list_find
      Src: /src/unbound/services/mesh.c:2244,1
    - Dst: edns_opt_list_append
      Src: /src/unbound/services/mesh.c:2247,1
    - Dst: mesh_state_delete
      Src: /src/unbound/services/mesh.c:2257,1
    - Dst: mesh_new_prefetch
      Src: /src/unbound/services/mesh.c:2258,1
    - Dst: mesh_state_delete
      Src: /src/unbound/services/mesh.c:2263,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 68
    argCount: 4
    argNames:
    - mesh
    - mstate
    - s
    - ev
    argTypes:
    - struct mesh_area*
    - struct mesh_state*
    - enum module_ext_state
    - enum module_ev*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2273
      start: 2161
    functionDepth: 6
    functionLinenumber: 2161
    functionLinenumberEnd: 2273
    functionName: mesh_continue
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 1
    functionsReached:
    - log_err
    - edns_opt_list_append
    - edns_opt_list_find
    - mesh_query_done
    - log_query_info
    - fptr_ok
    - mesh_walk_supers
    - mesh_state_delete
    - mesh_new_prefetch
    - mesh_continue
    - mesh_copy_qinfo
    - modstack_find
    - memset
    - fptr_whitelist_mod_clear
    linkageType: ''
    returnType: int
    signature: "int mesh_continue(struct mesh_area* mesh, struct mesh_state* mstate,\n\tenum
      module_ext_state s, enum module_ev* ev)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/mesh.c:2280,1
    - Dst: log_err
      Src: /src/unbound/services/mesh.c:2284,1
    - Dst: verbose
      Src: /src/unbound/services/mesh.c:2288,1
    - Dst: mesh_walk_supers
      Src: /src/unbound/services/mesh.c:2291,1
    - Dst: mesh_state_delete
      Src: /src/unbound/services/mesh.c:2293,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/mesh.c:2297,1
    - Dst: fptr_ok
      Src: /src/unbound/services/mesh.c:2303,1
    - Dst: fptr_whitelist_mod_operate
      Src: /src/unbound/services/mesh.c:2303,1
    - Dst: regional_free_all
      Src: /src/unbound/services/mesh.c:2310,1
    - Dst: verbose
      Src: /src/unbound/services/mesh.c:2312,1
    - Dst: strextstate
      Src: /src/unbound/services/mesh.c:2313,1
    - Dst: mesh_continue
      Src: /src/unbound/services/mesh.c:2315,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/mesh.c:2323,1
    - Dst: mesh_stats
      Src: /src/unbound/services/mesh.c:2327,1
    - Dst: mesh_log_list
      Src: /src/unbound/services/mesh.c:2328,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 4
    argNames:
    - mesh
    - mstate
    - ev
    - e
    argTypes:
    - struct mesh_area*
    - struct mesh_state*
    - enum module_ev
    - struct outbound_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2330
      start: 2275
    functionDepth: 7
    functionLinenumber: 2275
    functionLinenumberEnd: 2330
    functionName: mesh_run
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 2
    functionsReached:
    - log_err
    - fptr_whitelist_mod_operate
    - mesh_stats
    - rbtree_delete
    - strextstate
    - verbose
    - mesh_log_list
    - fptr_ok
    - mesh_walk_supers
    - mesh_state_delete
    - mesh_continue
    - regional_free_all
    linkageType: ''
    returnType: void
    signature: "void mesh_run(struct mesh_area* mesh, struct mesh_state* mstate,\n\tenum
      module_ev ev, struct outbound_entry* e)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/services/mesh.c:2339,1
    - Dst: log_query_info
      Src: /src/unbound/services/mesh.c:2349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - mesh
    argTypes:
    - struct mesh_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2351
      start: 2332
    functionDepth: 2
    functionLinenumber: 2332
    functionLinenumberEnd: 2351
    functionName: mesh_log_list
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 1
    functionsReached:
    - snprintf
    - log_query_info
    linkageType: ''
    returnType: void
    signature: void mesh_log_list(struct mesh_area* mesh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/services/mesh.c:2339,1
    - Dst: log_query_info
      Src: /src/unbound/services/mesh.c:2349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - all
    argTypes:
    - mesh
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2350
      start: 2338
    functionDepth: 2
    functionLinenumber: 2338
    functionLinenumberEnd: 2350
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - snprintf
    - log_query_info
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(m, struct mesh_state*, &mesh->all)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/mesh.c:2356,1
    - Dst: timeval_divide
      Src: /src/unbound/services/mesh.c:2368,1
    - Dst: log_info
      Src: /src/unbound/services/mesh.c:2370,1
    - Dst: log_info
      Src: /src/unbound/services/mesh.c:2373,1
    - Dst: timehist_log
      Src: /src/unbound/services/mesh.c:2374,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - mesh
    - str
    argTypes:
    - struct mesh_area*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2376
      start: 2353
    functionDepth: 1
    functionLinenumber: 2353
    functionLinenumberEnd: 2376
    functionName: mesh_stats
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 3
    functionsReached:
    - verbose
    - timeval_divide
    - log_info
    - timehist_log
    linkageType: ''
    returnType: void
    signature: void mesh_stats(struct mesh_area* mesh, const char* str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timehist_clear
      Src: /src/unbound/services/mesh.c:2390,1
    - Dst: memset
      Src: /src/unbound/services/mesh.c:2396,1
    - Dst: memset
      Src: /src/unbound/services/mesh.c:2397,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 1
    argNames:
    - mesh
    argTypes:
    - struct mesh_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2403
      start: 2378
    functionDepth: 1
    functionLinenumber: 2378
    functionLinenumberEnd: 2403
    functionName: mesh_stats_clear
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 1
    functionsReached:
    - memset
    - timehist_clear
    linkageType: ''
    returnType: void
    signature: void mesh_stats_clear(struct mesh_area* mesh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/mesh.c:2411,1
    - Dst: regional_get_mem
      Src: /src/unbound/services/mesh.c:2414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - mesh
    argTypes:
    - struct mesh_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2417
      start: 2405
    functionDepth: 1
    functionLinenumber: 2405
    functionLinenumberEnd: 2417
    functionName: mesh_get_mem
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 1
    functionsReached:
    - sldns_buffer_capacity
    - regional_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t mesh_get_mem(struct mesh_area* mesh)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regional_get_mem
      Src: /src/unbound/services/mesh.c:2414,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - all
    argTypes:
    - mesh
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2415
      start: 2412
    functionDepth: 1
    functionLinenumber: 2412
    functionLinenumberEnd: 2415
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - regional_get_mem
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(m, struct mesh_state*, &mesh->all)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: mesh_area_find
      Src: /src/unbound/services/mesh.c:2425,1
    - Dst: mesh_detect_cycle_found
      Src: /src/unbound/services/mesh.c:2426,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - qstate
    - qinfo
    - flags
    - prime
    - valrec
    argTypes:
    - struct module_qstate*
    - struct query_info*
    - uint16_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2427
      start: 2419
    functionDepth: 3
    functionLinenumber: 2419
    functionLinenumberEnd: 2427
    functionName: mesh_detect_cycle
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - mesh_area_find
    - mesh_detect_cycle_found
    linkageType: ''
    returnType: int
    signature: "int mesh_detect_cycle(struct module_qstate* qstate, struct query_info*
      qinfo,\n\tuint16_t flags, int prime, int valrec)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - m
    - fp
    - lp
    argTypes:
    - struct mesh_state*
    - struct mesh_state**
    - struct mesh_state**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2439
      start: 2429
    functionDepth: 0
    functionLinenumber: 2429
    functionLinenumberEnd: 2439
    functionName: mesh_list_insert
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mesh_list_insert(struct mesh_state* m, struct mesh_state** fp,\n
      \       struct mesh_state** lp)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - m
    - fp
    - lp
    argTypes:
    - struct mesh_state*
    - struct mesh_state**
    - struct mesh_state**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2450
      start: 2441
    functionDepth: 0
    functionLinenumber: 2441
    functionLinenumberEnd: 2450
    functionName: mesh_list_remove
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void mesh_list_remove(struct mesh_state* m, struct mesh_state** fp,\n
      \       struct mesh_state** lp)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:2469,1
    - Dst: infra_wait_limit_dec
      Src: /src/unbound/services/mesh.c:2471,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:2496,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 29
    argCount: 5
    argNames:
    - mesh
    - m
    - cp
    - h2_stream
    - doq_stream
    argTypes:
    - struct mesh_area*
    - struct mesh_state*
    - struct comm_point*
    - struct http2_stream*
    - struct doq_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2499
      start: 2452
    functionDepth: 1
    functionLinenumber: 2452
    functionLinenumberEnd: 2499
    functionName: mesh_state_remove_reply
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 3
    functionsReached:
    - infra_wait_limit_dec
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void mesh_state_remove_reply(struct mesh_area* mesh, struct mesh_state*
      m,\n\tstruct comm_point* cp, struct http2_stream* h2_stream,\n\tstruct doq_stream*
      doq_stream)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: respip_rewrite_reply
      Src: /src/unbound/services/mesh.c:2514,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 8
    argCount: 8
    argNames:
    - qstate
    - qinfo
    - cinfo
    - actinfo
    - rep
    - alias_rrset
    - encode_repp
    - az
    argTypes:
    - struct module_qstate*
    - struct query_info*
    - struct respip_client_info*
    - struct respip_action_info*
    - struct reply_info*
    - struct ub_packed_rrset_key**
    - struct reply_info**
    - struct auth_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2528
      start: 2502
    functionDepth: 1
    functionLinenumber: 2502
    functionLinenumberEnd: 2528
    functionName: apply_respip_action
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 1
    functionsReached:
    - respip_rewrite_reply
    linkageType: ''
    returnType: int
    signature: "int apply_respip_action(struct module_qstate* qstate,\n\tconst struct
      query_info* qinfo, struct respip_client_info* cinfo,\n\tstruct respip_action_info*
      actinfo, struct reply_info* rep,\n\tstruct ub_packed_rrset_key** alias_rrset,\n\tstruct
      reply_info** encode_repp, struct auth_zones* az)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/mesh.c:2554,1
    - Dst: comm_timer_delete
      Src: /src/unbound/services/mesh.c:2555,1
    - Dst: verbose
      Src: /src/unbound/services/mesh.c:2560,1
    - Dst: fptr_ok
      Src: /src/unbound/services/mesh.c:2568,1
    - Dst: fptr_whitelist_serve_expired_lookup
      Src: /src/unbound/services/mesh.c:2568,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/services/mesh.c:2572,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/services/mesh.c:2573,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/services/mesh.c:2574,1
    - Dst: memset
      Src: /src/unbound/services/mesh.c:2581,1
    - Dst: apply_respip_action
      Src: /src/unbound/services/mesh.c:2585,1
    - Dst: respip_merge_cname
      Src: /src/unbound/services/mesh.c:2590,1
    - Dst: memset
      Src: /src/unbound/services/mesh.c:2616,1
    - Dst: get_cname_target
      Src: /src/unbound/services/mesh.c:2617,1
    - Dst: log_err
      Src: /src/unbound/services/mesh.c:2620,1
    - Dst: log_dns_msg
      Src: /src/unbound/services/mesh.c:2632,1
    - Dst: mesh_is_udp
      Src: /src/unbound/services/mesh.c:2635,1
    - Dst: timeval_subtract
      Src: /src/unbound/services/mesh.c:2637,1
    - Dst: verbose
      Src: /src/unbound/services/mesh.c:2648,1
    - Dst: infra_wait_limit_dec
      Src: /src/unbound/services/mesh.c:2649,1
    - Dst: http2_stream_remove_mesh_state
      Src: /src/unbound/services/mesh.c:2653,1
    - Dst: doq_stream_remove_mesh_state
      Src: /src/unbound/services/mesh.c:2655,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/services/mesh.c:2656,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:2658,1
    - Dst: respip_inform_print
      Src: /src/unbound/services/mesh.c:2671,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/services/mesh.c:2683,1
    - Dst: mesh_send_reply
      Src: /src/unbound/services/mesh.c:2690,1
    - Dst: tcp_req_info_remove_mesh_state
      Src: /src/unbound/services/mesh.c:2693,1
    - Dst: infra_wait_limit_dec
      Src: /src/unbound/services/mesh.c:2695,1
    - Dst: respip_action_to_rpz_action
      Src: /src/unbound/services/mesh.c:2711,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:2719,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:2732,1
    - Dst: mesh_do_callback
      Src: /src/unbound/services/mesh.c:2739,1
    CyclomaticComplexity: 55
    EdgeCount: 55
    ICount: 120
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2741
      start: 2530
    functionDepth: 5
    functionLinenumber: 2530
    functionLinenumberEnd: 2741
    functionName: mesh_serve_expired_callback
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - mesh_send_reply
    - mesh_do_callback
    - memset
    - doq_stream_remove_mesh_state
    - comm_point_drop_reply
    - respip_merge_cname
    - log_err
    - fptr_ok
    - timeval_subtract
    - edns_opt_list_append_ede
    - mesh_is_udp
    - get_cname_target
    - http2_stream_remove_mesh_state
    - log_dns_msg
    - respip_action_to_rpz_action
    - verbose
    - log_assert
    - tcp_req_info_remove_mesh_state
    - fptr_whitelist_serve_expired_lookup
    - FLAGS_GET_RCODE
    - comm_timer_delete
    - respip_inform_print
    - infra_wait_limit_dec
    - apply_respip_action
    linkageType: ''
    returnType: void
    signature: void mesh_serve_expired_callback(void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mesh_serve_expired_init
      Src: /src/unbound/services/mesh.c:2747,1
    - Dst: mesh_serve_expired_callback
      Src: /src/unbound/services/mesh.c:2748,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - mstate
    argTypes:
    - struct mesh_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2749
      start: 2743
    functionDepth: 6
    functionLinenumber: 2743
    functionLinenumberEnd: 2749
    functionName: mesh_respond_serve_expired
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 1
    functionsReached:
    - mesh_serve_expired_callback
    - mesh_serve_expired_init
    linkageType: ''
    returnType: void
    signature: void mesh_respond_serve_expired(struct mesh_state* mstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - mesh
    argTypes:
    - struct mesh_area*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2756
      start: 2751
    functionDepth: 0
    functionLinenumber: 2751
    functionLinenumberEnd: 2756
    functionName: mesh_jostle_exceeded
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mesh_jostle_exceeded(struct mesh_area* mesh)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: mesh_area_find
      Src: /src/unbound/services/mesh.c:2762,1
    - Dst: mesh_state_del_cb
      Src: /src/unbound/services/mesh.c:2763,1
    - Dst: mesh_area_find_unique
      Src: /src/unbound/services/mesh.c:2766,1
    - Dst: mesh_state_del_cb
      Src: /src/unbound/services/mesh.c:2768,1
    - Dst: mesh_state_del_cb
      Src: /src/unbound/services/mesh.c:2777,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:2784,1
    - Dst: log_assert
      Src: /src/unbound/services/mesh.c:2788,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 27
    argCount: 6
    argNames:
    - mesh
    - qinfo
    - qflags
    - cb
    - cb_arg
    - unique_info
    argTypes:
    - struct mesh_area*
    - struct query_info*
    - uint16_t
    - mesh_cb_func_type
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2795
      start: 2758
    functionDepth: 2
    functionLinenumber: 2758
    functionLinenumberEnd: 2795
    functionName: mesh_remove_callback
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 2
    functionsReached:
    - mesh_area_find
    - log_assert
    - mesh_area_find_unique
    - mesh_state_del_cb
    linkageType: ''
    returnType: void
    signature: "void mesh_remove_callback(struct mesh_area* mesh, struct query_info*
      qinfo,\n\tuint16_t qflags, mesh_cb_func_type cb, void* cb_arg, void* unique_info)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mesh_state_del_cb
      Src: /src/unbound/services/mesh.c:2777,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 4
    argCount: 1
    argNames:
    - all
    argTypes:
    - mesh
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2779
      start: 2776
    functionDepth: 1
    functionLinenumber: 2776
    functionLinenumberEnd: 2779
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/mesh.c
    functionUses: 0
    functionsReached:
    - mesh_state_del_cb
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(s, struct mesh_state*, &mesh->all)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_nametypeclass
      Src: /src/unbound/services/localzone.c:85,1
    - Dst: ntohs
      Src: /src/unbound/services/localzone.c:86,1
    - Dst: ntohs
      Src: /src/unbound/services/localzone.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - z
    argTypes:
    - struct local_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 90
    functionName: local_zone_out
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - log_nametypeclass
    - ntohs
    linkageType: ''
    returnType: void
    signature: void local_zone_out(struct local_zone* z)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_nametypeclass
      Src: /src/unbound/services/localzone.c:85,1
    - Dst: ntohs
      Src: /src/unbound/services/localzone.c:86,1
    - Dst: ntohs
      Src: /src/unbound/services/localzone.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - data
    argTypes:
    - z
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 83
    functionDepth: 1
    functionLinenumber: 83
    functionLinenumberEnd: 89
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - log_nametypeclass
    - ntohs
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(d, struct local_data*, &z->data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/localzone.c:96,1
    - Dst: snprintf
      Src: /src/unbound/services/localzone.c:97,1
    - Dst: local_zone_type2str
      Src: /src/unbound/services/localzone.c:98,1
    - Dst: log_nametypeclass
      Src: /src/unbound/services/localzone.c:99,1
    - Dst: local_zone_out
      Src: /src/unbound/services/localzone.c:100,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - z
    argTypes:
    - struct local_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 92
    functionDepth: 2
    functionLinenumber: 92
    functionLinenumberEnd: 102
    functionName: local_zone_print
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - log_nametypeclass
    - local_zone_out
    - local_zone_type2str
    - snprintf
    - lock_rw_unlock
    - lock_rw_rdlock
    linkageType: ''
    returnType: void
    signature: void local_zone_print(struct local_zone* z)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/localzone.c:107,1
    - Dst: log_info
      Src: /src/unbound/services/localzone.c:108,1
    - Dst: local_zone_print
      Src: /src/unbound/services/localzone.c:110,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - zones
    argTypes:
    - struct local_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 104
    functionDepth: 3
    functionLinenumber: 104
    functionLinenumberEnd: 113
    functionName: local_zones_print
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - lock_rw_unlock
    - local_zone_print
    - lock_rw_rdlock
    - log_info
    linkageType: ''
    returnType: void
    signature: void local_zones_print(struct local_zones* zones)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: local_zone_print
      Src: /src/unbound/services/localzone.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ztree
    argTypes:
    - zones
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 109
    functionDepth: 3
    functionLinenumber: 109
    functionLinenumberEnd: 111
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - local_zone_print
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct local_zone*, &zones->ztree)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/localzone.c:118,1
    - Dst: rbtree_init
      Src: /src/unbound/services/localzone.c:122,1
    - Dst: lock_rw_init
      Src: /src/unbound/services/localzone.c:123,1
    - Dst: lock_protect
      Src: /src/unbound/services/localzone.c:124,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 115
    functionDepth: 1
    functionLinenumber: 115
    functionLinenumberEnd: 127
    functionName: local_zones_create
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 8
    functionsReached:
    - rbtree_init
    - calloc
    - lock_protect
    - lock_rw_init
    linkageType: ''
    returnType: struct local_zones
    signature: "struct local_zones * \nlocal_zones_create(void)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: local_zone_delete
      Src: /src/unbound/services/localzone.c:134,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - n
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 135
    functionName: lzdel
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - local_zone_delete
    linkageType: ''
    returnType: void
    signature: void lzdel(rbnode_type* n, void* ATTR_UNUSED(arg))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/services/localzone.c:142,1
    - Dst: traverse_postorder
      Src: /src/unbound/services/localzone.c:144,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:145,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - zones
    argTypes:
    - struct local_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 146
    functionName: local_zones_delete
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 6
    functionsReached:
    - free
    - traverse_postorder
    - lock_rw_destroy
    linkageType: ''
    returnType: void
    signature: void local_zones_delete(struct local_zones* zones)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/services/localzone.c:153,1
    - Dst: regional_destroy
      Src: /src/unbound/services/localzone.c:154,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:155,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:156,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - z
    argTypes:
    - struct local_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 158
    functionName: local_zone_delete
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 1
    functionsReached:
    - free
    - lock_rw_destroy
    - regional_destroy
    linkageType: ''
    returnType: void
    signature: void local_zone_delete(struct local_zone* z)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_lab_cmp
      Src: /src/unbound/services/localzone.c:173,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - z1
    - z2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 174
    functionName: local_zone_cmp
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - dname_lab_cmp
    linkageType: ''
    returnType: int
    signature: int local_zone_cmp(const void* z1, const void* z2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_canon_lab_cmp
      Src: /src/unbound/services/localzone.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - d1
    - d2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 184
    functionName: local_data_cmp
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - dname_canon_lab_cmp
    linkageType: ''
    returnType: int
    signature: int local_data_cmp(const void* d1, const void* d2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/services/localzone.c:190,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:193,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/services/localzone.c:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - str
    - res
    - len
    - labs
    argTypes:
    - char*
    - uint8_t**
    - size_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 187
    functionDepth: 4
    functionLinenumber: 187
    functionLinenumberEnd: 198
    functionName: parse_dname
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - dname_count_size_labels
    - sldns_str2wire_dname
    linkageType: ''
    returnType: int
    signature: int parse_dname(const char* str, uint8_t** res, size_t* len, int* labs)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/localzone.c:205,1
    - Dst: lock_rw_init
      Src: /src/unbound/services/localzone.c:215,1
    - Dst: regional_create_nochunk
      Src: /src/unbound/services/localzone.c:216,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:218,1
    - Dst: rbtree_init
      Src: /src/unbound/services/localzone.c:221,1
    - Dst: lock_protect
      Src: /src/unbound/services/localzone.c:222,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 5
    argNames:
    - nm
    - len
    - labs
    - t
    - dclass
    argTypes:
    - uint8_t*
    - size_t
    - int
    - enum localzone_type
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 225
    functionName: local_zone_create
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - lock_rw_init
    - free
    - rbtree_init
    - lock_protect
    - calloc
    - regional_create_nochunk
    linkageType: ''
    returnType: struct local_zone
    signature: "struct local_zone *\nlocal_zone_create(uint8_t* nm, size_t len, int
      labs, \n\tenum localzone_type t, uint16_t dclass)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: local_zone_create
      Src: /src/unbound/services/localzone.c:232,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:234,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:235,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/localzone.c:240,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/localzone.c:241,1
    - Dst: rbtree_insert
      Src: /src/unbound/services/localzone.c:242,1
    - Dst: dname_str
      Src: /src/unbound/services/localzone.c:245,1
    - Dst: log_warn
      Src: /src/unbound/services/localzone.c:246,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:247,1
    - Dst: local_zones_find
      Src: /src/unbound/services/localzone.c:252,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/localzone.c:253,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:254,1
    - Dst: local_zone_delete
      Src: /src/unbound/services/localzone.c:255,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:258,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 6
    argNames:
    - zones
    - nm
    - len
    - labs
    - t
    - c
    argTypes:
    - struct local_zones*
    - uint8_t*
    - size_t
    - int
    - enum localzone_type
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 260
    functionName: lz_enter_zone_dname
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - local_zone_delete
    - local_zone_create
    - lock_rw_wrlock
    - lock_rw_unlock
    - dname_str
    - free
    - local_zones_find
    - log_warn
    - rbtree_insert
    linkageType: ''
    returnType: struct local_zone
    signature: "struct local_zone *\nlz_enter_zone_dname(struct local_zones* zones,
      uint8_t* nm, size_t len, \n\tint labs, enum localzone_type t, uint16_t c)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: parse_dname
      Src: /src/unbound/services/localzone.c:272,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:273,1
    - Dst: local_zone_str2type
      Src: /src/unbound/services/localzone.c:276,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:277,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:278,1
    - Dst: lz_enter_zone_dname
      Src: /src/unbound/services/localzone.c:281,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:282,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - zones
    - name
    - type
    - dclass
    argTypes:
    - struct local_zones*
    - char*
    - char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 263
    functionDepth: 5
    functionLinenumber: 263
    functionLinenumberEnd: 286
    functionName: lz_enter_zone
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - lz_enter_zone_dname
    - log_err
    - free
    - parse_dname
    - local_zone_str2type
    linkageType: ''
    returnType: struct local_zone
    signature: "struct local_zone *\nlz_enter_zone(struct local_zones* zones, const
      char* name, const char* type,\n\tuint16_t dclass)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_rr_buf
      Src: /src/unbound/services/localzone.c:294,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:297,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/services/localzone.c:298,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/services/localzone.c:299,1
    - Dst: memdup
      Src: /src/unbound/services/localzone.c:302,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:304,1
    - Dst: sldns_wirerr_get_class
      Src: /src/unbound/services/localzone.c:307,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/services/localzone.c:308,1
    - Dst: sldns_wirerr_get_ttl
      Src: /src/unbound/services/localzone.c:309,1
    - Dst: sldns_wirerr_get_rdatawl
      Src: /src/unbound/services/localzone.c:310,1
    - Dst: sldns_wirerr_get_rdatalen
      Src: /src/unbound/services/localzone.c:311,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 9
    argNames:
    - str
    - nm
    - type
    - dclass
    - ttl
    - rr
    - len
    - rdata
    - rdata_len
    argTypes:
    - char*
    - uint8_t**
    - uint16_t*
    - uint16_t*
    - time_t*
    - uint8_t*
    - size_t
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 288
    functionDepth: 7
    functionLinenumber: 288
    functionLinenumberEnd: 313
    functionName: rrstr_get_rr_content
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - sldns_wirerr_get_ttl
    - log_err
    - sldns_str2wire_rr_buf
    - sldns_wirerr_get_rdatawl
    - LDNS_WIREPARSE_OFFSET
    - sldns_get_errorstr_parse
    - sldns_wirerr_get_type
    - sldns_wirerr_get_rdatalen
    - memdup
    - sldns_wirerr_get_class
    linkageType: ''
    returnType: int
    signature: "int rrstr_get_rr_content(const char* str, uint8_t** nm, uint16_t*
      type,\n\tuint16_t* dclass, time_t* ttl, uint8_t* rr, size_t len,\n\tuint8_t**
      rdata, size_t* rdata_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_rr_buf
      Src: /src/unbound/services/localzone.c:322,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:325,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/services/localzone.c:326,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/services/localzone.c:327,1
    - Dst: memdup
      Src: /src/unbound/services/localzone.c:330,1
    - Dst: sldns_wirerr_get_class
      Src: /src/unbound/services/localzone.c:331,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/services/localzone.c:332,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:334,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - str
    - nm
    - dclass
    - dtype
    argTypes:
    - char*
    - uint8_t**
    - uint16_t*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 316
    functionDepth: 7
    functionLinenumber: 316
    functionLinenumberEnd: 338
    functionName: get_rr_nameclass
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - sldns_str2wire_rr_buf
    - LDNS_WIREPARSE_OFFSET
    - sldns_get_errorstr_parse
    - sldns_wirerr_get_type
    - memdup
    - sldns_wirerr_get_class
    linkageType: ''
    returnType: int
    signature: "int get_rr_nameclass(const char* str, uint8_t** nm, uint16_t* dclass,\n\tuint16_t*
      dtype)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/unbound/services/localzone.c:352,1
    - Dst: htons
      Src: /src/unbound/services/localzone.c:356,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - data
    - type
    - alias_ok
    argTypes:
    - struct local_data*
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 362
    functionName: local_data_find_type
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 2
    functionsReached:
    - htons
    linkageType: ''
    returnType: struct local_rrset
    signature: 'struct local_rrset *

      local_data_find_type(struct local_data* data, uint16_t type, int alias_ok)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/services/localzone.c:371,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - pd
    - rdata
    - rdata_len
    argTypes:
    - struct packed_rrset_data*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 375
    functionName: rr_is_duplicate
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int rr_is_duplicate(struct packed_rrset_data* pd, uint8_t* rdata, size_t
      rdata_len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/localzone.c:384,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:386,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/localzone.c:390,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:392,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/localzone.c:396,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:399,1
    - Dst: htons
      Src: /src/unbound/services/localzone.c:407,1
    - Dst: htons
      Src: /src/unbound/services/localzone.c:408,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 4
    argNames:
    - region
    - node
    - rrtype
    - rrclass
    argTypes:
    - struct regional*
    - struct local_data*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 412
    functionName: new_local_rrset
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - log_err
    - htons
    linkageType: ''
    returnType: struct local_rrset
    signature: "struct local_rrset *\nnew_local_rrset(struct regional* region, struct
      local_data* node,\n\tuint16_t rrtype, uint16_t rrclass)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_warn
      Src: /src/unbound/services/localzone.c:425,1
    - Dst: regional_alloc
      Src: /src/unbound/services/localzone.c:430,1
    - Dst: regional_alloc
      Src: /src/unbound/services/localzone.c:431,1
    - Dst: regional_alloc
      Src: /src/unbound/services/localzone.c:432,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:438,1
    - Dst: memcpy
      Src: /src/unbound/services/localzone.c:442,1
    - Dst: memcpy
      Src: /src/unbound/services/localzone.c:444,1
    - Dst: memcpy
      Src: /src/unbound/services/localzone.c:446,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/localzone.c:451,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:457,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 6
    argNames:
    - region
    - pd
    - rdata
    - rdata_len
    - ttl
    - rrstr
    argTypes:
    - struct regional*
    - struct packed_rrset_data*
    - uint8_t*
    - size_t
    - time_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 461
    functionName: rrset_insert_rr
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 2
    functionsReached:
    - log_err
    - memcpy
    - regional_alloc
    - log_warn
    - regional_alloc_init
    linkageType: ''
    returnType: int
    signature: "int rrset_insert_rr(struct regional* region, struct packed_rrset_data*
      pd,\n\tuint8_t* rdata, size_t rdata_len, time_t ttl, const char* rrstr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/localzone.c:468,1
    - Dst: log_warn
      Src: /src/unbound/services/localzone.c:470,1
    - Dst: memmove
      Src: /src/unbound/services/localzone.c:477,1
    - Dst: memmove
      Src: /src/unbound/services/localzone.c:478,1
    - Dst: memmove
      Src: /src/unbound/services/localzone.c:479,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - pd
    - index
    argTypes:
    - struct packed_rrset_data*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 465
    functionDepth: 1
    functionLinenumber: 465
    functionLinenumberEnd: 483
    functionName: local_rrset_remove_rr
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 4
    functionsReached:
    - log_assert
    - log_warn
    - memmove
    linkageType: ''
    returnType: int
    signature: int local_rrset_remove_rr(struct packed_rrset_data* pd, size_t index)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_search
      Src: /src/unbound/services/localzone.c:493,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - z
    - nm
    - nmlen
    - nmlabs
    argTypes:
    - struct local_zone*
    - uint8_t*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 494
    functionName: local_zone_find_data
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 2
    functionsReached:
    - rbtree_search
    linkageType: ''
    returnType: struct local_data
    signature: "struct local_data * \nlocal_zone_find_data(struct local_zone* z, uint8_t*
      nm, size_t nmlen, int nmlabs)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: local_zone_find_data
      Src: /src/unbound/services/localzone.c:501,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/localzone.c:504,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:507,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/localzone.c:511,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:513,1
    - Dst: rbtree_insert
      Src: /src/unbound/services/localzone.c:518,1
    - Dst: log_assert
      Src: /src/unbound/services/localzone.c:519,1
    - Dst: dname_remove_label
      Src: /src/unbound/services/localzone.c:523,1
    - Dst: lz_find_create_node
      Src: /src/unbound/services/localzone.c:524,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 5
    argNames:
    - z
    - nm
    - nmlen
    - nmlabs
    - res
    argTypes:
    - struct local_zone*
    - uint8_t*
    - size_t
    - int
    - struct local_data**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 497
    functionDepth: 2
    functionLinenumber: 497
    functionLinenumberEnd: 530
    functionName: lz_find_create_node
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 1
    functionsReached:
    - regional_alloc_zero
    - log_err
    - lz_find_create_node
    - local_zone_find_data
    - dname_remove_label
    - log_assert
    - regional_alloc_init
    - rbtree_insert
    linkageType: ''
    returnType: int
    signature: "int lz_find_create_node(struct local_zone* z, uint8_t* nm, size_t
      nmlen, \n\tint nmlabs, struct local_data** res)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/localzone.c:542,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/localzone.c:544,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:547,1
    - Dst: rrset_insert_rr
      Src: /src/unbound/services/localzone.c:560,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/services/localzone.c:565,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 6
    argNames:
    - z
    - soa_rrset
    - rdata
    - rdata_len
    - ttl
    - rrstr
    argTypes:
    - struct local_zone*
    - struct ub_packed_rrset_key*
    - uint8_t*
    - size_t
    - time_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 537
    functionDepth: 2
    functionLinenumber: 537
    functionLinenumberEnd: 572
    functionName: lz_mark_soa_for_zone
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - log_err
    - sldns_read_uint32
    - rrset_insert_rr
    linkageType: ''
    returnType: int
    signature: "int lz_mark_soa_for_zone(struct local_zone* z, struct ub_packed_rrset_key*
      soa_rrset,\n\tuint8_t* rdata, size_t rdata_len, time_t ttl, const char* rrstr)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lz_find_create_node
      Src: /src/unbound/services/localzone.c:583,1
    - Dst: log_assert
      Src: /src/unbound/services/localzone.c:586,1
    - Dst: htons
      Src: /src/unbound/services/localzone.c:596,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:600,1
    - Dst: local_data_find_type
      Src: /src/unbound/services/localzone.c:605,1
    - Dst: new_local_rrset
      Src: /src/unbound/services/localzone.c:607,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/localzone.c:610,1
    - Dst: lz_mark_soa_for_zone
      Src: /src/unbound/services/localzone.c:614,1
    - Dst: log_assert
      Src: /src/unbound/services/localzone.c:620,1
    - Dst: rr_is_duplicate
      Src: /src/unbound/services/localzone.c:623,1
    - Dst: verbose
      Src: /src/unbound/services/localzone.c:624,1
    - Dst: rrset_insert_rr
      Src: /src/unbound/services/localzone.c:627,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 35
    argCount: 10
    argNames:
    - z
    - nm
    - nmlen
    - nmlabs
    - rrtype
    - rrclass
    - ttl
    - rdata
    - rdata_len
    - rrstr
    argTypes:
    - struct local_zone*
    - uint8_t*
    - size_t
    - int
    - uint16_t
    - uint16_t
    - time_t
    - uint8_t*
    - size_t
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 574
    functionDepth: 3
    functionLinenumber: 574
    functionLinenumberEnd: 628
    functionName: local_zone_enter_rr
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 1
    functionsReached:
    - lz_find_create_node
    - log_err
    - new_local_rrset
    - verbose
    - htons
    - lz_mark_soa_for_zone
    - rr_is_duplicate
    - query_dname_compare
    - log_assert
    - rrset_insert_rr
    - local_data_find_type
    linkageType: ''
    returnType: int
    signature: "int local_zone_enter_rr(struct local_zone* z, uint8_t* nm, size_t
      nmlen,\n\tint nmlabs, uint16_t rrtype, uint16_t rrclass, time_t ttl,\n\tuint8_t*
      rdata, size_t rdata_len, const char* rrstr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rrstr_get_rr_content
      Src: /src/unbound/services/localzone.c:642,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:644,1
    - Dst: log_assert
      Src: /src/unbound/services/localzone.c:647,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/localzone.c:650,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:651,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:653,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/services/localzone.c:656,1
    - Dst: local_zone_enter_rr
      Src: /src/unbound/services/localzone.c:657,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:659,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - z
    - rrstr
    argTypes:
    - struct local_zone*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 631
    functionDepth: 8
    functionLinenumber: 631
    functionLinenumberEnd: 661
    functionName: lz_enter_rr_into_zone
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - dname_count_size_labels
    - free
    - local_zone_enter_rr
    - query_dname_compare
    - log_assert
    - rrstr_get_rr_content
    linkageType: ''
    returnType: int
    signature: int lz_enter_rr_into_zone(struct local_zone* z, const char* rrstr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_rr_nameclass
      Src: /src/unbound/services/localzone.c:673,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:674,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/services/localzone.c:677,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/localzone.c:678,1
    - Dst: local_zones_lookup
      Src: /src/unbound/services/localzone.c:679,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:681,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:682,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:683,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/localzone.c:686,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:687,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:688,1
    - Dst: lz_enter_rr_into_zone
      Src: /src/unbound/services/localzone.c:689,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:690,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - zones
    - rr
    argTypes:
    - struct local_zones*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 664
    functionDepth: 9
    functionLinenumber: 664
    functionLinenumberEnd: 692
    functionName: lz_enter_rr_str
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - lock_rw_wrlock
    - dname_count_size_labels
    - lock_rw_unlock
    - lz_enter_rr_into_zone
    - free
    - local_zones_lookup
    - get_rr_nameclass
    - lock_rw_rdlock
    linkageType: ''
    returnType: int
    signature: int lz_enter_rr_str(struct local_zones* zones, const char* rr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/services/localzone.c:704,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:705,1
    - Dst: dname_count_labels
      Src: /src/unbound/services/localzone.c:708,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/localzone.c:710,1
    - Dst: local_zones_find
      Src: /src/unbound/services/localzone.c:711,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:713,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:714,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/localzone.c:717,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:718,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:719,1
    - Dst: memdup
      Src: /src/unbound/services/localzone.c:720,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:724,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 5
    argNames:
    - zones
    - zname
    - list
    - len
    - rr_class
    argTypes:
    - struct local_zones*
    - char*
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 695
    functionDepth: 3
    functionLinenumber: 695
    functionLinenumberEnd: 726
    functionName: lz_enter_zone_tag
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - memdup
    - lock_rw_wrlock
    - lock_rw_unlock
    - free
    - local_zones_find
    - sldns_str2wire_dname_buf
    - lock_rw_rdlock
    - dname_count_labels
    linkageType: ''
    returnType: int
    signature: "int lz_enter_zone_tag(struct local_zones* zones, char* zname, uint8_t*
      list,\n\tsize_t len, uint16_t rr_class)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/services/localzone.c:743,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:744,1
    - Dst: dname_count_labels
      Src: /src/unbound/services/localzone.c:748,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/services/localzone.c:751,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:753,1
    - Dst: local_zone_str2type
      Src: /src/unbound/services/localzone.c:759,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:760,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/localzone.c:766,1
    - Dst: local_zones_find
      Src: /src/unbound/services/localzone.c:767,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:769,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:770,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/localzone.c:773,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:774,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/localzone.c:778,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:781,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:782,1
    - Dst: addr_tree_init
      Src: /src/unbound/services/localzone.c:785,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/localzone.c:790,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:793,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:794,1
    - Dst: addr_tree_insert
      Src: /src/unbound/services/localzone.c:798,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:800,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:801,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:807,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 48
    argCount: 5
    argNames:
    - zones
    - zname
    - netblock
    - type
    - rr_class
    argTypes:
    - struct local_zones*
    - char*
    - char*
    - char*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 729
    functionDepth: 3
    functionLinenumber: 729
    functionLinenumberEnd: 809
    functionName: lz_enter_override
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - log_err
    - netblockstrtoaddr
    - lock_rw_unlock
    - lock_rw_wrlock
    - addr_tree_init
    - local_zones_find
    - sldns_str2wire_dname_buf
    - addr_tree_insert
    - lock_rw_rdlock
    - dname_count_labels
    - local_zone_str2type
    linkageType: ''
    returnType: int
    signature: "int lz_enter_override(struct local_zones* zones, char* zname, char*
      netblock,\n\tchar* type, uint16_t rr_class)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lz_enter_zone
      Src: /src/unbound/services/localzone.c:824,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:827,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - zones
    - cfg
    argTypes:
    - struct local_zones*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 830
      start: 812
    functionDepth: 6
    functionLinenumber: 812
    functionLinenumberEnd: 830
    functionName: lz_enter_zones
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - lz_enter_zone
    - lock_rw_unlock
    linkageType: ''
    returnType: int
    signature: int lz_enter_zones(struct local_zones* zones, struct config_file* cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: parse_dname
      Src: /src/unbound/services/localzone.c:839,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:840,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/localzone.c:843,1
    - Dst: rbtree_search
      Src: /src/unbound/services/localzone.c:844,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:845,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:846,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:849,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:850,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - zones
    - name
    argTypes:
    - struct local_zones*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 833
    functionDepth: 5
    functionLinenumber: 833
    functionLinenumberEnd: 852
    functionName: lz_exists
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - lock_rw_unlock
    - free
    - parse_dname
    - lock_rw_rdlock
    - rbtree_search
    linkageType: ''
    returnType: int
    signature: int lz_exists(struct local_zones* zones, const char* name)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/services/localzone.c:859,1
    - Dst: strncasecmp
      Src: /src/unbound/services/localzone.c:865,1
    - Dst: strlen
      Src: /src/unbound/services/localzone.c:866,1
    - Dst: strlen
      Src: /src/unbound/services/localzone.c:866,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 10
    argCount: 2
    argNames:
    - cfg
    - name
    argTypes:
    - struct config_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 855
    functionDepth: 0
    functionLinenumber: 855
    functionLinenumberEnd: 871
    functionName: lz_nodefault
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - strncasecmp
    - strlen
    linkageType: ''
    returnType: int
    signature: int lz_nodefault(struct config_file* cfg, const char* name)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lz_exists
      Src: /src/unbound/services/localzone.c:880,1
    - Dst: lz_nodefault
      Src: /src/unbound/services/localzone.c:880,1
    - Dst: lz_enter_zone
      Src: /src/unbound/services/localzone.c:882,1
    - Dst: snprintf
      Src: /src/unbound/services/localzone.c:884,1
    - Dst: lz_enter_rr_into_zone
      Src: /src/unbound/services/localzone.c:886,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:887,1
    - Dst: snprintf
      Src: /src/unbound/services/localzone.c:890,1
    - Dst: lz_enter_rr_into_zone
      Src: /src/unbound/services/localzone.c:891,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:892,1
    - Dst: strncasecmp
      Src: /src/unbound/services/localzone.c:895,1
    - Dst: lz_enter_rr_into_zone
      Src: /src/unbound/services/localzone.c:896,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:898,1
    - Dst: strncasecmp
      Src: /src/unbound/services/localzone.c:901,1
    - Dst: snprintf
      Src: /src/unbound/services/localzone.c:902,1
    - Dst: lz_enter_rr_into_zone
      Src: /src/unbound/services/localzone.c:903,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:904,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:908,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 3
    argNames:
    - zones
    - cfg
    - name
    argTypes:
    - struct local_zones*
    - struct config_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 910
      start: 874
    functionDepth: 9
    functionLinenumber: 874
    functionLinenumberEnd: 910
    functionName: add_reverse_default
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - lz_nodefault
    - lz_exists
    - snprintf
    - lock_rw_unlock
    - lz_enter_rr_into_zone
    - lz_enter_zone
    - strncasecmp
    linkageType: ''
    returnType: int
    signature: "int add_reverse_default(struct local_zones* zones, struct config_file*
      cfg,\n        const char* name)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lz_exists
      Src: /src/unbound/services/localzone.c:919,1
    - Dst: lz_nodefault
      Src: /src/unbound/services/localzone.c:919,1
    - Dst: lz_enter_zone
      Src: /src/unbound/services/localzone.c:921,1
    - Dst: snprintf
      Src: /src/unbound/services/localzone.c:923,1
    - Dst: lz_enter_rr_into_zone
      Src: /src/unbound/services/localzone.c:925,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:926,1
    - Dst: snprintf
      Src: /src/unbound/services/localzone.c:929,1
    - Dst: lz_enter_rr_into_zone
      Src: /src/unbound/services/localzone.c:930,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:931,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:934,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - zones
    - cfg
    - name
    argTypes:
    - struct local_zones*
    - struct config_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 913
    functionDepth: 9
    functionLinenumber: 913
    functionLinenumberEnd: 936
    functionName: add_empty_default
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - lz_nodefault
    - lz_exists
    - snprintf
    - lock_rw_unlock
    - lz_enter_rr_into_zone
    - lz_enter_zone
    linkageType: ''
    returnType: int
    signature: "int add_empty_default(struct local_zones* zones, struct config_file*
      cfg,\n        const char* name)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: lz_exists
      Src: /src/unbound/services/localzone.c:953,1
    - Dst: lz_nodefault
      Src: /src/unbound/services/localzone.c:954,1
    - Dst: lz_enter_zone
      Src: /src/unbound/services/localzone.c:955,1
    - Dst: lz_enter_rr_into_zone
      Src: /src/unbound/services/localzone.c:957,1
    - Dst: lz_enter_rr_into_zone
      Src: /src/unbound/services/localzone.c:959,1
    - Dst: lz_enter_rr_into_zone
      Src: /src/unbound/services/localzone.c:962,1
    - Dst: lz_enter_rr_into_zone
      Src: /src/unbound/services/localzone.c:964,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:966,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:967,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:970,1
    - Dst: add_reverse_default
      Src: /src/unbound/services/localzone.c:975,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:976,1
    - Dst: add_empty_default
      Src: /src/unbound/services/localzone.c:983,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:984,1
    - Dst: add_empty_default
      Src: /src/unbound/services/localzone.c:992,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:993,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 34
    argCount: 2
    argNames:
    - zones
    - cfg
    argTypes:
    - struct local_zones*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 939
    functionDepth: 10
    functionLinenumber: 939
    functionLinenumberEnd: 999
    functionName: local_zone_enter_defaults
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 3
    functionsReached:
    - lz_nodefault
    - log_err
    - lz_exists
    - add_empty_default
    - lock_rw_unlock
    - lz_enter_rr_into_zone
    - lz_enter_zone
    - add_reverse_default
    linkageType: ''
    returnType: int
    signature: int local_zone_enter_defaults(struct local_zones* zones, struct config_file*
      cfg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lz_enter_override
      Src: /src/unbound/services/localzone.c:1007,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - zones
    - cfg
    argTypes:
    - struct local_zones*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 1002
    functionDepth: 4
    functionLinenumber: 1002
    functionLinenumberEnd: 1012
    functionName: lz_enter_overrides
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - lz_enter_override
    linkageType: ''
    returnType: int
    signature: int lz_enter_overrides(struct local_zones* zones, struct config_file*
      cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_lab_cmp
      Src: /src/unbound/services/localzone.c:1021,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - curr
    - prev
    argTypes:
    - struct local_zone*
    - struct local_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1035
      start: 1015
    functionDepth: 1
    functionLinenumber: 1015
    functionLinenumberEnd: 1035
    functionName: find_closest_parent
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - dname_lab_cmp
    linkageType: ''
    returnType: struct local_zone
    signature: "struct local_zone * find_closest_parent(struct local_zone* curr,\n\tstruct
      local_zone* prev)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/localzone.c:1042,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/localzone.c:1044,1
    - Dst: find_closest_parent
      Src: /src/unbound/services/localzone.c:1045,1
    - Dst: addr_tree_init_parents
      Src: /src/unbound/services/localzone.c:1048,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:1049,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:1051,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - zones
    argTypes:
    - struct local_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1038
    functionDepth: 2
    functionLinenumber: 1038
    functionLinenumberEnd: 1052
    functionName: lz_init_parents
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - find_closest_parent
    - addr_tree_init_parents
    linkageType: ''
    returnType: void
    signature: void lz_init_parents(struct local_zones* zones)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/localzone.c:1044,1
    - Dst: find_closest_parent
      Src: /src/unbound/services/localzone.c:1045,1
    - Dst: addr_tree_init_parents
      Src: /src/unbound/services/localzone.c:1048,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:1049,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ztree
    argTypes:
    - zones
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 1043
    functionDepth: 2
    functionLinenumber: 1043
    functionLinenumberEnd: 1050
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - find_closest_parent
    - addr_tree_init_parents
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(node, struct local_zone*, &zones->ztree)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lz_init_parents
      Src: /src/unbound/services/localzone.c:1070,1
    - Dst: get_rr_nameclass
      Src: /src/unbound/services/localzone.c:1076,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:1077,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/services/localzone.c:1080,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/localzone.c:1081,1
    - Dst: local_zones_lookup
      Src: /src/unbound/services/localzone.c:1082,1
    - Dst: local_zones_lookup
      Src: /src/unbound/services/localzone.c:1089,1
    - Dst: memdup
      Src: /src/unbound/services/localzone.c:1093,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:1097,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:1099,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:1100,1
    - Dst: lz_enter_zone_dname
      Src: /src/unbound/services/localzone.c:1107,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:1110,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:1113,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:1114,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:1128,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:1130,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/services/localzone.c:1134,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:1136,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:1140,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:1141,1
    - Dst: dname_remove_labels
      Src: /src/unbound/services/localzone.c:1150,1
    - Dst: memdup
      Src: /src/unbound/services/localzone.c:1151,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:1152,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:1154,1
    - Dst: log_nametypeclass
      Src: /src/unbound/services/localzone.c:1157,1
    - Dst: lz_enter_zone_dname
      Src: /src/unbound/services/localzone.c:1163,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:1167,1
    - Dst: lz_setup_implicit
      Src: /src/unbound/services/localzone.c:1171,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 65
    argCount: 2
    argNames:
    - zones
    - cfg
    argTypes:
    - struct local_zones*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1174
      start: 1055
    functionDepth: 8
    functionLinenumber: 1055
    functionLinenumberEnd: 1174
    functionName: lz_setup_implicit
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 1
    functionsReached:
    - dname_lab_cmp
    - log_err
    - lz_enter_zone_dname
    - memdup
    - log_nametypeclass
    - lz_setup_implicit
    - dname_count_size_labels
    - lock_rw_unlock
    - dname_remove_labels
    - free
    - local_zones_lookup
    - get_rr_nameclass
    - lock_rw_rdlock
    - lz_init_parents
    linkageType: ''
    returnType: int
    signature: int lz_setup_implicit(struct local_zones* zones, struct config_file*
      cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lz_enter_zone_tag
      Src: /src/unbound/services/localzone.c:1183,1
    - Dst: verbose
      Src: /src/unbound/services/localzone.c:1188,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - zones
    - cfg
    argTypes:
    - struct local_zones*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1190
      start: 1177
    functionDepth: 4
    functionLinenumber: 1177
    functionLinenumberEnd: 1190
    functionName: lz_enter_zone_tags
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - verbose
    - lz_enter_zone_tag
    linkageType: ''
    returnType: int
    signature: int lz_enter_zone_tags(struct local_zones* zones, struct config_file*
      cfg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lz_enter_rr_str
      Src: /src/unbound/services/localzone.c:1198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - zones
    - cfg
    argTypes:
    - struct local_zones*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1193
    functionDepth: 10
    functionLinenumber: 1193
    functionLinenumberEnd: 1202
    functionName: lz_enter_data
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - lz_enter_rr_str
    linkageType: ''
    returnType: int
    signature: int lz_enter_data(struct local_zones* zones, struct config_file* cfg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_deldblstrlist
      Src: /src/unbound/services/localzone.c:1208,1
    - Dst: config_delstrlist
      Src: /src/unbound/services/localzone.c:1210,1
    - Dst: config_delstrlist
      Src: /src/unbound/services/localzone.c:1212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1214
      start: 1205
    functionDepth: 1
    functionLinenumber: 1205
    functionLinenumberEnd: 1214
    functionName: lz_freeup_cfg
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - config_deldblstrlist
    - config_delstrlist
    linkageType: ''
    returnType: void
    signature: void lz_freeup_cfg(struct config_file* cfg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lz_enter_zones
      Src: /src/unbound/services/localzone.c:1220,1
    - Dst: local_zone_enter_defaults
      Src: /src/unbound/services/localzone.c:1224,1
    - Dst: lz_enter_overrides
      Src: /src/unbound/services/localzone.c:1228,1
    - Dst: lz_setup_implicit
      Src: /src/unbound/services/localzone.c:1232,1
    - Dst: lz_init_parents
      Src: /src/unbound/services/localzone.c:1237,1
    - Dst: lz_enter_zone_tags
      Src: /src/unbound/services/localzone.c:1239,1
    - Dst: lz_enter_data
      Src: /src/unbound/services/localzone.c:1243,1
    - Dst: lz_freeup_cfg
      Src: /src/unbound/services/localzone.c:1247,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 2
    argNames:
    - zones
    - cfg
    argTypes:
    - struct local_zones*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1249
      start: 1216
    functionDepth: 11
    functionLinenumber: 1216
    functionLinenumberEnd: 1249
    functionName: local_zones_apply_cfg
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 3
    functionsReached:
    - lz_setup_implicit
    - lz_enter_overrides
    - lz_freeup_cfg
    - lz_enter_zone_tags
    - lz_enter_data
    - local_zone_enter_defaults
    - lz_enter_zones
    - lz_init_parents
    linkageType: ''
    returnType: int
    signature: int local_zones_apply_cfg(struct local_zones* zones, struct config_file*
      cfg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: local_zones_tags_lookup
      Src: /src/unbound/services/localzone.c:1256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 7
    argNames:
    - zones
    - name
    - len
    - labs
    - dclass
    - dtype
    - foradd
    argTypes:
    - struct local_zones*
    - uint8_t*
    - size_t
    - int
    - uint16_t
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1258
      start: 1251
    functionDepth: 1
    functionLinenumber: 1251
    functionLinenumberEnd: 1258
    functionName: local_zones_lookup
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 3
    functionsReached:
    - local_zones_tags_lookup
    linkageType: ''
    returnType: struct local_zone
    signature: "struct local_zone * \nlocal_zones_lookup(struct local_zones* zones,\n
      \       uint8_t* name, size_t len, int labs, uint16_t dclass, uint16_t dtype,\n\tint
      foradd)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dname_is_root
      Src: /src/unbound/services/localzone.c:1272,1
    - Dst: rbtree_search
      Src: /src/unbound/services/localzone.c:1285,1
    - Dst: dname_remove_label
      Src: /src/unbound/services/localzone.c:1291,1
    - Dst: rbtree_find_less_equal
      Src: /src/unbound/services/localzone.c:1298,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/services/localzone.c:1304,1
    - Dst: taglist_intersect
      Src: /src/unbound/services/localzone.c:1309,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 29
    argCount: 10
    argNames:
    - zones
    - name
    - len
    - labs
    - dclass
    - dtype
    - taglist
    - taglen
    - ignoretags
    - foradd
    argTypes:
    - struct local_zones*
    - uint8_t*
    - size_t
    - int
    - uint16_t
    - uint16_t
    - uint8_t*
    - size_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1315
      start: 1260
    functionDepth: 1
    functionLinenumber: 1260
    functionLinenumberEnd: 1315
    functionName: local_zones_tags_lookup
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 1
    functionsReached:
    - dname_lab_cmp
    - rbtree_find_less_equal
    - dname_is_root
    - dname_remove_label
    - taglist_intersect
    - rbtree_search
    linkageType: ''
    returnType: struct local_zone
    signature: "struct local_zone * \nlocal_zones_tags_lookup(struct local_zones*
      zones,\n        uint8_t* name, size_t len, int labs, uint16_t dclass, uint16_t
      dtype,\n\tuint8_t* taglist, size_t taglen, int ignoretags, int foradd)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_search
      Src: /src/unbound/services/localzone.c:1328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - zones
    - name
    - len
    - labs
    - dclass
    argTypes:
    - struct local_zones*
    - uint8_t*
    - size_t
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1329
      start: 1317
    functionDepth: 1
    functionLinenumber: 1317
    functionLinenumberEnd: 1329
    functionName: local_zones_find
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 6
    functionsReached:
    - rbtree_search
    linkageType: ''
    returnType: struct local_zone
    signature: "struct local_zone * \nlocal_zones_find(struct local_zones* zones,\n
      \       uint8_t* name, size_t len, int labs, uint16_t dclass)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_find_less_equal
      Src: /src/unbound/services/localzone.c:1343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 6
    argNames:
    - zones
    - name
    - len
    - labs
    - dclass
    - exact
    argTypes:
    - struct local_zones*
    - uint8_t*
    - size_t
    - int
    - uint16_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1345
      start: 1331
    functionDepth: 1
    functionLinenumber: 1331
    functionLinenumberEnd: 1345
    functionName: local_zones_find_le
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 1
    functionsReached:
    - rbtree_find_less_equal
    linkageType: ''
    returnType: struct local_zone
    signature: "struct local_zone *\nlocal_zones_find_le(struct local_zones* zones,\n
      \       uint8_t* name, size_t len, int labs, uint16_t dclass,\n\tint* exact)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/localzone.c:1357,1
    - Dst: inplace_cb_reply_local_call
      Src: /src/unbound/services/localzone.c:1371,1
    - Dst: reply_info_answer_encode
      Src: /src/unbound/services/localzone.c:1372,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/localzone.c:1373,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/services/localzone.c:1373,1
    - Dst: error_encode
      Src: /src/unbound/services/localzone.c:1375,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/localzone.c:1376,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/services/localzone.c:1377,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 9
    argNames:
    - qinfo
    - env
    - edns
    - repinfo
    - buf
    - temp
    - rrset
    - ansec
    - rcode
    argTypes:
    - struct query_info*
    - struct module_env*
    - struct edns_data*
    - struct comm_reply*
    - sldns_buffer*
    - struct regional*
    - struct ub_packed_rrset_key*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1348
    functionDepth: 4
    functionLinenumber: 1348
    functionLinenumberEnd: 1380
    functionName: local_encode
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 1
    functionsReached:
    - reply_info_answer_encode
    - inplace_cb_reply_local_call
    - sldns_buffer_begin
    - memset
    - sldns_buffer_read_u16_at
    - error_encode
    linkageType: ''
    returnType: int
    signature: "int local_encode(struct query_info* qinfo, struct module_env* env,\n\tstruct
      edns_data* edns, struct comm_reply* repinfo, sldns_buffer* buf,\n\tstruct regional*
      temp, struct ub_packed_rrset_key* rrset, int ansec,\n\tint rcode)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inplace_cb_reply_local_call
      Src: /src/unbound/services/localzone.c:1394,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/services/localzone.c:1399,1
    - Dst: error_encode
      Src: /src/unbound/services/localzone.c:1403,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/localzone.c:1403,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/services/localzone.c:1404,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 10
    argNames:
    - qinfo
    - env
    - edns
    - repinfo
    - buf
    - temp
    - rcode
    - r
    - ede_code
    - ede_txt
    argTypes:
    - struct query_info*
    - struct module_env*
    - struct edns_data*
    - struct comm_reply*
    - sldns_buffer*
    - struct regional*
    - int
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1405
      start: 1383
    functionDepth: 4
    functionLinenumber: 1383
    functionLinenumberEnd: 1405
    functionName: local_error_encode
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - inplace_cb_reply_local_call
    - sldns_buffer_begin
    - edns_opt_list_append_ede
    - sldns_buffer_read_u16_at
    - error_encode
    linkageType: ''
    returnType: void
    signature: "void local_error_encode(struct query_info* qinfo, struct module_env*
      env,\n\tstruct edns_data* edns, struct comm_reply* repinfo, sldns_buffer* buf,\n\tstruct
      regional* temp, int rcode, int r, int ede_code,\n\tconst char* ede_txt)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/services/localzone.c:1424,1
    - Dst: sldns_str2wire_rr_buf
      Src: /src/unbound/services/localzone.c:1425,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/services/localzone.c:1433,1
    - Dst: htons
      Src: /src/unbound/services/localzone.c:1442,1
    - Dst: htons
      Src: /src/unbound/services/localzone.c:1443,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/localzone.c:1445,1
    - Dst: sldns_wirerr_get_ttl
      Src: /src/unbound/services/localzone.c:1451,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/localzone.c:1466,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/localzone.c:1468,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/localzone.c:1470,1
    - Dst: memmove
      Src: /src/unbound/services/localzone.c:1477,1
    - Dst: memmove
      Src: /src/unbound/services/localzone.c:1478,1
    - Dst: memmove
      Src: /src/unbound/services/localzone.c:1479,1
    - Dst: sldns_wirerr_get_rdatalen
      Src: /src/unbound/services/localzone.c:1482,1
    - Dst: sldns_wirerr_get_ttl
      Src: /src/unbound/services/localzone.c:1483,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/localzone.c:1484,1
    - Dst: sldns_wirerr_get_rdatawl
      Src: /src/unbound/services/localzone.c:1485,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 49
    argCount: 4
    argNames:
    - qinfo
    - list
    - r
    - temp
    argTypes:
    - struct query_info*
    - struct config_strlist*
    - struct ub_packed_rrset_key*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1494
      start: 1408
    functionDepth: 7
    functionLinenumber: 1408
    functionLinenumberEnd: 1494
    functionName: local_data_find_tag_datas
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - sldns_wirerr_get_ttl
    - memmove
    - sldns_str2wire_rr_buf
    - snprintf
    - sldns_wirerr_get_rdatawl
    - htons
    - sldns_wirerr_get_type
    - regional_alloc_init
    - sldns_wirerr_get_rdatalen
    linkageType: ''
    returnType: int
    signature: "int local_data_find_tag_datas(const struct query_info* qinfo,\n\tstruct
      config_strlist* list, struct ub_packed_rrset_key* r,\n\tstruct regional* temp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: local_data_find_tag_datas
      Src: /src/unbound/services/localzone.c:1500,1
    - Dst: htons
      Src: /src/unbound/services/localzone.c:1506,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/localzone.c:1508,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/localzone.c:1512,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 4
    argNames:
    - qinfo
    - list
    - r
    - temp
    argTypes:
    - struct query_info*
    - struct config_strlist*
    - struct ub_packed_rrset_key*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1496
    functionDepth: 8
    functionLinenumber: 1496
    functionLinenumberEnd: 1519
    functionName: find_tag_datas
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 1
    functionsReached:
    - htons
    - local_data_find_tag_datas
    - regional_alloc_init
    - regional_alloc_zero
    linkageType: ''
    returnType: int
    signature: "int find_tag_datas(struct query_info* qinfo, struct config_strlist*
      list,\n\tstruct ub_packed_rrset_key* r, struct regional* temp)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/localzone.c:1543,1
    - Dst: find_tag_datas
      Src: /src/unbound/services/localzone.c:1544,1
    - Dst: verbose
      Src: /src/unbound/services/localzone.c:1545,1
    - Dst: local_encode
      Src: /src/unbound/services/localzone.c:1554,1
    - Dst: rbtree_search
      Src: /src/unbound/services/localzone.c:1559,1
    - Dst: local_data_find_type
      Src: /src/unbound/services/localzone.c:1564,1
    - Dst: htons
      Src: /src/unbound/services/localzone.c:1572,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/localzone.c:1577,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/localzone.c:1580,1
    - Dst: get_cname_target
      Src: /src/unbound/services/localzone.c:1588,1
    - Dst: dname_is_wild
      Src: /src/unbound/services/localzone.c:1593,1
    - Dst: log_assert
      Src: /src/unbound/services/localzone.c:1599,1
    - Dst: log_assert
      Src: /src/unbound/services/localzone.c:1600,1
    - Dst: local_error_encode
      Src: /src/unbound/services/localzone.c:1604,1
    - Dst: memset
      Src: /src/unbound/services/localzone.c:1611,1
    - Dst: rrset_key_hash
      Src: /src/unbound/services/localzone.c:1616,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/localzone.c:1617,1
    - Dst: packed_rrset_ptr_fixup
      Src: /src/unbound/services/localzone.c:1635,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/services/localzone.c:1637,1
    - Dst: memmove
      Src: /src/unbound/services/localzone.c:1639,1
    - Dst: memmove
      Src: /src/unbound/services/localzone.c:1642,1
    - Dst: local_encode
      Src: /src/unbound/services/localzone.c:1654,1
    - Dst: local_encode
      Src: /src/unbound/services/localzone.c:1657,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 81
    argCount: 15
    argNames:
    - z
    - env
    - qinfo
    - edns
    - repinfo
    - buf
    - temp
    - labs
    - ldp
    - lz_type
    - tag
    - tag_datas
    - tag_datas_size
    - tagname
    - num_tags
    argTypes:
    - struct local_zone*
    - struct module_env*
    - struct query_info*
    - struct edns_data*
    - struct comm_reply*
    - sldns_buffer*
    - struct regional*
    - int
    - struct local_data**
    - enum localzone_type
    - int
    - struct config_strlist**
    - size_t
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1659
      start: 1521
    functionDepth: 9
    functionLinenumber: 1521
    functionLinenumberEnd: 1659
    functionName: local_data_answer
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 1
    functionsReached:
    - regional_alloc_zero
    - get_cname_target
    - dname_is_wild
    - memmove
    - verbose
    - rrset_key_hash
    - local_data_find_type
    - sldns_write_uint16
    - htons
    - find_tag_datas
    - log_assert
    - local_error_encode
    - regional_alloc_init
    - packed_rrset_ptr_fixup
    - memset
    - rbtree_search
    - local_encode
    linkageType: ''
    returnType: int
    signature: "int local_data_answer(struct local_zone* z, struct module_env* env,\n\tstruct
      query_info* qinfo, struct edns_data* edns,\n\tstruct comm_reply* repinfo, sldns_buffer*
      buf,\n\tstruct regional* temp, int labs, struct local_data** ldp,\n\tenum localzone_type
      lz_type, int tag, struct config_strlist** tag_datas,\n\tsize_t tag_datas_size,
      char** tagname, int num_tags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_search
      Src: /src/unbound/services/localzone.c:1681,1
    - Dst: local_data_find_type
      Src: /src/unbound/services/localzone.c:1687,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 15
    argCount: 3
    argNames:
    - z
    - qinfo
    - labs
    argTypes:
    - struct local_zone*
    - struct query_info*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1690
      start: 1664
    functionDepth: 1
    functionLinenumber: 1664
    functionLinenumberEnd: 1690
    functionName: local_zone_does_not_cover
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - local_data_find_type
    - rbtree_search
    linkageType: ''
    returnType: int
    signature: "int local_zone_does_not_cover(struct local_zone* z, struct query_info*
      qinfo,\n\tint labs)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - repinfo
    argTypes:
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1699
      start: 1692
    functionDepth: 0
    functionLinenumber: 1692
    functionLinenumberEnd: 1699
    functionName: local_zone_is_udp_query
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int local_zone_is_udp_query(struct comm_reply* repinfo)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/localzone.c:1711,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/localzone.c:1712,1
    - Dst: local_error_encode
      Src: /src/unbound/services/localzone.c:1716,1
    - Dst: local_zone_is_udp_query
      Src: /src/unbound/services/localzone.c:1726,1
    - Dst: local_encode
      Src: /src/unbound/services/localzone.c:1741,1
    - Dst: local_error_encode
      Src: /src/unbound/services/localzone.c:1743,1
    - Dst: local_error_encode
      Src: /src/unbound/services/localzone.c:1754,1
    - Dst: local_error_encode
      Src: /src/unbound/services/localzone.c:1765,1
    - Dst: memset
      Src: /src/unbound/services/localzone.c:1783,1
    - Dst: memset
      Src: /src/unbound/services/localzone.c:1784,1
    - Dst: htons
      Src: /src/unbound/services/localzone.c:1788,1
    - Dst: htons
      Src: /src/unbound/services/localzone.c:1789,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/services/localzone.c:1792,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/services/localzone.c:1796,1
    - Dst: local_encode
      Src: /src/unbound/services/localzone.c:1804,1
    - Dst: local_error_encode
      Src: /src/unbound/services/localzone.c:1808,1
    - Dst: local_encode
      Src: /src/unbound/services/localzone.c:1821,1
    - Dst: local_error_encode
      Src: /src/unbound/services/localzone.c:1824,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 70
    argCount: 9
    argNames:
    - z
    - env
    - qinfo
    - edns
    - repinfo
    - buf
    - temp
    - ld
    - lz_type
    argTypes:
    - struct local_zone*
    - struct module_env*
    - struct query_info*
    - struct edns_data*
    - struct comm_reply*
    - sldns_buffer*
    - struct regional*
    - struct local_data*
    - enum localzone_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1831
      start: 1701
    functionDepth: 5
    functionLinenumber: 1701
    functionLinenumberEnd: 1831
    functionName: local_zones_zone_answer
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 2
    functionsReached:
    - local_zone_is_udp_query
    - sldns_write_uint16
    - sldns_buffer_flip
    - sldns_buffer_clear
    - htons
    - local_error_encode
    - memset
    - local_encode
    linkageType: ''
    returnType: int
    signature: "int local_zones_zone_answer(struct local_zone* z, struct module_env*
      env,\n\tstruct query_info* qinfo, struct edns_data* edns,\n\tstruct comm_reply*
      repinfo, sldns_buffer* buf, struct regional* temp,\n\tstruct local_data* ld,
      enum localzone_type lz_type)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/services/localzone.c:1840,1
    - Dst: dname_str
      Src: /src/unbound/services/localzone.c:1841,1
    - Dst: addr_to_str
      Src: /src/unbound/services/localzone.c:1842,1
    - Dst: snprintf
      Src: /src/unbound/services/localzone.c:1843,1
    - Dst: local_zone_type2str
      Src: /src/unbound/services/localzone.c:1843,1
    - Dst: log_nametypeclass
      Src: /src/unbound/services/localzone.c:1845,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - z
    - qinfo
    - addr
    - addrlen
    argTypes:
    - struct local_zone*
    - struct query_info*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1846
      start: 1834
    functionDepth: 2
    functionLinenumber: 1834
    functionLinenumberEnd: 1846
    functionName: lz_inform_print
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - addr_to_str
    - log_nametypeclass
    - local_zone_type2str
    - snprintf
    - dname_str
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void lz_inform_print(struct local_zone* z, struct query_info* qinfo,\n\tstruct
      sockaddr_storage* addr, socklen_t addrlen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: addr_tree_lookup
      Src: /src/unbound/services/localzone.c:1856,1
    - Dst: verbose
      Src: /src/unbound/services/localzone.c:1860,1
    - Dst: local_zone_type2str
      Src: /src/unbound/services/localzone.c:1861,1
    - Dst: local_data_find_tag_action
      Src: /src/unbound/services/localzone.c:1867,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 12
    argNames:
    - taglist
    - taglen
    - taglist2
    - taglen2
    - tagactions
    - tagactionssize
    - lzt
    - repinfo
    - override_tree
    - tag
    - tagname
    - num_tags
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - enum localzone_type
    - struct comm_reply*
    - struct rbtree_type*
    - int*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1869
      start: 1848
    functionDepth: 1
    functionLinenumber: 1848
    functionLinenumberEnd: 1869
    functionName: lz_type
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - local_zone_type2str
    - verbose
    - local_data_find_tag_action
    - addr_tree_lookup
    linkageType: ''
    returnType: enum localzone_type
    signature: "enum localzone_type lz_type(uint8_t *taglist, size_t taglen, uint8_t
      *taglist2, size_t taglen2,\n\tuint8_t *tagactions, size_t tagactionssize, enum
      localzone_type lzt,\n\tstruct comm_reply* repinfo, struct rbtree_type* override_tree,\n\tint*
      tag, char** tagname, int num_tags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/services/localzone.c:1885,1
    - Dst: verbose
      Src: /src/unbound/services/localzone.c:1890,1
    - Dst: local_zone_type2str
      Src: /src/unbound/services/localzone.c:1892,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 10
    argNames:
    - taglist
    - taglen
    - taglist2
    - taglen2
    - tagactions
    - tagactionssize
    - lzt
    - tag
    - tagname
    - num_tags
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - enum localzone_type
    - int*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1903
      start: 1871
    functionDepth: 1
    functionLinenumber: 1871
    functionLinenumberEnd: 1903
    functionName: local_data_find_tag_action
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 1
    functionsReached:
    - local_zone_type2str
    - verbose
    linkageType: ''
    returnType: enum localzone_type
    signature: "enum localzone_type local_data_find_tag_action(const uint8_t* taglist,
      size_t taglen,\n\tconst uint8_t* taglist2, size_t taglen2, const uint8_t* tagactions,\n\tsize_t
      tagactionssize, enum localzone_type lzt, int* tag,\n\tchar* const* tagname,
      int num_tags)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/services/localzone.c:1916,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/localzone.c:1923,1
    - Dst: local_zones_lookup
      Src: /src/unbound/services/localzone.c:1925,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/localzone.c:1928,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:1932,1
    - Dst: local_zone_does_not_cover
      Src: /src/unbound/services/localzone.c:1943,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:1944,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:1948,1
    - Dst: dname_str
      Src: /src/unbound/services/localzone.c:1953,1
    - Dst: verbose
      Src: /src/unbound/services/localzone.c:1954,1
    - Dst: local_zone_type2str
      Src: /src/unbound/services/localzone.c:1955,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:1957,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/localzone.c:1961,1
    - Dst: local_zones_tags_lookup
      Src: /src/unbound/services/localzone.c:1962,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:1965,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/localzone.c:1968,1
    - Dst: lz_type
      Src: /src/unbound/services/localzone.c:1969,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:1972,1
    - Dst: dname_str
      Src: /src/unbound/services/localzone.c:1975,1
    - Dst: verbose
      Src: /src/unbound/services/localzone.c:1976,1
    - Dst: local_zone_type2str
      Src: /src/unbound/services/localzone.c:1977,1
    - Dst: lz_inform_print
      Src: /src/unbound/services/localzone.c:1985,1
    - Dst: local_data_answer
      Src: /src/unbound/services/localzone.c:1995,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:1997,1
    - Dst: local_zones_zone_answer
      Src: /src/unbound/services/localzone.c:2002,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:2003,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 48
    argCount: 16
    argNames:
    - zones
    - env
    - qinfo
    - edns
    - buf
    - temp
    - repinfo
    - taglist
    - taglen
    - tagactions
    - tagactionssize
    - tag_datas
    - tag_datas_size
    - tagname
    - num_tags
    - view
    argTypes:
    - struct local_zones*
    - struct module_env*
    - struct query_info*
    - struct edns_data*
    - sldns_buffer*
    - struct regional*
    - struct comm_reply*
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - struct config_strlist**
    - size_t
    - char**
    - int
    - struct view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2005
      start: 1905
    functionDepth: 10
    functionLinenumber: 1905
    functionLinenumberEnd: 2005
    functionName: local_zones_answer
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 1
    functionsReached:
    - local_zone_does_not_cover
    - local_zones_tags_lookup
    - local_zone_type2str
    - verbose
    - lock_rw_unlock
    - local_data_answer
    - lz_type
    - dname_str
    - lz_inform_print
    - local_zones_zone_answer
    - local_zones_lookup
    - lock_rw_rdlock
    - dname_count_labels
    linkageType: ''
    returnType: int
    signature: "int local_zones_answer(struct local_zones* zones, struct module_env*
      env,\n\tstruct query_info* qinfo, struct edns_data* edns, sldns_buffer* buf,\n\tstruct
      regional* temp, struct comm_reply* repinfo, uint8_t* taglist,\n\tsize_t taglen,
      uint8_t* tagactions, size_t tagactionssize,\n\tstruct config_strlist** tag_datas,
      size_t tag_datas_size,\n\tchar** tagname, int num_tags, struct view* view)"
  - BBCount: 25
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 52
    argCount: 1
    argNames:
    - t
    argTypes:
    - enum localzone_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2036
      start: 2007
    functionDepth: 0
    functionLinenumber: 2007
    functionLinenumberEnd: 2036
    functionName: local_zone_type2str
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * local_zone_type2str(enum localzone_type t)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2040,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2042,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2044,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2046,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2048,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2050,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2052,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2054,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2056,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2058,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2060,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2062,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2064,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2066,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2068,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2070,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2072,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2074,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2076,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2078,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2080,1
    - Dst: strcmp
      Src: /src/unbound/services/localzone.c:2082,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 47
    argCount: 2
    argNames:
    - type
    - t
    argTypes:
    - char*
    - enum localzone_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2086
      start: 2038
    functionDepth: 0
    functionLinenumber: 2038
    functionLinenumberEnd: 2086
    functionName: local_zone_str2type
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 4
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int local_zone_str2type(const char* type, enum localzone_type* t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_next
      Src: /src/unbound/services/localzone.c:2097,1
    - Dst: dname_strict_subdomain
      Src: /src/unbound/services/localzone.c:2099,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/localzone.c:2106,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:2109,1
    - Dst: rbtree_next
      Src: /src/unbound/services/localzone.c:2110,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - z
    - match
    - newp
    argTypes:
    - struct local_zone*
    - struct local_zone*
    - struct local_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2112
      start: 2089
    functionDepth: 1
    functionLinenumber: 2089
    functionLinenumberEnd: 2112
    functionName: set_kiddo_parents
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - rbtree_next
    - dname_strict_subdomain
    linkageType: ''
    returnType: void
    signature: "void set_kiddo_parents(struct local_zone* z, struct local_zone* match,
      \n\tstruct local_zone* newp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: local_zone_create
      Src: /src/unbound/services/localzone.c:2121,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:2123,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/localzone.c:2126,1
    - Dst: local_zones_find_le
      Src: /src/unbound/services/localzone.c:2129,1
    - Dst: find_closest_parent
      Src: /src/unbound/services/localzone.c:2131,1
    - Dst: rbtree_insert
      Src: /src/unbound/services/localzone.c:2134,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:2136,1
    - Dst: local_zone_delete
      Src: /src/unbound/services/localzone.c:2137,1
    - Dst: log_err
      Src: /src/unbound/services/localzone.c:2138,1
    - Dst: set_kiddo_parents
      Src: /src/unbound/services/localzone.c:2143,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:2145,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 6
    argNames:
    - zones
    - name
    - len
    - labs
    - dclass
    - tp
    argTypes:
    - struct local_zones*
    - uint8_t*
    - size_t
    - int
    - uint16_t
    - enum localzone_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2147
      start: 2114
    functionDepth: 2
    functionLinenumber: 2114
    functionLinenumberEnd: 2147
    functionName: local_zones_add_zone
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 2
    functionsReached:
    - log_err
    - local_zone_delete
    - local_zone_create
    - lock_rw_wrlock
    - lock_rw_unlock
    - local_zones_find_le
    - free
    - find_closest_parent
    - rbtree_insert
    - set_kiddo_parents
    linkageType: ''
    returnType: struct local_zone
    signature: "struct local_zone * local_zones_add_zone(struct local_zones* zones,\n\tuint8_t*
      name, size_t len, int labs, uint16_t dclass,\n\tenum localzone_type tp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/localzone.c:2152,1
    - Dst: set_kiddo_parents
      Src: /src/unbound/services/localzone.c:2153,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/localzone.c:2156,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:2159,1
    - Dst: local_zone_delete
      Src: /src/unbound/services/localzone.c:2160,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - zones
    - z
    argTypes:
    - struct local_zones*
    - struct local_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2161
      start: 2149
    functionDepth: 2
    functionLinenumber: 2149
    functionLinenumberEnd: 2161
    functionName: local_zones_del_zone
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 2
    functionsReached:
    - local_zone_delete
    - rbtree_delete
    - lock_rw_wrlock
    - lock_rw_unlock
    - set_kiddo_parents
    linkageType: ''
    returnType: void
    signature: void local_zones_del_zone(struct local_zones* zones, struct local_zone*
      z)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_rr_nameclass
      Src: /src/unbound/services/localzone.c:2172,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/services/localzone.c:2175,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/localzone.c:2178,1
    - Dst: local_zones_lookup
      Src: /src/unbound/services/localzone.c:2179,1
    - Dst: local_zones_add_zone
      Src: /src/unbound/services/localzone.c:2182,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:2185,1
    - Dst: free
      Src: /src/unbound/services/localzone.c:2189,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/localzone.c:2191,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:2192,1
    - Dst: lz_enter_rr_into_zone
      Src: /src/unbound/services/localzone.c:2193,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:2194,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - zones
    - rr
    argTypes:
    - struct local_zones*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2196
      start: 2163
    functionDepth: 9
    functionLinenumber: 2163
    functionLinenumberEnd: 2196
    functionName: local_zones_add_RR
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 1
    functionsReached:
    - lock_rw_wrlock
    - dname_count_size_labels
    - lock_rw_unlock
    - local_zones_add_zone
    - lz_enter_rr_into_zone
    - free
    - local_zones_lookup
    - get_rr_nameclass
    linkageType: ''
    returnType: int
    signature: int local_zones_add_RR(struct local_zones* zones, const char* rr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_next
      Src: /src/unbound/services/localzone.c:2205,1
    - Dst: dname_strict_subdomain
      Src: /src/unbound/services/localzone.c:2208,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - d
    argTypes:
    - struct local_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2211
      start: 2199
    functionDepth: 1
    functionLinenumber: 2199
    functionLinenumberEnd: 2211
    functionName: is_terminal
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - rbtree_next
    - dname_strict_subdomain
    linkageType: ''
    returnType: int
    signature: int is_terminal(struct local_data* d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: is_terminal
      Src: /src/unbound/services/localzone.c:2218,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/localzone.c:2221,1
    - Dst: dname_is_root
      Src: /src/unbound/services/localzone.c:2224,1
    - Dst: dname_remove_label
      Src: /src/unbound/services/localzone.c:2226,1
    - Dst: local_zone_find_data
      Src: /src/unbound/services/localzone.c:2228,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 5
    argNames:
    - z
    - d
    - name
    - len
    - labs
    argTypes:
    - struct local_zone*
    - struct local_data*
    - uint8_t*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2230
      start: 2214
    functionDepth: 2
    functionLinenumber: 2214
    functionLinenumberEnd: 2230
    functionName: del_empty_term
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - dname_is_root
    - rbtree_delete
    - local_zone_find_data
    - dname_remove_label
    - is_terminal
    linkageType: ''
    returnType: void
    signature: "void del_empty_term(struct local_zone* z, struct local_data* d, \n\tuint8_t*
      name, size_t len, int labs)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/services/localzone.c:2237,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - d
    - dtype
    argTypes:
    - struct local_data*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2247
      start: 2233
    functionDepth: 0
    functionLinenumber: 2233
    functionLinenumberEnd: 2247
    functionName: del_local_rrset
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - ntohs
    linkageType: ''
    returnType: void
    signature: void del_local_rrset(struct local_data* d, uint16_t dtype)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/localzone.c:2257,1
    - Dst: local_zones_lookup
      Src: /src/unbound/services/localzone.c:2258,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/localzone.c:2261,1
    - Dst: local_zone_find_data
      Src: /src/unbound/services/localzone.c:2262,1
    - Dst: del_local_rrset
      Src: /src/unbound/services/localzone.c:2264,1
    - Dst: del_empty_term
      Src: /src/unbound/services/localzone.c:2265,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:2267,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:2269,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/localzone.c:2272,1
    - Dst: local_zones_lookup
      Src: /src/unbound/services/localzone.c:2273,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:2276,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/localzone.c:2279,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:2280,1
    - Dst: local_zone_find_data
      Src: /src/unbound/services/localzone.c:2283,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/localzone.c:2288,1
    - Dst: del_empty_term
      Src: /src/unbound/services/localzone.c:2294,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:2297,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 5
    argNames:
    - zones
    - name
    - len
    - labs
    - dclass
    argTypes:
    - struct local_zones*
    - uint8_t*
    - size_t
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2298
      start: 2249
    functionDepth: 3
    functionLinenumber: 2249
    functionLinenumberEnd: 2298
    functionName: local_zones_del_data
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 1
    functionsReached:
    - del_empty_term
    - local_zone_find_data
    - lock_rw_wrlock
    - lock_rw_unlock
    - del_local_rrset
    - query_dname_compare
    - local_zones_lookup
    - lock_rw_rdlock
    linkageType: ''
    returnType: void
    signature: "void local_zones_del_data(struct local_zones* zones, \n\tuint8_t*
      name, size_t len, int labs, uint16_t dclass)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/localzone.c:2305,1
    - Dst: regional_get_mem
      Src: /src/unbound/services/localzone.c:2306,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:2307,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - z
    argTypes:
    - struct local_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2309
      start: 2301
    functionDepth: 1
    functionLinenumber: 2301
    functionLinenumberEnd: 2309
    functionName: local_zone_get_mem
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - regional_get_mem
    - lock_rw_unlock
    - lock_rw_rdlock
    linkageType: ''
    returnType: size_t
    signature: size_t local_zone_get_mem(struct local_zone* z)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/localzone.c:2317,1
    - Dst: local_zone_get_mem
      Src: /src/unbound/services/localzone.c:2319,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/localzone.c:2321,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - zones
    argTypes:
    - struct local_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2323
      start: 2311
    functionDepth: 2
    functionLinenumber: 2311
    functionLinenumberEnd: 2323
    functionName: local_zones_get_mem
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 3
    functionsReached:
    - lock_rw_unlock
    - lock_rw_rdlock
    - local_zone_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t local_zones_get_mem(struct local_zones* zones)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: local_zone_get_mem
      Src: /src/unbound/services/localzone.c:2319,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ztree
    argTypes:
    - zones
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2320
      start: 2318
    functionDepth: 2
    functionLinenumber: 2318
    functionLinenumberEnd: 2320
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 0
    functionsReached:
    - local_zone_get_mem
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct local_zone*, &zones->ztree)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - zones
    - data
    argTypes:
    - struct local_zones*
    - struct local_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2330
      start: 2325
    functionDepth: 0
    functionLinenumber: 2325
    functionLinenumberEnd: 2330
    functionName: local_zones_swap_tree
    functionSourceFile: /src/unbound/services/localzone.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void local_zones_swap_tree(struct local_zones* zones, struct local_zones*
      data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/services/authzone.c:122,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/authzone.c:126,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/authzone.c:135,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - region
    - qinfo
    argTypes:
    - struct regional*
    - struct query_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 145
    functionName: msg_create
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 3
    functionsReached:
    - regional_alloc_zero
    - regional_alloc
    - regional_alloc_init
    linkageType: ''
    returnType: struct dns_msg
    signature: 'struct dns_msg *

      msg_create(struct regional* region, struct query_info* qinfo)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/authzone.c:152,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/authzone.c:158,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:162,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - region
    - msg
    argTypes:
    - struct regional*
    - struct dns_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 166
    functionName: msg_grow_array
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - memmove
    linkageType: ''
    returnType: int
    signature: int msg_grow_array(struct regional* region, struct dns_msg* msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - k
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 169
    functionDepth: 0
    functionLinenumber: 169
    functionLinenumberEnd: 175
    functionName: get_rrset_ttl
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t get_rrset_ttl(struct ub_packed_rrset_key* k)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/authzone.c:183,1
    - Dst: htons
      Src: /src/unbound/services/authzone.c:188,1
    - Dst: htons
      Src: /src/unbound/services/authzone.c:189,1
    - Dst: rrset_key_hash
      Src: /src/unbound/services/authzone.c:190,1
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/services/authzone.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 4
    argNames:
    - z
    - node
    - rrset
    - region
    argTypes:
    - struct auth_zone*
    - struct auth_data*
    - struct auth_rrset*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 192
    functionName: auth_packed_rrset_copy_region
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - htons
    - memset
    - rrset_key_hash
    - packed_rrset_copy_region
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: "struct ub_packed_rrset_key *\nauth_packed_rrset_copy_region(struct
      auth_zone* z, struct auth_data* node,\n\tstruct auth_rrset* rrset, struct regional*
      region)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: get_rrset_ttl
      Src: /src/unbound/services/authzone.c:200,1
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/services/authzone.c:201,1
    - Dst: get_rrset_ttl
      Src: /src/unbound/services/authzone.c:203,1
    - Dst: get_rrset_ttl
      Src: /src/unbound/services/authzone.c:205,1
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/services/authzone.c:207,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct dns_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 210
    functionName: msg_ttl
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - PREFETCH_TTL_CALC
    - get_rrset_ttl
    linkageType: ''
    returnType: void
    signature: void msg_ttl(struct dns_msg* msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/services/authzone.c:220,1
    - Dst: ntohs
      Src: /src/unbound/services/authzone.c:221,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/authzone.c:222,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 5
    argNames:
    - msg
    - nm
    - nmlen
    - type
    - dclass
    argTypes:
    - struct dns_msg*
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 213
    functionDepth: 1
    functionLinenumber: 213
    functionLinenumberEnd: 226
    functionName: msg_rrset_duplicate
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - query_dname_compare
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int msg_rrset_duplicate(struct dns_msg* msg, uint8_t* nm, size_t nmlen,\n\tuint16_t
      type, uint16_t dclass)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:233,1
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:234,1
    - Dst: msg_rrset_duplicate
      Src: /src/unbound/services/authzone.c:237,1
    - Dst: msg_grow_array
      Src: /src/unbound/services/authzone.c:241,1
    - Dst: auth_packed_rrset_copy_region
      Src: /src/unbound/services/authzone.c:245,1
    - Dst: msg_ttl
      Src: /src/unbound/services/authzone.c:249,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 5
    argNames:
    - z
    - region
    - msg
    - node
    - rrset
    argTypes:
    - struct auth_zone*
    - struct regional*
    - struct dns_msg*
    - struct auth_data*
    - struct auth_rrset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 251
    functionName: msg_add_rrset_an
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - msg_ttl
    - msg_rrset_duplicate
    - msg_grow_array
    - log_assert
    - auth_packed_rrset_copy_region
    linkageType: ''
    returnType: int
    signature: "int msg_add_rrset_an(struct auth_zone* z, struct regional* region,\n\tstruct
      dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:258,1
    - Dst: msg_rrset_duplicate
      Src: /src/unbound/services/authzone.c:261,1
    - Dst: msg_grow_array
      Src: /src/unbound/services/authzone.c:265,1
    - Dst: auth_packed_rrset_copy_region
      Src: /src/unbound/services/authzone.c:269,1
    - Dst: msg_ttl
      Src: /src/unbound/services/authzone.c:273,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 5
    argNames:
    - z
    - region
    - msg
    - node
    - rrset
    argTypes:
    - struct auth_zone*
    - struct regional*
    - struct dns_msg*
    - struct auth_data*
    - struct auth_rrset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 275
    functionName: msg_add_rrset_ns
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - msg_ttl
    - msg_rrset_duplicate
    - msg_grow_array
    - log_assert
    - auth_packed_rrset_copy_region
    linkageType: ''
    returnType: int
    signature: "int msg_add_rrset_ns(struct auth_zone* z, struct regional* region,\n\tstruct
      dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: msg_rrset_duplicate
      Src: /src/unbound/services/authzone.c:284,1
    - Dst: msg_grow_array
      Src: /src/unbound/services/authzone.c:288,1
    - Dst: auth_packed_rrset_copy_region
      Src: /src/unbound/services/authzone.c:292,1
    - Dst: msg_ttl
      Src: /src/unbound/services/authzone.c:296,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 5
    argNames:
    - z
    - region
    - msg
    - node
    - rrset
    argTypes:
    - struct auth_zone*
    - struct regional*
    - struct dns_msg*
    - struct auth_data*
    - struct auth_rrset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 278
    functionDepth: 2
    functionLinenumber: 278
    functionLinenumberEnd: 298
    functionName: msg_add_rrset_ar
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - msg_ttl
    - auth_packed_rrset_copy_region
    - msg_rrset_duplicate
    - msg_grow_array
    linkageType: ''
    returnType: int
    signature: "int msg_add_rrset_ar(struct auth_zone* z, struct regional* region,\n\tstruct
      dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/authzone.c:302,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:304,1
    - Dst: rbtree_init
      Src: /src/unbound/services/authzone.c:307,1
    - Dst: rbtree_init
      Src: /src/unbound/services/authzone.c:308,1
    - Dst: lock_rw_init
      Src: /src/unbound/services/authzone.c:309,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:310,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:311,1
    - Dst: lock_rw_init
      Src: /src/unbound/services/authzone.c:313,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:314,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 300
    functionDepth: 1
    functionLinenumber: 300
    functionLinenumberEnd: 316
    functionName: auth_zones_create
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 2
    functionsReached:
    - log_err
    - lock_rw_init
    - rbtree_init
    - lock_protect
    - calloc
    linkageType: ''
    returnType: struct auth_zones
    signature: struct auth_zones * auth_zones_create(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_lab_cmp
      Src: /src/unbound/services/authzone.c:332,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - z1
    - z2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 318
    functionDepth: 1
    functionLinenumber: 318
    functionLinenumberEnd: 333
    functionName: auth_zone_cmp
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - dname_lab_cmp
    linkageType: ''
    returnType: int
    signature: int auth_zone_cmp(const void* z1, const void* z2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_canon_lab_cmp
      Src: /src/unbound/services/authzone.c:341,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - z1
    - z2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 335
    functionDepth: 1
    functionLinenumber: 335
    functionLinenumberEnd: 343
    functionName: auth_data_cmp
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - dname_canon_lab_cmp
    linkageType: ''
    returnType: int
    signature: int auth_data_cmp(const void* z1, const void* z2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_lab_cmp
      Src: /src/unbound/services/authzone.c:359,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - z1
    - z2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 345
    functionDepth: 1
    functionLinenumber: 345
    functionLinenumberEnd: 360
    functionName: auth_xfer_cmp
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - dname_lab_cmp
    linkageType: ''
    returnType: int
    signature: int auth_xfer_cmp(const void* z1, const void* z2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/services/authzone.c:367,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:368,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rrset
    argTypes:
    - struct auth_rrset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 363
    functionDepth: 1
    functionLinenumber: 363
    functionLinenumberEnd: 369
    functionName: auth_rrset_delete
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void auth_rrset_delete(struct auth_rrset* rrset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_rrset_delete
      Src: /src/unbound/services/authzone.c:380,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:383,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:384,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - n
    argTypes:
    - struct auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 372
    functionDepth: 2
    functionLinenumber: 372
    functionLinenumberEnd: 385
    functionName: auth_data_delete
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - free
    - auth_rrset_delete
    linkageType: ''
    returnType: void
    signature: void auth_data_delete(struct auth_data* n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_data_delete
      Src: /src/unbound/services/authzone.c:392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - n
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 388
    functionDepth: 3
    functionLinenumber: 388
    functionLinenumberEnd: 393
    functionName: auth_data_del
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_data_delete
    linkageType: ''
    returnType: void
    signature: void auth_data_del(rbnode_type* n, void* ATTR_UNUSED(arg))
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/services/authzone.c:400,1
    - Dst: traverse_postorder
      Src: /src/unbound/services/authzone.c:401,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:405,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:412,1
    - Dst: rpz_delete
      Src: /src/unbound/services/authzone.c:415,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:416,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:417,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:418,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - z
    - az
    argTypes:
    - struct auth_zone*
    - struct auth_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 396
    functionDepth: 3
    functionLinenumber: 396
    functionLinenumberEnd: 419
    functionName: auth_zone_delete
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - lock_rw_destroy
    - free
    - rpz_delete
    - traverse_postorder
    linkageType: ''
    returnType: void
    signature: void auth_zone_delete(struct auth_zone* z, struct auth_zones* az)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/authzone.c:425,1
    - Dst: dname_count_labels
      Src: /src/unbound/services/authzone.c:432,1
    - Dst: memdup
      Src: /src/unbound/services/authzone.c:433,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:435,1
    - Dst: rbtree_init
      Src: /src/unbound/services/authzone.c:438,1
    - Dst: lock_rw_init
      Src: /src/unbound/services/authzone.c:439,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:440,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:443,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:445,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:447,1
    - Dst: rbtree_insert
      Src: /src/unbound/services/authzone.c:450,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:451,1
    - Dst: auth_zone_delete
      Src: /src/unbound/services/authzone.c:452,1
    - Dst: log_warn
      Src: /src/unbound/services/authzone.c:453,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 4
    argNames:
    - az
    - nm
    - nmlen
    - dclass
    argTypes:
    - struct auth_zones*
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 421
    functionDepth: 4
    functionLinenumber: 421
    functionLinenumberEnd: 457
    functionName: auth_zone_create
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - auth_zone_delete
    - lock_rw_init
    - free
    - rbtree_init
    - lock_protect
    - calloc
    - log_warn
    - rbtree_insert
    - memdup
    - dname_count_labels
    linkageType: ''
    returnType: struct auth_zone
    signature: "struct auth_zone *\nauth_zone_create(struct auth_zones* az, uint8_t*
      nm, size_t nmlen,\n\tuint16_t dclass)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/services/authzone.c:468,1
    - Dst: rbtree_search
      Src: /src/unbound/services/authzone.c:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - az
    - nm
    - nmlen
    - dclass
    argTypes:
    - struct auth_zones*
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 459
    functionDepth: 1
    functionLinenumber: 459
    functionLinenumberEnd: 470
    functionName: auth_zone_find
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 5
    functionsReached:
    - dname_count_labels
    - rbtree_search
    linkageType: ''
    returnType: struct auth_zone
    signature: "struct auth_zone *\nauth_zone_find(struct auth_zones* az, uint8_t*
      nm, size_t nmlen,\n\tuint16_t dclass)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/services/authzone.c:481,1
    - Dst: rbtree_search
      Src: /src/unbound/services/authzone.c:482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - az
    - nm
    - nmlen
    - dclass
    argTypes:
    - struct auth_zones*
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 472
    functionDepth: 1
    functionLinenumber: 472
    functionLinenumberEnd: 483
    functionName: auth_xfer_find
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 5
    functionsReached:
    - dname_count_labels
    - rbtree_search
    linkageType: ''
    returnType: struct auth_xfer
    signature: "struct auth_xfer *\nauth_xfer_find(struct auth_zones* az, uint8_t*
      nm, size_t nmlen,\n\tuint16_t dclass)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/services/authzone.c:495,1
    - Dst: rbtree_find_less_equal
      Src: /src/unbound/services/authzone.c:496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - az
    - nm
    - nmlen
    - dclass
    - z
    argTypes:
    - struct auth_zones*
    - uint8_t*
    - size_t
    - uint16_t
    - struct auth_zone**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 486
    functionDepth: 1
    functionLinenumber: 486
    functionLinenumberEnd: 497
    functionName: auth_zone_find_less_equal
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - rbtree_find_less_equal
    - dname_count_labels
    linkageType: ''
    returnType: int
    signature: "int auth_zone_find_less_equal(struct auth_zones* az, uint8_t* nm,
      size_t nmlen,\n\tuint16_t dclass, struct auth_zone** z)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: auth_zone_find_less_equal
      Src: /src/unbound/services/authzone.c:508,1
    - Dst: dname_get_shared_topdomain
      Src: /src/unbound/services/authzone.c:516,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/services/authzone.c:517,1
    - Dst: auth_zone_find
      Src: /src/unbound/services/authzone.c:523,1
    - Dst: dname_is_root
      Src: /src/unbound/services/authzone.c:525,1
    - Dst: dname_remove_label
      Src: /src/unbound/services/authzone.c:526,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 4
    argNames:
    - az
    - name
    - name_len
    - dclass
    argTypes:
    - struct auth_zones*
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 501
    functionDepth: 2
    functionLinenumber: 501
    functionLinenumberEnd: 529
    functionName: auth_zones_find_zone
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - dname_is_root
    - auth_zone_find
    - dname_count_size_labels
    - dname_remove_label
    - auth_zone_find_less_equal
    - dname_get_shared_topdomain
    linkageType: ''
    returnType: struct auth_zone
    signature: "struct auth_zone *\nauth_zones_find_zone(struct auth_zones* az, uint8_t*
      name, size_t name_len,\n\tuint16_t dclass)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/services/authzone.c:540,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:541,1
    - Dst: auth_zone_find
      Src: /src/unbound/services/authzone.c:544,1
    - Dst: auth_zone_create
      Src: /src/unbound/services/authzone.c:547,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:549,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - az
    - name
    argTypes:
    - struct auth_zones*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 533
    functionDepth: 5
    functionLinenumber: 533
    functionLinenumberEnd: 552
    functionName: auth_zones_find_or_add_zone
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - auth_zone_find
    - lock_rw_wrlock
    - sldns_str2wire_dname_buf
    - auth_zone_create
    linkageType: ''
    returnType: struct auth_zone
    signature: 'struct auth_zone *

      auth_zones_find_or_add_zone(struct auth_zones* az, char* name)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_xfer_find
      Src: /src/unbound/services/authzone.c:560,1
    - Dst: auth_xfer_create
      Src: /src/unbound/services/authzone.c:563,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:565,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - az
    - z
    argTypes:
    - struct auth_zones*
    - struct auth_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 568
      start: 556
    functionDepth: 2
    functionLinenumber: 556
    functionLinenumberEnd: 568
    functionName: auth_zones_find_or_add_xfer
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_xfer_create
    - auth_xfer_find
    - lock_basic_lock
    linkageType: ''
    returnType: struct auth_xfer
    signature: 'struct auth_xfer *

      auth_zones_find_or_add_xfer(struct auth_zones* az, struct auth_zone* z)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/services/authzone.c:573,1
    - Dst: strdup
      Src: /src/unbound/services/authzone.c:577,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:579,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - z
    - zonefile
    argTypes:
    - struct auth_zone*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 570
    functionDepth: 1
    functionLinenumber: 570
    functionLinenumberEnd: 584
    functionName: auth_zone_set_zonefile
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - free
    - log_err
    - strdup
    linkageType: ''
    returnType: int
    signature: int auth_zone_set_zonefile(struct auth_zone* z, char* zonefile)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/services/authzone.c:590,1
    - Dst: strcmp
      Src: /src/unbound/services/authzone.c:590,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:591,1
    - Dst: strcmp
      Src: /src/unbound/services/authzone.c:595,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - z
    - fallbackstr
    argTypes:
    - struct auth_zone*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 587
    functionDepth: 1
    functionLinenumber: 587
    functionLinenumberEnd: 597
    functionName: auth_zone_set_fallback
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - strcmp
    linkageType: ''
    returnType: int
    signature: int auth_zone_set_fallback(struct auth_zone* z, char* fallbackstr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/services/authzone.c:603,1
    - Dst: memset
      Src: /src/unbound/services/authzone.c:605,1
    - Dst: memdup
      Src: /src/unbound/services/authzone.c:607,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:609,1
    - Dst: dname_count_labels
      Src: /src/unbound/services/authzone.c:613,1
    - Dst: rbtree_insert
      Src: /src/unbound/services/authzone.c:614,1
    - Dst: log_warn
      Src: /src/unbound/services/authzone.c:615,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:616,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:617,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - z
    - nm
    - nmlen
    argTypes:
    - struct auth_zone*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 600
    functionDepth: 1
    functionLinenumber: 600
    functionLinenumberEnd: 621
    functionName: az_domain_create
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - malloc
    - free
    - log_warn
    - memset
    - rbtree_insert
    - memdup
    - dname_count_labels
    linkageType: ''
    returnType: struct auth_data
    signature: 'struct auth_data *

      az_domain_create(struct auth_zone* z, uint8_t* nm, size_t nmlen)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/services/authzone.c:631,1
    - Dst: rbtree_search
      Src: /src/unbound/services/authzone.c:632,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - z
    - nm
    - nmlen
    argTypes:
    - struct auth_zone*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 633
      start: 624
    functionDepth: 1
    functionLinenumber: 624
    functionLinenumberEnd: 633
    functionName: az_find_name
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - dname_count_labels
    - rbtree_search
    linkageType: ''
    returnType: struct auth_data
    signature: 'struct auth_data *

      az_find_name(struct auth_zone* z, uint8_t* nm, size_t nmlen)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/services/authzone.c:644,1
    - Dst: rbtree_find_less_equal
      Src: /src/unbound/services/authzone.c:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - z
    - qinfo
    - node_exact
    - node
    argTypes:
    - struct auth_zone*
    - struct query_info*
    - int*
    - struct auth_data**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 636
    functionDepth: 1
    functionLinenumber: 636
    functionLinenumberEnd: 647
    functionName: az_find_domain
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - rbtree_find_less_equal
    - dname_count_labels
    linkageType: ''
    returnType: void
    signature: "void az_find_domain(struct auth_zone* z, struct query_info* qinfo,
      int* node_exact,\n\tstruct auth_data** node)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:654,1
    - Dst: az_domain_create
      Src: /src/unbound/services/authzone.c:656,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - z
    - dname
    - dname_len
    argTypes:
    - struct auth_zone*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 650
    functionDepth: 2
    functionLinenumber: 650
    functionLinenumberEnd: 659
    functionName: az_domain_find_or_create
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_name
    - az_domain_create
    linkageType: ''
    returnType: struct auth_data
    signature: "struct auth_data *\naz_domain_find_or_create(struct auth_zone* z,
      uint8_t* dname,\n\tsize_t dname_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - n
    - t
    argTypes:
    - struct auth_data*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 674
      start: 662
    functionDepth: 0
    functionLinenumber: 662
    functionLinenumberEnd: 674
    functionName: az_domain_rrset
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct auth_rrset
    signature: 'struct auth_rrset *

      az_domain_rrset(struct auth_data* n, uint16_t t)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_rrset_delete
      Src: /src/unbound/services/authzone.c:689,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - node
    - rr_type
    argTypes:
    - struct auth_data*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 677
    functionDepth: 2
    functionLinenumber: 677
    functionLinenumberEnd: 695
    functionName: domain_remove_rrset
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_rrset_delete
    linkageType: ''
    returnType: void
    signature: void domain_remove_rrset(struct auth_data* node, uint16_t rr_type)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/services/authzone.c:706,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - d
    - rdata
    - len
    - index
    argTypes:
    - struct packed_rrset_data*
    - uint8_t*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 698
    functionDepth: 1
    functionLinenumber: 698
    functionLinenumberEnd: 712
    functionName: az_rrset_find_rrsig
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int az_rrset_find_rrsig(struct packed_rrset_data* d, uint8_t* rdata,
      size_t len,\n\tsize_t* index)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/services/authzone.c:722,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - d
    - rdata
    - len
    argTypes:
    - struct packed_rrset_data*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 726
      start: 715
    functionDepth: 1
    functionLinenumber: 715
    functionLinenumberEnd: 726
    functionName: rdata_duplicate
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int rdata_duplicate(struct packed_rrset_data* d, uint8_t* rdata, size_t
      len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/services/authzone.c:738,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - rdata
    - rdatalen
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 733
    functionDepth: 1
    functionLinenumber: 733
    functionLinenumberEnd: 739
    functionName: rrsig_rdata_get_type_covered
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_read_uint16
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t rrsig_rdata_get_type_covered(uint8_t* rdata, size_t rdatalen)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/authzone.c:750,1
    - Dst: packed_rrset_sizeof
      Src: /src/unbound/services/authzone.c:750,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:754,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:769,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:771,1
    - Dst: packed_rrset_ptr_fixup
      Src: /src/unbound/services/authzone.c:773,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:777,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:779,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:787,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:798,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 41
    argCount: 2
    argNames:
    - rrset
    - index
    argTypes:
    - struct auth_rrset*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 801
      start: 743
    functionDepth: 1
    functionLinenumber: 743
    functionLinenumberEnd: 801
    functionName: rrset_remove_rr
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 4
    functionsReached:
    - log_err
    - memmove
    - packed_rrset_sizeof
    - free
    - calloc
    - packed_rrset_ptr_fixup
    linkageType: ''
    returnType: int
    signature: int rrset_remove_rr(struct auth_rrset* rrset, size_t index)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/authzone.c:812,1
    - Dst: packed_rrset_sizeof
      Src: /src/unbound/services/authzone.c:812,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:816,1
    - Dst: memcpy
      Src: /src/unbound/services/authzone.c:820,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:832,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:834,1
    - Dst: packed_rrset_ptr_fixup
      Src: /src/unbound/services/authzone.c:839,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:845,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:848,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:853,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:855,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:863,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:866,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:870,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 43
    argCount: 5
    argNames:
    - rrset
    - rr_ttl
    - rdata
    - rdatalen
    - insert_sig
    argTypes:
    - struct auth_rrset*
    - uint32_t
    - uint8_t*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 872
      start: 805
    functionDepth: 1
    functionLinenumber: 805
    functionLinenumberEnd: 872
    functionName: rrset_add_rr
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - memcpy
    - memmove
    - packed_rrset_sizeof
    - free
    - calloc
    - packed_rrset_ptr_fixup
    linkageType: ''
    returnType: int
    signature: "int rrset_add_rr(struct auth_rrset* rrset, uint32_t rr_ttl, uint8_t*
      rdata,\n\tsize_t rdatalen, int insert_sig)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/authzone.c:879,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:884,1
    - Dst: calloc
      Src: /src/unbound/services/authzone.c:890,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:894,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:895,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:909,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 34
    argCount: 5
    argNames:
    - node
    - rr_type
    - rr_ttl
    - rdata
    - rdatalen
    argTypes:
    - struct auth_data*
    - uint16_t
    - uint32_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 875
    functionDepth: 1
    functionLinenumber: 875
    functionLinenumberEnd: 925
    functionName: rrset_create
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - free
    - log_err
    - calloc
    - memmove
    linkageType: ''
    returnType: struct auth_rrset
    signature: "struct auth_rrset *\nrrset_create(struct auth_data* node, uint16_t
      rr_type, uint32_t rr_ttl,\n\tuint8_t* rdata, size_t rdatalen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:934,1
    - Dst: rrsig_rdata_get_type_covered
      Src: /src/unbound/services/authzone.c:936,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - rrsig
    - rr_type
    - sigsz
    argTypes:
    - struct auth_rrset*
    - uint16_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 943
      start: 928
    functionDepth: 2
    functionLinenumber: 928
    functionLinenumberEnd: 943
    functionName: rrsig_num_that_cover
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_assert
    - rrsig_rdata_get_type_covered
    linkageType: ''
    returnType: size_t
    signature: size_t rrsig_num_that_cover(struct auth_rrset* rrsig, uint16_t rr_type,
      size_t* sigsz)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:955,1
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:956,1
    - Dst: rrsig_num_that_cover
      Src: /src/unbound/services/authzone.c:957,1
    - Dst: calloc
      Src: /src/unbound/services/authzone.c:965,1
    - Dst: packed_rrset_sizeof
      Src: /src/unbound/services/authzone.c:965,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:969,1
    - Dst: memcpy
      Src: /src/unbound/services/authzone.c:974,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:980,1
    - Dst: rrsig_rdata_get_type_covered
      Src: /src/unbound/services/authzone.c:983,1
    - Dst: packed_rrset_ptr_fixup
      Src: /src/unbound/services/authzone.c:989,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:993,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:996,1
    - Dst: rrsig_rdata_get_type_covered
      Src: /src/unbound/services/authzone.c:1004,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:1008,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:1018,1
    - Dst: domain_remove_rrset
      Src: /src/unbound/services/authzone.c:1023,1
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:1026,1
    - Dst: packed_rrset_sizeof
      Src: /src/unbound/services/authzone.c:1026,1
    - Dst: calloc
      Src: /src/unbound/services/authzone.c:1028,1
    - Dst: packed_rrset_sizeof
      Src: /src/unbound/services/authzone.c:1028,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1034,1
    - Dst: memcpy
      Src: /src/unbound/services/authzone.c:1038,1
    - Dst: rrsig_rdata_get_type_covered
      Src: /src/unbound/services/authzone.c:1046,1
    - Dst: packed_rrset_ptr_fixup
      Src: /src/unbound/services/authzone.c:1052,1
    - Dst: rrsig_rdata_get_type_covered
      Src: /src/unbound/services/authzone.c:1057,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:1061,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:1074,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 79
    argCount: 4
    argNames:
    - node
    - rr_type
    - rrset
    - rrsig
    argTypes:
    - struct auth_data*
    - uint16_t
    - struct auth_rrset*
    - struct auth_rrset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 946
    functionDepth: 3
    functionLinenumber: 946
    functionLinenumberEnd: 1077
    functionName: rrset_moveover_rrsigs
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - memcpy
    - domain_remove_rrset
    - memmove
    - packed_rrset_sizeof
    - free
    - rrsig_num_that_cover
    - calloc
    - log_assert
    - packed_rrset_ptr_fixup
    - rrsig_rdata_get_type_covered
    linkageType: ''
    returnType: int
    signature: "int rrset_moveover_rrsigs(struct auth_data* node, uint16_t rr_type,\n\tstruct
      auth_rrset* rrset, struct auth_rrset* rrsig)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rdata_duplicate
      Src: /src/unbound/services/authzone.c:1097,1
    - Dst: rrset_add_rr
      Src: /src/unbound/services/authzone.c:1100,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - rrset
    - rrsigset
    argTypes:
    - struct auth_rrset*
    - struct auth_rrset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1081
    functionDepth: 2
    functionLinenumber: 1081
    functionLinenumberEnd: 1104
    functionName: rrsigs_copy_from_rrset_to_rrsigset
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - rdata_duplicate
    - rrset_add_rr
    linkageType: ''
    returnType: int
    signature: "int rrsigs_copy_from_rrset_to_rrsigset(struct auth_rrset* rrset,\n\tstruct
      auth_rrset* rrsigset)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: rrsig_rdata_get_type_covered
      Src: /src/unbound/services/authzone.c:1115,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:1116,1
    - Dst: rdata_duplicate
      Src: /src/unbound/services/authzone.c:1119,1
    - Dst: rrset_add_rr
      Src: /src/unbound/services/authzone.c:1123,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:1125,1
    - Dst: rdata_duplicate
      Src: /src/unbound/services/authzone.c:1127,1
    - Dst: rrset_add_rr
      Src: /src/unbound/services/authzone.c:1131,1
    - Dst: rrset_create
      Src: /src/unbound/services/authzone.c:1135,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:1141,1
    - Dst: rdata_duplicate
      Src: /src/unbound/services/authzone.c:1143,1
    - Dst: rrset_add_rr
      Src: /src/unbound/services/authzone.c:1147,1
    - Dst: rrset_create
      Src: /src/unbound/services/authzone.c:1152,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:1159,1
    - Dst: rrset_moveover_rrsigs
      Src: /src/unbound/services/authzone.c:1161,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 42
    argCount: 6
    argNames:
    - node
    - rr_type
    - rr_ttl
    - rdata
    - rdatalen
    - duplicate
    argTypes:
    - struct auth_data*
    - uint16_t
    - uint32_t
    - uint8_t*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1168
      start: 1108
    functionDepth: 4
    functionLinenumber: 1108
    functionLinenumberEnd: 1168
    functionName: az_domain_add_rr
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - rrsig_rdata_get_type_covered
    - rdata_duplicate
    - az_domain_rrset
    - rrset_add_rr
    - rrset_moveover_rrsigs
    - rrset_create
    linkageType: ''
    returnType: int
    signature: "int az_domain_add_rr(struct auth_data* node, uint16_t rr_type, uint32_t
      rr_ttl,\n\tuint8_t* rdata, size_t rdatalen, int* duplicate)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/services/authzone.c:1177,1
    - Dst: sldns_wirerr_get_class
      Src: /src/unbound/services/authzone.c:1178,1
    - Dst: sldns_wirerr_get_ttl
      Src: /src/unbound/services/authzone.c:1179,1
    - Dst: sldns_wirerr_get_rdatalen
      Src: /src/unbound/services/authzone.c:1180,1
    - Dst: sldns_wirerr_get_rdatawl
      Src: /src/unbound/services/authzone.c:1183,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1186,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1190,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1193,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/services/authzone.c:1196,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:1198,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:1199,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:1200,1
    - Dst: az_domain_find_or_create
      Src: /src/unbound/services/authzone.c:1205,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1206,1
    - Dst: az_domain_add_rr
      Src: /src/unbound/services/authzone.c:1209,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1211,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/authzone.c:1213,1
    - Dst: auth_data_delete
      Src: /src/unbound/services/authzone.c:1214,1
    - Dst: rpz_insert_rr
      Src: /src/unbound/services/authzone.c:1219,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 5
    argNames:
    - z
    - rr
    - rr_len
    - dname_len
    - duplicate
    argTypes:
    - struct auth_zone*
    - uint8_t*
    - size_t
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1225
      start: 1171
    functionDepth: 6
    functionLinenumber: 1171
    functionLinenumberEnd: 1225
    functionName: az_insert_rr
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_wirerr_get_ttl
    - log_err
    - dname_subdomain_c
    - az_domain_add_rr
    - rbtree_delete
    - verbose
    - sldns_wirerr_get_rdatawl
    - dname_str
    - sldns_wirerr_get_type
    - az_domain_find_or_create
    - auth_data_delete
    - sldns_wirerr_get_rdatalen
    - rpz_insert_rr
    - sldns_wirerr_get_class
    linkageType: ''
    returnType: int
    signature: "int az_insert_rr(struct auth_zone* z, uint8_t* rr, size_t rr_len,\n\tsize_t
      dname_len, int* duplicate)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:1237,1
    - Dst: packed_rrset_find_rr
      Src: /src/unbound/services/authzone.c:1238,1
    - Dst: domain_remove_rrset
      Src: /src/unbound/services/authzone.c:1242,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:1247,1
    - Dst: rrsigs_copy_from_rrset_to_rrsigset
      Src: /src/unbound/services/authzone.c:1252,1
    - Dst: domain_remove_rrset
      Src: /src/unbound/services/authzone.c:1255,1
    - Dst: rrset_remove_rr
      Src: /src/unbound/services/authzone.c:1260,1
    - Dst: rrset_remove_rr
      Src: /src/unbound/services/authzone.c:1268,1
    - Dst: rrsig_rdata_get_type_covered
      Src: /src/unbound/services/authzone.c:1278,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:1279,1
    - Dst: az_rrset_find_rrsig
      Src: /src/unbound/services/authzone.c:1280,1
    - Dst: rrset_remove_rr
      Src: /src/unbound/services/authzone.c:1286,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 5
    argNames:
    - node
    - rr_type
    - rdata
    - rdatalen
    - nonexist
    argTypes:
    - struct auth_data*
    - uint16_t
    - uint8_t*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1297
      start: 1229
    functionDepth: 3
    functionLinenumber: 1229
    functionLinenumberEnd: 1297
    functionName: az_domain_remove_rr
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - domain_remove_rrset
    - az_domain_rrset
    - rrset_remove_rr
    - rrsigs_copy_from_rrset_to_rrsigset
    - az_rrset_find_rrsig
    - packed_rrset_find_rr
    - rrsig_rdata_get_type_covered
    linkageType: ''
    returnType: int
    signature: "int az_domain_remove_rr(struct auth_data* node, uint16_t rr_type,\n\tuint8_t*
      rdata, size_t rdatalen, int* nonexist)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/services/authzone.c:1306,1
    - Dst: sldns_wirerr_get_class
      Src: /src/unbound/services/authzone.c:1307,1
    - Dst: sldns_wirerr_get_rdatalen
      Src: /src/unbound/services/authzone.c:1308,1
    - Dst: sldns_wirerr_get_rdatawl
      Src: /src/unbound/services/authzone.c:1311,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1314,1
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:1321,1
    - Dst: az_domain_remove_rr
      Src: /src/unbound/services/authzone.c:1328,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/authzone.c:1336,1
    - Dst: auth_data_delete
      Src: /src/unbound/services/authzone.c:1337,1
    - Dst: rpz_remove_rr
      Src: /src/unbound/services/authzone.c:1340,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 5
    argNames:
    - z
    - rr
    - rr_len
    - dname_len
    - nonexist
    argTypes:
    - struct auth_zone*
    - uint8_t*
    - size_t
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1344
      start: 1300
    functionDepth: 5
    functionLinenumber: 1300
    functionLinenumberEnd: 1344
    functionName: az_remove_rr
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_name
    - log_err
    - rpz_remove_rr
    - rbtree_delete
    - sldns_wirerr_get_rdatawl
    - sldns_wirerr_get_type
    - auth_data_delete
    - sldns_wirerr_get_rdatalen
    - sldns_wirerr_get_class
    - az_domain_remove_rr
    linkageType: ''
    returnType: int
    signature: "int az_remove_rr(struct auth_zone* z, uint8_t* rr, size_t rr_len,\n\tsize_t
      dname_len, int* nonexist)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_init_frm_data
      Src: /src/unbound/services/authzone.c:1359,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/authzone.c:1360,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/services/authzone.c:1363,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/services/authzone.c:1364,1
    - Dst: pkt_dname_len
      Src: /src/unbound/services/authzone.c:1365,1
    - Dst: sldns_buffer_available
      Src: /src/unbound/services/authzone.c:1367,1
    - Dst: dname_pkt_copy
      Src: /src/unbound/services/authzone.c:1368,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/services/authzone.c:1368,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/services/authzone.c:1369,1
    - Dst: sldns_buffer_available
      Src: /src/unbound/services/authzone.c:1372,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/services/authzone.c:1373,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/services/authzone.c:1374,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/services/authzone.c:1375,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:1376,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/services/authzone.c:1377,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/services/authzone.c:1380,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/services/authzone.c:1393,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:1395,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:1396,1
    - Dst: pkt_dname_len
      Src: /src/unbound/services/authzone.c:1400,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:1403,1
    - Dst: sldns_buffer_available
      Src: /src/unbound/services/authzone.c:1407,1
    - Dst: dname_pkt_copy
      Src: /src/unbound/services/authzone.c:1411,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/services/authzone.c:1412,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/services/authzone.c:1413,1
    - Dst: get_rdf_size
      Src: /src/unbound/services/authzone.c:1426,1
    - Dst: sldns_buffer_available
      Src: /src/unbound/services/authzone.c:1432,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/services/authzone.c:1434,1
    - Dst: sldns_buffer_available
      Src: /src/unbound/services/authzone.c:1443,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/services/authzone.c:1444,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/services/authzone.c:1447,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:1448,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/authzone.c:1449,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 71
    argCount: 9
    argNames:
    - buf
    - pkt
    - pktlen
    - dname
    - rr_type
    - rr_class
    - rr_ttl
    - rr_data
    - rr_rdlen
    argTypes:
    - struct sldns_buffer*
    - uint8_t*
    - size_t
    - uint8_t*
    - uint16_t
    - uint16_t
    - uint32_t
    - uint8_t*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1451
      start: 1348
    functionDepth: 5
    functionLinenumber: 1348
    functionLinenumberEnd: 1451
    functionName: decompress_rr_into_buffer
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - dname_pkt_copy
    - sldns_buffer_position
    - sldns_buffer_available
    - sldns_rr_descript
    - get_rdf_size
    - sldns_buffer_write
    - sldns_buffer_skip
    - sldns_buffer_flip
    - sldns_buffer_clear
    - sldns_buffer_write_u16
    - sldns_buffer_set_position
    - sldns_buffer_init_frm_data
    - sldns_buffer_begin
    - sldns_buffer_write_u32
    - sldns_buffer_current
    - sldns_buffer_write_u16_at
    - pkt_dname_len
    linkageType: ''
    returnType: int
    signature: "int decompress_rr_into_buffer(struct sldns_buffer* buf, uint8_t* pkt,\n\tsize_t
      pktlen, uint8_t* dname, uint16_t rr_type, uint16_t rr_class,\n\tuint32_t rr_ttl,
      uint8_t* rr_data, uint16_t rr_rdlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: decompress_rr_into_buffer
      Src: /src/unbound/services/authzone.c:1464,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1466,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:1469,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/authzone.c:1470,1
    - Dst: dname_valid
      Src: /src/unbound/services/authzone.c:1471,1
    - Dst: az_insert_rr
      Src: /src/unbound/services/authzone.c:1472,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 11
    argNames:
    - z
    - pkt
    - pktlen
    - scratch_buffer
    - dname
    - rr_type
    - rr_class
    - rr_ttl
    - rr_data
    - rr_rdlen
    - duplicate
    argTypes:
    - struct auth_zone*
    - uint8_t*
    - size_t
    - struct sldns_buffer*
    - uint8_t*
    - uint16_t
    - uint16_t
    - uint32_t
    - uint8_t*
    - uint16_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1473
      start: 1455
    functionDepth: 7
    functionLinenumber: 1455
    functionLinenumberEnd: 1473
    functionName: az_insert_rr_decompress
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - decompress_rr_into_buffer
    - sldns_buffer_limit
    - dname_valid
    - sldns_buffer_begin
    - az_insert_rr
    linkageType: ''
    returnType: int
    signature: "int az_insert_rr_decompress(struct auth_zone* z, uint8_t* pkt, size_t
      pktlen,\n\tstruct sldns_buffer* scratch_buffer, uint8_t* dname, uint16_t rr_type,\n\tuint16_t
      rr_class, uint32_t rr_ttl, uint8_t* rr_data,\n\tuint16_t rr_rdlen, int* duplicate)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: decompress_rr_into_buffer
      Src: /src/unbound/services/authzone.c:1486,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1488,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:1491,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/authzone.c:1492,1
    - Dst: dname_valid
      Src: /src/unbound/services/authzone.c:1493,1
    - Dst: az_remove_rr
      Src: /src/unbound/services/authzone.c:1494,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 11
    argNames:
    - z
    - pkt
    - pktlen
    - scratch_buffer
    - dname
    - rr_type
    - rr_class
    - rr_ttl
    - rr_data
    - rr_rdlen
    - nonexist
    argTypes:
    - struct auth_zone*
    - uint8_t*
    - size_t
    - struct sldns_buffer*
    - uint8_t*
    - uint16_t
    - uint16_t
    - uint32_t
    - uint8_t*
    - uint16_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1477
    functionDepth: 6
    functionLinenumber: 1477
    functionLinenumberEnd: 1495
    functionName: az_remove_rr_decompress
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - decompress_rr_into_buffer
    - sldns_buffer_limit
    - dname_valid
    - sldns_buffer_begin
    - az_remove_rr
    linkageType: ''
    returnType: int
    signature: "int az_remove_rr_decompress(struct auth_zone* z, uint8_t* pkt, size_t
      pktlen,\n\tstruct sldns_buffer* scratch_buffer, uint8_t* dname, uint16_t rr_type,\n\tuint16_t
      rr_class, uint32_t rr_ttl, uint8_t* rr_data,\n\tuint16_t rr_rdlen, int* nonexist)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: feof
      Src: /src/unbound/services/authzone.c:1522,1
    - Dst: sldns_fp2wire_rr_buf
      Src: /src/unbound/services/authzone.c:1525,1
    - Dst: strncmp
      Src: /src/unbound/services/authzone.c:1529,1
    - Dst: strncmp
      Src: /src/unbound/services/authzone.c:1530,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1535,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1541,1
    - Dst: strncmp
      Src: /src/unbound/services/authzone.c:1549,1
    - Dst: strlen
      Src: /src/unbound/services/authzone.c:1550,1
    - Dst: strlen
      Src: /src/unbound/services/authzone.c:1551,1
    - Dst: strdup
      Src: /src/unbound/services/authzone.c:1552,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1554,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:1557,1
    - Dst: fopen
      Src: /src/unbound/services/authzone.c:1559,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1561,1
    - Dst: strerror
      Src: /src/unbound/services/authzone.c:1564,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:1565,1
    - Dst: az_parse_file
      Src: /src/unbound/services/authzone.c:1569,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1571,1
    - Dst: fclose
      Src: /src/unbound/services/authzone.c:1574,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:1575,1
    - Dst: fclose
      Src: /src/unbound/services/authzone.c:1578,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:1579,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:1581,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1587,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/services/authzone.c:1588,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/services/authzone.c:1589,1
    - Dst: az_insert_rr
      Src: /src/unbound/services/authzone.c:1597,1
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/services/authzone.c:1599,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/services/authzone.c:1599,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1601,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 59
    argCount: 8
    argNames:
    - z
    - in
    - rr
    - rrbuflen
    - state
    - fname
    - depth
    - cfg
    argTypes:
    - struct auth_zone*
    - FILE*
    - uint8_t*
    - size_t
    - struct sldns_file_parse_state*
    - char*
    - int
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1607
      start: 1513
    functionDepth: 8
    functionLinenumber: 1513
    functionLinenumberEnd: 1607
    functionName: az_parse_file
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 1
    functionsReached:
    - log_err
    - strncmp
    - sldns_fp2wire_rr_buf
    - verbose
    - fclose
    - sldns_wire2str_type_buf
    - feof
    - LDNS_WIREPARSE_OFFSET
    - free
    - sldns_get_errorstr_parse
    - fopen
    - strerror
    - strlen
    - az_parse_file
    - sldns_wirerr_get_type
    - strdup
    - az_insert_rr
    linkageType: ''
    returnType: int
    signature: "int az_parse_file(struct auth_zone* z, FILE* in, uint8_t* rr, size_t
      rrbuflen,\n\tstruct sldns_file_parse_state* state, char* fname, int depth,\n\tstruct
      config_file* cfg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: traverse_postorder
      Src: /src/unbound/services/authzone.c:1612,1
    - Dst: rbtree_init
      Src: /src/unbound/services/authzone.c:1613,1
    - Dst: rpz_clear
      Src: /src/unbound/services/authzone.c:1616,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - z
    argTypes:
    - struct auth_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1617
      start: 1609
    functionDepth: 3
    functionLinenumber: 1609
    functionLinenumberEnd: 1617
    functionName: auth_zone_clear_data
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 1
    functionsReached:
    - rbtree_init
    - traverse_postorder
    - rpz_clear
    linkageType: ''
    returnType: void
    signature: void auth_zone_clear_data(struct auth_zone* z)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/unbound/services/authzone.c:1630,1
    - Dst: strlen
      Src: /src/unbound/services/authzone.c:1631,1
    - Dst: strlen
      Src: /src/unbound/services/authzone.c:1632,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:1635,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:1636,1
    - Dst: fopen
      Src: /src/unbound/services/authzone.c:1638,1
    - Dst: sldns_wire2str_dname
      Src: /src/unbound/services/authzone.c:1640,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:1646,1
    - Dst: log_warn
      Src: /src/unbound/services/authzone.c:1649,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:1651,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1654,1
    - Dst: strerror
      Src: /src/unbound/services/authzone.c:1655,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:1656,1
    - Dst: traverse_postorder
      Src: /src/unbound/services/authzone.c:1661,1
    - Dst: rbtree_init
      Src: /src/unbound/services/authzone.c:1662,1
    - Dst: rpz_clear
      Src: /src/unbound/services/authzone.c:1665,1
    - Dst: memset
      Src: /src/unbound/services/authzone.c:1667,1
    - Dst: memcpy
      Src: /src/unbound/services/authzone.c:1672,1
    - Dst: az_parse_file
      Src: /src/unbound/services/authzone.c:1676,1
    - Dst: sldns_wire2str_dname
      Src: /src/unbound/services/authzone.c:1677,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1678,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:1680,1
    - Dst: fclose
      Src: /src/unbound/services/authzone.c:1681,1
    - Dst: fclose
      Src: /src/unbound/services/authzone.c:1684,1
    - Dst: rpz_finish_config
      Src: /src/unbound/services/authzone.c:1687,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 43
    argCount: 2
    argNames:
    - z
    - cfg
    argTypes:
    - struct auth_zone*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1689
      start: 1619
    functionDepth: 9
    functionLinenumber: 1619
    functionLinenumberEnd: 1689
    functionName: auth_zone_read_zonefile
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 1
    functionsReached:
    - log_err
    - strncmp
    - rpz_clear
    - memcpy
    - az_parse_file
    - verbose
    - fclose
    - dname_str
    - rpz_finish_config
    - free
    - rbtree_init
    - sldns_wire2str_dname
    - fopen
    - strerror
    - strlen
    - log_warn
    - memset
    - traverse_postorder
    linkageType: ''
    returnType: int
    signature: int auth_zone_read_zonefile(struct auth_zone* z, struct config_file*
      cfg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fwrite
      Src: /src/unbound/services/authzone.c:1698,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1700,1
    - Dst: strerror
      Src: /src/unbound/services/authzone.c:1700,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1703,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - out
    - str
    - len
    argTypes:
    - FILE*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1707
      start: 1692
    functionDepth: 1
    functionLinenumber: 1692
    functionLinenumberEnd: 1707
    functionName: write_out
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - strerror
    - fwrite
    linkageType: ''
    returnType: int
    signature: int write_out(FILE* out, const char* str, size_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_dname_scan
      Src: /src/unbound/services/authzone.c:1720,1
    - Dst: sldns_str_print
      Src: /src/unbound/services/authzone.c:1721,1
    - Dst: sldns_str_print
      Src: /src/unbound/services/authzone.c:1722,1
    - Dst: sldns_wire2str_class_print
      Src: /src/unbound/services/authzone.c:1723,1
    - Dst: sldns_str_print
      Src: /src/unbound/services/authzone.c:1724,1
    - Dst: sldns_wire2str_type_print
      Src: /src/unbound/services/authzone.c:1725,1
    - Dst: sldns_str_print
      Src: /src/unbound/services/authzone.c:1726,1
    - Dst: sldns_wire2str_rdata_scan
      Src: /src/unbound/services/authzone.c:1729,1
    - Dst: sldns_str_print
      Src: /src/unbound/services/authzone.c:1732,1
    - Dst: sldns_calc_keytag_raw
      Src: /src/unbound/services/authzone.c:1733,1
    - Dst: sldns_str_print
      Src: /src/unbound/services/authzone.c:1736,1
    - Dst: log_nametypeclass
      Src: /src/unbound/services/authzone.c:1739,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 8
    argNames:
    - nm
    - nmlen
    - tp
    - cl
    - data
    - i
    - s
    - buflen
    argTypes:
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - struct packed_rrset_data*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1743
      start: 1710
    functionDepth: 5
    functionLinenumber: 1710
    functionLinenumberEnd: 1743
    functionName: auth_rr_to_string
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_nametypeclass
    - sldns_wire2str_type_print
    - sldns_calc_keytag_raw
    - sldns_str_print
    - sldns_wire2str_rdata_scan
    - sldns_wire2str_dname_scan
    - sldns_wire2str_class_print
    linkageType: ''
    returnType: int
    signature: "int auth_rr_to_string(uint8_t* nm, size_t nmlen, uint16_t tp, uint16_t
      cl,\n\tstruct packed_rrset_data* data, size_t i, char* s, size_t buflen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_rr_to_string
      Src: /src/unbound/services/authzone.c:1753,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:1755,1
    - Dst: write_out
      Src: /src/unbound/services/authzone.c:1758,1
    - Dst: strlen
      Src: /src/unbound/services/authzone.c:1758,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - z
    - node
    - r
    - out
    argTypes:
    - struct auth_zone*
    - struct auth_data*
    - struct auth_rrset*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1762
      start: 1746
    functionDepth: 6
    functionLinenumber: 1746
    functionLinenumberEnd: 1762
    functionName: auth_zone_write_rrset
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_rr_to_string
    - verbose
    - strlen
    - write_out
    linkageType: ''
    returnType: int
    signature: "int auth_zone_write_rrset(struct auth_zone* z, struct auth_data* node,\n\tstruct
      auth_rrset* r, FILE* out)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:1771,1
    - Dst: auth_zone_write_rrset
      Src: /src/unbound/services/authzone.c:1773,1
    - Dst: auth_zone_write_rrset
      Src: /src/unbound/services/authzone.c:1782,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 3
    argNames:
    - z
    - n
    - out
    argTypes:
    - struct auth_zone*
    - struct auth_data*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1786
      start: 1765
    functionDepth: 7
    functionLinenumber: 1765
    functionLinenumberEnd: 1786
    functionName: auth_zone_write_domain
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_zone_write_rrset
    - az_domain_rrset
    linkageType: ''
    returnType: int
    signature: int auth_zone_write_domain(struct auth_zone* z, struct auth_data* n,
      FILE* out)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/services/authzone.c:1792,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1794,1
    - Dst: strerror
      Src: /src/unbound/services/authzone.c:1794,1
    - Dst: auth_zone_write_domain
      Src: /src/unbound/services/authzone.c:1798,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1799,1
    - Dst: fclose
      Src: /src/unbound/services/authzone.c:1800,1
    - Dst: fclose
      Src: /src/unbound/services/authzone.c:1804,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - z
    - fname
    argTypes:
    - struct auth_zone*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1806
      start: 1788
    functionDepth: 8
    functionLinenumber: 1788
    functionLinenumberEnd: 1806
    functionName: auth_zone_write_file
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - auth_zone_write_domain
    - fclose
    - fopen
    - strerror
    linkageType: ''
    returnType: int
    signature: int auth_zone_write_file(struct auth_zone* z, const char* fname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_zone_write_domain
      Src: /src/unbound/services/authzone.c:1798,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1799,1
    - Dst: fclose
      Src: /src/unbound/services/authzone.c:1800,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - data
    argTypes:
    - z
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1803
      start: 1797
    functionDepth: 8
    functionLinenumber: 1797
    functionLinenumberEnd: 1803
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - fclose
    - auth_zone_write_domain
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(n, struct auth_data*, &z->data)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_new
      Src: /src/unbound/services/authzone.c:1821,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1823,1
    - Dst: regional_create
      Src: /src/unbound/services/authzone.c:1826,1
    - Dst: time
      Src: /src/unbound/services/authzone.c:1829,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:1832,1
    - Dst: auth_zone_verify_zonemd
      Src: /src/unbound/services/authzone.c:1835,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/services/authzone.c:1839,1
    - Dst: regional_destroy
      Src: /src/unbound/services/authzone.c:1840,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - z
    - env_for_val
    - mods
    argTypes:
    - struct auth_zone*
    - struct module_env*
    - struct module_stack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1841
      start: 1812
    functionDepth: 2
    functionLinenumber: 1812
    functionLinenumberEnd: 1841
    functionName: zonemd_offline_verify
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - sldns_buffer_new
    - regional_create
    - time
    - auth_zone_verify_zonemd
    - sldns_buffer_free
    - regional_destroy
    linkageType: ''
    returnType: void
    signature: "void zonemd_offline_verify(struct auth_zone* z, struct module_env*
      env_for_val,\n\tstruct module_stack* mods)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:1849,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:1851,1
    - Dst: auth_zone_read_zonefile
      Src: /src/unbound/services/authzone.c:1852,1
    - Dst: auth_zone_clear_data
      Src: /src/unbound/services/authzone.c:1855,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:1856,1
    - Dst: zonemd_offline_verify
      Src: /src/unbound/services/authzone.c:1860,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:1861,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:1863,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 4
    argNames:
    - az
    - cfg
    - env
    - mods
    argTypes:
    - struct auth_zones*
    - struct config_file*
    - struct module_env*
    - struct module_stack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1865
      start: 1844
    functionDepth: 10
    functionLinenumber: 1844
    functionLinenumberEnd: 1865
    functionName: auth_zones_read_zones
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - zonemd_offline_verify
    - auth_zone_read_zonefile
    - auth_zone_clear_data
    linkageType: ''
    returnType: int
    signature: "int auth_zones_read_zones(struct auth_zones* az, struct config_file*
      cfg,\n\tstruct module_env* env, struct module_stack* mods)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:1851,1
    - Dst: auth_zone_read_zonefile
      Src: /src/unbound/services/authzone.c:1852,1
    - Dst: auth_zone_clear_data
      Src: /src/unbound/services/authzone.c:1855,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:1856,1
    - Dst: zonemd_offline_verify
      Src: /src/unbound/services/authzone.c:1860,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:1861,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - ztree
    argTypes:
    - az
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1862
      start: 1850
    functionDepth: 10
    functionLinenumber: 1850
    functionLinenumberEnd: 1862
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - zonemd_offline_verify
    - auth_zone_read_zonefile
    - auth_zone_clear_data
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct auth_zone*, &az->ztree)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint32
      Src: /src/unbound/services/authzone.c:1880,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 7
    argNames:
    - zonemd_rrset
    - i
    - serial
    - scheme
    - hashalgo
    - hash
    - hashlen
    argTypes:
    - struct auth_rrset*
    - size_t
    - uint32_t*
    - int*
    - int*
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1888
      start: 1868
    functionDepth: 1
    functionLinenumber: 1868
    functionLinenumberEnd: 1888
    functionName: zonemd_fetch_parameters
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_read_uint32
    linkageType: ''
    returnType: int
    signature: "int zonemd_fetch_parameters(struct auth_rrset* zonemd_rrset, size_t
      i,\n\tuint32_t* serial, int* scheme, int* hashalgo, uint8_t** hash,\n\tsize_t*
      hashlen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: zonemd_fetch_parameters
      Src: /src/unbound/services/authzone.c:1912,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:1919,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 4
    argNames:
    - zonemd_rrset
    - index
    - scheme
    - hashalgo
    argTypes:
    - struct auth_rrset*
    - size_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1925
      start: 1899
    functionDepth: 2
    functionLinenumber: 1899
    functionLinenumberEnd: 1925
    functionName: zonemd_is_duplicate_scheme_hash
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - verbose
    - zonemd_fetch_parameters
    linkageType: ''
    returnType: int
    signature: "int zonemd_is_duplicate_scheme_hash(struct auth_rrset* zonemd_rrset,\n\tsize_t
      index, int scheme, int hashalgo)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: regional_free_all
      Src: /src/unbound/services/authzone.c:1950,1
    - Dst: auth_zone_get_serial
      Src: /src/unbound/services/authzone.c:1952,1
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:1957,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:1962,1
    - Dst: zonemd_fetch_parameters
      Src: /src/unbound/services/authzone.c:1974,1
    - Dst: zonemd_is_duplicate_scheme_hash
      Src: /src/unbound/services/authzone.c:1982,1
    - Dst: regional_free_all
      Src: /src/unbound/services/authzone.c:1991,1
    - Dst: auth_zone_generate_zonemd_check
      Src: /src/unbound/services/authzone.c:1998,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:2007,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:2008,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:2015,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:2017,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:2038,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:2039,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 67
    argCount: 3
    argNames:
    - z
    - env
    - reason
    argTypes:
    - struct auth_zone*
    - struct module_env*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2042
      start: 1936
    functionDepth: 3
    functionLinenumber: 1936
    functionLinenumberEnd: 2042
    functionName: auth_zone_zonemd_check_hash
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_name
    - auth_zone_generate_zonemd_check
    - zonemd_is_duplicate_scheme_hash
    - verbose
    - az_domain_rrset
    - zonemd_fetch_parameters
    - dname_str
    - regional_free_all
    - auth_zone_get_serial
    linkageType: ''
    returnType: int
    signature: "int auth_zone_zonemd_check_hash(struct auth_zone* z,\n\tstruct module_env*
      env, char** reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:2049,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:2051,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - z
    argTypes:
    - struct auth_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2053
      start: 2045
    functionDepth: 2
    functionLinenumber: 2045
    functionLinenumberEnd: 2053
    functionName: auth_zone_get_soa_rrset
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 2
    functionsReached:
    - az_find_name
    - az_domain_rrset
    linkageType: ''
    returnType: struct auth_rrset
    signature: struct auth_rrset * auth_zone_get_soa_rrset(struct auth_zone* z)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:2063,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:2065,1
    - Dst: dname_valid
      Src: /src/unbound/services/authzone.c:2069,1
    - Dst: dname_valid
      Src: /src/unbound/services/authzone.c:2072,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/services/authzone.c:2078,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 2
    argNames:
    - z
    - serial
    argTypes:
    - struct auth_zone*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2080
      start: 2056
    functionDepth: 2
    functionLinenumber: 2056
    functionLinenumberEnd: 2080
    functionName: auth_zone_get_serial
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 5
    functionsReached:
    - az_find_name
    - sldns_read_uint32
    - dname_valid
    - az_domain_rrset
    linkageType: ''
    returnType: int
    signature: int auth_zone_get_serial(struct auth_zone* z, uint32_t* serial)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:2090,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:2092,1
    - Dst: dname_valid
      Src: /src/unbound/services/authzone.c:2096,1
    - Dst: dname_valid
      Src: /src/unbound/services/authzone.c:2099,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/services/authzone.c:2108,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/services/authzone.c:2109,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/services/authzone.c:2110,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/services/authzone.c:2111,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 2
    argNames:
    - z
    - xfr
    argTypes:
    - struct auth_zone*
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2114
      start: 2083
    functionDepth: 2
    functionLinenumber: 2083
    functionLinenumberEnd: 2114
    functionName: xfr_find_soa
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 3
    functionsReached:
    - az_find_name
    - sldns_read_uint32
    - dname_valid
    - az_domain_rrset
    linkageType: ''
    returnType: int
    signature: int xfr_find_soa(struct auth_zone* z, struct auth_xfer* xfr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: xfr_find_soa
      Src: /src/unbound/services/authzone.c:2130,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - z
    - x
    argTypes:
    - struct auth_zone*
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2136
      start: 2124
    functionDepth: 3
    functionLinenumber: 2124
    functionLinenumberEnd: 2136
    functionName: auth_xfer_setup
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - xfr_find_soa
    linkageType: ''
    returnType: int
    signature: int auth_xfer_setup(struct auth_zone* z, struct auth_xfer* x)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:2148,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:2150,1
    - Dst: auth_xfer_find
      Src: /src/unbound/services/authzone.c:2151,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:2153,1
    - Dst: auth_xfer_setup
      Src: /src/unbound/services/authzone.c:2155,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:2157,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2159,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2160,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:2164,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2166,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2168,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - az
    argTypes:
    - struct auth_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2170
      start: 2143
    functionDepth: 4
    functionLinenumber: 2143
    functionLinenumberEnd: 2170
    functionName: auth_zones_setup_zones
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_xfer_setup
    - lock_rw_wrlock
    - lock_basic_unlock
    - lock_rw_unlock
    - lock_basic_lock
    - auth_xfer_find
    linkageType: ''
    returnType: int
    signature: int auth_zones_setup_zones(struct auth_zones* az)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:2150,1
    - Dst: auth_xfer_find
      Src: /src/unbound/services/authzone.c:2151,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:2153,1
    - Dst: auth_xfer_setup
      Src: /src/unbound/services/authzone.c:2155,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:2157,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2159,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2160,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:2164,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2166,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 1
    argNames:
    - ztree
    argTypes:
    - az
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2167
      start: 2149
    functionDepth: 4
    functionLinenumber: 2149
    functionLinenumberEnd: 2167
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_xfer_setup
    - lock_rw_wrlock
    - lock_basic_unlock
    - lock_rw_unlock
    - lock_basic_lock
    - auth_xfer_find
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct auth_zone*, &az->ztree)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:2183,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:2185,1
    - Dst: auth_zones_find_or_add_zone
      Src: /src/unbound/services/authzone.c:2186,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2187,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2189,1
    - Dst: auth_zones_find_or_add_xfer
      Src: /src/unbound/services/authzone.c:2197,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2198,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2199,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2201,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2208,1
    - Dst: auth_zone_set_zonefile
      Src: /src/unbound/services/authzone.c:2212,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:2214,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2216,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2218,1
    - Dst: rpz_create
      Src: /src/unbound/services/authzone.c:2228,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:2229,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:2231,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2233,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2234,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:2237,1
    - Dst: rpz_config
      Src: /src/unbound/services/authzone.c:2244,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:2245,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:2247,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2249,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2250,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2255,1
    - Dst: xfer_set_masters
      Src: /src/unbound/services/authzone.c:2262,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:2263,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2264,1
    - Dst: xfer_set_masters
      Src: /src/unbound/services/authzone.c:2267,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:2268,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2269,1
    - Dst: probe_copy_masters_for_allow_notify
      Src: /src/unbound/services/authzone.c:2275,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:2276,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2279,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 91
    argCount: 2
    argNames:
    - az
    - c
    argTypes:
    - struct auth_zones*
    - struct config_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2281
      start: 2173
    functionDepth: 6
    functionLinenumber: 2173
    functionLinenumberEnd: 2281
    functionName: auth_zones_cfg
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - auth_zones_find_or_add_xfer
    - lock_rw_wrlock
    - lock_rw_unlock
    - lock_basic_unlock
    - auth_zone_set_zonefile
    - auth_zones_find_or_add_zone
    - rpz_config
    - xfer_set_masters
    - lock_protect
    - probe_copy_masters_for_allow_notify
    - rpz_create
    linkageType: ''
    returnType: int
    signature: int auth_zones_cfg(struct auth_zones* az, struct config_auth* c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:2290,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:2292,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2294,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2296,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - az
    argTypes:
    - struct auth_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2297
      start: 2286
    functionDepth: 0
    functionLinenumber: 2286
    functionLinenumberEnd: 2297
    functionName: az_setall_deleted
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    linkageType: ''
    returnType: void
    signature: void az_setall_deleted(struct auth_zones* az)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:2292,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2294,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ztree
    argTypes:
    - az
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2295
      start: 2291
    functionDepth: 0
    functionLinenumber: 2291
    functionLinenumberEnd: 2295
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct auth_zone*, &az->ztree)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:2308,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:2310,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2318,1
    - Dst: auth_xfer_find
      Src: /src/unbound/services/authzone.c:2325,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/authzone.c:2327,1
    - Dst: auth_xfer_delete
      Src: /src/unbound/services/authzone.c:2328,1
    - Dst: rbtree_delete
      Src: /src/unbound/services/authzone.c:2330,1
    - Dst: auth_zone_delete
      Src: /src/unbound/services/authzone.c:2331,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2334,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 1
    argNames:
    - az
    argTypes:
    - struct auth_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2335
      start: 2302
    functionDepth: 4
    functionLinenumber: 2302
    functionLinenumberEnd: 2335
    functionName: az_delete_deleted_zones
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_xfer_delete
    - rbtree_delete
    - lock_rw_wrlock
    - lock_rw_unlock
    - auth_zone_delete
    - auth_xfer_find
    linkageType: ''
    returnType: void
    signature: void az_delete_deleted_zones(struct auth_zones* az)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:2310,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:2318,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ztree
    argTypes:
    - az
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2319
      start: 2309
    functionDepth: 0
    functionLinenumber: 2309
    functionLinenumberEnd: 2319
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct auth_zone*, &az->ztree)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: az_setall_deleted
      Src: /src/unbound/services/authzone.c:2342,1
    - Dst: log_warn
      Src: /src/unbound/services/authzone.c:2345,1
    - Dst: auth_zones_cfg
      Src: /src/unbound/services/authzone.c:2349,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:2350,1
    - Dst: az_delete_deleted_zones
      Src: /src/unbound/services/authzone.c:2354,1
    - Dst: auth_zones_read_zones
      Src: /src/unbound/services/authzone.c:2355,1
    - Dst: auth_zones_setup_zones
      Src: /src/unbound/services/authzone.c:2358,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 6
    argNames:
    - az
    - cfg
    - setup
    - is_rpz
    - env
    - mods
    argTypes:
    - struct auth_zones*
    - struct config_file*
    - int
    - int*
    - struct module_env*
    - struct module_stack*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2362
      start: 2337
    functionDepth: 11
    functionLinenumber: 2337
    functionLinenumberEnd: 2362
    functionName: auth_zones_apply_cfg
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 2
    functionsReached:
    - log_err
    - auth_zones_setup_zones
    - auth_zones_cfg
    - az_setall_deleted
    - log_warn
    - auth_zones_read_zones
    - az_delete_deleted_zones
    linkageType: ''
    returnType: int
    signature: "int auth_zones_apply_cfg(struct auth_zones* az, struct config_file*
      cfg,\n\tint setup, int* is_rpz, struct module_env* env,\n\tstruct module_stack*
      mods)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/services/authzone.c:2376,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:2377,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - at
    argTypes:
    - struct auth_transfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2384
      start: 2368
    functionDepth: 1
    functionLinenumber: 2368
    functionLinenumberEnd: 2384
    functionName: auth_chunks_delete
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void auth_chunks_delete(struct auth_transfer* at)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/services/authzone.c:2393,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct auth_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2396
      start: 2387
    functionDepth: 1
    functionLinenumber: 2387
    functionLinenumberEnd: 2396
    functionName: auth_free_master_addrs
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void auth_free_master_addrs(struct auth_addr* list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_free_master_addrs
      Src: /src/unbound/services/authzone.c:2405,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:2406,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:2407,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:2408,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct auth_master*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2411
      start: 2399
    functionDepth: 2
    functionLinenumber: 2399
    functionLinenumberEnd: 2411
    functionName: auth_free_masters
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - free
    - auth_free_master_addrs
    linkageType: ''
    returnType: void
    signature: void auth_free_masters(struct auth_master* list)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_destroy
      Src: /src/unbound/services/authzone.c:2417,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:2418,1
    - Dst: comm_timer_delete
      Src: /src/unbound/services/authzone.c:2420,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:2421,1
    - Dst: auth_free_masters
      Src: /src/unbound/services/authzone.c:2424,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/authzone.c:2425,1
    - Dst: comm_timer_delete
      Src: /src/unbound/services/authzone.c:2426,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:2427,1
    - Dst: auth_free_masters
      Src: /src/unbound/services/authzone.c:2430,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/authzone.c:2431,1
    - Dst: comm_timer_delete
      Src: /src/unbound/services/authzone.c:2432,1
    - Dst: auth_chunks_delete
      Src: /src/unbound/services/authzone.c:2434,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:2436,1
    - Dst: auth_free_masters
      Src: /src/unbound/services/authzone.c:2438,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:2439,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 1
    argNames:
    - xfr
    argTypes:
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2440
      start: 2413
    functionDepth: 3
    functionLinenumber: 2413
    functionLinenumberEnd: 2440
    functionName: auth_xfer_delete
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 4
    functionsReached:
    - comm_timer_delete
    - free
    - auth_chunks_delete
    - auth_free_masters
    - lock_basic_destroy
    - comm_point_delete
    linkageType: ''
    returnType: void
    signature: void auth_xfer_delete(struct auth_xfer* xfr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_zone_delete
      Src: /src/unbound/services/authzone.c:2447,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - n
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2448
      start: 2443
    functionDepth: 4
    functionLinenumber: 2443
    functionLinenumberEnd: 2448
    functionName: auth_zone_del
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_zone_delete
    linkageType: ''
    returnType: void
    signature: void auth_zone_del(rbnode_type* n, void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_xfer_delete
      Src: /src/unbound/services/authzone.c:2455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - n
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2456
      start: 2451
    functionDepth: 4
    functionLinenumber: 2451
    functionLinenumberEnd: 2456
    functionName: auth_xfer_del
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_xfer_delete
    linkageType: ''
    returnType: void
    signature: void auth_xfer_del(rbnode_type* n, void* ATTR_UNUSED(arg))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/services/authzone.c:2461,1
    - Dst: lock_rw_destroy
      Src: /src/unbound/services/authzone.c:2462,1
    - Dst: traverse_postorder
      Src: /src/unbound/services/authzone.c:2463,1
    - Dst: traverse_postorder
      Src: /src/unbound/services/authzone.c:2464,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:2465,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - az
    argTypes:
    - struct auth_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2466
      start: 2458
    functionDepth: 1
    functionLinenumber: 2458
    functionLinenumberEnd: 2466
    functionName: auth_zones_delete
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 3
    functionsReached:
    - free
    - traverse_postorder
    - lock_rw_destroy
    linkageType: ''
    returnType: void
    signature: void auth_zones_delete(struct auth_zones* az)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - n
    argTypes:
    - struct auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2483
      start: 2469
    functionDepth: 0
    functionLinenumber: 2469
    functionLinenumberEnd: 2483
    functionName: domain_has_only_nsec3
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int domain_has_only_nsec3(struct auth_data* n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:2494,1
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:2495,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - z
    - nm
    - nmlen
    argTypes:
    - struct auth_zone*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2496
      start: 2486
    functionDepth: 2
    functionLinenumber: 2486
    functionLinenumberEnd: 2496
    functionName: az_find_wildcard_domain
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_name
    - memmove
    linkageType: ''
    returnType: struct auth_data
    signature: 'struct auth_data *

      az_find_wildcard_domain(struct auth_zone* z, uint8_t* nm, size_t nmlen)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dname_subdomain_c
      Src: /src/unbound/services/authzone.c:2506,1
    - Dst: az_find_wildcard_domain
      Src: /src/unbound/services/authzone.c:2508,1
    - Dst: dname_remove_label_limit_len
      Src: /src/unbound/services/authzone.c:2513,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - z
    - qinfo
    - ce
    argTypes:
    - struct auth_zone*
    - struct query_info*
    - struct auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2517
      start: 2499
    functionDepth: 3
    functionLinenumber: 2499
    functionLinenumberEnd: 2517
    functionName: az_find_wildcard
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    - dname_remove_label_limit_len
    - az_find_wildcard_domain
    linkageType: ''
    returnType: struct auth_data
    signature: "struct auth_data *\naz_find_wildcard(struct auth_zone* z, struct query_info*
      qinfo,\n\tstruct auth_data* ce)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_get_shared_topdomain
      Src: /src/unbound/services/authzone.c:2528,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/services/authzone.c:2532,1
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:2533,1
    - Dst: dname_remove_label_limit_len
      Src: /src/unbound/services/authzone.c:2536,1
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:2538,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - z
    - qinfo
    - n
    argTypes:
    - struct auth_zone*
    - struct query_info*
    - struct auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2541
      start: 2521
    functionDepth: 2
    functionLinenumber: 2521
    functionLinenumberEnd: 2541
    functionName: az_find_candidate_ce
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_name
    - dname_get_shared_topdomain
    - dname_count_size_labels
    - dname_remove_label_limit_len
    linkageType: ''
    returnType: struct auth_data
    signature: "struct auth_data *\naz_find_candidate_ce(struct auth_zone* z, struct
      query_info* qinfo,\n\tstruct auth_data* n)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dname_remove_label_limit_len
      Src: /src/unbound/services/authzone.c:2549,1
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:2550,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - z
    - n
    argTypes:
    - struct auth_zone*
    - struct auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2554
      start: 2544
    functionDepth: 2
    functionLinenumber: 2544
    functionLinenumberEnd: 2554
    functionName: az_domain_go_up
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_name
    - dname_remove_label_limit_len
    linkageType: ''
    returnType: struct auth_data
    signature: 'struct auth_data *

      az_domain_go_up(struct auth_zone* z, struct auth_data* n)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: az_find_candidate_ce
      Src: /src/unbound/services/authzone.c:2579,1
    - Dst: domain_has_only_nsec3
      Src: /src/unbound/services/authzone.c:2586,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:2597,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:2609,1
    - Dst: domain_has_only_nsec3
      Src: /src/unbound/services/authzone.c:2616,1
    - Dst: az_domain_go_up
      Src: /src/unbound/services/authzone.c:2623,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 29
    argCount: 6
    argNames:
    - z
    - qinfo
    - node
    - node_exact
    - ce
    - rrset
    argTypes:
    - struct auth_zone*
    - struct query_info*
    - struct auth_data*
    - int
    - struct auth_data**
    - struct auth_rrset**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2627
      start: 2568
    functionDepth: 3
    functionLinenumber: 2568
    functionLinenumberEnd: 2627
    functionName: az_find_ce
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_candidate_ce
    - az_domain_rrset
    - az_domain_go_up
    - domain_has_only_nsec3
    linkageType: ''
    returnType: int
    signature: "int az_find_ce(struct auth_zone* z, struct query_info* qinfo,\n\tstruct
      auth_data* node, int node_exact, struct auth_data** ce,\n\tstruct auth_rrset**
      rrset)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dname_valid
      Src: /src/unbound/services/authzone.c:2644,1
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:2647,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:2650,1
    - Dst: msg_add_rrset_ar
      Src: /src/unbound/services/authzone.c:2651,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:2654,1
    - Dst: msg_add_rrset_ar
      Src: /src/unbound/services/authzone.c:2655,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 21
    argCount: 5
    argNames:
    - z
    - region
    - msg
    - rrset
    - offset
    argTypes:
    - struct auth_zone*
    - struct regional*
    - struct dns_msg*
    - struct auth_rrset*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2660
      start: 2631
    functionDepth: 3
    functionLinenumber: 2631
    functionLinenumberEnd: 2660
    functionName: az_add_additionals_from
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_name
    - msg_add_rrset_ar
    - dname_valid
    - az_domain_rrset
    linkageType: ''
    returnType: int
    signature: "int az_add_additionals_from(struct auth_zone* z, struct regional*
      region,\n\tstruct dns_msg* msg, struct auth_rrset* rrset, size_t offset)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:2671,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:2673,1
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:2678,1
    - Dst: msg_add_rrset_ns
      Src: /src/unbound/services/authzone.c:2679,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/services/authzone.c:2685,1
    - Dst: get_rrset_ttl
      Src: /src/unbound/services/authzone.c:2690,1
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/services/authzone.c:2691,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - z
    - region
    - msg
    argTypes:
    - struct auth_zone*
    - struct regional*
    - struct dns_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2694
      start: 2663
    functionDepth: 3
    functionLinenumber: 2663
    functionLinenumberEnd: 2694
    functionName: az_add_negative_soa
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_name
    - msg_add_rrset_ns
    - az_domain_rrset
    - PREFETCH_TTL_CALC
    - log_assert
    - get_rrset_ttl
    - sldns_read_uint32
    linkageType: ''
    returnType: int
    signature: "int az_add_negative_soa(struct auth_zone* z, struct regional* region,\n\tstruct
      dns_msg* msg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_first
      Src: /src/unbound/services/authzone.c:2708,1
    - Dst: rbtree_next
      Src: /src/unbound/services/authzone.c:2710,1
    - Dst: rbtree_next
      Src: /src/unbound/services/authzone.c:2715,1
    - Dst: dname_strict_subdomain_c
      Src: /src/unbound/services/authzone.c:2724,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 3
    argNames:
    - z
    - qinfo
    - node
    argTypes:
    - struct auth_zone*
    - struct query_info*
    - struct auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2727
      start: 2700
    functionDepth: 1
    functionLinenumber: 2700
    functionLinenumberEnd: 2727
    functionName: az_empty_nonterminal
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - dname_strict_subdomain_c
    - rbtree_next
    - rbtree_first
    linkageType: ''
    returnType: int
    signature: "int az_empty_nonterminal(struct auth_zone* z, struct query_info* qinfo,\n\tstruct
      auth_data* node)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/services/authzone.c:2741,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:2742,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 7
    argNames:
    - qname
    - qname_len
    - dname_len
    - dtarg
    - dtarglen
    - buf
    - buflen
    argTypes:
    - uint8_t*
    - size_t
    - size_t
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2744
      start: 2730
    functionDepth: 1
    functionLinenumber: 2730
    functionLinenumberEnd: 2744
    functionName: synth_cname_buf
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - memcpy
    - memmove
    linkageType: ''
    returnType: size_t
    signature: "size_t synth_cname_buf(uint8_t* qname, size_t qname_len, size_t dname_len,\n\tuint8_t*
      dtarg, size_t dtarglen, uint8_t* buf, size_t buflen)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/services/authzone.c:2763,1
    - Dst: dname_valid
      Src: /src/unbound/services/authzone.c:2765,1
    - Dst: synth_cname_buf
      Src: /src/unbound/services/authzone.c:2773,1
    - Dst: regional_alloc
      Src: /src/unbound/services/authzone.c:2780,1
    - Dst: memset
      Src: /src/unbound/services/authzone.c:2784,1
    - Dst: htons
      Src: /src/unbound/services/authzone.c:2786,1
    - Dst: htons
      Src: /src/unbound/services/authzone.c:2787,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/authzone.c:2789,1
    - Dst: rrset_key_hash
      Src: /src/unbound/services/authzone.c:2793,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/authzone.c:2794,1
    - Dst: packed_rrset_ptr_fixup
      Src: /src/unbound/services/authzone.c:2808,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/services/authzone.c:2810,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:2811,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 7
    argNames:
    - qname
    - qname_len
    - region
    - node
    - dname
    - dclass
    - cname
    argTypes:
    - uint8_t*
    - size_t
    - struct regional*
    - struct auth_data*
    - struct auth_rrset*
    - uint16_t
    - struct ub_packed_rrset_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2813
      start: 2748
    functionDepth: 2
    functionLinenumber: 2748
    functionLinenumberEnd: 2813
    functionName: create_synth_cname
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - memmove
    - rrset_key_hash
    - sldns_write_uint16
    - regional_alloc
    - synth_cname_buf
    - htons
    - dname_valid
    - regional_alloc_init
    - packed_rrset_ptr_fixup
    - memset
    - sldns_read_uint16
    linkageType: ''
    returnType: int
    signature: "int create_synth_cname(uint8_t* qname, size_t qname_len, struct regional*
      region,\n\tstruct auth_data* node, struct auth_rrset* dname, uint16_t dclass,\n\tstruct
      ub_packed_rrset_key** cname)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: create_synth_cname
      Src: /src/unbound/services/authzone.c:2823,1
    - Dst: msg_grow_array
      Src: /src/unbound/services/authzone.c:2834,1
    - Dst: msg_ttl
      Src: /src/unbound/services/authzone.c:2839,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 7
    argNames:
    - z
    - qname
    - qname_len
    - region
    - msg
    - dname
    - rrset
    argTypes:
    - struct auth_zone*
    - uint8_t*
    - size_t
    - struct regional*
    - struct dns_msg*
    - struct auth_data*
    - struct auth_rrset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2841
      start: 2816
    functionDepth: 3
    functionLinenumber: 2816
    functionLinenumberEnd: 2841
    functionName: add_synth_cname
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - msg_ttl
    - msg_grow_array
    - create_synth_cname
    linkageType: ''
    returnType: int
    signature: "int add_synth_cname(struct auth_zone* z, uint8_t* qname, size_t qname_len,\n\tstruct
      regional* region, struct dns_msg* msg, struct auth_data* dname,\n\tstruct auth_rrset*
      rrset)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: query_dname_compare
      Src: /src/unbound/services/authzone.c:2854,1
    - Dst: rrset_key_hash
      Src: /src/unbound/services/authzone.c:2858,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 5
    argNames:
    - msg
    - oldname
    - newname
    - newlen
    - an_only
    argTypes:
    - struct dns_msg*
    - uint8_t*
    - uint8_t*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2861
      start: 2844
    functionDepth: 1
    functionLinenumber: 2844
    functionLinenumberEnd: 2861
    functionName: az_change_dnames
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - rrset_key_hash
    - query_dname_compare
    linkageType: ''
    returnType: void
    signature: "void az_change_dnames(struct dns_msg* msg, uint8_t* oldname, uint8_t*
      newname,\n\tsize_t newlen, int an_only)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:2870,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:2876,1
    - Dst: dname_remove_label_limit_len
      Src: /src/unbound/services/authzone.c:2878,1
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:2881,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - z
    - node
    argTypes:
    - struct auth_zone*
    - struct auth_data**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2884
      start: 2864
    functionDepth: 2
    functionLinenumber: 2864
    functionLinenumberEnd: 2884
    functionName: az_find_nsec_cover
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_name
    - dname_remove_label_limit_len
    - log_assert
    - az_domain_rrset
    linkageType: ''
    returnType: struct auth_rrset
    signature: 'struct auth_rrset *

      az_find_nsec_cover(struct auth_zone* z, struct auth_data** node)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:2900,1
    - Dst: az_find_domain
      Src: /src/unbound/services/authzone.c:2908,1
    - Dst: az_find_nsec_cover
      Src: /src/unbound/services/authzone.c:2909,1
    - Dst: msg_add_rrset_ns
      Src: /src/unbound/services/authzone.c:2910,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 5
    argNames:
    - z
    - region
    - msg
    - cenm
    - cenmlen
    argTypes:
    - struct auth_zone*
    - struct regional*
    - struct dns_msg*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2913
      start: 2887
    functionDepth: 3
    functionLinenumber: 2887
    functionLinenumberEnd: 2913
    functionName: az_nsec_wildcard_denial
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_nsec_cover
    - msg_add_rrset_ns
    - az_find_domain
    - memmove
    linkageType: ''
    returnType: int
    signature: "int az_nsec_wildcard_denial(struct auth_zone* z, struct regional*
      region,\n\tstruct dns_msg* msg, uint8_t* cenm, size_t cenmlen)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:2923,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:2925,1
    - Dst: nsec3_hash_algo_size_supported
      Src: /src/unbound/services/authzone.c:2935,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/services/authzone.c:2942,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 25
    argCount: 5
    argNames:
    - z
    - algo
    - iter
    - salt
    - saltlen
    argTypes:
    - struct auth_zone*
    - int*
    - size_t*
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2951
      start: 2916
    functionDepth: 2
    functionLinenumber: 2916
    functionLinenumberEnd: 2951
    functionName: az_nsec3_param
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_name
    - nsec3_hash_algo_size_supported
    - az_domain_rrset
    - sldns_read_uint16
    linkageType: ''
    returnType: int
    signature: "int az_nsec3_param(struct auth_zone* z, int* algo, size_t* iter, uint8_t**
      salt,\n\tsize_t* saltlen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: nsec3_hash_algo_size_supported
      Src: /src/unbound/services/authzone.c:2959,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:2969,1
    - Dst: query_dname_tolower
      Src: /src/unbound/services/authzone.c:2970,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:2972,1
    - Dst: secalgo_nsec3_hash
      Src: /src/unbound/services/authzone.c:2973,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:2976,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:2978,1
    - Dst: secalgo_nsec3_hash
      Src: /src/unbound/services/authzone.c:2979,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 8
    argNames:
    - buf
    - buflen
    - nm
    - nmlen
    - algo
    - iter
    - salt
    - saltlen
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - int
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2983
      start: 2955
    functionDepth: 3
    functionLinenumber: 2955
    functionLinenumberEnd: 2983
    functionName: az_nsec3_hash
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - secalgo_nsec3_hash
    - nsec3_hash_algo_size_supported
    - query_dname_tolower
    - memmove
    linkageType: ''
    returnType: size_t
    signature: "size_t az_nsec3_hash(uint8_t* buf, size_t buflen, uint8_t* nm, size_t
      nmlen,\n\tint algo, size_t iter, uint8_t* salt, size_t saltlen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: az_nsec3_hash
      Src: /src/unbound/services/authzone.c:2994,1
    - Dst: sldns_b32_ntop_extended_hex
      Src: /src/unbound/services/authzone.c:3000,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:3008,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 9
    argNames:
    - z
    - hashname
    - hashnmlen
    - nm
    - nmlen
    - algo
    - iter
    - salt
    - saltlen
    argTypes:
    - struct auth_zone*
    - uint8_t*
    - size_t*
    - uint8_t*
    - size_t
    - int
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3011
      start: 2986
    functionDepth: 4
    functionLinenumber: 2986
    functionLinenumberEnd: 3011
    functionName: az_nsec3_hashname
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_b32_ntop_extended_hex
    - az_nsec3_hash
    - memmove
    linkageType: ''
    returnType: int
    signature: "int az_nsec3_hashname(struct auth_zone* z, uint8_t* hashname, size_t*
      hashnmlen,\n\tuint8_t* nm, size_t nmlen, int algo, size_t iter, uint8_t* salt,\n\tsize_t
      saltlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: az_find_domain
      Src: /src/unbound/services/authzone.c:3026,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:3031,1
    - Dst: rbtree_previous
      Src: /src/unbound/services/authzone.c:3032,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - z
    - hashnm
    - hashnmlen
    argTypes:
    - struct auth_zone*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3037
      start: 3014
    functionDepth: 2
    functionLinenumber: 3014
    functionLinenumberEnd: 3037
    functionName: az_nsec3_findnode
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - rbtree_previous
    - az_find_domain
    - az_domain_rrset
    linkageType: ''
    returnType: struct auth_data
    signature: 'struct auth_data *

      az_nsec3_findnode(struct auth_zone* z, uint8_t* hashnm, size_t hashnmlen)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: az_nsec3_hashname
      Src: /src/unbound/services/authzone.c:3047,1
    - Dst: az_nsec3_findnode
      Src: /src/unbound/services/authzone.c:3050,1
    - Dst: rbtree_last
      Src: /src/unbound/services/authzone.c:3055,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:3057,1
    - Dst: rbtree_previous
      Src: /src/unbound/services/authzone.c:3058,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 7
    argNames:
    - z
    - nm
    - nmlen
    - algo
    - iter
    - salt
    - saltlen
    argTypes:
    - struct auth_zone*
    - uint8_t*
    - size_t
    - int
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3063
      start: 3040
    functionDepth: 5
    functionLinenumber: 3040
    functionLinenumberEnd: 3063
    functionName: az_nsec3_find_cover
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_domain_rrset
    - az_nsec3_hashname
    - rbtree_last
    - az_nsec3_findnode
    - rbtree_previous
    linkageType: ''
    returnType: struct auth_data
    signature: "struct auth_data *\naz_nsec3_find_cover(struct auth_zone* z, uint8_t*
      nm, size_t nmlen,\n\tint algo, size_t iter, uint8_t* salt, size_t saltlen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: az_nsec3_hashname
      Src: /src/unbound/services/authzone.c:3073,1
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:3076,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:3077,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 7
    argNames:
    - z
    - nm
    - nmlen
    - algo
    - iter
    - salt
    - saltlen
    argTypes:
    - struct auth_zone*
    - uint8_t*
    - size_t
    - int
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3080
      start: 3066
    functionDepth: 5
    functionLinenumber: 3066
    functionLinenumberEnd: 3080
    functionName: az_nsec3_find_exact
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_name
    - az_nsec3_hashname
    - az_domain_rrset
    linkageType: ''
    returnType: struct auth_data
    signature: "struct auth_data *\naz_nsec3_find_exact(struct auth_zone* z, uint8_t*
      nm, size_t nmlen,\n\tint algo, size_t iter, uint8_t* salt, size_t saltlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/services/authzone.c:3088,1
    - Dst: dname_count_labels
      Src: /src/unbound/services/authzone.c:3089,1
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:3091,1
    - Dst: dname_strict_subdomain
      Src: /src/unbound/services/authzone.c:3091,1
    - Dst: dname_remove_labels
      Src: /src/unbound/services/authzone.c:3095,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 5
    argNames:
    - cenm
    - qname
    - qname_len
    - nx
    - nxlen
    argTypes:
    - uint8_t*
    - uint8_t*
    - size_t
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3096
      start: 3084
    functionDepth: 1
    functionLinenumber: 3084
    functionLinenumberEnd: 3096
    functionName: az_nsec3_get_nextcloser
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_assert
    - dname_count_labels
    - dname_strict_subdomain
    - dname_remove_labels
    linkageType: ''
    returnType: void
    signature: "void az_nsec3_get_nextcloser(uint8_t* cenm, uint8_t* qname, size_t
      qname_len,\n\tuint8_t** nx, size_t* nxlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: az_nsec3_find_exact
      Src: /src/unbound/services/authzone.c:3105,1
    - Dst: dname_remove_label_limit_len
      Src: /src/unbound/services/authzone.c:3107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 8
    argNames:
    - z
    - cenm
    - cenmlen
    - no_exact_ce
    - algo
    - iter
    - salt
    - saltlen
    argTypes:
    - struct auth_zone*
    - uint8_t**
    - size_t*
    - int*
    - int
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3112
      start: 3100
    functionDepth: 6
    functionLinenumber: 3100
    functionLinenumberEnd: 3112
    functionName: az_nsec3_find_ce
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_nsec3_find_exact
    - dname_remove_label_limit_len
    linkageType: ''
    returnType: struct auth_data
    signature: "struct auth_data *\naz_nsec3_find_ce(struct auth_zone* z, uint8_t**
      cenm, size_t* cenmlen,\n\tint* no_exact_ce, int algo, size_t iter, uint8_t*
      salt, size_t saltlen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:3121,1
    - Dst: msg_add_rrset_ns
      Src: /src/unbound/services/authzone.c:3123,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - z
    - region
    - msg
    - node
    argTypes:
    - struct auth_zone*
    - struct regional*
    - struct dns_msg*
    - struct auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3125
      start: 3115
    functionDepth: 3
    functionLinenumber: 3115
    functionLinenumberEnd: 3125
    functionName: az_nsec3_insert
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - msg_add_rrset_ns
    - az_domain_rrset
    linkageType: ''
    returnType: int
    signature: "int az_nsec3_insert(struct auth_zone* z, struct regional* region,\n\tstruct
      dns_msg* msg, struct auth_data* node)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: az_nsec3_param
      Src: /src/unbound/services/authzone.c:3154,1
    - Dst: az_nsec3_find_exact
      Src: /src/unbound/services/authzone.c:3160,1
    - Dst: az_nsec3_insert
      Src: /src/unbound/services/authzone.c:3163,1
    - Dst: az_nsec3_find_ce
      Src: /src/unbound/services/authzone.c:3171,1
    - Dst: az_nsec3_insert
      Src: /src/unbound/services/authzone.c:3174,1
    - Dst: az_nsec3_get_nextcloser
      Src: /src/unbound/services/authzone.c:3182,1
    - Dst: az_nsec3_find_cover
      Src: /src/unbound/services/authzone.c:3184,1
    - Dst: az_nsec3_insert
      Src: /src/unbound/services/authzone.c:3186,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:3197,1
    - Dst: az_nsec3_find_cover
      Src: /src/unbound/services/authzone.c:3200,1
    - Dst: az_nsec3_insert
      Src: /src/unbound/services/authzone.c:3202,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 36
    argCount: 11
    argNames:
    - z
    - region
    - msg
    - cenm
    - cenmlen
    - qname
    - qname_len
    - nodataproof
    - ceproof
    - nxproof
    - wcproof
    argTypes:
    - struct auth_zone*
    - struct regional*
    - struct dns_msg*
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3206
      start: 3141
    functionDepth: 7
    functionLinenumber: 3141
    functionLinenumberEnd: 3206
    functionName: az_add_nsec3_proof
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_nsec3_get_nextcloser
    - az_nsec3_insert
    - memmove
    - az_nsec3_find_cover
    - az_nsec3_param
    - az_nsec3_find_exact
    - az_nsec3_find_ce
    linkageType: ''
    returnType: int
    signature: "int az_add_nsec3_proof(struct auth_zone* z, struct regional* region,\n\tstruct
      dns_msg* msg, uint8_t* cenm, size_t cenmlen, uint8_t* qname,\n\tsize_t qname_len,
      int nodataproof, int ceproof, int nxproof,\n\tint wcproof)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: msg_add_rrset_an
      Src: /src/unbound/services/authzone.c:3213,1
    - Dst: az_add_additionals_from
      Src: /src/unbound/services/authzone.c:3216,1
    - Dst: az_add_additionals_from
      Src: /src/unbound/services/authzone.c:3219,1
    - Dst: az_add_additionals_from
      Src: /src/unbound/services/authzone.c:3222,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 5
    argNames:
    - z
    - region
    - msg
    - node
    - rrset
    argTypes:
    - struct auth_zone*
    - struct regional*
    - struct dns_msg*
    - struct auth_data*
    - struct auth_rrset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3226
      start: 3209
    functionDepth: 4
    functionLinenumber: 3209
    functionLinenumberEnd: 3226
    functionName: az_generate_positive_answer
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_add_additionals_from
    - msg_add_rrset_an
    linkageType: ''
    returnType: int
    signature: "int az_generate_positive_answer(struct auth_zone* z, struct regional*
      region,\n\tstruct dns_msg* msg, struct auth_data* node, struct auth_rrset* rrset)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:3236,1
    - Dst: msg_add_rrset_an
      Src: /src/unbound/services/authzone.c:3237,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:3240,1
    - Dst: msg_add_rrset_an
      Src: /src/unbound/services/authzone.c:3241,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:3244,1
    - Dst: msg_add_rrset_an
      Src: /src/unbound/services/authzone.c:3245,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:3248,1
    - Dst: msg_add_rrset_an
      Src: /src/unbound/services/authzone.c:3249,1
    - Dst: msg_add_rrset_an
      Src: /src/unbound/services/authzone.c:3253,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 4
    argNames:
    - z
    - region
    - msg
    - node
    argTypes:
    - struct auth_zone*
    - struct regional*
    - struct dns_msg*
    - struct auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3257
      start: 3229
    functionDepth: 3
    functionLinenumber: 3229
    functionLinenumberEnd: 3257
    functionName: az_generate_any_answer
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - msg_add_rrset_an
    - az_domain_rrset
    linkageType: ''
    returnType: int
    signature: "int az_generate_any_answer(struct auth_zone* z, struct regional* region,\n\tstruct
      dns_msg* msg, struct auth_data* node)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dname_valid
      Src: /src/unbound/services/authzone.c:3274,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/services/authzone.c:3276,1
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:3278,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:3280,1
    - Dst: msg_add_rrset_an
      Src: /src/unbound/services/authzone.c:3282,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:3286,1
    - Dst: msg_add_rrset_an
      Src: /src/unbound/services/authzone.c:3288,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 24
    argCount: 5
    argNames:
    - z
    - qtype
    - region
    - msg
    - d
    argTypes:
    - struct auth_zone*
    - uint16_t
    - struct regional*
    - struct dns_msg*
    - struct packed_rrset_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3292
      start: 3260
    functionDepth: 3
    functionLinenumber: 3260
    functionLinenumberEnd: 3292
    functionName: follow_cname_chain
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_name
    - dname_subdomain_c
    - az_domain_rrset
    - dname_valid
    - msg_add_rrset_an
    linkageType: ''
    returnType: int
    signature: "int follow_cname_chain(struct auth_zone* z, uint16_t qtype,\n\tstruct
      regional* region, struct dns_msg* msg,\n\tstruct packed_rrset_data* d)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: msg_add_rrset_an
      Src: /src/unbound/services/authzone.c:3300,1
    - Dst: follow_cname_chain
      Src: /src/unbound/services/authzone.c:3302,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 6
    argNames:
    - z
    - qinfo
    - region
    - msg
    - node
    - rrset
    argTypes:
    - struct auth_zone*
    - struct query_info*
    - struct regional*
    - struct dns_msg*
    - struct auth_data*
    - struct auth_rrset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3305
      start: 3295
    functionDepth: 4
    functionLinenumber: 3295
    functionLinenumberEnd: 3305
    functionName: az_generate_cname_answer
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - msg_add_rrset_an
    - follow_cname_chain
    linkageType: ''
    returnType: int
    signature: "int az_generate_cname_answer(struct auth_zone* z, struct query_info*
      qinfo,\n\tstruct regional* region, struct dns_msg* msg,\n\tstruct auth_data*
      node, struct auth_rrset* rrset)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: az_add_negative_soa
      Src: /src/unbound/services/authzone.c:3313,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:3315,1
    - Dst: msg_add_rrset_ns
      Src: /src/unbound/services/authzone.c:3316,1
    - Dst: az_add_nsec3_proof
      Src: /src/unbound/services/authzone.c:3319,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 4
    argNames:
    - z
    - region
    - msg
    - node
    argTypes:
    - struct auth_zone*
    - struct regional*
    - struct dns_msg*
    - struct auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3325
      start: 3308
    functionDepth: 8
    functionLinenumber: 3308
    functionLinenumberEnd: 3325
    functionName: az_generate_notype_answer
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_add_negative_soa
    - msg_add_rrset_ns
    - az_domain_rrset
    - az_add_nsec3_proof
    linkageType: ''
    returnType: int
    signature: "int az_generate_notype_answer(struct auth_zone* z, struct regional*
      region,\n\tstruct dns_msg* msg, struct auth_data* node)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:3334,1
    - Dst: msg_add_rrset_ns
      Src: /src/unbound/services/authzone.c:3336,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:3338,1
    - Dst: msg_add_rrset_ns
      Src: /src/unbound/services/authzone.c:3339,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:3342,1
    - Dst: msg_add_rrset_ns
      Src: /src/unbound/services/authzone.c:3343,1
    - Dst: az_add_nsec3_proof
      Src: /src/unbound/services/authzone.c:3346,1
    - Dst: az_add_additionals_from
      Src: /src/unbound/services/authzone.c:3353,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 5
    argNames:
    - z
    - region
    - msg
    - ce
    - rrset
    argTypes:
    - struct auth_zone*
    - struct regional*
    - struct dns_msg*
    - struct auth_data*
    - struct auth_rrset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3355
      start: 3328
    functionDepth: 8
    functionLinenumber: 3328
    functionLinenumberEnd: 3355
    functionName: az_generate_referral_answer
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_add_additionals_from
    - msg_add_rrset_ns
    - az_domain_rrset
    - az_add_nsec3_proof
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int az_generate_referral_answer(struct auth_zone* z, struct regional*
      region,\n\tstruct dns_msg* msg, struct auth_data* ce, struct auth_rrset* rrset)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:3363,1
    - Dst: msg_add_rrset_an
      Src: /src/unbound/services/authzone.c:3365,1
    - Dst: add_synth_cname
      Src: /src/unbound/services/authzone.c:3366,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/services/authzone.c:3368,1
    - Dst: follow_cname_chain
      Src: /src/unbound/services/authzone.c:3373,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 6
    argNames:
    - z
    - qinfo
    - region
    - msg
    - ce
    - rrset
    argTypes:
    - struct auth_zone*
    - struct query_info*
    - struct regional*
    - struct dns_msg*
    - struct auth_data*
    - struct auth_rrset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3378
      start: 3358
    functionDepth: 4
    functionLinenumber: 3358
    functionLinenumberEnd: 3378
    functionName: az_generate_dname_answer
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - FLAGS_GET_RCODE
    - add_synth_cname
    - log_assert
    - follow_cname_chain
    - msg_add_rrset_an
    linkageType: ''
    returnType: int
    signature: "int az_generate_dname_answer(struct auth_zone* z, struct query_info*
      qinfo,\n\tstruct regional* region, struct dns_msg* msg, struct auth_data* ce,\n\tstruct
      auth_rrset* rrset)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:3388,1
    - Dst: msg_add_rrset_an
      Src: /src/unbound/services/authzone.c:3390,1
    - Dst: az_change_dnames
      Src: /src/unbound/services/authzone.c:3392,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:3394,1
    - Dst: msg_add_rrset_an
      Src: /src/unbound/services/authzone.c:3396,1
    - Dst: az_change_dnames
      Src: /src/unbound/services/authzone.c:3398,1
    - Dst: follow_cname_chain
      Src: /src/unbound/services/authzone.c:3400,1
    - Dst: az_generate_any_answer
      Src: /src/unbound/services/authzone.c:3405,1
    - Dst: az_change_dnames
      Src: /src/unbound/services/authzone.c:3407,1
    - Dst: az_generate_notype_answer
      Src: /src/unbound/services/authzone.c:3412,1
    - Dst: az_find_nsec_cover
      Src: /src/unbound/services/authzone.c:3421,1
    - Dst: msg_add_rrset_ns
      Src: /src/unbound/services/authzone.c:3422,1
    - Dst: dname_remove_label_limit_len
      Src: /src/unbound/services/authzone.c:3426,1
    - Dst: az_add_nsec3_proof
      Src: /src/unbound/services/authzone.c:3428,1
    - Dst: az_change_dnames
      Src: /src/unbound/services/authzone.c:3436,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 34
    argCount: 7
    argNames:
    - z
    - qinfo
    - region
    - msg
    - ce
    - wildcard
    - node
    argTypes:
    - struct auth_zone*
    - struct query_info*
    - struct regional*
    - struct dns_msg*
    - struct auth_data*
    - struct auth_data*
    - struct auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3439
      start: 3381
    functionDepth: 9
    functionLinenumber: 3381
    functionLinenumberEnd: 3439
    functionName: az_generate_wildcard_answer
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_nsec_cover
    - az_generate_any_answer
    - msg_add_rrset_ns
    - az_domain_rrset
    - az_add_nsec3_proof
    - msg_add_rrset_an
    - follow_cname_chain
    - az_change_dnames
    - dname_remove_label_limit_len
    - az_generate_notype_answer
    linkageType: ''
    returnType: int
    signature: "int az_generate_wildcard_answer(struct auth_zone* z, struct query_info*
      qinfo,\n\tstruct regional* region, struct dns_msg* msg, struct auth_data* ce,\n\tstruct
      auth_data* wildcard, struct auth_data* node)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: az_add_negative_soa
      Src: /src/unbound/services/authzone.c:3448,1
    - Dst: az_find_nsec_cover
      Src: /src/unbound/services/authzone.c:3449,1
    - Dst: msg_add_rrset_ns
      Src: /src/unbound/services/authzone.c:3450,1
    - Dst: az_nsec_wildcard_denial
      Src: /src/unbound/services/authzone.c:3451,1
    - Dst: az_add_nsec3_proof
      Src: /src/unbound/services/authzone.c:3454,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 5
    argNames:
    - z
    - region
    - msg
    - ce
    - node
    argTypes:
    - struct auth_zone*
    - struct regional*
    - struct dns_msg*
    - struct auth_data*
    - struct auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3460
      start: 3442
    functionDepth: 8
    functionLinenumber: 3442
    functionLinenumberEnd: 3460
    functionName: az_generate_nxdomain_answer
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_nsec_cover
    - msg_add_rrset_ns
    - az_add_nsec3_proof
    - az_add_negative_soa
    - az_nsec_wildcard_denial
    linkageType: ''
    returnType: int
    signature: "int az_generate_nxdomain_answer(struct auth_zone* z, struct regional*
      region,\n\tstruct dns_msg* msg, struct auth_data* ce, struct auth_data* node)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:3469,1
    - Dst: az_generate_positive_answer
      Src: /src/unbound/services/authzone.c:3470,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:3473,1
    - Dst: az_generate_cname_answer
      Src: /src/unbound/services/authzone.c:3474,1
    - Dst: az_generate_any_answer
      Src: /src/unbound/services/authzone.c:3479,1
    - Dst: az_generate_notype_answer
      Src: /src/unbound/services/authzone.c:3482,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - z
    - qinfo
    - region
    - msg
    - node
    argTypes:
    - struct auth_zone*
    - struct query_info*
    - struct regional*
    - struct dns_msg*
    - struct auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3483
      start: 3463
    functionDepth: 9
    functionLinenumber: 3463
    functionLinenumberEnd: 3483
    functionName: az_generate_answer_with_node
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_generate_any_answer
    - az_domain_rrset
    - az_generate_notype_answer
    - az_generate_cname_answer
    - az_generate_positive_answer
    linkageType: ''
    returnType: int
    signature: "int az_generate_answer_with_node(struct auth_zone* z, struct query_info*
      qinfo,\n\tstruct regional* region, struct dns_msg* msg, struct auth_data* node)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: az_generate_referral_answer
      Src: /src/unbound/services/authzone.c:3497,1
    - Dst: az_generate_dname_answer
      Src: /src/unbound/services/authzone.c:3500,1
    - Dst: az_empty_nonterminal
      Src: /src/unbound/services/authzone.c:3505,1
    - Dst: az_generate_notype_answer
      Src: /src/unbound/services/authzone.c:3506,1
    - Dst: az_find_wildcard
      Src: /src/unbound/services/authzone.c:3509,1
    - Dst: az_generate_wildcard_answer
      Src: /src/unbound/services/authzone.c:3510,1
    - Dst: az_generate_nxdomain_answer
      Src: /src/unbound/services/authzone.c:3514,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 14
    argCount: 7
    argNames:
    - z
    - qinfo
    - region
    - msg
    - ce
    - rrset
    - node
    argTypes:
    - struct auth_zone*
    - struct query_info*
    - struct regional*
    - struct dns_msg*
    - struct auth_data*
    - struct auth_rrset*
    - struct auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3515
      start: 3487
    functionDepth: 10
    functionLinenumber: 3487
    functionLinenumberEnd: 3515
    functionName: az_generate_answer_nonexistnode
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_empty_nonterminal
    - az_generate_nxdomain_answer
    - az_find_wildcard
    - az_generate_referral_answer
    - az_generate_dname_answer
    - az_generate_wildcard_answer
    - az_generate_notype_answer
    linkageType: ''
    returnType: int
    signature: "int az_generate_answer_nonexistnode(struct auth_zone* z, struct query_info*
      qinfo,\n\tstruct regional* region, struct dns_msg* msg, struct auth_data* ce,\n\tstruct
      auth_rrset* rrset, struct auth_data* node)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: msg_create
      Src: /src/unbound/services/authzone.c:3527,1
    - Dst: az_find_domain
      Src: /src/unbound/services/authzone.c:3530,1
    - Dst: az_find_ce
      Src: /src/unbound/services/authzone.c:3536,1
    - Dst: sldns_wire2str_dname_buf
      Src: /src/unbound/services/authzone.c:3541,1
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/services/authzone.c:3543,1
    - Dst: sldns_wire2str_dname_buf
      Src: /src/unbound/services/authzone.c:3544,1
    - Dst: sldns_wire2str_dname_buf
      Src: /src/unbound/services/authzone.c:3547,1
    - Dst: snprintf
      Src: /src/unbound/services/authzone.c:3549,1
    - Dst: sldns_wire2str_dname_buf
      Src: /src/unbound/services/authzone.c:3551,1
    - Dst: snprintf
      Src: /src/unbound/services/authzone.c:3553,1
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/services/authzone.c:3554,1
    - Dst: snprintf
      Src: /src/unbound/services/authzone.c:3556,1
    - Dst: log_info
      Src: /src/unbound/services/authzone.c:3557,1
    - Dst: az_generate_answer_with_node
      Src: /src/unbound/services/authzone.c:3565,1
    - Dst: az_generate_answer_nonexistnode
      Src: /src/unbound/services/authzone.c:3568,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 5
    argNames:
    - z
    - qinfo
    - region
    - msg
    - fallback
    argTypes:
    - struct auth_zone*
    - struct query_info*
    - struct regional*
    - struct dns_msg**
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3570
      start: 3518
    functionDepth: 11
    functionLinenumber: 3518
    functionLinenumberEnd: 3570
    functionName: auth_zone_generate_answer
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_domain
    - sldns_wire2str_dname_buf
    - msg_create
    - snprintf
    - sldns_wire2str_type_buf
    - log_info
    - az_generate_answer_nonexistnode
    - az_generate_answer_with_node
    - az_find_ce
    linkageType: ''
    returnType: int
    signature: "int auth_zone_generate_answer(struct auth_zone* z, struct query_info*
      qinfo,\n\tstruct regional* region, struct dns_msg** msg, int* fallback)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:3579,1
    - Dst: auth_zone_find
      Src: /src/unbound/services/authzone.c:3580,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3582,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:3587,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3588,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3592,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3598,1
    - Dst: auth_zone_generate_answer
      Src: /src/unbound/services/authzone.c:3602,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3603,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 7
    argNames:
    - az
    - qinfo
    - region
    - msg
    - fallback
    - dp_nm
    - dp_nmlen
    argTypes:
    - struct auth_zones*
    - struct query_info*
    - struct regional*
    - struct dns_msg**
    - int*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3605
      start: 3572
    functionDepth: 12
    functionLinenumber: 3572
    functionLinenumberEnd: 3605
    functionName: auth_zones_lookup
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_zone_find
    - lock_rw_unlock
    - lock_rw_rdlock
    - auth_zone_generate_answer
    linkageType: ''
    returnType: int
    signature: "int auth_zones_lookup(struct auth_zones* az, struct query_info* qinfo,\n\tstruct
      regional* region, struct dns_msg** msg, int* fallback,\n\tuint8_t* dp_nm, size_t
      dp_nmlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inplace_cb_reply_local_call
      Src: /src/unbound/services/authzone.c:3620,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/services/authzone.c:3621,1
    - Dst: reply_info_answer_encode
      Src: /src/unbound/services/authzone.c:3622,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:3623,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/services/authzone.c:3624,1
    - Dst: error_encode
      Src: /src/unbound/services/authzone.c:3627,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:3628,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/services/authzone.c:3629,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 7
    argNames:
    - qinfo
    - env
    - edns
    - repinfo
    - buf
    - temp
    - msg
    argTypes:
    - struct query_info*
    - struct module_env*
    - struct edns_data*
    - struct comm_reply*
    - sldns_buffer*
    - struct regional*
    - struct dns_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3631
      start: 3608
    functionDepth: 4
    functionLinenumber: 3608
    functionLinenumberEnd: 3631
    functionName: auth_answer_encode
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - FLAGS_GET_RCODE
    - reply_info_answer_encode
    - inplace_cb_reply_local_call
    - sldns_buffer_begin
    - sldns_buffer_read_u16_at
    - error_encode
    linkageType: ''
    returnType: void
    signature: "void auth_answer_encode(struct query_info* qinfo, struct module_env*
      env,\n\tstruct edns_data* edns, struct comm_reply* repinfo, sldns_buffer* buf,\n\tstruct
      regional* temp, struct dns_msg* msg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inplace_cb_reply_local_call
      Src: /src/unbound/services/authzone.c:3644,1
    - Dst: error_encode
      Src: /src/unbound/services/authzone.c:3647,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:3648,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/services/authzone.c:3649,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 7
    argNames:
    - qinfo
    - env
    - edns
    - repinfo
    - buf
    - temp
    - rcode
    argTypes:
    - struct query_info*
    - struct module_env*
    - struct edns_data*
    - struct comm_reply*
    - sldns_buffer*
    - struct regional*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3650
      start: 3634
    functionDepth: 4
    functionLinenumber: 3634
    functionLinenumberEnd: 3650
    functionName: auth_error_encode
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_read_u16_at
    - error_encode
    - inplace_cb_reply_local_call
    - sldns_buffer_begin
    linkageType: ''
    returnType: void
    signature: "void auth_error_encode(struct query_info* qinfo, struct module_env*
      env,\n\tstruct edns_data* edns, struct comm_reply* repinfo, sldns_buffer* buf,\n\tstruct
      regional* temp, int rcode)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:3664,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3667,1
    - Dst: dname_remove_label
      Src: /src/unbound/services/authzone.c:3674,1
    - Dst: auth_zones_find_zone
      Src: /src/unbound/services/authzone.c:3675,1
    - Dst: local_alias_shallow_copy_qname
      Src: /src/unbound/services/authzone.c:3678,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3681,1
    - Dst: auth_zones_find_zone
      Src: /src/unbound/services/authzone.c:3684,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3689,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:3692,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3693,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3695,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3700,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3703,1
    - Dst: auth_error_encode
      Src: /src/unbound/services/authzone.c:3705,1
    - Dst: auth_zone_generate_answer
      Src: /src/unbound/services/authzone.c:3711,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3712,1
    - Dst: auth_error_encode
      Src: /src/unbound/services/authzone.c:3721,1
    - Dst: auth_answer_encode
      Src: /src/unbound/services/authzone.c:3723,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 46
    argCount: 7
    argNames:
    - az
    - env
    - qinfo
    - edns
    - repinfo
    - buf
    - temp
    argTypes:
    - struct auth_zones*
    - struct module_env*
    - struct query_info*
    - struct edns_data*
    - struct comm_reply*
    - struct sldns_buffer*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3726
      start: 3652
    functionDepth: 12
    functionLinenumber: 3652
    functionLinenumberEnd: 3726
    functionName: auth_zones_downstream_answer
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 1
    functionsReached:
    - local_alias_shallow_copy_qname
    - lock_rw_unlock
    - dname_remove_label
    - auth_zone_generate_answer
    - auth_zones_find_zone
    - lock_rw_rdlock
    - auth_answer_encode
    - auth_error_encode
    linkageType: ''
    returnType: int
    signature: "int auth_zones_downstream_answer(struct auth_zones* az, struct module_env*
      env,\n\tstruct query_info* qinfo, struct edns_data* edns,\n\tstruct comm_reply*
      repinfo, struct sldns_buffer* buf,\n\tstruct regional* temp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:3733,1
    - Dst: auth_zone_find
      Src: /src/unbound/services/authzone.c:3734,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3736,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:3740,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3741,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3743,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - az
    - nm
    - nmlen
    - dclass
    argTypes:
    - struct auth_zones*
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3745
      start: 3728
    functionDepth: 2
    functionLinenumber: 3728
    functionLinenumberEnd: 3745
    functionName: auth_zones_can_fallback
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_zone_find
    - lock_rw_unlock
    - lock_rw_rdlock
    linkageType: ''
    returnType: int
    signature: "int auth_zones_can_fallback(struct auth_zones* az, uint8_t* nm, size_t
      nmlen,\n\tuint16_t dclass)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/authzone.c:3752,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/services/authzone.c:3753,1
    - Dst: query_info_parse
      Src: /src/unbound/services/authzone.c:3754,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/services/authzone.c:3755,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:3755,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:3757,1
    - Dst: pkt_dname_len
      Src: /src/unbound/services/authzone.c:3758,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:3760,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:3762,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/services/authzone.c:3763,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/services/authzone.c:3764,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:3765,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:3766,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/services/authzone.c:3768,1
    - Dst: sldns_buffer_read_u32
      Src: /src/unbound/services/authzone.c:3769,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - pkt
    - serial
    argTypes:
    - sldns_buffer*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3772
      start: 3747
    functionDepth: 5
    functionLinenumber: 3747
    functionLinenumberEnd: 3772
    functionName: auth_zone_parse_notify_serial
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 1
    functionsReached:
    - sldns_buffer_remaining
    - LDNS_ANCOUNT
    - sldns_buffer_skip
    - sldns_buffer_read_u16
    - sldns_buffer_set_position
    - sldns_buffer_begin
    - memset
    - sldns_buffer_read_u32
    - query_info_parse
    - pkt_dname_len
    linkageType: ''
    returnType: int
    signature: int auth_zone_parse_notify_serial(sldns_buffer* pkt, uint32_t *serial)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: addr_is_ip6
      Src: /src/unbound/services/authzone.c:3779,1
    - Dst: ntohs
      Src: /src/unbound/services/authzone.c:3781,1
    - Dst: ntohs
      Src: /src/unbound/services/authzone.c:3784,1
    - Dst: addr_to_str
      Src: /src/unbound/services/authzone.c:3788,1
    - Dst: addr_to_str
      Src: /src/unbound/services/authzone.c:3792,1
    - Dst: snprintf
      Src: /src/unbound/services/authzone.c:3793,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - addr
    - addrlen
    - buf
    - len
    argTypes:
    - struct sockaddr_storage*
    - socklen_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3795
      start: 3775
    functionDepth: 2
    functionLinenumber: 3775
    functionLinenumberEnd: 3795
    functionName: addr_port_to_str
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - snprintf
    - addr_to_str
    - addr_is_ip6
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void addr_port_to_str(struct sockaddr_storage* addr, socklen_t addrlen,\n\tchar*
      buf, size_t len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sockaddr_cmp_addr
      Src: /src/unbound/services/authzone.c:3804,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - list
    - addr
    - addrlen
    argTypes:
    - struct auth_addr*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3808
      start: 3798
    functionDepth: 1
    functionLinenumber: 3798
    functionLinenumberEnd: 3808
    functionName: addr_in_list
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sockaddr_cmp_addr
    linkageType: ''
    returnType: int
    signature: "int addr_in_list(struct auth_addr* list, struct sockaddr_storage*
      addr,\n\tsocklen_t addrlen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: addr_in_list
      Src: /src/unbound/services/authzone.c:3819,1
    - Dst: extstrtoaddr
      Src: /src/unbound/services/authzone.c:3826,1
    - Dst: sockaddr_cmp_addr
      Src: /src/unbound/services/authzone.c:3827,1
    - Dst: strchr
      Src: /src/unbound/services/authzone.c:3834,1
    - Dst: strchr
      Src: /src/unbound/services/authzone.c:3835,1
    - Dst: strrchr
      Src: /src/unbound/services/authzone.c:3835,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/services/authzone.c:3836,1
    - Dst: addr_in_common
      Src: /src/unbound/services/authzone.c:3838,1
    - Dst: addr_is_ip6
      Src: /src/unbound/services/authzone.c:3838,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 4
    argNames:
    - master
    - addr
    - addrlen
    - fromhost
    argTypes:
    - struct auth_master*
    - struct sockaddr_storage*
    - socklen_t
    - struct auth_master**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3846
      start: 3812
    functionDepth: 2
    functionLinenumber: 3812
    functionLinenumberEnd: 3846
    functionName: addr_matches_master
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - addr_in_list
    - netblockstrtoaddr
    - strrchr
    - extstrtoaddr
    - addr_in_common
    - addr_is_ip6
    - strchr
    - sockaddr_cmp_addr
    linkageType: ''
    returnType: int
    signature: "int addr_matches_master(struct auth_master* master, struct sockaddr_storage*
      addr,\n\tsocklen_t addrlen, struct auth_master** fromhost)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: addr_matches_master
      Src: /src/unbound/services/authzone.c:3855,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - xfr
    - addr
    - addrlen
    - fromhost
    argTypes:
    - struct auth_xfer*
    - struct sockaddr_storage*
    - socklen_t
    - struct auth_master**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3860
      start: 3849
    functionDepth: 3
    functionLinenumber: 3849
    functionLinenumberEnd: 3860
    functionName: az_xfr_allowed_notify
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - addr_matches_master
    linkageType: ''
    returnType: int
    signature: "int az_xfr_allowed_notify(struct auth_xfer* xfr, struct sockaddr_storage*
      addr,\n\tsocklen_t addrlen, struct auth_master** fromhost)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: compare_serial
      Src: /src/unbound/services/authzone.c:3872,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - xfr
    - serial
    argTypes:
    - struct auth_xfer*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3876
      start: 3864
    functionDepth: 1
    functionLinenumber: 3864
    functionLinenumberEnd: 3876
    functionName: xfr_serial_means_update
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - compare_serial
    linkageType: ''
    returnType: int
    signature: int xfr_serial_means_update(struct auth_xfer* xfr, uint32_t serial)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: compare_serial
      Src: /src/unbound/services/authzone.c:3884,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 3
    argNames:
    - xfr
    - has_serial
    - serial
    argTypes:
    - struct auth_xfer*
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3900
      start: 3879
    functionDepth: 1
    functionLinenumber: 3879
    functionLinenumberEnd: 3900
    functionName: xfr_note_notify_serial
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - compare_serial
    linkageType: ''
    returnType: void
    signature: void xfr_note_notify_serial(struct auth_xfer* xfr, int has_serial,
      uint32_t serial)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: xfr_serial_means_update
      Src: /src/unbound/services/authzone.c:3909,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:3910,1
    - Dst: xfr_start_probe
      Src: /src/unbound/services/authzone.c:3920,1
    - Dst: xfr_note_notify_serial
      Src: /src/unbound/services/authzone.c:3922,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:3923,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 5
    argNames:
    - xfr
    - env
    - has_serial
    - serial
    - fromhost
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    - int
    - uint32_t
    - struct auth_master*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3926
      start: 3903
    functionDepth: 2
    functionLinenumber: 3903
    functionLinenumberEnd: 3926
    functionName: xfr_process_notify
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - xfr_serial_means_update
    - lock_basic_unlock
    - xfr_note_notify_serial
    - xfr_start_probe
    linkageType: ''
    returnType: void
    signature: "void xfr_process_notify(struct auth_xfer* xfr, struct module_env*
      env,\n\tint has_serial, uint32_t serial, struct auth_master* fromhost)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:3936,1
    - Dst: auth_xfer_find
      Src: /src/unbound/services/authzone.c:3937,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3939,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:3944,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3945,1
    - Dst: az_xfr_allowed_notify
      Src: /src/unbound/services/authzone.c:3948,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:3949,1
    - Dst: xfr_process_notify
      Src: /src/unbound/services/authzone.c:3956,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 10
    argNames:
    - az
    - env
    - nm
    - nmlen
    - dclass
    - addr
    - addrlen
    - has_serial
    - serial
    - refused
    argTypes:
    - struct auth_zones*
    - struct module_env*
    - uint8_t*
    - size_t
    - uint16_t
    - struct sockaddr_storage*
    - socklen_t
    - int
    - uint32_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3958
      start: 3928
    functionDepth: 4
    functionLinenumber: 3928
    functionLinenumberEnd: 3958
    functionName: auth_zones_notify
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 1
    functionsReached:
    - xfr_process_notify
    - lock_basic_unlock
    - lock_rw_unlock
    - az_xfr_allowed_notify
    - lock_basic_lock
    - auth_xfer_find
    - lock_rw_rdlock
    linkageType: ''
    returnType: int
    signature: "int auth_zones_notify(struct auth_zones* az, struct module_env* env,\n\tuint8_t*
      nm, size_t nmlen, uint16_t dclass,\n\tstruct sockaddr_storage* addr, socklen_t
      addrlen, int has_serial,\n\tuint32_t serial, int* refused)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:3964,1
    - Dst: auth_xfer_find
      Src: /src/unbound/services/authzone.c:3965,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3967,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:3970,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3971,1
    - Dst: xfr_process_notify
      Src: /src/unbound/services/authzone.c:3973,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 5
    argNames:
    - az
    - env
    - nm
    - nmlen
    - dclass
    argTypes:
    - struct auth_zones*
    - struct module_env*
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3975
      start: 3960
    functionDepth: 3
    functionLinenumber: 3960
    functionLinenumberEnd: 3975
    functionName: auth_zones_startprobesequence
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 1
    functionsReached:
    - xfr_process_notify
    - lock_rw_unlock
    - lock_basic_lock
    - auth_xfer_find
    - lock_rw_rdlock
    linkageType: ''
    returnType: int
    signature: "int auth_zones_startprobesequence(struct auth_zones* az,\n\tstruct
      module_env* env, uint8_t* nm, size_t nmlen, uint16_t dclass)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:3985,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:3987,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:3990,1
    - Dst: auth_zone_find
      Src: /src/unbound/services/authzone.c:3991,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3994,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:3997,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:3998,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:4002,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 3
    argNames:
    - xfr
    - env
    - expired
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4003
      start: 3978
    functionDepth: 2
    functionLinenumber: 3978
    functionLinenumberEnd: 4003
    functionName: auth_xfer_set_expired
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_zone_find
    - lock_basic_unlock
    - lock_rw_unlock
    - lock_rw_wrlock
    - lock_basic_lock
    - lock_rw_rdlock
    linkageType: ''
    returnType: void
    signature: "void auth_xfer_set_expired(struct auth_xfer* xfr, struct module_env*
      env,\n\tint expired)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/services/authzone.c:4011,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - list
    - host
    argTypes:
    - struct auth_master*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4015
      start: 4006
    functionDepth: 0
    functionLinenumber: 4006
    functionLinenumberEnd: 4015
    functionName: find_master_by_host
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct auth_master
    signature: 'struct auth_master *

      find_master_by_host(struct auth_master* list, char* host)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_free_master_addrs
      Src: /src/unbound/services/authzone.c:4024,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct auth_master*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4028
      start: 4018
    functionDepth: 2
    functionLinenumber: 4018
    functionLinenumberEnd: 4028
    functionName: xfr_masterlist_free_addrs
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_free_master_addrs
    linkageType: ''
    returnType: void
    signature: void xfr_masterlist_free_addrs(struct auth_master* list)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memdup
      Src: /src/unbound/services/authzone.c:4037,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:4039,1
    - Dst: auth_free_master_addrs
      Src: /src/unbound/services/authzone.c:4040,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - source
    argTypes:
    - struct auth_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4049
      start: 4031
    functionDepth: 2
    functionLinenumber: 4031
    functionLinenumberEnd: 4049
    functionName: auth_addr_list_copy
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - memdup
    - auth_free_master_addrs
    linkageType: ''
    returnType: struct auth_addr
    signature: 'struct auth_addr *

      auth_addr_list_copy(struct auth_addr* source)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memdup
      Src: /src/unbound/services/authzone.c:4057,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:4059,1
    - Dst: strdup
      Src: /src/unbound/services/authzone.c:4064,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:4066,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:4067,1
    - Dst: strdup
      Src: /src/unbound/services/authzone.c:4072,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:4074,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:4075,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:4076,1
    - Dst: auth_addr_list_copy
      Src: /src/unbound/services/authzone.c:4081,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:4083,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:4084,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:4085,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 1
    argNames:
    - o
    argTypes:
    - struct auth_master*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4090
      start: 4052
    functionDepth: 3
    functionLinenumber: 4052
    functionLinenumberEnd: 4090
    functionName: auth_master_copy
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - auth_addr_list_copy
    - free
    - memdup
    - strdup
    linkageType: ''
    returnType: struct auth_master
    signature: 'struct auth_master *

      auth_master_copy(struct auth_master* o)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_copy
      Src: /src/unbound/services/authzone.c:4097,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - p
    - list
    - last
    argTypes:
    - struct auth_master*
    - struct auth_master**
    - struct auth_master**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4106
      start: 4093
    functionDepth: 4
    functionLinenumber: 4093
    functionLinenumberEnd: 4106
    functionName: auth_master_copy_and_append
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_master_copy
    linkageType: ''
    returnType: int
    signature: "int auth_master_copy_and_append(struct auth_master* p, struct auth_master**
      list,\n\tstruct auth_master** last)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_copy_and_append
      Src: /src/unbound/services/authzone.c:4119,1
    - Dst: auth_free_masters
      Src: /src/unbound/services/authzone.c:4120,1
    - Dst: auth_master_copy_and_append
      Src: /src/unbound/services/authzone.c:4132,1
    - Dst: auth_free_masters
      Src: /src/unbound/services/authzone.c:4133,1
    - Dst: auth_free_masters
      Src: /src/unbound/services/authzone.c:4139,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - xfr
    argTypes:
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4141
      start: 4110
    functionDepth: 5
    functionLinenumber: 4110
    functionLinenumberEnd: 4141
    functionName: probe_copy_masters_for_allow_notify
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 1
    functionsReached:
    - auth_master_copy_and_append
    - auth_free_masters
    linkageType: ''
    returnType: void
    signature: void probe_copy_masters_for_allow_notify(struct auth_xfer* xfr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr_masterlist_free_addrs
      Src: /src/unbound/services/authzone.c:4149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - xfr
    argTypes:
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4154
      start: 4144
    functionDepth: 3
    functionLinenumber: 4144
    functionLinenumberEnd: 4154
    functionName: xfr_transfer_start_lookups
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - xfr_masterlist_free_addrs
    linkageType: ''
    returnType: void
    signature: void xfr_transfer_start_lookups(struct auth_xfer* xfr)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - xfr
    - env
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4172
      start: 4157
    functionDepth: 0
    functionLinenumber: 4157
    functionLinenumberEnd: 4172
    functionName: xfr_transfer_move_to_next_lookup
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void xfr_transfer_move_to_next_lookup(struct auth_xfer* xfr, struct
      module_env* env)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xfr_masterlist_free_addrs
      Src: /src/unbound/services/authzone.c:4180,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - xfr
    argTypes:
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4185
      start: 4175
    functionDepth: 3
    functionLinenumber: 4175
    functionLinenumberEnd: 4185
    functionName: xfr_probe_start_lookups
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - xfr_masterlist_free_addrs
    linkageType: ''
    returnType: void
    signature: void xfr_probe_start_lookups(struct auth_xfer* xfr)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - xfr
    - env
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4202
      start: 4188
    functionDepth: 0
    functionLinenumber: 4188
    functionLinenumberEnd: 4202
    functionName: xfr_probe_move_to_next_lookup
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void xfr_probe_move_to_next_lookup(struct auth_xfer* xfr, struct module_env*
      env)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: find_master_by_host
      Src: /src/unbound/services/authzone.c:4209,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - xfr
    - spec
    argTypes:
    - struct auth_xfer*
    - struct auth_master*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4229
      start: 4205
    functionDepth: 1
    functionLinenumber: 4205
    functionLinenumberEnd: 4229
    functionName: xfr_transfer_start_list
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - find_master_by_host
    linkageType: ''
    returnType: void
    signature: void xfr_transfer_start_list(struct auth_xfer* xfr, struct auth_master*
      spec)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: find_master_by_host
      Src: /src/unbound/services/authzone.c:4236,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - xfr
    - spec
    argTypes:
    - struct auth_xfer*
    - struct auth_master*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4255
      start: 4232
    functionDepth: 1
    functionLinenumber: 4232
    functionLinenumberEnd: 4255
    functionName: xfr_probe_start_list
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - find_master_by_host
    linkageType: ''
    returnType: void
    signature: void xfr_probe_start_list(struct auth_xfer* xfr, struct auth_master*
      spec)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - xfr
    argTypes:
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4264
      start: 4258
    functionDepth: 0
    functionLinenumber: 4258
    functionLinenumberEnd: 4264
    functionName: xfr_transfer_current_master
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct auth_master
    signature: 'struct auth_master *

      xfr_transfer_current_master(struct auth_xfer* xfr)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - xfr
    argTypes:
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4273
      start: 4267
    functionDepth: 0
    functionLinenumber: 4267
    functionLinenumberEnd: 4273
    functionName: xfr_probe_current_master
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct auth_master
    signature: 'struct auth_master *

      xfr_probe_current_master(struct auth_xfer* xfr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - xfr
    argTypes:
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4281
      start: 4276
    functionDepth: 0
    functionLinenumber: 4276
    functionLinenumberEnd: 4281
    functionName: xfr_transfer_end_of_list
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int xfr_transfer_end_of_list(struct auth_xfer* xfr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - xfr
    argTypes:
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4288
      start: 4284
    functionDepth: 0
    functionLinenumber: 4284
    functionLinenumberEnd: 4288
    functionName: xfr_probe_end_of_list
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int xfr_probe_end_of_list(struct auth_xfer* xfr)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 1
    argNames:
    - xfr
    argTypes:
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4320
      start: 4291
    functionDepth: 0
    functionLinenumber: 4291
    functionLinenumberEnd: 4320
    functionName: xfr_transfer_nextmaster
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void xfr_transfer_nextmaster(struct auth_xfer* xfr)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 1
    argNames:
    - xfr
    argTypes:
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4350
      start: 4323
    functionDepth: 0
    functionLinenumber: 4323
    functionLinenumberEnd: 4350
    functionName: xfr_probe_nextmaster
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void xfr_probe_nextmaster(struct auth_xfer* xfr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/authzone.c:4359,1
    - Dst: qinfo_query_encode
      Src: /src/unbound/services/authzone.c:4364,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/services/authzone.c:4365,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - xfr
    - buf
    - id
    argTypes:
    - struct auth_xfer*
    - sldns_buffer*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4366
      start: 4353
    functionDepth: 4
    functionLinenumber: 4353
    functionLinenumberEnd: 4366
    functionName: xfr_create_soa_probe_packet
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - memset
    - sldns_buffer_write_u16_at
    - qinfo_query_encode
    linkageType: ''
    returnType: void
    signature: "void xfr_create_soa_probe_packet(struct auth_xfer* xfr, sldns_buffer*
      buf, \n\tuint16_t id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/authzone.c:4379,1
    - Dst: qinfo_query_encode
      Src: /src/unbound/services/authzone.c:4406,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/services/authzone.c:4407,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/authzone.c:4411,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/authzone.c:4412,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/services/authzone.c:4413,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/services/authzone.c:4415,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/services/authzone.c:4417,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/services/authzone.c:4418,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/services/authzone.c:4419,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/services/authzone.c:4420,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/services/authzone.c:4421,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/services/authzone.c:4422,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/services/authzone.c:4423,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/services/authzone.c:4424,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/services/authzone.c:4425,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/services/authzone.c:4426,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/services/authzone.c:4427,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/services/authzone.c:4428,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/services/authzone.c:4429,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/authzone.c:4430,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 4
    argNames:
    - xfr
    - buf
    - id
    - master
    argTypes:
    - struct auth_xfer*
    - sldns_buffer*
    - uint16_t
    - struct auth_master*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4432
      start: 4369
    functionDepth: 5
    functionLinenumber: 4369
    functionLinenumberEnd: 4432
    functionName: xfr_create_ixfr_packet
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_flip
    - sldns_buffer_limit
    - sldns_buffer_clear
    - sldns_buffer_write_u16
    - sldns_buffer_set_position
    - sldns_buffer_write_u32
    - memset
    - sldns_buffer_write_u8
    - sldns_buffer_write_u16_at
    - qinfo_query_encode
    linkageType: ''
    returnType: void
    signature: "void xfr_create_ixfr_packet(struct auth_xfer* xfr, sldns_buffer* buf,
      uint16_t id,\n\tstruct auth_master* master)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/authzone.c:4442,1
    - Dst: LDNS_ID_WIRE
      Src: /src/unbound/services/authzone.c:4446,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:4446,1
    - Dst: LDNS_QR_WIRE
      Src: /src/unbound/services/authzone.c:4450,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:4450,1
    - Dst: LDNS_OPCODE_WIRE
      Src: /src/unbound/services/authzone.c:4452,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:4452,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/authzone.c:4454,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:4454,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/services/authzone.c:4458,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:4458,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/services/authzone.c:4460,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:4461,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/authzone.c:4463,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/services/authzone.c:4463,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/services/authzone.c:4465,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:4468,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:4470,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:4472,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/services/authzone.c:4478,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:4478,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:4481,1
    - Dst: dname_pkt_compare
      Src: /src/unbound/services/authzone.c:4483,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/services/authzone.c:4483,1
    - Dst: pkt_dname_len
      Src: /src/unbound/services/authzone.c:4486,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:4489,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:4491,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:4493,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/services/authzone.c:4495,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:4496,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:4497,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:4499,1
    - Dst: pkt_dname_len
      Src: /src/unbound/services/authzone.c:4501,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:4503,1
    - Dst: pkt_dname_len
      Src: /src/unbound/services/authzone.c:4505,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:4507,1
    - Dst: sldns_buffer_read_u32
      Src: /src/unbound/services/authzone.c:4509,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 57
    argCount: 4
    argNames:
    - pkt
    - qtype
    - xfr
    - serial
    argTypes:
    - sldns_buffer*
    - uint16_t
    - struct auth_xfer*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4512
      start: 4435
    functionDepth: 5
    functionLinenumber: 4435
    functionLinenumberEnd: 4512
    functionName: check_packet_ok
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - LDNS_ANCOUNT
    - sldns_buffer_skip
    - LDNS_QDCOUNT
    - sldns_buffer_limit
    - sldns_buffer_read_u16
    - LDNS_RCODE_WIRE
    - query_dname_compare
    - sldns_buffer_begin
    - sldns_buffer_current
    - LDNS_QR_WIRE
    - sldns_buffer_read_u32
    - LDNS_OPCODE_WIRE
    - dname_pkt_compare
    - pkt_dname_len
    - LDNS_ID_WIRE
    linkageType: ''
    returnType: int
    signature: "int check_packet_ok(sldns_buffer* pkt, uint16_t qtype, struct auth_xfer*
      xfr,\n\tuint32_t* serial)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:4527,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:4529,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/services/authzone.c:4533,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - chunk
    - chunk_pos
    - buf
    argTypes:
    - struct auth_chunk**
    - size_t*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4547
      start: 4515
    functionDepth: 5
    functionLinenumber: 4515
    functionLinenumberEnd: 4547
    functionName: chunkline_get_line
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - verbose
    - sldns_buffer_write_u8
    linkageType: ''
    returnType: int
    signature: "int chunkline_get_line(struct auth_chunk** chunk, size_t* chunk_pos,\n\tsldns_buffer*
      buf)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:4553,1
    - Dst: sldns_buffer_read_u8_at
      Src: /src/unbound/services/authzone.c:4559,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 18
    argCount: 2
    argNames:
    - buf
    - start
    argTypes:
    - sldns_buffer*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4577
      start: 4550
    functionDepth: 4
    functionLinenumber: 4550
    functionLinenumberEnd: 4577
    functionName: chunkline_count_parens
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_read_u8_at
    linkageType: ''
    returnType: int
    signature: int chunkline_count_parens(sldns_buffer* buf, size_t start)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:4583,1
    - Dst: sldns_buffer_read_u8_at
      Src: /src/unbound/services/authzone.c:4588,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/services/authzone.c:4597,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 14
    argCount: 2
    argNames:
    - buf
    - start
    argTypes:
    - sldns_buffer*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4603
      start: 4580
    functionDepth: 4
    functionLinenumber: 4580
    functionLinenumberEnd: 4603
    functionName: chunkline_remove_trailcomment
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_set_position
    - sldns_buffer_read_u8_at
    linkageType: ''
    returnType: void
    signature: void chunkline_remove_trailcomment(sldns_buffer* buf, size_t start)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/authzone.c:4609,1
    - Dst: sldns_buffer_read_u8_at
      Src: /src/unbound/services/authzone.c:4611,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - buf
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4618
      start: 4606
    functionDepth: 4
    functionLinenumber: 4606
    functionLinenumberEnd: 4618
    functionName: chunkline_is_comment_line_or_empty
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_limit
    - sldns_buffer_read_u8_at
    linkageType: ''
    returnType: int
    signature: int chunkline_is_comment_line_or_empty(sldns_buffer* buf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/authzone.c:4627,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:4628,1
    - Dst: chunkline_get_line
      Src: /src/unbound/services/authzone.c:4629,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:4630,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/authzone.c:4630,1
    - Dst: sldns_buffer_write_u8_at
      Src: /src/unbound/services/authzone.c:4631,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:4631,1
    - Dst: sldns_buffer_write_u8_at
      Src: /src/unbound/services/authzone.c:4632,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:4632,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/authzone.c:4633,1
    - Dst: chunkline_count_parens
      Src: /src/unbound/services/authzone.c:4636,1
    - Dst: chunkline_remove_trailcomment
      Src: /src/unbound/services/authzone.c:4638,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:4639,1
    - Dst: chunkline_get_line
      Src: /src/unbound/services/authzone.c:4640,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:4641,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/authzone.c:4641,1
    - Dst: sldns_buffer_write_u8_at
      Src: /src/unbound/services/authzone.c:4642,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:4642,1
    - Dst: sldns_buffer_write_u8_at
      Src: /src/unbound/services/authzone.c:4643,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:4643,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/authzone.c:4644,1
    - Dst: chunkline_count_parens
      Src: /src/unbound/services/authzone.c:4647,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:4650,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:4651,1
    - Dst: sldns_buffer_write_u8_at
      Src: /src/unbound/services/authzone.c:4655,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:4655,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/services/authzone.c:4656,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 3
    argNames:
    - chunk
    - chunk_pos
    - buf
    argTypes:
    - struct auth_chunk**
    - size_t*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4658
      start: 4621
    functionDepth: 6
    functionLinenumber: 4621
    functionLinenumberEnd: 4658
    functionName: chunkline_get_line_collated
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_remaining
    - verbose
    - chunkline_get_line
    - sldns_buffer_flip
    - sldns_buffer_limit
    - sldns_buffer_clear
    - chunkline_remove_trailcomment
    - sldns_buffer_write_u8_at
    - chunkline_count_parens
    linkageType: ''
    returnType: int
    signature: "int chunkline_get_line_collated(struct auth_chunk** chunk, size_t*
      chunk_pos,\n\tsldns_buffer* buf)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:4664,1
    - Dst: strncmp
      Src: /src/unbound/services/authzone.c:4665,1
    - Dst: isspace
      Src: /src/unbound/services/authzone.c:4666,1
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/services/authzone.c:4669,1
    - Dst: sldns_strip_ws
      Src: /src/unbound/services/authzone.c:4669,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - buf
    - pstate
    argTypes:
    - sldns_buffer*
    - struct sldns_file_parse_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4678
      start: 4661
    functionDepth: 3
    functionLinenumber: 4661
    functionLinenumberEnd: 4678
    functionName: http_parse_origin
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - strncmp
    - isspace
    - sldns_strip_ws
    - sldns_str2wire_dname_buf
    - sldns_buffer_begin
    linkageType: ''
    returnType: int
    signature: int http_parse_origin(sldns_buffer* buf, struct sldns_file_parse_state*
      pstate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:4684,1
    - Dst: strncmp
      Src: /src/unbound/services/authzone.c:4685,1
    - Dst: isspace
      Src: /src/unbound/services/authzone.c:4686,1
    - Dst: sldns_str2period
      Src: /src/unbound/services/authzone.c:4689,1
    - Dst: sldns_strip_ws
      Src: /src/unbound/services/authzone.c:4690,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - buf
    - pstate
    argTypes:
    - sldns_buffer*
    - struct sldns_file_parse_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4697
      start: 4681
    functionDepth: 2
    functionLinenumber: 4681
    functionLinenumberEnd: 4697
    functionName: http_parse_ttl
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - strncmp
    - sldns_str2period
    - isspace
    - sldns_strip_ws
    - sldns_buffer_begin
    linkageType: ''
    returnType: int
    signature: int http_parse_ttl(sldns_buffer* buf, struct sldns_file_parse_state*
      pstate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/authzone.c:4703,1
    - Dst: sldns_buffer_read_u8_at
      Src: /src/unbound/services/authzone.c:4705,1
    - Dst: sldns_buffer_write_u8_at
      Src: /src/unbound/services/authzone.c:4707,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/services/authzone.c:4708,1
    - Dst: sldns_buffer_write_u8_at
      Src: /src/unbound/services/authzone.c:4712,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - buf
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4714
      start: 4700
    functionDepth: 4
    functionLinenumber: 4700
    functionLinenumberEnd: 4714
    functionName: chunkline_newline_removal
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_set_limit
    - sldns_buffer_write_u8_at
    - sldns_buffer_limit
    - sldns_buffer_read_u8_at
    linkageType: ''
    returnType: void
    signature: void chunkline_newline_removal(sldns_buffer* buf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: chunkline_get_line_collated
      Src: /src/unbound/services/authzone.c:4722,1
    - Dst: chunkline_newline_removal
      Src: /src/unbound/services/authzone.c:4723,1
    - Dst: chunkline_is_comment_line_or_empty
      Src: /src/unbound/services/authzone.c:4724,1
    - Dst: http_parse_origin
      Src: /src/unbound/services/authzone.c:4728,1
    - Dst: http_parse_ttl
      Src: /src/unbound/services/authzone.c:4733,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 4
    argNames:
    - chunk
    - chunk_pos
    - buf
    - pstate
    argTypes:
    - struct auth_chunk**
    - size_t*
    - sldns_buffer*
    - struct sldns_file_parse_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4742
      start: 4717
    functionDepth: 7
    functionLinenumber: 4717
    functionLinenumberEnd: 4742
    functionName: chunkline_non_comment_RR
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - http_parse_ttl
    - chunkline_newline_removal
    - http_parse_origin
    - chunkline_is_comment_line_or_empty
    - chunkline_get_line_collated
    linkageType: ''
    returnType: int
    signature: "int chunkline_non_comment_RR(struct auth_chunk** chunk, size_t* chunk_pos,\n\tsldns_buffer*
      buf, struct sldns_file_parse_state* pstate)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/authzone.c:4756,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:4760,1
    - Dst: chunkline_non_comment_RR
      Src: /src/unbound/services/authzone.c:4764,1
    - Dst: sldns_str2wire_rr_buf
      Src: /src/unbound/services/authzone.c:4768,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:4768,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:4773,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/services/authzone.c:4774,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/services/authzone.c:4775,1
    - Dst: LDNS_WIREPARSE_ERROR
      Src: /src/unbound/services/authzone.c:4775,1
    - Dst: sldns_wirerr_get_class
      Src: /src/unbound/services/authzone.c:4779,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:4780,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - xfr
    - buf
    argTypes:
    - struct auth_xfer*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4785
      start: 4747
    functionDepth: 8
    functionLinenumber: 4747
    functionLinenumberEnd: 4785
    functionName: http_zonefile_syntax_check
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - memmove
    - sldns_str2wire_rr_buf
    - chunkline_non_comment_RR
    - LDNS_WIREPARSE_ERROR
    - LDNS_WIREPARSE_OFFSET
    - sldns_get_errorstr_parse
    - sldns_buffer_begin
    - memset
    - sldns_wirerr_get_class
    linkageType: ''
    returnType: int
    signature: int http_zonefile_syntax_check(struct auth_xfer* xfr, sldns_buffer*
      buf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct auth_chunk*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4797
      start: 4788
    functionDepth: 0
    functionLinenumber: 4788
    functionLinenumberEnd: 4797
    functionName: chunklist_sum
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t chunklist_sum(struct auth_chunk* list)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:4807,1
    - Dst: sldns_str2wire_rr_buf
      Src: /src/unbound/services/authzone.c:4809,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:4814,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/services/authzone.c:4817,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/services/authzone.c:4818,1
    - Dst: LDNS_WIREPARSE_ERROR
      Src: /src/unbound/services/authzone.c:4818,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:4827,1
    - Dst: az_insert_rr
      Src: /src/unbound/services/authzone.c:4831,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - xfr
    - z
    - buf
    - pstate
    argTypes:
    - struct auth_xfer*
    - struct auth_zone*
    - sldns_buffer*
    - struct sldns_file_parse_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4832
      start: 4800
    functionDepth: 7
    functionLinenumber: 4800
    functionLinenumberEnd: 4832
    functionName: http_parse_add_rr
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - memmove
    - sldns_str2wire_rr_buf
    - LDNS_WIREPARSE_ERROR
    - LDNS_WIREPARSE_OFFSET
    - sldns_get_errorstr_parse
    - sldns_buffer_begin
    - az_insert_rr
    linkageType: ''
    returnType: int
    signature: "int http_parse_add_rr(struct auth_xfer* xfr, struct auth_zone* z,\n\tsldns_buffer*
      buf, struct sldns_file_parse_state* pstate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 4
    argNames:
    - xfr
    - rr_chunk
    - rr_num
    - rr_pos
    argTypes:
    - struct auth_xfer*
    - struct auth_chunk**
    - int*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4843
      start: 4836
    functionDepth: 0
    functionLinenumber: 4836
    functionLinenumberEnd: 4843
    functionName: chunk_rrlist_start
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void chunk_rrlist_start(struct auth_xfer* xfr, struct auth_chunk**
      rr_chunk,\n\tint* rr_num, size_t* rr_pos)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/services/authzone.c:4852,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - rr_chunk
    - rr_num
    argTypes:
    - struct auth_chunk*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4860
      start: 4846
    functionDepth: 1
    functionLinenumber: 4846
    functionLinenumberEnd: 4860
    functionName: chunk_rrlist_end
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - LDNS_ANCOUNT
    linkageType: ''
    returnType: int
    signature: int chunk_rrlist_end(struct auth_chunk* rr_chunk, int rr_num)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/services/authzone.c:4872,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/services/authzone.c:4885,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 4
    argNames:
    - rr_chunk
    - rr_num
    - rr_pos
    - rr_nextpos
    argTypes:
    - struct auth_chunk**
    - int*
    - size_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4890
      start: 4863
    functionDepth: 1
    functionLinenumber: 4863
    functionLinenumberEnd: 4890
    functionName: chunk_rrlist_gonext
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - LDNS_ANCOUNT
    linkageType: ''
    returnType: void
    signature: "void chunk_rrlist_gonext(struct auth_chunk** rr_chunk, int* rr_num,\n\tsize_t*
      rr_pos, size_t rr_nextpos)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/services/authzone.c:4903,1
    - Dst: sldns_buffer_init_frm_data
      Src: /src/unbound/services/authzone.c:4907,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/services/authzone.c:4911,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/services/authzone.c:4912,1
    - Dst: pkt_dname_len
      Src: /src/unbound/services/authzone.c:4913,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:4914,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/services/authzone.c:4915,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/services/authzone.c:4918,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/services/authzone.c:4920,1
    - Dst: pkt_dname_len
      Src: /src/unbound/services/authzone.c:4921,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:4922,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:4923,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:4924,1
    - Dst: sldns_buffer_read_u32
      Src: /src/unbound/services/authzone.c:4925,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:4926,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:4927,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/services/authzone.c:4928,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/services/authzone.c:4929,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:4930,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 10
    argNames:
    - rr_chunk
    - rr_num
    - rr_pos
    - rr_dname
    - rr_type
    - rr_class
    - rr_ttl
    - rr_rdlen
    - rr_rdata
    - rr_nextpos
    argTypes:
    - struct auth_chunk*
    - int
    - size_t
    - uint8_t**
    - uint16_t*
    - uint16_t*
    - uint32_t*
    - uint16_t*
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4932
      start: 4893
    functionDepth: 5
    functionLinenumber: 4893
    functionLinenumberEnd: 4932
    functionName: chunk_rrlist_get_current
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_position
    - LDNS_ANCOUNT
    - sldns_buffer_skip
    - LDNS_QDCOUNT
    - sldns_buffer_read_u16
    - sldns_buffer_set_position
    - sldns_buffer_init_frm_data
    - sldns_buffer_current
    - sldns_buffer_read_u32
    - pkt_dname_len
    linkageType: ''
    returnType: int
    signature: "int chunk_rrlist_get_current(struct auth_chunk* rr_chunk, int rr_num,\n\tsize_t
      rr_pos, uint8_t** rr_dname, uint16_t* rr_type,\n\tuint16_t* rr_class, uint32_t*
      rr_ttl, uint16_t* rr_rdlen,\n\tuint8_t** rr_rdata, size_t* rr_nextpos)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_init_frm_data
      Src: /src/unbound/services/authzone.c:4944,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/services/authzone.c:4945,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:4946,1
    - Dst: pkt_dname_len
      Src: /src/unbound/services/authzone.c:4947,1
    - Dst: dname_pkt_copy
      Src: /src/unbound/services/authzone.c:4949,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:4950,1
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/services/authzone.c:4951,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:4952,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 5
    argNames:
    - label
    - rr_chunk
    - rr_dname
    - rr_type
    - rr_counter
    argTypes:
    - char*
    - struct auth_chunk*
    - uint8_t*
    - uint16_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4954
      start: 4935
    functionDepth: 2
    functionLinenumber: 4935
    functionLinenumberEnd: 4954
    functionName: log_rrlist_position
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - dname_pkt_copy
    - verbose
    - sldns_wire2str_type_buf
    - dname_str
    - sldns_buffer_set_position
    - sldns_buffer_init_frm_data
    - sldns_buffer_begin
    - pkt_dname_len
    linkageType: ''
    returnType: void
    signature: "void log_rrlist_position(const char* label, struct auth_chunk* rr_chunk,\n\tuint8_t*
      rr_dname, uint16_t rr_type, size_t rr_counter)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: chunk_rrlist_gonext
      Src: /src/unbound/services/authzone.c:4966,1
    - Dst: chunk_rrlist_end
      Src: /src/unbound/services/authzone.c:4967,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:4969,1
    - Dst: chunk_rrlist_get_current
      Src: /src/unbound/services/authzone.c:4972,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:4975,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:4980,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:4984,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/services/authzone.c:4987,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:4990,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:4996,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 12
    argNames:
    - rr_chunk
    - rr_num
    - rr_pos
    - rr_dname
    - rr_type
    - rr_class
    - rr_ttl
    - rr_rdlen
    - rr_rdata
    - rr_nextpos
    - transfer_serial
    - xfr_serial
    argTypes:
    - struct auth_chunk*
    - int
    - size_t
    - uint8_t*
    - uint16_t
    - uint16_t
    - uint32_t
    - uint16_t
    - uint8_t*
    - size_t
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5004
      start: 4958
    functionDepth: 6
    functionLinenumber: 4958
    functionLinenumberEnd: 5004
    functionName: ixfr_start_serial
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - verbose
    - chunk_rrlist_end
    - chunk_rrlist_gonext
    - sldns_read_uint32
    - chunk_rrlist_get_current
    linkageType: ''
    returnType: int
    signature: "int ixfr_start_serial(struct auth_chunk* rr_chunk, int rr_num, size_t
      rr_pos,\n\tuint8_t* rr_dname, uint16_t rr_type, uint16_t rr_class,\n\tuint32_t
      rr_ttl, uint16_t rr_rdlen, uint8_t* rr_rdata,\n\tsize_t rr_nextpos, uint32_t
      transfer_serial, uint32_t xfr_serial)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: chunk_rrlist_start
      Src: /src/unbound/services/authzone.c:5027,1
    - Dst: chunk_rrlist_end
      Src: /src/unbound/services/authzone.c:5028,1
    - Dst: chunk_rrlist_get_current
      Src: /src/unbound/services/authzone.c:5029,1
    - Dst: log_rrlist_position
      Src: /src/unbound/services/authzone.c:5035,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/services/authzone.c:5049,1
    - Dst: ixfr_start_serial
      Src: /src/unbound/services/authzone.c:5055,1
    - Dst: log_rrlist_position
      Src: /src/unbound/services/authzone.c:5094,1
    - Dst: az_remove_rr_decompress
      Src: /src/unbound/services/authzone.c:5099,1
    - Dst: log_rrlist_position
      Src: /src/unbound/services/authzone.c:5108,1
    - Dst: az_insert_rr_decompress
      Src: /src/unbound/services/authzone.c:5119,1
    - Dst: log_rrlist_position
      Src: /src/unbound/services/authzone.c:5128,1
    - Dst: chunk_rrlist_gonext
      Src: /src/unbound/services/authzone.c:5136,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5139,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 68
    argCount: 3
    argNames:
    - xfr
    - z
    - scratch_buffer
    argTypes:
    - struct auth_xfer*
    - struct auth_zone*
    - struct sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5143
      start: 5007
    functionDepth: 8
    functionLinenumber: 5007
    functionLinenumberEnd: 5143
    functionName: apply_ixfr
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - chunk_rrlist_start
    - az_remove_rr_decompress
    - ixfr_start_serial
    - az_insert_rr_decompress
    - verbose
    - log_rrlist_position
    - chunk_rrlist_end
    - chunk_rrlist_gonext
    - sldns_read_uint32
    - chunk_rrlist_get_current
    linkageType: ''
    returnType: int
    signature: "int apply_ixfr(struct auth_xfer* xfr, struct auth_zone* z,\n\tstruct
      sldns_buffer* scratch_buffer)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: auth_zone_clear_data
      Src: /src/unbound/services/authzone.c:5161,1
    - Dst: chunk_rrlist_start
      Src: /src/unbound/services/authzone.c:5170,1
    - Dst: chunk_rrlist_end
      Src: /src/unbound/services/authzone.c:5171,1
    - Dst: chunk_rrlist_get_current
      Src: /src/unbound/services/authzone.c:5172,1
    - Dst: log_rrlist_position
      Src: /src/unbound/services/authzone.c:5178,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/services/authzone.c:5187,1
    - Dst: az_insert_rr_decompress
      Src: /src/unbound/services/authzone.c:5191,1
    - Dst: chunk_rrlist_gonext
      Src: /src/unbound/services/authzone.c:5199,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:5202,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 3
    argNames:
    - xfr
    - z
    - scratch_buffer
    argTypes:
    - struct auth_xfer*
    - struct auth_zone*
    - struct sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5209
      start: 5146
    functionDepth: 8
    functionLinenumber: 5146
    functionLinenumberEnd: 5209
    functionName: apply_axfr
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - chunk_rrlist_start
    - log_err
    - az_insert_rr_decompress
    - log_rrlist_position
    - auth_zone_clear_data
    - chunk_rrlist_end
    - chunk_rrlist_gonext
    - sldns_read_uint32
    - chunk_rrlist_get_current
    linkageType: ''
    returnType: int
    signature: "int apply_axfr(struct auth_xfer* xfr, struct auth_zone* z,\n\tstruct
      sldns_buffer* scratch_buffer)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/authzone.c:5223,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:5227,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5231,1
    - Dst: chunklist_sum
      Src: /src/unbound/services/authzone.c:5233,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:5237,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:5241,1
    - Dst: log_info
      Src: /src/unbound/services/authzone.c:5245,1
    - Dst: http_zonefile_syntax_check
      Src: /src/unbound/services/authzone.c:5250,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:5251,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:5254,1
    - Dst: auth_zone_clear_data
      Src: /src/unbound/services/authzone.c:5258,1
    - Dst: chunkline_get_line_collated
      Src: /src/unbound/services/authzone.c:5267,1
    - Dst: chunkline_newline_removal
      Src: /src/unbound/services/authzone.c:5270,1
    - Dst: chunkline_is_comment_line_or_empty
      Src: /src/unbound/services/authzone.c:5271,1
    - Dst: http_parse_origin
      Src: /src/unbound/services/authzone.c:5275,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5277,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:5280,1
    - Dst: http_parse_ttl
      Src: /src/unbound/services/authzone.c:5285,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5287,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:5290,1
    - Dst: http_parse_add_rr
      Src: /src/unbound/services/authzone.c:5295,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5296,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:5299,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 57
    argCount: 3
    argNames:
    - xfr
    - z
    - scratch_buffer
    argTypes:
    - struct auth_xfer*
    - struct auth_zone*
    - struct sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5304
      start: 5212
    functionDepth: 9
    functionLinenumber: 5212
    functionLinenumberEnd: 5304
    functionName: apply_http
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - http_parse_ttl
    - chunklist_sum
    - memmove
    - http_parse_add_rr
    - verbose
    - chunkline_newline_removal
    - log_info
    - chunkline_is_comment_line_or_empty
    - http_parse_origin
    - auth_zone_clear_data
    - sldns_buffer_begin
    - memset
    - http_zonefile_syntax_check
    - chunkline_get_line_collated
    linkageType: ''
    returnType: int
    signature: "int apply_http(struct auth_xfer* xfr, struct auth_zone* z,\n\tstruct
      sldns_buffer* scratch_buffer)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/services/authzone.c:5312,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:5314,1
    - Dst: strerror
      Src: /src/unbound/services/authzone.c:5314,1
    - Dst: write_out
      Src: /src/unbound/services/authzone.c:5318,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:5319,1
    - Dst: fclose
      Src: /src/unbound/services/authzone.c:5320,1
    - Dst: fclose
      Src: /src/unbound/services/authzone.c:5324,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - xfr
    - fname
    argTypes:
    - struct auth_xfer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5326
      start: 5307
    functionDepth: 2
    functionLinenumber: 5307
    functionLinenumberEnd: 5326
    functionName: auth_zone_write_chunks
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - write_out
    - fclose
    - fopen
    - strerror
    linkageType: ''
    returnType: int
    signature: int auth_zone_write_chunks(struct auth_xfer* xfr, const char* fname)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:5336,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:5340,1
    - Dst: auth_zone_find
      Src: /src/unbound/services/authzone.c:5341,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:5344,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:5346,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:5349,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:5350,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:5351,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:5354,1
    - Dst: strncmp
      Src: /src/unbound/services/authzone.c:5359,1
    - Dst: strlen
      Src: /src/unbound/services/authzone.c:5360,1
    - Dst: strlen
      Src: /src/unbound/services/authzone.c:5361,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:5364,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5365,1
    - Dst: strlen
      Src: /src/unbound/services/authzone.c:5369,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5370,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:5372,1
    - Dst: snprintf
      Src: /src/unbound/services/authzone.c:5375,1
    - Dst: getpid
      Src: /src/unbound/services/authzone.c:5376,1
    - Dst: auth_zone_write_chunks
      Src: /src/unbound/services/authzone.c:5379,1
    - Dst: unlink
      Src: /src/unbound/services/authzone.c:5380,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:5381,1
    - Dst: auth_zone_write_file
      Src: /src/unbound/services/authzone.c:5384,1
    - Dst: unlink
      Src: /src/unbound/services/authzone.c:5385,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:5386,1
    - Dst: unlink
      Src: /src/unbound/services/authzone.c:5390,1
    - Dst: rename
      Src: /src/unbound/services/authzone.c:5392,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:5393,1
    - Dst: strerror
      Src: /src/unbound/services/authzone.c:5394,1
    - Dst: unlink
      Src: /src/unbound/services/authzone.c:5395,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:5396,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:5399,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 49
    argCount: 2
    argNames:
    - xfr
    - env
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5400
      start: 5329
    functionDepth: 9
    functionLinenumber: 5329
    functionLinenumberEnd: 5400
    functionName: xfr_write_after_update
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - strncmp
    - auth_zone_find
    - lock_basic_unlock
    - lock_rw_unlock
    - verbose
    - snprintf
    - rename
    - dname_str
    - lock_basic_lock
    - strlen
    - getpid
    - auth_zone_write_chunks
    - unlink
    - auth_zone_write_file
    - lock_rw_rdlock
    - strerror
    linkageType: ''
    returnType: void
    signature: void xfr_write_after_update(struct auth_xfer* xfr, struct module_env*
      env)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:5409,1
    - Dst: auth_zone_find
      Src: /src/unbound/services/authzone.c:5410,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:5413,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:5414,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:5418,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:5419,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:5420,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - xfr
    - env
    - z
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    - struct auth_zone**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5422
      start: 5404
    functionDepth: 2
    functionLinenumber: 5404
    functionLinenumberEnd: 5422
    functionName: xfr_process_reacquire_locks
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_zone_find
    - lock_rw_wrlock
    - lock_rw_unlock
    - lock_basic_lock
    - lock_rw_rdlock
    linkageType: ''
    returnType: int
    signature: "int xfr_process_reacquire_locks(struct auth_xfer* xfr,\n\tstruct module_env*
      env, struct auth_zone** z)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:5433,1
    - Dst: xfr_process_reacquire_locks
      Src: /src/unbound/services/authzone.c:5434,1
    - Dst: apply_http
      Src: /src/unbound/services/authzone.c:5442,1
    - Dst: auth_zone_clear_data
      Src: /src/unbound/services/authzone.c:5443,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:5444,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5445,1
    - Dst: apply_ixfr
      Src: /src/unbound/services/authzone.c:5451,1
    - Dst: auth_zone_clear_data
      Src: /src/unbound/services/authzone.c:5452,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:5453,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5454,1
    - Dst: apply_axfr
      Src: /src/unbound/services/authzone.c:5460,1
    - Dst: auth_zone_clear_data
      Src: /src/unbound/services/authzone.c:5461,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:5462,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5463,1
    - Dst: xfr_find_soa
      Src: /src/unbound/services/authzone.c:5470,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:5471,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5472,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:5482,1
    - Dst: auth_zone_verify_zonemd
      Src: /src/unbound/services/authzone.c:5484,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:5491,1
    - Dst: xfr_process_reacquire_locks
      Src: /src/unbound/services/authzone.c:5492,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:5494,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5495,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:5497,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:5503,1
    - Dst: xfr_process_reacquire_locks
      Src: /src/unbound/services/authzone.c:5504,1
    - Dst: rpz_finish_config
      Src: /src/unbound/services/authzone.c:5512,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:5515,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:5519,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5520,1
    - Dst: xfr_write_after_update
      Src: /src/unbound/services/authzone.c:5524,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 65
    argCount: 3
    argNames:
    - xfr
    - env
    - ixfr_fail
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5526
      start: 5426
    functionDepth: 10
    functionLinenumber: 5426
    functionLinenumberEnd: 5526
    functionName: xfr_process_chunk_list
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_rw_unlock
    - verbose
    - apply_axfr
    - dname_str
    - auth_zone_verify_zonemd
    - xfr_process_reacquire_locks
    - apply_http
    - xfr_find_soa
    - xfr_write_after_update
    - rpz_finish_config
    - auth_zone_clear_data
    - apply_ixfr
    linkageType: ''
    returnType: int
    signature: "int xfr_process_chunk_list(struct auth_xfer* xfr, struct module_env*
      env,\n\tint* ixfr_fail)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/services/authzone.c:5538,1
    - Dst: log_query_info
      Src: /src/unbound/services/authzone.c:5547,1
    - Dst: mesh_remove_callback
      Src: /src/unbound/services/authzone.c:5549,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 7
    argNames:
    - lookup_target
    - lookup_unique_info
    - lookup_aaaa
    - dclass
    - mesh
    - cb
    - cb_arg
    argTypes:
    - struct auth_master**
    - void*
    - int
    - uint16_t
    - struct mesh_area*
    - mesh_cb_func_type
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5552
      start: 5529
    functionDepth: 3
    functionLinenumber: 5529
    functionLinenumberEnd: 5552
    functionName: xfr_stop_lookup
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - mesh_remove_callback
    - log_query_info
    - sldns_str2wire_dname_buf
    linkageType: ''
    returnType: void
    signature: "void xfr_stop_lookup(struct auth_master** lookup_target, void* lookup_unique_info,\n\tint
      lookup_aaaa, uint16_t dclass, struct mesh_area* mesh,\n\tmesh_cb_func_type cb,
      void* cb_arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_chunks_delete
      Src: /src/unbound/services/authzone.c:5559,1
    - Dst: comm_timer_delete
      Src: /src/unbound/services/authzone.c:5561,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/authzone.c:5564,1
    - Dst: xfr_stop_lookup
      Src: /src/unbound/services/authzone.c:5567,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - xfr
    argTypes:
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5575
      start: 5555
    functionDepth: 4
    functionLinenumber: 5555
    functionLinenumberEnd: 5575
    functionName: xfr_transfer_disown
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - xfr_stop_lookup
    - auth_chunks_delete
    - comm_point_delete
    - comm_timer_delete
    linkageType: ''
    returnType: void
    signature: void xfr_transfer_disown(struct auth_xfer* xfr)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: extstrtoaddr
      Src: /src/unbound/services/authzone.c:5590,1
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/services/authzone.c:5601,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:5603,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:5615,1
    - Dst: snprintf
      Src: /src/unbound/services/authzone.c:5616,1
    - Dst: log_query_info
      Src: /src/unbound/services/authzone.c:5618,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/authzone.c:5630,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/authzone.c:5631,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:5636,1
    - Dst: mesh_new_callback
      Src: /src/unbound/services/authzone.c:5637,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:5640,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:5641,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:5644,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 45
    argCount: 2
    argNames:
    - xfr
    - env
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5646
      start: 5578
    functionDepth: 3
    functionLinenumber: 5578
    functionLinenumberEnd: 5646
    functionName: xfr_transfer_lookup_host
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - log_err
    - snprintf
    - log_query_info
    - extstrtoaddr
    - lock_basic_unlock
    - dname_str
    - sldns_str2wire_dname_buf
    - lock_basic_lock
    - mesh_new_callback
    linkageType: ''
    returnType: int
    signature: int xfr_transfer_lookup_host(struct auth_xfer* xfr, struct module_env*
      env)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:5665,1
    - Dst: authextstrtoaddr
      Src: /src/unbound/services/authzone.c:5667,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:5672,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:5673,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/authzone.c:5681,1
    - Dst: comm_timer_create
      Src: /src/unbound/services/authzone.c:5685,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:5688,1
    - Dst: strchr
      Src: /src/unbound/services/authzone.c:5704,1
    - Dst: sockaddr_store_port
      Src: /src/unbound/services/authzone.c:5705,1
    - Dst: outnet_comm_point_for_http
      Src: /src/unbound/services/authzone.c:5706,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:5712,1
    - Dst: addr_port_to_str
      Src: /src/unbound/services/authzone.c:5713,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5714,1
    - Dst: comm_timer_set
      Src: /src/unbound/services/authzone.c:5718,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:5721,1
    - Dst: addr_port_to_str
      Src: /src/unbound/services/authzone.c:5722,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5723,1
    - Dst: probe_copy_masters_for_allow_notify
      Src: /src/unbound/services/authzone.c:5726,1
    - Dst: GET_RANDOM_ID
      Src: /src/unbound/services/authzone.c:5733,1
    - Dst: xfr_create_ixfr_packet
      Src: /src/unbound/services/authzone.c:5734,1
    - Dst: outnet_comm_point_for_tcp
      Src: /src/unbound/services/authzone.c:5738,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:5744,1
    - Dst: addr_port_to_str
      Src: /src/unbound/services/authzone.c:5745,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5746,1
    - Dst: comm_timer_set
      Src: /src/unbound/services/authzone.c:5750,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:5753,1
    - Dst: addr_port_to_str
      Src: /src/unbound/services/authzone.c:5754,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5755,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 66
    argCount: 2
    argNames:
    - xfr
    - env
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5759
      start: 5650
    functionDepth: 6
    functionLinenumber: 5650
    functionLinenumberEnd: 5759
    functionName: xfr_transfer_init_fetch
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - outnet_comm_point_for_tcp
    - addr_port_to_str
    - memmove
    - verbose
    - sockaddr_store_port
    - authextstrtoaddr
    - xfr_create_ixfr_packet
    - dname_str
    - outnet_comm_point_for_http
    - comm_timer_create
    - comm_timer_set
    - GET_RANDOM_ID
    - strchr
    - probe_copy_masters_for_allow_notify
    - comm_point_delete
    linkageType: ''
    returnType: int
    signature: int xfr_transfer_init_fetch(struct auth_xfer* xfr, struct module_env*
      env)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:5765,1
    - Dst: xfr_transfer_lookup_host
      Src: /src/unbound/services/authzone.c:5769,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:5777,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5778,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:5780,1
    - Dst: xfr_transfer_move_to_next_lookup
      Src: /src/unbound/services/authzone.c:5783,1
    - Dst: xfr_transfer_end_of_list
      Src: /src/unbound/services/authzone.c:5788,1
    - Dst: xfr_transfer_current_master
      Src: /src/unbound/services/authzone.c:5789,1
    - Dst: xfr_transfer_init_fetch
      Src: /src/unbound/services/authzone.c:5790,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:5792,1
    - Dst: xfr_transfer_nextmaster
      Src: /src/unbound/services/authzone.c:5796,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:5800,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5801,1
    - Dst: xfr_transfer_disown
      Src: /src/unbound/services/authzone.c:5806,1
    - Dst: xfr_set_timeout
      Src: /src/unbound/services/authzone.c:5810,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:5811,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - xfr
    - env
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5812
      start: 5762
    functionDepth: 7
    functionLinenumber: 5762
    functionLinenumberEnd: 5812
    functionName: xfr_transfer_nexttarget_or_end
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - xfr_transfer_init_fetch
    - xfr_transfer_end_of_list
    - xfr_transfer_current_master
    - xfr_transfer_lookup_host
    - verbose
    - lock_basic_unlock
    - xfr_set_timeout
    - xfr_transfer_move_to_next_lookup
    - dname_str
    - log_assert
    - xfr_transfer_nextmaster
    - xfr_transfer_disown
    linkageType: ''
    returnType: void
    signature: void xfr_transfer_nexttarget_or_end(struct auth_xfer* xfr, struct module_env*
      env)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/authzone.c:5835,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:5837,1
    - Dst: htons
      Src: /src/unbound/services/authzone.c:5845,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:5846,1
    - Dst: htons
      Src: /src/unbound/services/authzone.c:5852,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:5853,1
    - Dst: addr_port_to_str
      Src: /src/unbound/services/authzone.c:5857,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5858,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 3
    argNames:
    - m
    - rrset
    - rrtype
    argTypes:
    - struct auth_master*
    - struct ub_packed_rrset_key*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5865
      start: 5815
    functionDepth: 3
    functionLinenumber: 5815
    functionLinenumberEnd: 5865
    functionName: xfr_master_add_addrs
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - addr_port_to_str
    - memmove
    - verbose
    - htons
    - calloc
    linkageType: ''
    returnType: void
    signature: "void xfr_master_add_addrs(struct auth_master* m, struct ub_packed_rrset_key*
      rrset,\n\tuint16_t rrtype)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/services/authzone.c:5878,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5880,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/authzone.c:5883,1
    - Dst: reply_find_rrset_section_an
      Src: /src/unbound/services/authzone.c:5886,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 4
    argNames:
    - lookup_target
    - answer
    - rq
    - rep
    argTypes:
    - struct auth_master*
    - struct ub_packed_rrset_key*
    - struct query_info*
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5890
      start: 5868
    functionDepth: 3
    functionLinenumber: 5868
    functionLinenumberEnd: 5890
    functionName: xfer_target_equals_answer_name
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - verbose
    - query_dname_compare
    - sldns_str2wire_dname_buf
    - reply_find_rrset_section_an
    linkageType: ''
    returnType: int
    signature: "int xfer_target_equals_answer_name(struct auth_master* lookup_target,\n\tstruct
      ub_packed_rrset_key* answer, struct query_info* rq,\n\tstruct reply_info* rep)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:5898,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:5899,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:5902,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:5910,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5911,1
    - Dst: memset
      Src: /src/unbound/services/authzone.c:5923,1
    - Dst: parse_reply_in_temp_region
      Src: /src/unbound/services/authzone.c:5924,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/services/authzone.c:5926,1
    - Dst: reply_find_answer_rrset
      Src: /src/unbound/services/authzone.c:5929,1
    - Dst: xfer_target_equals_answer_name
      Src: /src/unbound/services/authzone.c:5930,1
    - Dst: xfr_master_add_addrs
      Src: /src/unbound/services/authzone.c:5933,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:5938,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5939,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:5944,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5945,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:5951,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5952,1
    - Dst: regional_free_all
      Src: /src/unbound/services/authzone.c:5955,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:5959,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5960,1
    - Dst: xfr_transfer_current_master
      Src: /src/unbound/services/authzone.c:5965,1
    - Dst: xfr_transfer_move_to_next_lookup
      Src: /src/unbound/services/authzone.c:5970,1
    - Dst: xfr_transfer_nexttarget_or_end
      Src: /src/unbound/services/authzone.c:5971,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 51
    argCount: 6
    argNames:
    - arg
    - rcode
    - buf
    - sec
    - why_bogus
    - ATTR_UNUSED
    argTypes:
    - void*
    - int
    - sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5972
      start: 5893
    functionDepth: 8
    functionLinenumber: 5893
    functionLinenumberEnd: 5972
    functionName: auth_xfer_transfer_lookup_callback
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - FLAGS_GET_RCODE
    - xfr_transfer_current_master
    - lock_basic_unlock
    - verbose
    - reply_find_answer_rrset
    - xfer_target_equals_answer_name
    - xfr_master_add_addrs
    - dname_str
    - xfr_transfer_move_to_next_lookup
    - log_assert
    - lock_basic_lock
    - parse_reply_in_temp_region
    - xfr_transfer_nexttarget_or_end
    - memset
    - regional_free_all
    linkageType: ''
    returnType: void
    signature: "void auth_xfer_transfer_lookup_callback(void* arg, int rcode, sldns_buffer*
      buf,\n\tenum sec_status sec, char* why_bogus, int ATTR_UNUSED(was_ratelimited))"
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:5985,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/authzone.c:5987,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5988,1
    - Dst: LDNS_QR_WIRE
      Src: /src/unbound/services/authzone.c:5992,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5993,1
    - Dst: LDNS_TC_WIRE
      Src: /src/unbound/services/authzone.c:5997,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:5998,1
    - Dst: LDNS_ID_WIRE
      Src: /src/unbound/services/authzone.c:6003,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6004,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/authzone.c:6008,1
    - Dst: sldns_wire2str_rcode_buf
      Src: /src/unbound/services/authzone.c:6010,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/authzone.c:6010,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/authzone.c:6014,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/authzone.c:6015,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/authzone.c:6016,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/services/authzone.c:6017,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6018,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6027,1
    - Dst: LDNS_OPCODE_WIRE
      Src: /src/unbound/services/authzone.c:6031,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6032,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/services/authzone.c:6036,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6037,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/services/authzone.c:6039,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/services/authzone.c:6044,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/services/authzone.c:6045,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:6046,1
    - Dst: pkt_dname_len
      Src: /src/unbound/services/authzone.c:6048,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6049,1
    - Dst: dname_pkt_compare
      Src: /src/unbound/services/authzone.c:6054,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/services/authzone.c:6054,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6056,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:6061,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6062,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:6067,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:6068,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6070,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6077,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6084,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/services/authzone.c:6095,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:6096,1
    - Dst: pkt_dname_len
      Src: /src/unbound/services/authzone.c:6098,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6099,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:6104,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6105,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:6110,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:6111,1
    - Dst: sldns_buffer_read_u32
      Src: /src/unbound/services/authzone.c:6112,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:6113,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:6114,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6115,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6125,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6139,1
    - Dst: dname_pkt_compare
      Src: /src/unbound/services/authzone.c:6144,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/services/authzone.c:6144,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6146,1
    - Dst: sldns_buffer_read_u32_at
      Src: /src/unbound/services/authzone.c:6153,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/services/authzone.c:6154,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/services/authzone.c:6159,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6160,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6175,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6185,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6197,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/services/authzone.c:6207,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/services/authzone.c:6212,1
    - Dst: pkt_dname_len
      Src: /src/unbound/services/authzone.c:6214,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6215,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:6220,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6221,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:6226,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:6227,1
    - Dst: sldns_buffer_read_u32
      Src: /src/unbound/services/authzone.c:6228,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:6229,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:6230,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6231,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/services/authzone.c:6237,1
    - Dst: LDNS_ARCOUNT
      Src: /src/unbound/services/authzone.c:6241,1
    - Dst: pkt_dname_len
      Src: /src/unbound/services/authzone.c:6243,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6244,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:6249,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6250,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:6255,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:6256,1
    - Dst: sldns_buffer_read_u32
      Src: /src/unbound/services/authzone.c:6257,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/services/authzone.c:6258,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/services/authzone.c:6259,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6260,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/services/authzone.c:6266,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 169
    argCount: 4
    argNames:
    - pkt
    - xfr
    - gonextonfail
    - transferdone
    argTypes:
    - sldns_buffer*
    - struct auth_xfer*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6270
      start: 5981
    functionDepth: 5
    functionLinenumber: 5981
    functionLinenumberEnd: 6270
    functionName: check_xfer_packet
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - LDNS_ANCOUNT
    - sldns_buffer_skip
    - sldns_wire2str_rcode_buf
    - LDNS_OPCODE_WIRE
    - sldns_buffer_read_u32_at
    - sldns_buffer_begin
    - LDNS_QR_WIRE
    - LDNS_ARCOUNT
    - verbose
    - sldns_buffer_set_position
    - LDNS_NSCOUNT
    - sldns_buffer_read_u32
    - dname_pkt_compare
    - pkt_dname_len
    - LDNS_TC_WIRE
    - sldns_buffer_remaining
    - LDNS_ID_WIRE
    - sldns_buffer_at
    - LDNS_QDCOUNT
    - sldns_buffer_limit
    - sldns_buffer_read_u16
    - LDNS_RCODE_WIRE
    linkageType: ''
    returnType: int
    signature: "int check_xfer_packet(sldns_buffer* pkt, struct auth_xfer* xfr,\n\tint*
      gonextonfail, int* transferdone)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/authzone.c:6278,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/authzone.c:6281,1
    - Dst: memdup
      Src: /src/unbound/services/authzone.c:6282,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:6282,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:6284,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - pkt
    - xfr
    argTypes:
    - sldns_buffer*
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6296
      start: 6273
    functionDepth: 2
    functionLinenumber: 6273
    functionLinenumberEnd: 6296
    functionName: xfer_link_data
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_limit
    - free
    - calloc
    - sldns_buffer_begin
    - memdup
    linkageType: ''
    returnType: int
    signature: int xfer_link_data(sldns_buffer* pkt, struct auth_xfer* xfr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: xfr_process_chunk_list
      Src: /src/unbound/services/authzone.c:6304,1
    - Dst: auth_chunks_delete
      Src: /src/unbound/services/authzone.c:6306,1
    - Dst: xfr_transfer_disown
      Src: /src/unbound/services/authzone.c:6309,1
    - Dst: xfr_serial_means_update
      Src: /src/unbound/services/authzone.c:6313,1
    - Dst: xfr_start_probe
      Src: /src/unbound/services/authzone.c:6321,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:6328,1
    - Dst: xfr_set_timeout
      Src: /src/unbound/services/authzone.c:6334,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:6336,1
    - Dst: auth_chunks_delete
      Src: /src/unbound/services/authzone.c:6341,1
    - Dst: xfr_transfer_nextmaster
      Src: /src/unbound/services/authzone.c:6345,1
    - Dst: xfr_transfer_nexttarget_or_end
      Src: /src/unbound/services/authzone.c:6347,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 2
    argNames:
    - xfr
    - env
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6348
      start: 6300
    functionDepth: 11
    functionLinenumber: 6300
    functionLinenumberEnd: 6348
    functionName: process_list_end_transfer
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - xfr_set_timeout
    - xfr_start_probe
    - xfr_serial_means_update
    - auth_chunks_delete
    - xfr_transfer_nexttarget_or_end
    - xfr_process_chunk_list
    - xfr_transfer_nextmaster
    - xfr_transfer_disown
    linkageType: ''
    returnType: void
    signature: void process_list_end_transfer(struct auth_xfer* xfr, struct module_env*
      env)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:6357,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:6358,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:6361,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6365,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6373,1
    - Dst: auth_chunks_delete
      Src: /src/unbound/services/authzone.c:6382,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/authzone.c:6383,1
    - Dst: xfr_transfer_nextmaster
      Src: /src/unbound/services/authzone.c:6386,1
    - Dst: xfr_transfer_nexttarget_or_end
      Src: /src/unbound/services/authzone.c:6387,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6388
      start: 6351
    functionDepth: 8
    functionLinenumber: 6351
    functionLinenumberEnd: 6388
    functionName: auth_xfer_transfer_timer_callback
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - verbose
    - auth_chunks_delete
    - log_assert
    - lock_basic_lock
    - xfr_transfer_nexttarget_or_end
    - xfr_transfer_nextmaster
    - comm_point_delete
    linkageType: ''
    returnType: void
    signature: void auth_xfer_transfer_timer_callback(void* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: timeval_subtract
      Src: /src/unbound/services/authzone.c:6395,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - xfr
    - env
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6397
      start: 6391
    functionDepth: 1
    functionLinenumber: 6391
    functionLinenumberEnd: 6397
    functionName: auth_xfer_transfer_time_taken
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - timeval_subtract
    linkageType: ''
    returnType: int
    signature: int auth_xfer_transfer_time_taken(struct auth_xfer* xfr, struct module_env*
      env)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:6408,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:6409,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:6412,1
    - Dst: comm_timer_disable
      Src: /src/unbound/services/authzone.c:6416,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6422,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6430,1
    - Dst: auth_chunks_delete
      Src: /src/unbound/services/authzone.c:6440,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/authzone.c:6441,1
    - Dst: xfr_transfer_nextmaster
      Src: /src/unbound/services/authzone.c:6444,1
    - Dst: xfr_transfer_nexttarget_or_end
      Src: /src/unbound/services/authzone.c:6445,1
    - Dst: check_xfer_packet
      Src: /src/unbound/services/authzone.c:6455,1
    - Dst: xfer_link_data
      Src: /src/unbound/services/authzone.c:6460,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6461,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:6468,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:6469,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/authzone.c:6476,1
    - Dst: process_list_end_transfer
      Src: /src/unbound/services/authzone.c:6478,1
    - Dst: auth_xfer_transfer_time_taken
      Src: /src/unbound/services/authzone.c:6483,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:6485,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:6486,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:6494,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/authzone.c:6496,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/services/authzone.c:6497,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 63
    argCount: 4
    argNames:
    - c
    - arg
    - err
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6499
      start: 6400
    functionDepth: 12
    functionLinenumber: 6400
    functionLinenumberEnd: 6499
    functionName: auth_xfer_transfer_tcp_callback
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - xfer_link_data
    - lock_basic_unlock
    - verbose
    - dname_str
    - auth_xfer_transfer_time_taken
    - sldns_buffer_clear
    - comm_timer_disable
    - auth_chunks_delete
    - comm_point_start_listening
    - log_assert
    - lock_basic_lock
    - xfr_transfer_nexttarget_or_end
    - check_xfer_packet
    - process_list_end_transfer
    - xfr_transfer_nextmaster
    - comm_point_delete
    linkageType: ''
    returnType: int
    signature: "int auth_xfer_transfer_tcp_callback(struct comm_point* c, void* arg,
      int err,\n\tstruct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:6508,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:6509,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:6512,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6515,1
    - Dst: comm_timer_disable
      Src: /src/unbound/services/authzone.c:6517,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6523,1
    - Dst: auth_chunks_delete
      Src: /src/unbound/services/authzone.c:6527,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/authzone.c:6530,1
    - Dst: xfr_transfer_nextmaster
      Src: /src/unbound/services/authzone.c:6532,1
    - Dst: xfr_transfer_nexttarget_or_end
      Src: /src/unbound/services/authzone.c:6533,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/authzone.c:6539,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6540,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/authzone.c:6541,1
    - Dst: xfer_link_data
      Src: /src/unbound/services/authzone.c:6542,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6543,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:6550,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:6551,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/authzone.c:6562,1
    - Dst: process_list_end_transfer
      Src: /src/unbound/services/authzone.c:6564,1
    - Dst: auth_xfer_transfer_time_taken
      Src: /src/unbound/services/authzone.c:6569,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:6571,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:6572,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:6581,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/services/authzone.c:6583,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/services/authzone.c:6584,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 56
    argCount: 4
    argNames:
    - c
    - arg
    - err
    - repinfo
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6586
      start: 6502
    functionDepth: 12
    functionLinenumber: 6502
    functionLinenumberEnd: 6586
    functionName: auth_xfer_transfer_http_callback
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - xfer_link_data
    - lock_basic_unlock
    - verbose
    - sldns_buffer_limit
    - dname_str
    - auth_xfer_transfer_time_taken
    - sldns_buffer_clear
    - comm_timer_disable
    - auth_chunks_delete
    - comm_point_start_listening
    - log_assert
    - lock_basic_lock
    - xfr_transfer_nexttarget_or_end
    - process_list_end_transfer
    - xfr_transfer_nextmaster
    - comm_point_delete
    linkageType: ''
    returnType: int
    signature: "int auth_xfer_transfer_http_callback(struct comm_point* c, void* arg,
      int err,\n\tstruct comm_reply* repinfo)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:6594,1
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:6595,1
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:6596,1
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:6597,1
    - Dst: xfr_transfer_start_list
      Src: /src/unbound/services/authzone.c:6603,1
    - Dst: xfr_transfer_start_lookups
      Src: /src/unbound/services/authzone.c:6605,1
    - Dst: xfr_transfer_nexttarget_or_end
      Src: /src/unbound/services/authzone.c:6608,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - xfr
    - env
    - master
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    - struct auth_master*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6609
      start: 6590
    functionDepth: 8
    functionLinenumber: 6590
    functionLinenumberEnd: 6609
    functionName: xfr_start_transfer
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - xfr_transfer_start_list
    - log_assert
    - xfr_transfer_nexttarget_or_end
    - xfr_transfer_start_lookups
    linkageType: ''
    returnType: void
    signature: "void xfr_start_transfer(struct auth_xfer* xfr, struct module_env*
      env,\n\tstruct auth_master* master)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: comm_timer_delete
      Src: /src/unbound/services/authzone.c:6616,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/authzone.c:6619,1
    - Dst: xfr_stop_lookup
      Src: /src/unbound/services/authzone.c:6622,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - xfr
    argTypes:
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6630
      start: 6612
    functionDepth: 4
    functionLinenumber: 6612
    functionLinenumberEnd: 6630
    functionName: xfr_probe_disown
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - xfr_stop_lookup
    - comm_point_delete
    - comm_timer_delete
    linkageType: ''
    returnType: void
    signature: void xfr_probe_disown(struct auth_xfer* xfr)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: xfr_probe_current_master
      Src: /src/unbound/services/authzone.c:6641,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:6651,1
    - Dst: authextstrtoaddr
      Src: /src/unbound/services/authzone.c:6653,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:6658,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:6659,1
    - Dst: ntohs
      Src: /src/unbound/services/authzone.c:6665,1
    - Dst: htons
      Src: /src/unbound/services/authzone.c:6668,1
    - Dst: ntohs
      Src: /src/unbound/services/authzone.c:6670,1
    - Dst: htons
      Src: /src/unbound/services/authzone.c:6673,1
    - Dst: GET_RANDOM_ID
      Src: /src/unbound/services/authzone.c:6681,1
    - Dst: xfr_create_soa_probe_packet
      Src: /src/unbound/services/authzone.c:6682,1
    - Dst: addr_is_ip6
      Src: /src/unbound/services/authzone.c:6686,1
    - Dst: addr_is_ip6
      Src: /src/unbound/services/authzone.c:6687,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/authzone.c:6689,1
    - Dst: addr_is_ip6
      Src: /src/unbound/services/authzone.c:6693,1
    - Dst: outnet_comm_point_for_udp
      Src: /src/unbound/services/authzone.c:6696,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:6700,1
    - Dst: addr_port_to_str
      Src: /src/unbound/services/authzone.c:6701,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6702,1
    - Dst: comm_timer_create
      Src: /src/unbound/services/authzone.c:6708,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:6711,1
    - Dst: comm_point_send_udp_msg
      Src: /src/unbound/services/authzone.c:6717,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:6720,1
    - Dst: addr_port_to_str
      Src: /src/unbound/services/authzone.c:6721,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6722,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:6728,1
    - Dst: addr_port_to_str
      Src: /src/unbound/services/authzone.c:6729,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6730,1
    - Dst: comm_timer_set
      Src: /src/unbound/services/authzone.c:6738,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 65
    argCount: 3
    argNames:
    - xfr
    - env
    - timeout
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6741
      start: 6633
    functionDepth: 5
    functionLinenumber: 6633
    functionLinenumberEnd: 6741
    functionName: xfr_probe_send_probe
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - xfr_create_soa_probe_packet
    - xfr_probe_current_master
    - addr_port_to_str
    - memmove
    - verbose
    - authextstrtoaddr
    - dname_str
    - htons
    - comm_timer_create
    - comm_timer_set
    - GET_RANDOM_ID
    - addr_is_ip6
    - outnet_comm_point_for_udp
    - comm_point_send_udp_msg
    - comm_point_delete
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int xfr_probe_send_probe(struct auth_xfer* xfr, struct module_env*
      env,\n\tint timeout)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:6749,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:6750,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:6753,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:6759,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6760,1
    - Dst: xfr_probe_send_probe
      Src: /src/unbound/services/authzone.c:6764,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:6765,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/authzone.c:6770,1
    - Dst: xfr_probe_nextmaster
      Src: /src/unbound/services/authzone.c:6774,1
    - Dst: xfr_probe_send_or_end
      Src: /src/unbound/services/authzone.c:6775,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6776
      start: 6744
    functionDepth: 6
    functionLinenumber: 6744
    functionLinenumberEnd: 6776
    functionName: auth_xfer_probe_timer_callback
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - xfr_probe_send_or_end
    - lock_basic_unlock
    - verbose
    - xfr_probe_send_probe
    - dname_str
    - xfr_probe_nextmaster
    - log_assert
    - lock_basic_lock
    - comm_point_delete
    linkageType: ''
    returnType: void
    signature: void auth_xfer_probe_timer_callback(void* arg)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:6785,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:6786,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:6789,1
    - Dst: comm_timer_disable
      Src: /src/unbound/services/authzone.c:6797,1
    - Dst: check_packet_ok
      Src: /src/unbound/services/authzone.c:6802,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:6807,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6808,1
    - Dst: xfr_serial_means_update
      Src: /src/unbound/services/authzone.c:6813,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6815,1
    - Dst: xfr_probe_current_master
      Src: /src/unbound/services/authzone.c:6818,1
    - Dst: xfr_probe_disown
      Src: /src/unbound/services/authzone.c:6825,1
    - Dst: xfr_start_transfer
      Src: /src/unbound/services/authzone.c:6826,1
    - Dst: xfr_probe_disown
      Src: /src/unbound/services/authzone.c:6831,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:6832,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6837,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:6846,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6847,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:6853,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6854,1
    - Dst: comm_point_delete
      Src: /src/unbound/services/authzone.c:6860,1
    - Dst: xfr_probe_nextmaster
      Src: /src/unbound/services/authzone.c:6865,1
    - Dst: xfr_probe_send_or_end
      Src: /src/unbound/services/authzone.c:6866,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 49
    argCount: 4
    argNames:
    - c
    - arg
    - err
    - repinfo
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6868
      start: 6779
    functionDepth: 9
    functionLinenumber: 6779
    functionLinenumberEnd: 6868
    functionName: auth_xfer_probe_udp_callback
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - xfr_probe_current_master
    - xfr_probe_send_or_end
    - check_packet_ok
    - lock_basic_unlock
    - verbose
    - dname_str
    - xfr_probe_nextmaster
    - xfr_serial_means_update
    - comm_timer_disable
    - log_assert
    - lock_basic_lock
    - xfr_start_transfer
    - xfr_probe_disown
    - comm_point_delete
    linkageType: ''
    returnType: int
    signature: "int auth_xfer_probe_udp_callback(struct comm_point* c, void* arg,
      int err,\n\tstruct comm_reply* repinfo)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: extstrtoaddr
      Src: /src/unbound/services/authzone.c:6883,1
    - Dst: strchr
      Src: /src/unbound/services/authzone.c:6888,1
    - Dst: strchr
      Src: /src/unbound/services/authzone.c:6889,1
    - Dst: strrchr
      Src: /src/unbound/services/authzone.c:6889,1
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/services/authzone.c:6896,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:6898,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:6910,1
    - Dst: snprintf
      Src: /src/unbound/services/authzone.c:6911,1
    - Dst: log_query_info
      Src: /src/unbound/services/authzone.c:6913,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/authzone.c:6925,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/authzone.c:6926,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:6931,1
    - Dst: mesh_new_callback
      Src: /src/unbound/services/authzone.c:6932,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:6935,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:6936,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:6939,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 46
    argCount: 2
    argNames:
    - xfr
    - env
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6941
      start: 6871
    functionDepth: 3
    functionLinenumber: 6871
    functionLinenumberEnd: 6941
    functionName: xfr_probe_lookup_host
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - log_err
    - snprintf
    - strrchr
    - extstrtoaddr
    - log_query_info
    - lock_basic_unlock
    - dname_str
    - mesh_new_callback
    - sldns_str2wire_dname_buf
    - lock_basic_lock
    - strchr
    linkageType: ''
    returnType: int
    signature: int xfr_probe_lookup_host(struct auth_xfer* xfr, struct module_env*
      env)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct auth_master*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6953
      start: 6944
    functionDepth: 0
    functionLinenumber: 6944
    functionLinenumberEnd: 6953
    functionName: have_probe_targets
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int have_probe_targets(struct auth_master* list)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: xfr_probe_lookup_host
      Src: /src/unbound/services/authzone.c:6961,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:6969,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6970,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:6972,1
    - Dst: xfr_probe_move_to_next_lookup
      Src: /src/unbound/services/authzone.c:6975,1
    - Dst: probe_copy_masters_for_allow_notify
      Src: /src/unbound/services/authzone.c:6979,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:6982,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6983,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:6990,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:6991,1
    - Dst: xfr_probe_disown
      Src: /src/unbound/services/authzone.c:6993,1
    - Dst: have_probe_targets
      Src: /src/unbound/services/authzone.c:6994,1
    - Dst: xfr_start_transfer
      Src: /src/unbound/services/authzone.c:6997,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:7001,1
    - Dst: xfr_set_timeout
      Src: /src/unbound/services/authzone.c:7005,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:7006,1
    - Dst: xfr_probe_end_of_list
      Src: /src/unbound/services/authzone.c:7011,1
    - Dst: xfr_probe_send_probe
      Src: /src/unbound/services/authzone.c:7012,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:7014,1
    - Dst: xfr_probe_nextmaster
      Src: /src/unbound/services/authzone.c:7018,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:7026,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:7027,1
    - Dst: xfr_probe_disown
      Src: /src/unbound/services/authzone.c:7029,1
    - Dst: xfr_set_timeout
      Src: /src/unbound/services/authzone.c:7033,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:7037,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:7038,1
    - Dst: xfr_probe_disown
      Src: /src/unbound/services/authzone.c:7042,1
    - Dst: xfr_set_timeout
      Src: /src/unbound/services/authzone.c:7045,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:7048,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 64
    argCount: 2
    argNames:
    - xfr
    - env
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7049
      start: 6956
    functionDepth: 9
    functionLinenumber: 6956
    functionLinenumberEnd: 7049
    functionName: xfr_probe_send_or_end
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 2
    functionsReached:
    - xfr_probe_lookup_host
    - xfr_probe_move_to_next_lookup
    - verbose
    - lock_basic_unlock
    - xfr_set_timeout
    - have_probe_targets
    - dname_str
    - xfr_probe_send_probe
    - xfr_probe_end_of_list
    - xfr_probe_nextmaster
    - xfr_start_transfer
    - probe_copy_masters_for_allow_notify
    - xfr_probe_disown
    linkageType: ''
    returnType: void
    signature: void xfr_probe_send_or_end(struct auth_xfer* xfr, struct module_env*
      env)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:7057,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:7058,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:7061,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:7069,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:7070,1
    - Dst: memset
      Src: /src/unbound/services/authzone.c:7082,1
    - Dst: parse_reply_in_temp_region
      Src: /src/unbound/services/authzone.c:7083,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/services/authzone.c:7085,1
    - Dst: reply_find_answer_rrset
      Src: /src/unbound/services/authzone.c:7088,1
    - Dst: xfer_target_equals_answer_name
      Src: /src/unbound/services/authzone.c:7089,1
    - Dst: xfr_master_add_addrs
      Src: /src/unbound/services/authzone.c:7092,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:7097,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:7098,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:7103,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:7104,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:7110,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:7111,1
    - Dst: regional_free_all
      Src: /src/unbound/services/authzone.c:7114,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:7118,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:7119,1
    - Dst: xfr_probe_current_master
      Src: /src/unbound/services/authzone.c:7124,1
    - Dst: xfr_probe_move_to_next_lookup
      Src: /src/unbound/services/authzone.c:7129,1
    - Dst: xfr_probe_send_or_end
      Src: /src/unbound/services/authzone.c:7130,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 51
    argCount: 6
    argNames:
    - arg
    - rcode
    - buf
    - sec
    - why_bogus
    - ATTR_UNUSED
    argTypes:
    - void*
    - int
    - sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7131
      start: 7052
    functionDepth: 10
    functionLinenumber: 7052
    functionLinenumberEnd: 7131
    functionName: auth_xfer_probe_lookup_callback
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - FLAGS_GET_RCODE
    - xfr_probe_current_master
    - xfr_probe_send_or_end
    - xfr_probe_move_to_next_lookup
    - lock_basic_unlock
    - verbose
    - reply_find_answer_rrset
    - xfer_target_equals_answer_name
    - xfr_master_add_addrs
    - dname_str
    - log_assert
    - lock_basic_lock
    - parse_reply_in_temp_region
    - memset
    - regional_free_all
    linkageType: ''
    returnType: void
    signature: "void auth_xfer_probe_lookup_callback(void* arg, int rcode, sldns_buffer*
      buf,\n\tenum sec_status sec, char* why_bogus, int ATTR_UNUSED(was_ratelimited))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: comm_timer_delete
      Src: /src/unbound/services/authzone.c:7139,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - xfr
    argTypes:
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7145
      start: 7134
    functionDepth: 0
    functionLinenumber: 7134
    functionLinenumberEnd: 7145
    functionName: xfr_nextprobe_disown
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - comm_timer_delete
    linkageType: ''
    returnType: void
    signature: void xfr_nextprobe_disown(struct auth_xfer* xfr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:7153,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:7154,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:7157,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:7164,1
    - Dst: auth_xfer_set_expired
      Src: /src/unbound/services/authzone.c:7165,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:7166,1
    - Dst: xfr_nextprobe_disown
      Src: /src/unbound/services/authzone.c:7169,1
    - Dst: xfr_start_probe
      Src: /src/unbound/services/authzone.c:7171,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:7173,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7175
      start: 7148
    functionDepth: 3
    functionLinenumber: 7148
    functionLinenumberEnd: 7175
    functionName: auth_xfer_timer
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_xfer_set_expired
    - lock_basic_unlock
    - xfr_start_probe
    - xfr_nextprobe_disown
    - log_assert
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: void auth_xfer_timer(void* arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: have_probe_targets
      Src: /src/unbound/services/authzone.c:7187,1
    - Dst: have_probe_targets
      Src: /src/unbound/services/authzone.c:7191,1
    - Dst: xfr_start_transfer
      Src: /src/unbound/services/authzone.c:7195,1
    - Dst: xfr_probe_start_list
      Src: /src/unbound/services/authzone.c:7213,1
    - Dst: xfr_probe_start_lookups
      Src: /src/unbound/services/authzone.c:7215,1
    - Dst: xfr_probe_send_or_end
      Src: /src/unbound/services/authzone.c:7217,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - xfr
    - env
    - spec
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    - struct auth_master*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7221
      start: 7180
    functionDepth: 10
    functionLinenumber: 7180
    functionLinenumberEnd: 7221
    functionName: xfr_start_probe
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 3
    functionsReached:
    - xfr_probe_start_list
    - xfr_probe_send_or_end
    - xfr_start_transfer
    - have_probe_targets
    - xfr_probe_start_lookups
    linkageType: ''
    returnType: int
    signature: "int xfr_start_probe(struct auth_xfer* xfr, struct module_env* env,\n\tstruct
      auth_master* spec)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:7235,1
    - Dst: log_assert
      Src: /src/unbound/services/authzone.c:7236,1
    - Dst: comm_timer_create
      Src: /src/unbound/services/authzone.c:7277,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:7283,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:7284,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:7304,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:7305,1
    - Dst: comm_timer_set
      Src: /src/unbound/services/authzone.c:7309,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 52
    argCount: 4
    argNames:
    - xfr
    - env
    - failure
    - lookup_only
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7310
      start: 7230
    functionDepth: 1
    functionLinenumber: 7230
    functionLinenumberEnd: 7310
    functionName: xfr_set_timeout
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 3
    functionsReached:
    - log_err
    - verbose
    - dname_str
    - comm_timer_create
    - comm_timer_set
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void xfr_set_timeout(struct auth_xfer* xfr, struct module_env* env,\n\tint
      failure, int lookup_only)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - z
    - env
    argTypes:
    - struct auth_zone*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7318
      start: 7312
    functionDepth: 0
    functionLinenumber: 7312
    functionLinenumberEnd: 7318
    functionName: auth_zone_pickup_initial_zone
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void auth_zone_pickup_initial_zone(struct auth_zone* z, struct module_env*
      env)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: xfr_set_timeout
      Src: /src/unbound/services/authzone.c:7330,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - x
    - env
    argTypes:
    - struct auth_xfer*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7332
      start: 7320
    functionDepth: 2
    functionLinenumber: 7320
    functionLinenumberEnd: 7332
    functionName: auth_xfer_pickup_initial_zone
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 2
    functionsReached:
    - xfr_set_timeout
    linkageType: ''
    returnType: void
    signature: void auth_xfer_pickup_initial_zone(struct auth_xfer* x, struct module_env*
      env)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:7340,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:7342,1
    - Dst: auth_zone_pickup_initial_zone
      Src: /src/unbound/services/authzone.c:7343,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:7344,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:7347,1
    - Dst: auth_xfer_pickup_initial_zone
      Src: /src/unbound/services/authzone.c:7348,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:7349,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:7351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - az
    - env
    argTypes:
    - struct auth_zones*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7352
      start: 7335
    functionDepth: 3
    functionLinenumber: 7335
    functionLinenumberEnd: 7352
    functionName: auth_xfer_pickup_initial
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 1
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - lock_basic_unlock
    - lock_basic_lock
    - auth_zone_pickup_initial_zone
    - auth_xfer_pickup_initial_zone
    linkageType: ''
    returnType: void
    signature: void auth_xfer_pickup_initial(struct auth_zones* az, struct module_env*
      env)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:7342,1
    - Dst: auth_zone_pickup_initial_zone
      Src: /src/unbound/services/authzone.c:7343,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:7344,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ztree
    argTypes:
    - az
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7345
      start: 7341
    functionDepth: 1
    functionLinenumber: 7341
    functionLinenumberEnd: 7345
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - auth_zone_pickup_initial_zone
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct auth_zone*, &az->ztree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:7347,1
    - Dst: auth_xfer_pickup_initial_zone
      Src: /src/unbound/services/authzone.c:7348,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:7349,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - xtree
    argTypes:
    - az
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7350
      start: 7346
    functionDepth: 3
    functionLinenumber: 7346
    functionLinenumberEnd: 7350
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - auth_xfer_pickup_initial_zone
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(x, struct auth_xfer*, &az->xtree)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:7357,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:7359,1
    - Dst: xfr_nextprobe_disown
      Src: /src/unbound/services/authzone.c:7361,1
    - Dst: xfr_probe_disown
      Src: /src/unbound/services/authzone.c:7364,1
    - Dst: auth_chunks_delete
      Src: /src/unbound/services/authzone.c:7367,1
    - Dst: xfr_transfer_disown
      Src: /src/unbound/services/authzone.c:7368,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:7370,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:7372,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - az
    argTypes:
    - struct auth_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7373
      start: 7354
    functionDepth: 5
    functionLinenumber: 7354
    functionLinenumberEnd: 7373
    functionName: auth_zones_cleanup
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 1
    functionsReached:
    - lock_rw_wrlock
    - lock_basic_unlock
    - lock_rw_unlock
    - xfr_nextprobe_disown
    - auth_chunks_delete
    - lock_basic_lock
    - xfr_probe_disown
    - xfr_transfer_disown
    linkageType: ''
    returnType: void
    signature: void auth_zones_cleanup(struct auth_zones* az)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:7359,1
    - Dst: xfr_nextprobe_disown
      Src: /src/unbound/services/authzone.c:7361,1
    - Dst: xfr_probe_disown
      Src: /src/unbound/services/authzone.c:7364,1
    - Dst: auth_chunks_delete
      Src: /src/unbound/services/authzone.c:7367,1
    - Dst: xfr_transfer_disown
      Src: /src/unbound/services/authzone.c:7368,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:7370,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - xtree
    argTypes:
    - az
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7371
      start: 7358
    functionDepth: 5
    functionLinenumber: 7358
    functionLinenumberEnd: 7371
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - xfr_nextprobe_disown
    - auth_chunks_delete
    - lock_basic_lock
    - xfr_probe_disown
    - xfr_transfer_disown
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(x, struct auth_xfer*, &az->xtree)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/authzone.c:7383,1
    - Dst: memdup
      Src: /src/unbound/services/authzone.c:7385,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:7387,1
    - Dst: calloc
      Src: /src/unbound/services/authzone.c:7397,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:7400,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:7401,1
    - Dst: calloc
      Src: /src/unbound/services/authzone.c:7404,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:7407,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:7408,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:7409,1
    - Dst: calloc
      Src: /src/unbound/services/authzone.c:7412,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:7415,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:7416,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:7417,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:7418,1
    - Dst: lock_basic_init
      Src: /src/unbound/services/authzone.c:7422,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:7423,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:7424,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:7425,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:7426,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:7427,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:7428,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:7429,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:7430,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:7431,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:7432,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:7433,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:7434,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:7435,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:7436,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:7437,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:7438,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:7440,1
    - Dst: lock_protect
      Src: /src/unbound/services/authzone.c:7442,1
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:7444,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 57
    argCount: 1
    argNames:
    - z
    argTypes:
    - struct auth_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7446
      start: 7379
    functionDepth: 1
    functionLinenumber: 7379
    functionLinenumberEnd: 7446
    functionName: auth_xfer_new
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - lock_basic_init
    - free
    - lock_protect
    - calloc
    - lock_basic_lock
    - memdup
    linkageType: ''
    returnType: struct auth_xfer
    signature: 'struct auth_xfer *

      auth_xfer_new(struct auth_zone* z)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: auth_xfer_new
      Src: /src/unbound/services/authzone.c:7459,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:7461,1
    - Dst: rbtree_insert
      Src: /src/unbound/services/authzone.c:7465,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - az
    - z
    argTypes:
    - struct auth_zones*
    - struct auth_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7467
      start: 7453
    functionDepth: 2
    functionLinenumber: 7453
    functionLinenumberEnd: 7467
    functionName: auth_xfer_create
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 4
    functionsReached:
    - log_err
    - rbtree_insert
    - auth_xfer_new
    linkageType: ''
    returnType: struct auth_xfer
    signature: 'struct auth_xfer *

      auth_xfer_create(struct auth_zones* az, struct auth_zone* z)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/authzone.c:7474,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:7476,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct auth_master***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7484
      start: 7470
    functionDepth: 1
    functionLinenumber: 7470
    functionLinenumberEnd: 7484
    functionName: auth_master_new
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - calloc
    linkageType: ''
    returnType: struct auth_master
    signature: 'struct auth_master *

      auth_master_new(struct auth_master*** list)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/services/authzone.c:7491,1
    - Dst: malloc
      Src: /src/unbound/services/authzone.c:7493,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:7495,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:7498,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - str
    - num
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7501
      start: 7487
    functionDepth: 1
    functionLinenumber: 7487
    functionLinenumberEnd: 7501
    functionName: dup_prefix
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - malloc
    - log_err
    - strlen
    - memmove
    linkageType: ''
    returnType: char
    signature: 'char *

      dup_prefix(char* str, size_t num)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/unbound/services/authzone.c:7507,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:7509,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7513
      start: 7504
    functionDepth: 1
    functionLinenumber: 7504
    functionLinenumberEnd: 7513
    functionName: dup_all
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      dup_all(char* str)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/services/authzone.c:7519,1
    - Dst: strchr
      Src: /src/unbound/services/authzone.c:7520,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - s
    - a
    - b
    argTypes:
    - char*
    - char
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7525
      start: 7516
    functionDepth: 0
    functionLinenumber: 7516
    functionLinenumberEnd: 7525
    functionName: str_find_first_of_chars
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - strchr
    linkageType: ''
    returnType: char
    signature: 'char *

      str_find_first_of_chars(char* s, char a, char b)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/unbound/services/authzone.c:7539,1
    - Dst: strncmp
      Src: /src/unbound/services/authzone.c:7543,1
    - Dst: strstr
      Src: /src/unbound/services/authzone.c:7545,1
    - Dst: strchr
      Src: /src/unbound/services/authzone.c:7545,1
    - Dst: strstr
      Src: /src/unbound/services/authzone.c:7545,1
    - Dst: strchr
      Src: /src/unbound/services/authzone.c:7546,1
    - Dst: strstr
      Src: /src/unbound/services/authzone.c:7546,1
    - Dst: dup_prefix
      Src: /src/unbound/services/authzone.c:7547,1
    - Dst: strstr
      Src: /src/unbound/services/authzone.c:7547,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:7548,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:7550,1
    - Dst: strchr
      Src: /src/unbound/services/authzone.c:7556,1
    - Dst: dup_prefix
      Src: /src/unbound/services/authzone.c:7559,1
    - Dst: dup_all
      Src: /src/unbound/services/authzone.c:7563,1
    - Dst: str_find_first_of_chars
      Src: /src/unbound/services/authzone.c:7568,1
    - Dst: dup_prefix
      Src: /src/unbound/services/authzone.c:7570,1
    - Dst: dup_all
      Src: /src/unbound/services/authzone.c:7573,1
    - Dst: strtol
      Src: /src/unbound/services/authzone.c:7582,1
    - Dst: strdup
      Src: /src/unbound/services/authzone.c:7590,1
    - Dst: strdup
      Src: /src/unbound/services/authzone.c:7591,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:7593,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 55
    argCount: 5
    argNames:
    - url
    - host
    - file
    - port
    - ssl
    argTypes:
    - char*
    - char**
    - char**
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7597
      start: 7528
    functionDepth: 2
    functionLinenumber: 7528
    functionLinenumberEnd: 7597
    functionName: parse_url
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - str_find_first_of_chars
    - log_err
    - strncmp
    - strdup
    - free
    - dup_all
    - strchr
    - dup_prefix
    - strstr
    - strtol
    linkageType: ''
    returnType: int
    signature: int parse_url(char* url, char** host, char** file, int* port, int*
      ssl)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: auth_master_new
      Src: /src/unbound/services/authzone.c:7613,1
    - Dst: parse_url
      Src: /src/unbound/services/authzone.c:7616,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:7617,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:7618,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:7619,1
    - Dst: auth_master_new
      Src: /src/unbound/services/authzone.c:7626,1
    - Dst: strdup
      Src: /src/unbound/services/authzone.c:7629,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:7631,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:7632,1
    - Dst: auth_master_new
      Src: /src/unbound/services/authzone.c:7639,1
    - Dst: strdup
      Src: /src/unbound/services/authzone.c:7642,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:7644,1
    - Dst: free
      Src: /src/unbound/services/authzone.c:7645,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 48
    argCount: 3
    argNames:
    - list
    - c
    - with_http
    argTypes:
    - struct auth_master**
    - struct config_auth*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7651
      start: 7599
    functionDepth: 3
    functionLinenumber: 7599
    functionLinenumberEnd: 7651
    functionName: xfer_set_masters
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 1
    functionsReached:
    - parse_url
    - log_err
    - free
    - auth_master_new
    - strdup
    linkageType: ''
    returnType: int
    signature: "int xfer_set_masters(struct auth_master** list, struct config_auth*
      c,\n\tint with_http)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7666
      start: 7654
    functionDepth: 0
    functionLinenumber: 7654
    functionLinenumberEnd: 7666
    functionName: compare_serial
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int compare_serial(uint32_t a, uint32_t b)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - hashalgo
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7673
      start: 7668
    functionDepth: 0
    functionLinenumber: 7668
    functionLinenumberEnd: 7673
    functionName: zonemd_hashalgo_supported
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zonemd_hashalgo_supported(int hashalgo)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - scheme
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7679
      start: 7675
    functionDepth: 0
    functionLinenumber: 7675
    functionLinenumberEnd: 7679
    functionName: zonemd_scheme_supported
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int zonemd_scheme_supported(int scheme)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: secalgo_hash_create_sha384
      Src: /src/unbound/services/authzone.c:7687,1
    - Dst: secalgo_hash_create_sha512
      Src: /src/unbound/services/authzone.c:7693,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 2
    argNames:
    - hashalgo
    - reason
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7701
      start: 7682
    functionDepth: 3
    functionLinenumber: 7682
    functionLinenumberEnd: 7701
    functionName: zonemd_digest_init
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - secalgo_hash_create_sha384
    - secalgo_hash_create_sha512
    linkageType: ''
    returnType: struct secalgo_hash
    signature: struct secalgo_hash * zonemd_digest_init(int hashalgo, char** reason)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: secalgo_hash_update
      Src: /src/unbound/services/authzone.c:7708,1
    - Dst: secalgo_hash_update
      Src: /src/unbound/services/authzone.c:7714,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 5
    argNames:
    - hashalgo
    - h
    - data
    - len
    - reason
    argTypes:
    - int
    - struct secalgo_hash*
    - uint8_t*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7723
      start: 7704
    functionDepth: 1
    functionLinenumber: 7704
    functionLinenumberEnd: 7723
    functionName: zonemd_digest_update
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - secalgo_hash_update
    linkageType: ''
    returnType: int
    signature: "int zonemd_digest_update(int hashalgo, struct secalgo_hash* h,\n\tuint8_t*
      data, size_t len, char** reason)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: secalgo_hash_final
      Src: /src/unbound/services/authzone.c:7734,1
    - Dst: secalgo_hash_final
      Src: /src/unbound/services/authzone.c:7744,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 6
    argNames:
    - hashalgo
    - h
    - result
    - hashlen
    - resultlen
    - reason
    argTypes:
    - int
    - struct secalgo_hash*
    - uint8_t*
    - size_t
    - size_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7753
      start: 7726
    functionDepth: 2
    functionLinenumber: 7726
    functionLinenumberEnd: 7753
    functionName: zonemd_digest_finish
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - secalgo_hash_final
    linkageType: ''
    returnType: int
    signature: "int zonemd_digest_finish(int hashalgo, struct secalgo_hash* h,\n\tuint8_t*
      result, size_t hashlen, size_t* resultlen, char** reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - array
    - arraysize
    - first
    argTypes:
    - struct auth_rrset**
    - size_t
    - struct auth_rrset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7769
      start: 7756
    functionDepth: 0
    functionLinenumber: 7756
    functionLinenumberEnd: 7769
    functionName: authdata_rrsets_to_list
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: "size_t authdata_rrsets_to_list(struct auth_rrset** array,\n\tsize_t
      arraysize, struct auth_rrset* first)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - arg1
    - arg2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7786
      start: 7772
    functionDepth: 0
    functionLinenumber: 7772
    functionLinenumberEnd: 7786
    functionName: rrlist_compare
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rrlist_compare(const void* arg1, const void* arg2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:7793,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - array
    - arraysize
    - rrnum
    - node
    argTypes:
    - struct auth_rrset**
    - size_t
    - size_t*
    - struct auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7799
      start: 7790
    functionDepth: 1
    functionLinenumber: 7790
    functionLinenumberEnd: 7799
    functionName: addrrsigtype_if_needed
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_domain_rrset
    linkageType: ''
    returnType: void
    signature: "void addrrsigtype_if_needed(struct auth_rrset** array,\n\tsize_t arraysize,
      size_t* rrnum, struct auth_data* node)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/authzone.c:7809,1
    - Dst: htons
      Src: /src/unbound/services/authzone.c:7814,1
    - Dst: htons
      Src: /src/unbound/services/authzone.c:7815,1
    - Dst: rrset_canonicalize_to_buffer
      Src: /src/unbound/services/authzone.c:7816,1
    - Dst: regional_free_all
      Src: /src/unbound/services/authzone.c:7820,1
    - Dst: zonemd_digest_update
      Src: /src/unbound/services/authzone.c:7823,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:7823,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/authzone.c:7824,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 8
    argNames:
    - z
    - hashalgo
    - h
    - node
    - rrset
    - region
    - buf
    - reason
    argTypes:
    - struct auth_zone*
    - int
    - struct secalgo_hash*
    - struct auth_data*
    - struct auth_rrset*
    - struct regional*
    - struct sldns_buffer*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7828
      start: 7802
    functionDepth: 6
    functionLinenumber: 7802
    functionLinenumberEnd: 7828
    functionName: zonemd_simple_rrset
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_limit
    - zonemd_digest_update
    - htons
    - regional_free_all
    - sldns_buffer_begin
    - memset
    - rrset_canonicalize_to_buffer
    linkageType: ''
    returnType: int
    signature: "int zonemd_simple_rrset(struct auth_zone* z, int hashalgo,\n\tstruct
      secalgo_hash* h, struct auth_data* node,\n\tstruct auth_rrset* rrset, struct
      regional* region,\n\tstruct sldns_buffer* buf, char** reason)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rrsig_rdata_get_type_covered
      Src: /src/unbound/services/authzone.c:7839,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/authzone.c:7842,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/authzone.c:7851,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 5
    argNames:
    - rrset
    - rrlist
    - rrnum
    - z
    - node
    argTypes:
    - struct auth_rrset*
    - struct auth_rrset**
    - size_t
    - struct auth_zone*
    - struct auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7858
      start: 7831
    functionDepth: 2
    functionLinenumber: 7831
    functionLinenumberEnd: 7858
    functionName: zonemd_simple_count_rrsig
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - query_dname_compare
    - rrsig_rdata_get_type_covered
    linkageType: ''
    returnType: size_t
    signature: "size_t zonemd_simple_count_rrsig(struct auth_rrset* rrset,\n\tstruct
      auth_rrset** rrlist, size_t rrnum,\n\tstruct auth_zone* z, struct auth_data*
      node)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/services/authzone.c:7864,1
    - Dst: regional_alloc
      Src: /src/unbound/services/authzone.c:7868,1
    - Dst: regional_alloc
      Src: /src/unbound/services/authzone.c:7872,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - region
    - data
    - count
    argTypes:
    - struct regional*
    - struct packed_rrset_data*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7877
      start: 7861
    functionDepth: 0
    functionLinenumber: 7861
    functionLinenumberEnd: 7877
    functionName: zonemd_simple_rrsig_allocs
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - regional_alloc
    linkageType: ''
    returnType: int
    signature: "int zonemd_simple_rrsig_allocs(struct regional* region,\n\tstruct
      packed_rrset_data* data, size_t count)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: query_dname_compare
      Src: /src/unbound/services/authzone.c:7890,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 6
    argNames:
    - data
    - done
    - rrlist
    - rrnum
    - z
    - node
    argTypes:
    - struct packed_rrset_data*
    - size_t*
    - struct auth_rrset**
    - size_t
    - struct auth_zone*
    - struct auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7904
      start: 7880
    functionDepth: 1
    functionLinenumber: 7880
    functionLinenumberEnd: 7904
    functionName: add_rrlist_rrsigs_into_data
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - query_dname_compare
    linkageType: ''
    returnType: void
    signature: "void add_rrlist_rrsigs_into_data(struct packed_rrset_data* data,\n\tsize_t*
      done, struct auth_rrset** rrlist, size_t rrnum,\n\tstruct auth_zone* z, struct
      auth_data* node)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rrsig_rdata_get_type_covered
      Src: /src/unbound/services/authzone.c:7913,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/authzone.c:7916,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 5
    argNames:
    - data
    - done
    - rrset
    - z
    - node
    argTypes:
    - struct packed_rrset_data*
    - size_t*
    - struct auth_rrset*
    - struct auth_zone*
    - struct auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7929
      start: 7906
    functionDepth: 2
    functionLinenumber: 7906
    functionLinenumberEnd: 7929
    functionName: add_rrset_into_data
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - query_dname_compare
    - rrsig_rdata_get_type_covered
    linkageType: ''
    returnType: void
    signature: "void add_rrset_into_data(struct packed_rrset_data* data,\n\tsize_t*
      done, struct auth_rrset* rrset,\n\tstruct auth_zone* z, struct auth_data* node)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/authzone.c:7952,1
    - Dst: memset
      Src: /src/unbound/services/authzone.c:7953,1
    - Dst: htons
      Src: /src/unbound/services/authzone.c:7958,1
    - Dst: htons
      Src: /src/unbound/services/authzone.c:7959,1
    - Dst: zonemd_simple_count_rrsig
      Src: /src/unbound/services/authzone.c:7960,1
    - Dst: zonemd_simple_rrsig_allocs
      Src: /src/unbound/services/authzone.c:7961,1
    - Dst: regional_free_all
      Src: /src/unbound/services/authzone.c:7963,1
    - Dst: add_rrlist_rrsigs_into_data
      Src: /src/unbound/services/authzone.c:7967,1
    - Dst: add_rrset_into_data
      Src: /src/unbound/services/authzone.c:7969,1
    - Dst: rrset_canonicalize_to_buffer
      Src: /src/unbound/services/authzone.c:7972,1
    - Dst: regional_free_all
      Src: /src/unbound/services/authzone.c:7974,1
    - Dst: regional_free_all
      Src: /src/unbound/services/authzone.c:7977,1
    - Dst: zonemd_digest_update
      Src: /src/unbound/services/authzone.c:7980,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/authzone.c:7980,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/authzone.c:7981,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 10
    argNames:
    - z
    - hashalgo
    - h
    - node
    - rrset
    - rrlist
    - rrnum
    - region
    - buf
    - reason
    argTypes:
    - struct auth_zone*
    - int
    - struct secalgo_hash*
    - struct auth_data*
    - struct auth_rrset*
    - struct auth_rrset**
    - size_t
    - struct regional*
    - struct sldns_buffer*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7985
      start: 7932
    functionDepth: 6
    functionLinenumber: 7932
    functionLinenumberEnd: 7985
    functionName: zonemd_simple_rrsig
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - zonemd_simple_rrsig_allocs
    - add_rrset_into_data
    - rrset_canonicalize_to_buffer
    - add_rrlist_rrsigs_into_data
    - sldns_buffer_limit
    - zonemd_simple_count_rrsig
    - zonemd_digest_update
    - htons
    - sldns_buffer_begin
    - memset
    - regional_free_all
    linkageType: ''
    returnType: int
    signature: "int zonemd_simple_rrsig(struct auth_zone* z, int hashalgo,\n\tstruct
      secalgo_hash* h, struct auth_data* node,\n\tstruct auth_rrset* rrset, struct
      auth_rrset** rrlist, size_t rrnum,\n\tstruct regional* region, struct sldns_buffer*
      buf, char** reason)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dname_subdomain_c
      Src: /src/unbound/services/authzone.c:7997,1
    - Dst: authdata_rrsets_to_list
      Src: /src/unbound/services/authzone.c:8000,1
    - Dst: addrrsigtype_if_needed
      Src: /src/unbound/services/authzone.c:8001,1
    - Dst: qsort
      Src: /src/unbound/services/authzone.c:8002,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/authzone.c:8005,1
    - Dst: zonemd_simple_rrsig
      Src: /src/unbound/services/authzone.c:8011,1
    - Dst: zonemd_simple_rrset
      Src: /src/unbound/services/authzone.c:8014,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 7
    argNames:
    - z
    - hashalgo
    - h
    - node
    - region
    - buf
    - reason
    argTypes:
    - struct auth_zone*
    - int
    - struct secalgo_hash*
    - struct auth_data*
    - struct regional*
    - struct sldns_buffer*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8020
      start: 7988
    functionDepth: 7
    functionLinenumber: 7988
    functionLinenumberEnd: 8020
    functionName: zonemd_simple_domain
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    - authdata_rrsets_to_list
    - zonemd_simple_rrset
    - addrrsigtype_if_needed
    - query_dname_compare
    - zonemd_simple_rrsig
    - qsort
    linkageType: ''
    returnType: int
    signature: "int zonemd_simple_domain(struct auth_zone* z, int hashalgo,\n\tstruct
      secalgo_hash* h, struct auth_data* node,\n\tstruct regional* region, struct
      sldns_buffer* buf, char** reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zonemd_simple_domain
      Src: /src/unbound/services/authzone.c:8031,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - z
    - hashalgo
    - h
    - region
    - buf
    - reason
    argTypes:
    - struct auth_zone*
    - int
    - struct secalgo_hash*
    - struct regional*
    - struct sldns_buffer*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8036
      start: 8023
    functionDepth: 8
    functionLinenumber: 8023
    functionLinenumberEnd: 8036
    functionName: zonemd_simple_collate
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - zonemd_simple_domain
    linkageType: ''
    returnType: int
    signature: "int zonemd_simple_collate(struct auth_zone* z, int hashalgo,\n\tstruct
      secalgo_hash* h, struct regional* region,\n\tstruct sldns_buffer* buf, char**
      reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: zonemd_simple_domain
      Src: /src/unbound/services/authzone.c:8031,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - data
    argTypes:
    - z
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8034
      start: 8030
    functionDepth: 8
    functionLinenumber: 8030
    functionLinenumberEnd: 8034
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - zonemd_simple_domain
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(n, struct auth_data*, &z->data)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: zonemd_digest_init
      Src: /src/unbound/services/authzone.c:8042,1
    - Dst: zonemd_simple_collate
      Src: /src/unbound/services/authzone.c:8049,1
    - Dst: secalgo_hash_delete
      Src: /src/unbound/services/authzone.c:8051,1
    - Dst: zonemd_digest_finish
      Src: /src/unbound/services/authzone.c:8055,1
    - Dst: secalgo_hash_delete
      Src: /src/unbound/services/authzone.c:8057,1
    - Dst: secalgo_hash_delete
      Src: /src/unbound/services/authzone.c:8061,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 9
    argNames:
    - z
    - scheme
    - hashalgo
    - hash
    - hashlen
    - resultlen
    - region
    - buf
    - reason
    argTypes:
    - struct auth_zone*
    - int
    - int
    - uint8_t*
    - size_t
    - size_t*
    - struct regional*
    - struct sldns_buffer*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8063
      start: 8038
    functionDepth: 9
    functionLinenumber: 8038
    functionLinenumberEnd: 8063
    functionName: auth_zone_generate_zonemd_hash
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - zonemd_digest_init
    - zonemd_digest_finish
    - secalgo_hash_delete
    - zonemd_simple_collate
    linkageType: ''
    returnType: int
    signature: "int auth_zone_generate_zonemd_hash(struct auth_zone* z, int scheme,\n\tint
      hashalgo, uint8_t* hash, size_t hashlen, size_t* resultlen,\n\tstruct regional*
      region, struct sldns_buffer* buf, char** reason)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: zonemd_hashalgo_supported
      Src: /src/unbound/services/authzone.c:8072,1
    - Dst: zonemd_scheme_supported
      Src: /src/unbound/services/authzone.c:8077,1
    - Dst: auth_zone_generate_zonemd_hash
      Src: /src/unbound/services/authzone.c:8088,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:8097,1
    - Dst: log_hex
      Src: /src/unbound/services/authzone.c:8099,1
    - Dst: log_hex
      Src: /src/unbound/services/authzone.c:8100,1
    - Dst: memcmp
      Src: /src/unbound/services/authzone.c:8105,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:8108,1
    - Dst: log_hex
      Src: /src/unbound/services/authzone.c:8110,1
    - Dst: log_hex
      Src: /src/unbound/services/authzone.c:8111,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 36
    argCount: 8
    argNames:
    - z
    - scheme
    - hashalgo
    - hash
    - hashlen
    - region
    - buf
    - reason
    argTypes:
    - struct auth_zone*
    - int
    - int
    - uint8_t*
    - size_t
    - struct regional*
    - struct sldns_buffer*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8116
      start: 8065
    functionDepth: 10
    functionLinenumber: 8065
    functionLinenumberEnd: 8116
    functionName: auth_zone_generate_zonemd_check
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 1
    functionsReached:
    - verbose
    - zonemd_scheme_supported
    - zonemd_hashalgo_supported
    - log_hex
    - memcmp
    - auth_zone_generate_zonemd_hash
    linkageType: ''
    returnType: int
    signature: "int auth_zone_generate_zonemd_check(struct auth_zone* z, int scheme,\n\tint
      hashalgo, uint8_t* hash, size_t hashlen, struct regional* region,\n\tstruct
      sldns_buffer* buf, char** reason)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/services/authzone.c:8125,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:8129,1
    - Dst: vsnprintf
      Src: /src/unbound/services/authzone.c:8130,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:8131,1
    - Dst: va_end
      Src: /src/unbound/services/authzone.c:8133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 3
    argNames:
    - name
    - level
    - format
    argTypes:
    - uint8_t*
    - enum verbosity_value
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8134
      start: 8121
    functionDepth: 5
    functionLinenumber: 8121
    functionLinenumberEnd: 8134
    functionName: auth_zone_log
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - vsnprintf
    - va_start
    - verbose
    - va_end
    - dname_str
    linkageType: ''
    returnType: void
    signature: "void auth_zone_log(uint8_t* name, enum verbosity_value level,\n\tconst
      char* format, ...)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: modstack_find
      Src: /src/unbound/services/authzone.c:8148,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8150,1
    - Dst: memset
      Src: /src/unbound/services/authzone.c:8156,1
    - Dst: htons
      Src: /src/unbound/services/authzone.c:8161,1
    - Dst: htons
      Src: /src/unbound/services/authzone.c:8162,1
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/services/authzone.c:8166,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8167,1
    - Dst: dnskeyset_verify_rrset
      Src: /src/unbound/services/authzone.c:8170,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8176,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 26
    argCount: 10
    argNames:
    - z
    - env
    - mods
    - dnskey
    - node
    - rrset
    - why_bogus
    - sigalg
    - reasonbuf
    - reasonlen
    argTypes:
    - struct auth_zone*
    - struct module_env*
    - struct module_stack*
    - struct ub_packed_rrset_key*
    - struct auth_data*
    - struct auth_rrset*
    - char**
    - uint8_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8178
      start: 8137
    functionDepth: 6
    functionLinenumber: 8137
    functionLinenumberEnd: 8178
    functionName: zonemd_dnssec_verify_rrset
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - dnskeyset_verify_rrset
    - auth_zone_log
    - sldns_wire2str_type_buf
    - htons
    - modstack_find
    - memset
    linkageType: ''
    returnType: int
    signature: "int zonemd_dnssec_verify_rrset(struct auth_zone* z,\n\tstruct module_env*
      env, struct module_stack* mods,\n\tstruct ub_packed_rrset_key* dnskey, struct
      auth_data* node,\n\tstruct auth_rrset* rrset, char** why_bogus, uint8_t* sigalg,\n\tchar*
      reasonbuf, size_t reasonlen)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/services/authzone.c:8186,1
    - Dst: nsec3_get_params
      Src: /src/unbound/services/authzone.c:8192,1
    - Dst: memcmp
      Src: /src/unbound/services/authzone.c:8200,1
    - Dst: nsec3_has_type
      Src: /src/unbound/services/authzone.c:8203,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 18
    argCount: 6
    argNames:
    - nsec3
    - algo
    - iter
    - salt
    - saltlen
    - rrtype
    argTypes:
    - struct auth_rrset*
    - int
    - size_t
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8207
      start: 8181
    functionDepth: 3
    functionLinenumber: 8181
    functionLinenumberEnd: 8207
    functionName: nsec3_of_param_has_type
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - nsec3_has_type
    - memset
    - nsec3_get_params
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int nsec3_of_param_has_type(struct auth_rrset* nsec3, int algo,\n\tsize_t
      iter, uint8_t* salt, size_t saltlen, uint16_t rrtype)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:8222,1
    - Dst: zonemd_dnssec_verify_rrset
      Src: /src/unbound/services/authzone.c:8226,1
    - Dst: memset
      Src: /src/unbound/services/authzone.c:8232,1
    - Dst: nsec_has_type
      Src: /src/unbound/services/authzone.c:8234,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8238,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:8244,1
    - Dst: az_nsec3_param
      Src: /src/unbound/services/authzone.c:8252,1
    - Dst: az_nsec3_find_exact
      Src: /src/unbound/services/authzone.c:8257,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:8263,1
    - Dst: zonemd_dnssec_verify_rrset
      Src: /src/unbound/services/authzone.c:8269,1
    - Dst: nsec3_of_param_has_type
      Src: /src/unbound/services/authzone.c:8275,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8280,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 48
    argCount: 10
    argNames:
    - z
    - env
    - mods
    - dnskey
    - apex
    - reason
    - why_bogus
    - sigalg
    - reasonbuf
    - reasonlen
    argTypes:
    - struct auth_zone*
    - struct module_env*
    - struct module_stack*
    - struct ub_packed_rrset_key*
    - struct auth_data*
    - char**
    - char**
    - uint8_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8284
      start: 8211
    functionDepth: 7
    functionLinenumber: 8211
    functionLinenumberEnd: 8284
    functionName: zonemd_check_dnssec_absence
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - nsec3_of_param_has_type
    - auth_zone_log
    - az_nsec3_param
    - az_domain_rrset
    - az_nsec3_find_exact
    - nsec_has_type
    - memset
    - zonemd_dnssec_verify_rrset
    linkageType: ''
    returnType: int
    signature: "int zonemd_check_dnssec_absence(struct auth_zone* z,\n\tstruct module_env*
      env, struct module_stack* mods,\n\tstruct ub_packed_rrset_key* dnskey, struct
      auth_data* apex,\n\tchar** reason, char** why_bogus, uint8_t* sigalg, char*
      reasonbuf,\n\tsize_t reasonlen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:8299,1
    - Dst: zonemd_dnssec_verify_rrset
      Src: /src/unbound/services/authzone.c:8304,1
    - Dst: zonemd_dnssec_verify_rrset
      Src: /src/unbound/services/authzone.c:8309,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8314,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 11
    argNames:
    - z
    - env
    - mods
    - dnskey
    - apex
    - zonemd_rrset
    - reason
    - why_bogus
    - sigalg
    - reasonbuf
    - reasonlen
    argTypes:
    - struct auth_zone*
    - struct module_env*
    - struct module_stack*
    - struct ub_packed_rrset_key*
    - struct auth_data*
    - struct auth_rrset*
    - char**
    - char**
    - uint8_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8316
      start: 8288
    functionDepth: 7
    functionLinenumber: 8288
    functionLinenumberEnd: 8316
    functionName: zonemd_check_dnssec_soazonemd
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_zone_log
    - az_domain_rrset
    - zonemd_dnssec_verify_rrset
    linkageType: ''
    returnType: int
    signature: "int zonemd_check_dnssec_soazonemd(struct auth_zone* z,\n\tstruct module_env*
      env, struct module_stack* mods,\n\tstruct ub_packed_rrset_key* dnskey, struct
      auth_data* apex,\n\tstruct auth_rrset* zonemd_rrset, char** reason, char** why_bogus,\n\tuint8_t*
      sigalg, char* reasonbuf, size_t reasonlen)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:8332,1
    - Dst: snprintf
      Src: /src/unbound/services/authzone.c:8337,1
    - Dst: strdup
      Src: /src/unbound/services/authzone.c:8339,1
    - Dst: strdup
      Src: /src/unbound/services/authzone.c:8341,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:8343,1
    - Dst: log_warn
      Src: /src/unbound/services/authzone.c:8345,1
    - Dst: verbose
      Src: /src/unbound/services/authzone.c:8349,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 5
    argNames:
    - z
    - env
    - reason
    - why_bogus
    - result
    argTypes:
    - struct auth_zone*
    - struct module_env*
    - char*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8357
      start: 8326
    functionDepth: 2
    functionLinenumber: 8326
    functionLinenumberEnd: 8357
    functionName: auth_zone_zonemd_fail
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - snprintf
    - verbose
    - dname_str
    - log_warn
    - strdup
    linkageType: ''
    returnType: void
    signature: "void auth_zone_zonemd_fail(struct auth_zone* z, struct module_env*
      env,\n\tchar* reason, char* why_bogus, char** result)"
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:8385,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:8389,1
    - Dst: auth_zone_zonemd_fail
      Src: /src/unbound/services/authzone.c:8402,1
    - Dst: zonemd_check_dnssec_absence
      Src: /src/unbound/services/authzone.c:8406,1
    - Dst: auth_zone_zonemd_fail
      Src: /src/unbound/services/authzone.c:8409,1
    - Dst: zonemd_check_dnssec_soazonemd
      Src: /src/unbound/services/authzone.c:8415,1
    - Dst: auth_zone_zonemd_fail
      Src: /src/unbound/services/authzone.c:8418,1
    - Dst: auth_zone_zonemd_fail
      Src: /src/unbound/services/authzone.c:8424,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8428,1
    - Dst: strdup
      Src: /src/unbound/services/authzone.c:8430,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:8431,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8436,1
    - Dst: strdup
      Src: /src/unbound/services/authzone.c:8438,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:8439,1
    - Dst: auth_zone_zonemd_check_hash
      Src: /src/unbound/services/authzone.c:8445,1
    - Dst: auth_zone_zonemd_fail
      Src: /src/unbound/services/authzone.c:8446,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8452,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8453,1
    - Dst: strdup
      Src: /src/unbound/services/authzone.c:8456,1
    - Dst: strdup
      Src: /src/unbound/services/authzone.c:8457,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:8458,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 64
    argCount: 7
    argNames:
    - z
    - env
    - mods
    - dnskey
    - is_insecure
    - result
    - sigalg
    argTypes:
    - struct auth_zone*
    - struct module_env*
    - struct module_stack*
    - struct ub_packed_rrset_key*
    - int
    - char**
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8460
      start: 8373
    functionDepth: 8
    functionLinenumber: 8373
    functionLinenumberEnd: 8460
    functionName: auth_zone_verify_zonemd_with_key
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_name
    - log_err
    - strdup
    - auth_zone_log
    - auth_zone_zonemd_check_hash
    - az_domain_rrset
    - auth_zone_zonemd_fail
    - zonemd_check_dnssec_soazonemd
    - zonemd_check_dnssec_absence
    linkageType: ''
    returnType: void
    signature: "void auth_zone_verify_zonemd_with_key(struct auth_zone* z, struct
      module_env* env,\n\tstruct module_stack* mods, struct ub_packed_rrset_key* dnskey,\n\tint
      is_insecure, char** result, uint8_t* sigalg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:8492,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:8497,1
    - Dst: modstack_find
      Src: /src/unbound/services/authzone.c:8503,1
    - Dst: memset
      Src: /src/unbound/services/authzone.c:8510,1
    - Dst: htons
      Src: /src/unbound/services/authzone.c:8515,1
    - Dst: htons
      Src: /src/unbound/services/authzone.c:8516,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8517,1
    - Dst: val_verify_DNSKEY_with_TA
      Src: /src/unbound/services/authzone.c:8519,1
    - Dst: regional_free_all
      Src: /src/unbound/services/authzone.c:8522,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8533,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 38
    argCount: 9
    argNames:
    - z
    - env
    - mods
    - anchor
    - is_insecure
    - why_bogus
    - keystorage
    - reasonbuf
    - reasonlen
    argTypes:
    - struct auth_zone*
    - struct module_env*
    - struct module_stack*
    - struct trust_anchor*
    - int*
    - char**
    - struct ub_packed_rrset_key*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8537
      start: 8479
    functionDepth: 9
    functionLinenumber: 8479
    functionLinenumberEnd: 8537
    functionName: zonemd_get_dnskey_from_anchor
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_name
    - auth_zone_log
    - az_domain_rrset
    - htons
    - val_verify_DNSKEY_with_TA
    - modstack_find
    - memset
    - regional_free_all
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: "struct ub_packed_rrset_key *\nzonemd_get_dnskey_from_anchor(struct
      auth_zone* z, struct module_env* env,\n\tstruct module_stack* mods, struct trust_anchor*
      anchor,\n\tint* is_insecure, char** why_bogus,\n\tstruct ub_packed_rrset_key*
      keystorage, char* reasonbuf,\n\tsize_t reasonlen)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: az_find_name
      Src: /src/unbound/services/authzone.c:8554,1
    - Dst: az_domain_rrset
      Src: /src/unbound/services/authzone.c:8559,1
    - Dst: modstack_find
      Src: /src/unbound/services/authzone.c:8565,1
    - Dst: memset
      Src: /src/unbound/services/authzone.c:8572,1
    - Dst: htons
      Src: /src/unbound/services/authzone.c:8577,1
    - Dst: htons
      Src: /src/unbound/services/authzone.c:8578,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8579,1
    - Dst: val_verify_DNSKEY_with_DS
      Src: /src/unbound/services/authzone.c:8580,1
    - Dst: regional_free_all
      Src: /src/unbound/services/authzone.c:8582,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8594,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 39
    argCount: 10
    argNames:
    - z
    - env
    - mods
    - ds
    - is_insecure
    - why_bogus
    - keystorage
    - sigalg
    - reasonbuf
    - reasonlen
    argTypes:
    - struct auth_zone*
    - struct module_env*
    - struct module_stack*
    - struct ub_packed_rrset_key*
    - int*
    - char**
    - struct ub_packed_rrset_key*
    - uint8_t*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8599
      start: 8540
    functionDepth: 9
    functionLinenumber: 8540
    functionLinenumberEnd: 8599
    functionName: auth_zone_verify_zonemd_key_with_ds
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - az_find_name
    - val_verify_DNSKEY_with_DS
    - auth_zone_log
    - az_domain_rrset
    - htons
    - modstack_find
    - memset
    - regional_free_all
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: "struct ub_packed_rrset_key *\nauth_zone_verify_zonemd_key_with_ds(struct
      auth_zone* z,\n\tstruct module_env* env, struct module_stack* mods,\n\tstruct
      ub_packed_rrset_key* ds, int* is_insecure, char** why_bogus,\n\tstruct ub_packed_rrset_key*
      keystorage, uint8_t* sigalg,\n\tchar* reasonbuf, size_t reasonlen)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:8614,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:8620,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8635,1
    - Dst: memset
      Src: /src/unbound/services/authzone.c:8642,1
    - Dst: parse_reply_in_temp_region
      Src: /src/unbound/services/authzone.c:8643,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/authzone.c:8645,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/services/authzone.c:8646,1
    - Dst: reply_find_answer_rrset
      Src: /src/unbound/services/authzone.c:8649,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8654,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8658,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8662,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8666,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8669,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/authzone.c:8676,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/services/authzone.c:8677,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8685,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/authzone.c:8688,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/services/authzone.c:8689,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8692,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/authzone.c:8695,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/services/authzone.c:8696,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8699,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8702,1
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8709,1
    - Dst: auth_zone_verify_zonemd_key_with_ds
      Src: /src/unbound/services/authzone.c:8717,1
    - Dst: auth_zone_zonemd_fail
      Src: /src/unbound/services/authzone.c:8726,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:8727,1
    - Dst: regional_free_all
      Src: /src/unbound/services/authzone.c:8728,1
    - Dst: auth_zone_verify_zonemd_with_key
      Src: /src/unbound/services/authzone.c:8732,1
    - Dst: regional_free_all
      Src: /src/unbound/services/authzone.c:8734,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:8735,1
    CyclomaticComplexity: 45
    EdgeCount: 45
    ICount: 85
    argCount: 6
    argNames:
    - arg
    - rcode
    - buf
    - sec
    - why_bogus
    - ATTR_UNUSED
    argTypes:
    - void*
    - int
    - sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8736
      start: 8602
    functionDepth: 10
    functionLinenumber: 8602
    functionLinenumberEnd: 8736
    functionName: auth_zonemd_dnskey_lookup_callback
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - FLAGS_GET_RCODE
    - auth_zone_verify_zonemd_with_key
    - lock_rw_wrlock
    - lock_rw_unlock
    - auth_zone_log
    - reply_find_answer_rrset
    - auth_zone_verify_zonemd_key_with_ds
    - query_dname_compare
    - parse_reply_in_temp_region
    - auth_zone_zonemd_fail
    - memset
    - regional_free_all
    linkageType: ''
    returnType: void
    signature: "void auth_zonemd_dnskey_lookup_callback(void* arg, int rcode, sldns_buffer*
      buf,\n\tenum sec_status sec, char* why_bogus, int ATTR_UNUSED(was_ratelimited))"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: auth_zone_log
      Src: /src/unbound/services/authzone.c:8759,1
    - Dst: dname_str
      Src: /src/unbound/services/authzone.c:8776,1
    - Dst: snprintf
      Src: /src/unbound/services/authzone.c:8777,1
    - Dst: log_query_info
      Src: /src/unbound/services/authzone.c:8780,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/authzone.c:8789,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/services/authzone.c:8790,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:8798,1
    - Dst: mesh_new_callback
      Src: /src/unbound/services/authzone.c:8799,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:8802,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:8803,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:8807,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 40
    argCount: 2
    argNames:
    - z
    - env
    argTypes:
    - struct auth_zone*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8809
      start: 8739
    functionDepth: 6
    functionLinenumber: 8739
    functionLinenumberEnd: 8809
    functionName: zonemd_lookup_dnskey
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - log_err
    - auth_zone_log
    - snprintf
    - log_query_info
    - lock_rw_unlock
    - lock_rw_wrlock
    - dname_str
    - mesh_new_callback
    linkageType: ''
    returnType: int
    signature: int zonemd_lookup_dnskey(struct auth_zone* z, struct module_env* env)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: anchors_lookup
      Src: /src/unbound/services/authzone.c:8833,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:8837,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/authzone.c:8842,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:8844,1
    - Dst: zonemd_get_dnskey_from_anchor
      Src: /src/unbound/services/authzone.c:8848,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:8851,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:8856,1
    - Dst: zonemd_lookup_dnskey
      Src: /src/unbound/services/authzone.c:8861,1
    - Dst: auth_zone_zonemd_fail
      Src: /src/unbound/services/authzone.c:8875,1
    - Dst: regional_free_all
      Src: /src/unbound/services/authzone.c:8876,1
    - Dst: auth_zone_verify_zonemd_with_key
      Src: /src/unbound/services/authzone.c:8880,1
    - Dst: regional_free_all
      Src: /src/unbound/services/authzone.c:8882,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 46
    argCount: 6
    argNames:
    - z
    - env
    - mods
    - result
    - offline
    - only_online
    argTypes:
    - struct auth_zone*
    - struct module_env*
    - struct module_stack*
    - char**
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8883
      start: 8811
    functionDepth: 10
    functionLinenumber: 8811
    functionLinenumberEnd: 8883
    functionName: auth_zone_verify_zonemd
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 5
    functionsReached:
    - auth_zone_verify_zonemd_with_key
    - anchors_lookup
    - zonemd_lookup_dnskey
    - lock_basic_unlock
    - query_dname_compare
    - auth_zone_zonemd_fail
    - zonemd_get_dnskey_from_anchor
    - regional_free_all
    linkageType: ''
    returnType: void
    signature: "void auth_zone_verify_zonemd(struct auth_zone* z, struct module_env*
      env,\n\tstruct module_stack* mods, char** result, int offline, int only_online)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:8893,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:8895,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:8897,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:8903,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:8904,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:8908,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:8909,1
    - Dst: auth_zone_verify_zonemd
      Src: /src/unbound/services/authzone.c:8910,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:8911,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:8912,1
    - Dst: rbtree_search
      Src: /src/unbound/services/authzone.c:8918,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:8922,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - az
    - env
    argTypes:
    - struct auth_zones*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8923
      start: 8885
    functionDepth: 11
    functionLinenumber: 8885
    functionLinenumberEnd: 8923
    functionName: auth_zones_pickup_zonemd_verify
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 1
    functionsReached:
    - log_err
    - memmove
    - lock_rw_wrlock
    - lock_rw_unlock
    - auth_zone_verify_zonemd
    - lock_rw_rdlock
    - rbtree_search
    linkageType: ''
    returnType: void
    signature: "void auth_zones_pickup_zonemd_verify(struct auth_zones* az,\n\tstruct
      module_env* env)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/authzone.c:8895,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:8897,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:8903,1
    - Dst: log_err
      Src: /src/unbound/services/authzone.c:8904,1
    - Dst: memmove
      Src: /src/unbound/services/authzone.c:8908,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:8909,1
    - Dst: auth_zone_verify_zonemd
      Src: /src/unbound/services/authzone.c:8910,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:8911,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:8912,1
    - Dst: rbtree_search
      Src: /src/unbound/services/authzone.c:8918,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 1
    argNames:
    - ztree
    argTypes:
    - az
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8921
      start: 8894
    functionDepth: 11
    functionLinenumber: 8894
    functionLinenumberEnd: 8921
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - log_err
    - memmove
    - lock_rw_wrlock
    - lock_rw_unlock
    - auth_zone_verify_zonemd
    - lock_rw_rdlock
    - rbtree_search
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct auth_zone*, &az->ztree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: packed_rrset_sizeof
      Src: /src/unbound/services/authzone.c:8929,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rrset
    argTypes:
    - struct auth_rrset*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8931
      start: 8926
    functionDepth: 1
    functionLinenumber: 8926
    functionLinenumberEnd: 8931
    functionName: auth_rrset_get_mem
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - packed_rrset_sizeof
    linkageType: ''
    returnType: size_t
    signature: size_t auth_rrset_get_mem(struct auth_rrset* rrset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_rrset_get_mem
      Src: /src/unbound/services/authzone.c:8940,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct auth_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8943
      start: 8934
    functionDepth: 2
    functionLinenumber: 8934
    functionLinenumberEnd: 8943
    functionName: auth_data_get_mem
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_rrset_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t auth_data_get_mem(struct auth_data* node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/services/authzone.c:8952,1
    - Dst: auth_data_get_mem
      Src: /src/unbound/services/authzone.c:8954,1
    - Dst: rpz_get_mem
      Src: /src/unbound/services/authzone.c:8957,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - z
    argTypes:
    - struct auth_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8959
      start: 8946
    functionDepth: 3
    functionLinenumber: 8946
    functionLinenumberEnd: 8959
    functionName: auth_zone_get_mem
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - rpz_get_mem
    - strlen
    - auth_data_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t auth_zone_get_mem(struct auth_zone* z)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: auth_data_get_mem
      Src: /src/unbound/services/authzone.c:8954,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - data
    argTypes:
    - z
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8955
      start: 8953
    functionDepth: 3
    functionLinenumber: 8953
    functionLinenumberEnd: 8955
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_data_get_mem
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(node, struct auth_data*, &z->data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct auth_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8971
      start: 8962
    functionDepth: 0
    functionLinenumber: 8962
    functionLinenumberEnd: 8971
    functionName: auth_addrs_get_mem
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t auth_addrs_get_mem(struct auth_addr* list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_addrs_get_mem
      Src: /src/unbound/services/authzone.c:8981,1
    - Dst: strlen
      Src: /src/unbound/services/authzone.c:8983,1
    - Dst: strlen
      Src: /src/unbound/services/authzone.c:8985,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct auth_master*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 8988
      start: 8974
    functionDepth: 1
    functionLinenumber: 8974
    functionLinenumberEnd: 8988
    functionName: auth_primaries_get_mem
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - strlen
    - auth_addrs_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t auth_primaries_get_mem(struct auth_master* list)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct auth_chunk*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9000
      start: 8991
    functionDepth: 0
    functionLinenumber: 8991
    functionLinenumberEnd: 9000
    functionName: auth_chunks_get_mem
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t auth_chunks_get_mem(struct auth_chunk* list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: comm_timer_get_mem
      Src: /src/unbound/services/authzone.c:9009,1
    - Dst: auth_primaries_get_mem
      Src: /src/unbound/services/authzone.c:9012,1
    - Dst: comm_point_get_mem
      Src: /src/unbound/services/authzone.c:9013,1
    - Dst: comm_timer_get_mem
      Src: /src/unbound/services/authzone.c:9014,1
    - Dst: auth_chunks_get_mem
      Src: /src/unbound/services/authzone.c:9017,1
    - Dst: auth_primaries_get_mem
      Src: /src/unbound/services/authzone.c:9018,1
    - Dst: comm_point_get_mem
      Src: /src/unbound/services/authzone.c:9019,1
    - Dst: comm_timer_get_mem
      Src: /src/unbound/services/authzone.c:9020,1
    - Dst: auth_primaries_get_mem
      Src: /src/unbound/services/authzone.c:9023,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - xfr
    argTypes:
    - struct auth_xfer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9026
      start: 9003
    functionDepth: 2
    functionLinenumber: 9003
    functionLinenumberEnd: 9026
    functionName: auth_xfer_get_mem
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - comm_timer_get_mem
    - comm_point_get_mem
    - auth_chunks_get_mem
    - auth_primaries_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t auth_xfer_get_mem(struct auth_xfer* xfr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:9035,1
    - Dst: auth_zone_get_mem
      Src: /src/unbound/services/authzone.c:9036,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:9037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - az
    argTypes:
    - struct auth_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9040
      start: 9029
    functionDepth: 4
    functionLinenumber: 9029
    functionLinenumberEnd: 9040
    functionName: az_ztree_get_mem
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_zone_get_mem
    - lock_rw_unlock
    - lock_rw_rdlock
    linkageType: ''
    returnType: size_t
    signature: size_t az_ztree_get_mem(struct auth_zones* az)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:9035,1
    - Dst: auth_zone_get_mem
      Src: /src/unbound/services/authzone.c:9036,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:9037,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ztree
    argTypes:
    - az
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9038
      start: 9034
    functionDepth: 4
    functionLinenumber: 9034
    functionLinenumberEnd: 9038
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - auth_zone_get_mem
    - lock_rw_unlock
    - lock_rw_rdlock
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct auth_zone*, &az->ztree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:9049,1
    - Dst: auth_xfer_get_mem
      Src: /src/unbound/services/authzone.c:9050,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:9051,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - az
    argTypes:
    - struct auth_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9054
      start: 9043
    functionDepth: 3
    functionLinenumber: 9043
    functionLinenumberEnd: 9054
    functionName: az_xtree_get_mem
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - auth_xfer_get_mem
    - lock_basic_lock
    linkageType: ''
    returnType: size_t
    signature: size_t az_xtree_get_mem(struct auth_zones* az)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/services/authzone.c:9049,1
    - Dst: auth_xfer_get_mem
      Src: /src/unbound/services/authzone.c:9050,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/services/authzone.c:9051,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - xtree
    argTypes:
    - az
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9052
      start: 9048
    functionDepth: 3
    functionLinenumber: 9048
    functionLinenumberEnd: 9052
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - auth_xfer_get_mem
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(xfr, struct auth_xfer*, &az->xtree)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:9061,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/authzone.c:9062,1
    - Dst: az_ztree_get_mem
      Src: /src/unbound/services/authzone.c:9063,1
    - Dst: az_xtree_get_mem
      Src: /src/unbound/services/authzone.c:9064,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:9065,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/authzone.c:9066,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - zones
    argTypes:
    - struct auth_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9068
      start: 9056
    functionDepth: 5
    functionLinenumber: 9056
    functionLinenumberEnd: 9068
    functionName: auth_zones_get_mem
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 1
    functionsReached:
    - lock_rw_unlock
    - lock_rw_rdlock
    - az_xtree_get_mem
    - az_ztree_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t auth_zones_get_mem(struct auth_zones* zones)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: xfr_nextprobe_disown
      Src: /src/unbound/services/authzone.c:9073,1
    - Dst: xfr_probe_disown
      Src: /src/unbound/services/authzone.c:9076,1
    - Dst: xfr_transfer_disown
      Src: /src/unbound/services/authzone.c:9079,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - xfr
    - worker
    argTypes:
    - struct auth_xfer*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 9081
      start: 9070
    functionDepth: 5
    functionLinenumber: 9070
    functionLinenumberEnd: 9081
    functionName: xfr_disown_tasks
    functionSourceFile: /src/unbound/services/authzone.c
    functionUses: 2
    functionsReached:
    - xfr_probe_disown
    - xfr_nextprobe_disown
    - xfr_transfer_disown
    linkageType: ''
    returnType: void
    signature: void xfr_disown_tasks(struct auth_xfer* xfr, struct worker* worker)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 79
    functionName: still_useful_timeout
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int still_useful_timeout()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_get_mem
      Src: /src/unbound/services/cache/infra.c:86,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - k
    - ATTR_UNUSED(d)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 81
    functionDepth: 0
    functionLinenumber: 81
    functionLinenumberEnd: 87
    functionName: infra_sizefunc
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - lock_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t infra_sizefunc(void* k, void* ATTR_UNUSED(d))
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sockaddr_cmp
      Src: /src/unbound/services/cache/infra.c:94,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/cache/infra.c:102,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 103
    functionName: infra_compfunc
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - query_dname_compare
    - sockaddr_cmp
    linkageType: ''
    returnType: int
    signature: int infra_compfunc(void* key1, void* key2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/services/cache/infra.c:111,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:112,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:113,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - k
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 114
    functionName: infra_delkeyfunc
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - free
    - lock_rw_destroy
    linkageType: ''
    returnType: void
    signature: void infra_delkeyfunc(void* k, void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:120,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - d
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 116
    functionDepth: 1
    functionLinenumber: 116
    functionLinenumberEnd: 121
    functionName: infra_deldatafunc
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void infra_deldatafunc(void* d, void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_get_mem
      Src: /src/unbound/services/cache/infra.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - k
    - ATTR_UNUSED(d)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 129
    functionName: rate_sizefunc
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - lock_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t rate_sizefunc(void* k, void* ATTR_UNUSED(d))
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: query_dname_compare
      Src: /src/unbound/services/cache/infra.c:141,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 142
    functionName: rate_compfunc
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - query_dname_compare
    linkageType: ''
    returnType: int
    signature: int rate_compfunc(void* key1, void* key2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/services/cache/infra.c:150,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:151,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - k
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 144
    functionDepth: 1
    functionLinenumber: 144
    functionLinenumberEnd: 153
    functionName: rate_delkeyfunc
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - free
    - lock_rw_destroy
    linkageType: ''
    returnType: void
    signature: void rate_delkeyfunc(void* k, void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:159,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - d
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 160
    functionName: rate_deldatafunc
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void rate_deldatafunc(void* d, void* ATTR_UNUSED(arg))
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/services/cache/infra.c:172,1
    - Dst: log_err
      Src: /src/unbound/services/cache/infra.c:174,1
    - Dst: dname_count_labels
      Src: /src/unbound/services/cache/infra.c:177,1
    - Dst: name_tree_find
      Src: /src/unbound/services/cache/infra.c:180,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:183,1
    - Dst: calloc
      Src: /src/unbound/services/cache/infra.c:188,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:190,1
    - Dst: name_tree_insert
      Src: /src/unbound/services/cache/infra.c:200,1
    - Dst: log_err
      Src: /src/unbound/services/cache/infra.c:202,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:203,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:204,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 31
    argCount: 2
    argNames:
    - domain_limits
    - name
    argTypes:
    - struct rbtree_type*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 163
    functionDepth: 4
    functionLinenumber: 163
    functionLinenumberEnd: 208
    functionName: domain_limit_findcreate
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - log_err
    - name_tree_find
    - free
    - calloc
    - sldns_str2wire_dname
    - name_tree_insert
    - dname_count_labels
    linkageType: ''
    returnType: struct domain_limit_data
    signature: "struct domain_limit_data * domain_limit_findcreate(\n\tstruct rbtree_type*
      domain_limits, char* name)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: domain_limit_findcreate
      Src: /src/unbound/services/cache/infra.c:217,1
    - Dst: atoi
      Src: /src/unbound/services/cache/infra.c:220,1
    - Dst: domain_limit_findcreate
      Src: /src/unbound/services/cache/infra.c:223,1
    - Dst: atoi
      Src: /src/unbound/services/cache/infra.c:226,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - domain_limits
    - cfg
    argTypes:
    - struct rbtree_type*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 211
    functionDepth: 5
    functionLinenumber: 211
    functionLinenumberEnd: 229
    functionName: infra_ratelimit_cfg_insert
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - domain_limit_findcreate
    - atoi
    linkageType: ''
    returnType: int
    signature: "int infra_ratelimit_cfg_insert(struct rbtree_type* domain_limits,\n\tstruct
      config_file* cfg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: name_tree_init
      Src: /src/unbound/services/cache/infra.c:234,1
    - Dst: infra_ratelimit_cfg_insert
      Src: /src/unbound/services/cache/infra.c:235,1
    - Dst: name_tree_init_parents
      Src: /src/unbound/services/cache/infra.c:238,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - domain_limits
    - cfg
    argTypes:
    - struct rbtree_type*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 231
    functionDepth: 6
    functionLinenumber: 231
    functionLinenumberEnd: 240
    functionName: setup_domain_limits
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 1
    functionsReached:
    - name_tree_init_parents
    - infra_ratelimit_cfg_insert
    - name_tree_init
    linkageType: ''
    returnType: int
    signature: int setup_domain_limits(struct rbtree_type* domain_limits, struct config_file*
      cfg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: netblockstrtoaddr
      Src: /src/unbound/services/cache/infra.c:251,1
    - Dst: log_err
      Src: /src/unbound/services/cache/infra.c:252,1
    - Dst: addr_tree_find
      Src: /src/unbound/services/cache/infra.c:257,1
    - Dst: calloc
      Src: /src/unbound/services/cache/infra.c:263,1
    - Dst: addr_tree_insert
      Src: /src/unbound/services/cache/infra.c:267,1
    - Dst: log_err
      Src: /src/unbound/services/cache/infra.c:268,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:269,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - tree
    - str
    argTypes:
    - struct rbtree_type*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 273
    functionName: wait_limit_netblock_findcreate
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - log_err
    - netblockstrtoaddr
    - addr_tree_find
    - free
    - calloc
    - addr_tree_insert
    linkageType: ''
    returnType: struct wait_limit_netblock_info
    signature: 'struct wait_limit_netblock_info *

      wait_limit_netblock_findcreate(struct rbtree_type* tree, char* str)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: wait_limit_netblock_findcreate
      Src: /src/unbound/services/cache/infra.c:284,1
    - Dst: atoi
      Src: /src/unbound/services/cache/infra.c:288,1
    - Dst: wait_limit_netblock_findcreate
      Src: /src/unbound/services/cache/infra.c:291,1
    - Dst: atoi
      Src: /src/unbound/services/cache/infra.c:295,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - wait_limits_netblock
    - wait_limits_cookie_netblock
    - cfg
    argTypes:
    - rbtree_type*
    - rbtree_type*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 298
      start: 277
    functionDepth: 2
    functionLinenumber: 277
    functionLinenumberEnd: 298
    functionName: infra_wait_limit_netblock_insert
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - wait_limit_netblock_findcreate
    - atoi
    linkageType: ''
    returnType: int
    signature: "int infra_wait_limit_netblock_insert(rbtree_type* wait_limits_netblock,\n
      \       rbtree_type* wait_limits_cookie_netblock, struct config_file* cfg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: wait_limit_netblock_findcreate
      Src: /src/unbound/services/cache/infra.c:305,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - tree
    - str
    - limit
    argTypes:
    - struct rbtree_type*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 301
    functionDepth: 2
    functionLinenumber: 301
    functionLinenumberEnd: 310
    functionName: wait_limit_netblock_default
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - wait_limit_netblock_findcreate
    linkageType: ''
    returnType: int
    signature: int wait_limit_netblock_default(struct rbtree_type* tree, char* str,
      int limit)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: addr_tree_init
      Src: /src/unbound/services/cache/infra.c:316,1
    - Dst: addr_tree_init
      Src: /src/unbound/services/cache/infra.c:317,1
    - Dst: wait_limit_netblock_default
      Src: /src/unbound/services/cache/infra.c:322,1
    - Dst: wait_limit_netblock_default
      Src: /src/unbound/services/cache/infra.c:326,1
    - Dst: wait_limit_netblock_default
      Src: /src/unbound/services/cache/infra.c:329,1
    - Dst: wait_limit_netblock_default
      Src: /src/unbound/services/cache/infra.c:333,1
    - Dst: infra_wait_limit_netblock_insert
      Src: /src/unbound/services/cache/infra.c:337,1
    - Dst: addr_tree_init_parents
      Src: /src/unbound/services/cache/infra.c:340,1
    - Dst: addr_tree_init_parents
      Src: /src/unbound/services/cache/infra.c:341,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 3
    argNames:
    - wait_limits_netblock
    - wait_limits_cookie_netblock
    - cfg
    argTypes:
    - rbtree_type*
    - rbtree_type*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 312
    functionDepth: 3
    functionLinenumber: 312
    functionLinenumberEnd: 343
    functionName: setup_wait_limits
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 1
    functionsReached:
    - infra_wait_limit_netblock_insert
    - addr_tree_init_parents
    - wait_limit_netblock_default
    - addr_tree_init
    linkageType: ''
    returnType: int
    signature: "int setup_wait_limits(rbtree_type* wait_limits_netblock,\n\trbtree_type*
      wait_limits_cookie_netblock, struct config_file* cfg)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/services/cache/infra.c:348,1
    - Dst: slabhash_create
      Src: /src/unbound/services/cache/infra.c:355,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:359,1
    - Dst: slabhash_create
      Src: /src/unbound/services/cache/infra.c:365,1
    - Dst: infra_delete
      Src: /src/unbound/services/cache/infra.c:370,1
    - Dst: setup_domain_limits
      Src: /src/unbound/services/cache/infra.c:374,1
    - Dst: infra_delete
      Src: /src/unbound/services/cache/infra.c:375,1
    - Dst: setup_wait_limits
      Src: /src/unbound/services/cache/infra.c:378,1
    - Dst: infra_delete
      Src: /src/unbound/services/cache/infra.c:380,1
    - Dst: slabhash_create
      Src: /src/unbound/services/cache/infra.c:385,1
    - Dst: infra_delete
      Src: /src/unbound/services/cache/infra.c:389,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 345
    functionDepth: 7
    functionLinenumber: 345
    functionLinenumberEnd: 393
    functionName: infra_create
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - free
    - setup_domain_limits
    - setup_wait_limits
    - calloc
    - slabhash_create
    - infra_delete
    linkageType: ''
    returnType: struct infra_cache
    signature: "struct infra_cache * \ninfra_create(struct config_file* cfg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:399,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:400,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - n
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 402
    functionName: domain_limit_free
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void domain_limit_free(rbnode_type* n, void* ATTR_UNUSED(arg))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: traverse_postorder
      Src: /src/unbound/services/cache/infra.c:409,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - domain_limits
    argTypes:
    - struct rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 404
    functionDepth: 1
    functionLinenumber: 404
    functionLinenumberEnd: 410
    functionName: domain_limits_free
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 1
    functionsReached:
    - traverse_postorder
    linkageType: ''
    returnType: void
    signature: void domain_limits_free(struct rbtree_type* domain_limits)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:415,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - n
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 416
    functionName: wait_limit_netblock_del
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void wait_limit_netblock_del(rbnode_type* n, void* ATTR_UNUSED(arg))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: traverse_postorder
      Src: /src/unbound/services/cache/infra.c:423,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - wait_limits_tree
    argTypes:
    - struct rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 418
    functionDepth: 1
    functionLinenumber: 418
    functionLinenumberEnd: 425
    functionName: wait_limits_free
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 1
    functionsReached:
    - traverse_postorder
    linkageType: ''
    returnType: void
    signature: void wait_limits_free(struct rbtree_type* wait_limits_tree)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slabhash_delete
      Src: /src/unbound/services/cache/infra.c:432,1
    - Dst: slabhash_delete
      Src: /src/unbound/services/cache/infra.c:433,1
    - Dst: domain_limits_free
      Src: /src/unbound/services/cache/infra.c:434,1
    - Dst: slabhash_delete
      Src: /src/unbound/services/cache/infra.c:435,1
    - Dst: wait_limits_free
      Src: /src/unbound/services/cache/infra.c:436,1
    - Dst: wait_limits_free
      Src: /src/unbound/services/cache/infra.c:437,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:438,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - infra
    argTypes:
    - struct infra_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 427
    functionDepth: 2
    functionLinenumber: 427
    functionLinenumberEnd: 439
    functionName: infra_delete
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 2
    functionsReached:
    - free
    - wait_limits_free
    - slabhash_delete
    - domain_limits_free
    linkageType: ''
    returnType: void
    signature: void infra_delete(struct infra_cache* infra)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: infra_create
      Src: /src/unbound/services/cache/infra.c:446,1
    - Dst: slabhash_is_size
      Src: /src/unbound/services/cache/infra.c:457,1
    - Dst: slabhash_is_size
      Src: /src/unbound/services/cache/infra.c:458,1
    - Dst: slabhash_is_size
      Src: /src/unbound/services/cache/infra.c:460,1
    - Dst: infra_delete
      Src: /src/unbound/services/cache/infra.c:462,1
    - Dst: infra_create
      Src: /src/unbound/services/cache/infra.c:463,1
    - Dst: traverse_postorder
      Src: /src/unbound/services/cache/infra.c:466,1
    - Dst: setup_domain_limits
      Src: /src/unbound/services/cache/infra.c:468,1
    - Dst: infra_delete
      Src: /src/unbound/services/cache/infra.c:469,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - infra
    - cfg
    argTypes:
    - struct infra_cache*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 441
    functionDepth: 8
    functionLinenumber: 441
    functionLinenumberEnd: 474
    functionName: infra_adjust
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 1
    functionsReached:
    - infra_create
    - setup_domain_limits
    - traverse_postorder
    - slabhash_is_size
    - infra_delete
    linkageType: ''
    returnType: struct infra_cache
    signature: "struct infra_cache * \ninfra_adjust(struct infra_cache* infra, struct
      config_file* cfg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: addr_is_ip6
      Src: /src/unbound/services/cache/infra.c:485,1
    - Dst: hashlittle
      Src: /src/unbound/services/cache/infra.c:487,1
    - Dst: hashlittle
      Src: /src/unbound/services/cache/infra.c:489,1
    - Dst: hashlittle
      Src: /src/unbound/services/cache/infra.c:491,1
    - Dst: hashlittle
      Src: /src/unbound/services/cache/infra.c:494,1
    - Dst: hashlittle
      Src: /src/unbound/services/cache/infra.c:496,1
    - Dst: hashlittle
      Src: /src/unbound/services/cache/infra.c:498,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - addr
    - addrlen
    - use_port
    argTypes:
    - struct sockaddr_storage*
    - socklen_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 501
    functionName: hash_addr
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - hashlittle
    - addr_is_ip6
    linkageType: ''
    returnType: hashvalue_type
    signature: "hashvalue_type hash_addr(struct sockaddr_storage* addr, socklen_t
      addrlen,\n  int use_port)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_query_hash
      Src: /src/unbound/services/cache/infra.c:507,1
    - Dst: hash_addr
      Src: /src/unbound/services/cache/infra.c:507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - addr
    - addrlen
    - name
    argTypes:
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 504
    functionDepth: 2
    functionLinenumber: 504
    functionLinenumberEnd: 508
    functionName: hash_infra
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - hash_addr
    - dname_query_hash
    linkageType: ''
    returnType: hashvalue_type
    signature: hashvalue_type hash_infra(struct sockaddr_storage* addr, socklen_t
      addrlen, uint8_t* name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/services/cache/infra.c:517,1
    - Dst: hash_infra
      Src: /src/unbound/services/cache/infra.c:520,1
    - Dst: slabhash_lookup
      Src: /src/unbound/services/cache/infra.c:523,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 6
    argNames:
    - infra
    - addr
    - addrlen
    - name
    - namelen
    - wr
    argTypes:
    - struct infra_cache*
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 511
    functionDepth: 3
    functionLinenumber: 511
    functionLinenumberEnd: 524
    functionName: infra_lookup_nottl
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - slabhash_lookup
    - memcpy
    - hash_infra
    linkageType: ''
    returnType: struct lruhash_entry
    signature: "struct lruhash_entry * \ninfra_lookup_nottl(struct infra_cache* infra,
      struct sockaddr_storage* addr,\n\tsocklen_t addrlen, uint8_t* name, size_t namelen,
      int wr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rtt_init
      Src: /src/unbound/services/cache/infra.c:533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - infra
    - e
    - timenow
    argTypes:
    - struct infra_cache*
    - struct lruhash_entry*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 544
    functionName: data_entry_init
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - rtt_init
    linkageType: ''
    returnType: void
    signature: "void data_entry_init(struct infra_cache* infra, struct lruhash_entry*
      e, \n\ttime_t timenow)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/services/cache/infra.c:561,1
    - Dst: malloc
      Src: /src/unbound/services/cache/infra.c:564,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:566,1
    - Dst: memdup
      Src: /src/unbound/services/cache/infra.c:569,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:571,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:572,1
    - Dst: lock_rw_init
      Src: /src/unbound/services/cache/infra.c:576,1
    - Dst: hash_infra
      Src: /src/unbound/services/cache/infra.c:577,1
    - Dst: memcpy
      Src: /src/unbound/services/cache/infra.c:581,1
    - Dst: data_entry_init
      Src: /src/unbound/services/cache/infra.c:582,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 6
    argNames:
    - infra
    - addr
    - addrlen
    - name
    - namelen
    - tm
    argTypes:
    - struct infra_cache*
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 556
    functionDepth: 3
    functionLinenumber: 556
    functionLinenumberEnd: 584
    functionName: new_entry
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - memcpy
    - hash_infra
    - lock_rw_init
    - malloc
    - free
    - data_entry_init
    - memdup
    linkageType: ''
    returnType: struct lruhash_entry
    signature: "struct lruhash_entry *\nnew_entry(struct infra_cache* infra, struct
      sockaddr_storage* addr, \n\tsocklen_t addrlen, uint8_t* name, size_t namelen,
      time_t tm)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: infra_lookup_nottl
      Src: /src/unbound/services/cache/infra.c:591,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:602,1
    - Dst: infra_lookup_nottl
      Src: /src/unbound/services/cache/infra.c:603,1
    - Dst: data_entry_init
      Src: /src/unbound/services/cache/infra.c:608,1
    - Dst: new_entry
      Src: /src/unbound/services/cache/infra.c:623,1
    - Dst: rtt_timeout
      Src: /src/unbound/services/cache/infra.c:628,1
    - Dst: slabhash_insert
      Src: /src/unbound/services/cache/infra.c:629,1
    - Dst: rtt_timeout
      Src: /src/unbound/services/cache/infra.c:636,1
    - Dst: rtt_notimeout
      Src: /src/unbound/services/cache/infra.c:638,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:641,1
    - Dst: infra_lookup_nottl
      Src: /src/unbound/services/cache/infra.c:642,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:654,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 9
    argNames:
    - infra
    - addr
    - addrlen
    - nm
    - nmlen
    - timenow
    - edns_vs
    - edns_lame_known
    - to
    argTypes:
    - struct infra_cache*
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - time_t
    - int*
    - uint8_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 656
      start: 586
    functionDepth: 4
    functionLinenumber: 586
    functionLinenumberEnd: 656
    functionName: infra_host
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 3
    functionsReached:
    - slabhash_insert
    - lock_rw_unlock
    - rtt_timeout
    - infra_lookup_nottl
    - data_entry_init
    - rtt_notimeout
    - new_entry
    linkageType: ''
    returnType: int
    signature: "int infra_host(struct infra_cache* infra, struct sockaddr_storage*
      addr,\n        socklen_t addrlen, uint8_t* nm, size_t nmlen, time_t timenow,\n\tint*
      edns_vs, uint8_t* edns_lame_known, int* to)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: infra_lookup_nottl
      Src: /src/unbound/services/cache/infra.c:666,1
    - Dst: new_entry
      Src: /src/unbound/services/cache/infra.c:669,1
    - Dst: log_err
      Src: /src/unbound/services/cache/infra.c:670,1
    - Dst: data_entry_init
      Src: /src/unbound/services/cache/infra.c:676,1
    - Dst: slabhash_insert
      Src: /src/unbound/services/cache/infra.c:691,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:692,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 26
    argCount: 9
    argNames:
    - infra
    - addr
    - addrlen
    - nm
    - nmlen
    - timenow
    - dnsseclame
    - reclame
    - qtype
    argTypes:
    - struct infra_cache*
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - time_t
    - int
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 658
    functionDepth: 4
    functionLinenumber: 658
    functionLinenumberEnd: 694
    functionName: infra_set_lame
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - log_err
    - slabhash_insert
    - lock_rw_unlock
    - infra_lookup_nottl
    - data_entry_init
    - new_entry
    linkageType: ''
    returnType: int
    signature: "int infra_set_lame(struct infra_cache* infra, struct sockaddr_storage*
      addr,\n\tsocklen_t addrlen, uint8_t* nm, size_t nmlen, time_t timenow,\n\tint
      dnsseclame, int reclame, uint16_t qtype)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: infra_lookup_nottl
      Src: /src/unbound/services/cache/infra.c:701,1
    - Dst: still_useful_timeout
      Src: /src/unbound/services/cache/infra.c:710,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:711,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 5
    argNames:
    - infra
    - addr
    - addrlen
    - nm
    - nmlen
    argTypes:
    - struct infra_cache*
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 696
    functionDepth: 4
    functionLinenumber: 696
    functionLinenumberEnd: 712
    functionName: infra_update_tcp_works
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 1
    functionsReached:
    - still_useful_timeout
    - lock_rw_unlock
    - infra_lookup_nottl
    linkageType: ''
    returnType: void
    signature: "void infra_update_tcp_works(struct infra_cache* infra,\n        struct
      sockaddr_storage* addr, socklen_t addrlen, uint8_t* nm,\n\tsize_t nmlen)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: infra_lookup_nottl
      Src: /src/unbound/services/cache/infra.c:719,1
    - Dst: new_entry
      Src: /src/unbound/services/cache/infra.c:726,1
    - Dst: data_entry_init
      Src: /src/unbound/services/cache/infra.c:731,1
    - Dst: rtt_lost
      Src: /src/unbound/services/cache/infra.c:743,1
    - Dst: rtt_unclamped
      Src: /src/unbound/services/cache/infra.c:758,1
    - Dst: rtt_init
      Src: /src/unbound/services/cache/infra.c:759,1
    - Dst: rtt_update
      Src: /src/unbound/services/cache/infra.c:760,1
    - Dst: slabhash_insert
      Src: /src/unbound/services/cache/infra.c:772,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:773,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 47
    argCount: 9
    argNames:
    - infra
    - addr
    - addrlen
    - nm
    - nmlen
    - qtype
    - roundtrip
    - orig_rtt
    - timenow
    argTypes:
    - struct infra_cache*
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - int
    - int
    - int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 775
      start: 714
    functionDepth: 4
    functionLinenumber: 714
    functionLinenumberEnd: 775
    functionName: infra_rtt_update
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 2
    functionsReached:
    - slabhash_insert
    - rtt_update
    - rtt_unclamped
    - lock_rw_unlock
    - rtt_init
    - infra_lookup_nottl
    - data_entry_init
    - rtt_lost
    - new_entry
    linkageType: ''
    returnType: int
    signature: "int infra_rtt_update(struct infra_cache* infra, struct sockaddr_storage*
      addr,\n\tsocklen_t addrlen, uint8_t* nm, size_t nmlen, int qtype,\n\tint roundtrip,
      int orig_rtt, time_t timenow)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: infra_lookup_nottl
      Src: /src/unbound/services/cache/infra.c:782,1
    - Dst: memmove
      Src: /src/unbound/services/cache/infra.c:790,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:798,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 11
    argNames:
    - infra
    - addr
    - addrlen
    - nm
    - nmlen
    - rtt
    - delay
    - timenow
    - tA
    - tAAAA
    - tother
    argTypes:
    - struct infra_cache*
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - struct rtt_info*
    - int*
    - time_t
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 800
      start: 777
    functionDepth: 4
    functionLinenumber: 777
    functionLinenumberEnd: 800
    functionName: infra_get_host_rto
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 1
    functionsReached:
    - lock_rw_unlock
    - infra_lookup_nottl
    - memmove
    linkageType: ''
    returnType: long long
    signature: "long long infra_get_host_rto(struct infra_cache* infra,\n        struct
      sockaddr_storage* addr, socklen_t addrlen, uint8_t* nm,\n\tsize_t nmlen, struct
      rtt_info* rtt, int* delay, time_t timenow,\n\tint* tA, int* tAAAA, int* tother)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: infra_lookup_nottl
      Src: /src/unbound/services/cache/infra.c:807,1
    - Dst: new_entry
      Src: /src/unbound/services/cache/infra.c:812,1
    - Dst: data_entry_init
      Src: /src/unbound/services/cache/infra.c:816,1
    - Dst: slabhash_insert
      Src: /src/unbound/services/cache/infra.c:828,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:829,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 7
    argNames:
    - infra
    - addr
    - addrlen
    - nm
    - nmlen
    - edns_version
    - timenow
    argTypes:
    - struct infra_cache*
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - int
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 802
    functionDepth: 4
    functionLinenumber: 802
    functionLinenumberEnd: 831
    functionName: infra_edns_update
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 2
    functionsReached:
    - slabhash_insert
    - lock_rw_unlock
    - infra_lookup_nottl
    - data_entry_init
    - new_entry
    linkageType: ''
    returnType: int
    signature: "int infra_edns_update(struct infra_cache* infra, struct sockaddr_storage*
      addr,\n\tsocklen_t addrlen, uint8_t* nm, size_t nmlen, int edns_version,\n\ttime_t
      timenow)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: infra_lookup_nottl
      Src: /src/unbound/services/cache/infra.c:840,1
    - Dst: rtt_unclamped
      Src: /src/unbound/services/cache/infra.c:845,1
    - Dst: still_useful_timeout
      Src: /src/unbound/services/cache/infra.c:850,1
    - Dst: rtt_notimeout
      Src: /src/unbound/services/cache/infra.c:852,1
    - Dst: still_useful_timeout
      Src: /src/unbound/services/cache/infra.c:858,1
    - Dst: still_useful_timeout
      Src: /src/unbound/services/cache/infra.c:862,1
    - Dst: still_useful_timeout
      Src: /src/unbound/services/cache/infra.c:866,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:873,1
    - Dst: still_useful_timeout
      Src: /src/unbound/services/cache/infra.c:874,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:880,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:885,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:891,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:897,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:903,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:910,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 70
    argCount: 11
    argNames:
    - infra
    - addr
    - addrlen
    - name
    - namelen
    - qtype
    - lame
    - dnsseclame
    - reclame
    - rtt
    - timenow
    argTypes:
    - struct infra_cache*
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - uint16_t
    - int*
    - int*
    - int*
    - int*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 915
      start: 833
    functionDepth: 4
    functionLinenumber: 833
    functionLinenumberEnd: 915
    functionName: infra_get_lame_rtt
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 1
    functionsReached:
    - rtt_unclamped
    - lock_rw_unlock
    - still_useful_timeout
    - infra_lookup_nottl
    - rtt_notimeout
    linkageType: ''
    returnType: int
    signature: "int infra_get_lame_rtt(struct infra_cache* infra,\n        struct
      sockaddr_storage* addr, socklen_t addrlen,\n        uint8_t* name, size_t namelen,
      uint16_t qtype, \n\tint* lame, int* dnsseclame, int* reclame, int* rtt, time_t
      timenow)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/services/cache/infra.c:920,1
    - Dst: name_tree_lookup
      Src: /src/unbound/services/cache/infra.c:922,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 3
    argNames:
    - infra
    - name
    - namelen
    argTypes:
    - struct infra_cache*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 917
    functionDepth: 1
    functionLinenumber: 917
    functionLinenumberEnd: 938
    functionName: infra_find_ratelimit
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 1
    functionsReached:
    - name_tree_lookup
    - dname_count_labels
    linkageType: ''
    returnType: int
    signature: "int infra_find_ratelimit(struct infra_cache* infra, uint8_t* name,\n\tsize_t
      namelen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_get_mem
      Src: /src/unbound/services/cache/infra.c:944,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - k
    - ATTR_UNUSED(d)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 940
    functionDepth: 0
    functionLinenumber: 940
    functionLinenumberEnd: 945
    functionName: ip_rate_sizefunc
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - lock_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t ip_rate_sizefunc(void* k, void* ATTR_UNUSED(d))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockaddr_cmp_addr
      Src: /src/unbound/services/cache/infra.c:951,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 947
    functionDepth: 1
    functionLinenumber: 947
    functionLinenumberEnd: 953
    functionName: ip_rate_compfunc
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - sockaddr_cmp_addr
    linkageType: ''
    returnType: int
    signature: int ip_rate_compfunc(void* key1, void* key2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/services/cache/infra.c:960,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:961,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - k
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 955
    functionDepth: 1
    functionLinenumber: 955
    functionLinenumberEnd: 962
    functionName: ip_rate_delkeyfunc
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - free
    - lock_rw_destroy
    linkageType: ''
    returnType: void
    signature: void ip_rate_delkeyfunc(void* k, void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_query_hash
      Src: /src/unbound/services/cache/infra.c:969,1
    - Dst: memset
      Src: /src/unbound/services/cache/infra.c:970,1
    - Dst: slabhash_lookup
      Src: /src/unbound/services/cache/infra.c:974,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - infra
    - name
    - namelen
    - wr
    argTypes:
    - struct infra_cache*
    - uint8_t*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 975
      start: 965
    functionDepth: 1
    functionLinenumber: 965
    functionLinenumberEnd: 975
    functionName: infra_find_ratedata
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - memset
    - slabhash_lookup
    - dname_query_hash
    linkageType: ''
    returnType: struct lruhash_entry
    signature: "struct lruhash_entry * infra_find_ratedata(struct infra_cache* infra,\n\tuint8_t*
      name, size_t namelen, int wr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hash_addr
      Src: /src/unbound/services/cache/infra.c:982,1
    - Dst: memset
      Src: /src/unbound/services/cache/infra.c:983,1
    - Dst: slabhash_lookup
      Src: /src/unbound/services/cache/infra.c:987,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 4
    argNames:
    - infra
    - addr
    - addrlen
    - wr
    argTypes:
    - struct infra_cache*
    - struct sockaddr_storage*
    - socklen_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 978
    functionDepth: 2
    functionLinenumber: 978
    functionLinenumberEnd: 988
    functionName: infra_find_ip_ratedata
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - hash_addr
    - memset
    - slabhash_lookup
    linkageType: ''
    returnType: struct lruhash_entry
    signature: "struct lruhash_entry * infra_find_ip_ratedata(struct infra_cache*
      infra,\n\tstruct sockaddr_storage* addr, socklen_t addrlen, int wr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_query_hash
      Src: /src/unbound/services/cache/infra.c:994,1
    - Dst: calloc
      Src: /src/unbound/services/cache/infra.c:995,1
    - Dst: calloc
      Src: /src/unbound/services/cache/infra.c:996,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:998,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:999,1
    - Dst: memdup
      Src: /src/unbound/services/cache/infra.c:1003,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:1005,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:1006,1
    - Dst: lock_rw_init
      Src: /src/unbound/services/cache/infra.c:1009,1
    - Dst: slabhash_insert
      Src: /src/unbound/services/cache/infra.c:1015,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 4
    argNames:
    - infra
    - name
    - namelen
    - timenow
    argTypes:
    - struct infra_cache*
    - uint8_t*
    - size_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1016
      start: 991
    functionDepth: 1
    functionLinenumber: 991
    functionLinenumberEnd: 1016
    functionName: infra_create_ratedata
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - slabhash_insert
    - dname_query_hash
    - lock_rw_init
    - free
    - calloc
    - memdup
    linkageType: ''
    returnType: void
    signature: "void infra_create_ratedata(struct infra_cache* infra,\n\tuint8_t*
      name, size_t namelen, time_t timenow)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hash_addr
      Src: /src/unbound/services/cache/infra.c:1023,1
    - Dst: calloc
      Src: /src/unbound/services/cache/infra.c:1024,1
    - Dst: calloc
      Src: /src/unbound/services/cache/infra.c:1025,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:1027,1
    - Dst: free
      Src: /src/unbound/services/cache/infra.c:1028,1
    - Dst: lock_rw_init
      Src: /src/unbound/services/cache/infra.c:1033,1
    - Dst: slabhash_insert
      Src: /src/unbound/services/cache/infra.c:1040,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 5
    argNames:
    - infra
    - addr
    - addrlen
    - timenow
    - mesh_wait
    argTypes:
    - struct infra_cache*
    - struct sockaddr_storage*
    - socklen_t
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1019
    functionDepth: 2
    functionLinenumber: 1019
    functionLinenumberEnd: 1041
    functionName: infra_ip_create_ratedata
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - slabhash_insert
    - lock_rw_init
    - hash_addr
    - free
    - calloc
    linkageType: ''
    returnType: void
    signature: "void infra_ip_create_ratedata(struct infra_cache* infra,\n\tstruct
      sockaddr_storage* addr, socklen_t addrlen, time_t timenow,\n\tint mesh_wait)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 3
    argNames:
    - data
    - t
    - should_add
    argTypes:
    - void*
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1063
      start: 1045
    functionDepth: 0
    functionLinenumber: 1045
    functionLinenumberEnd: 1063
    functionName: infra_rate_find_second_or_none
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int * infra_rate_find_second_or_none(void* data, time_t t, int should_add)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: infra_rate_find_second_or_none
      Src: /src/unbound/services/cache/infra.c:1069,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - t
    argTypes:
    - void*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1070
      start: 1067
    functionDepth: 1
    functionLinenumber: 1067
    functionLinenumberEnd: 1070
    functionName: infra_rate_give_second
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - infra_rate_find_second_or_none
    linkageType: ''
    returnType: int
    signature: int * infra_rate_give_second(void* data, time_t t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: infra_rate_find_second_or_none
      Src: /src/unbound/services/cache/infra.c:1076,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - t
    argTypes:
    - void*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1074
    functionDepth: 1
    functionLinenumber: 1074
    functionLinenumberEnd: 1077
    functionName: infra_rate_get_second
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - infra_rate_find_second_or_none
    linkageType: ''
    returnType: int
    signature: int * infra_rate_get_second(void* data, time_t t)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - data
    - now
    - backoff
    argTypes:
    - void*
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1079
    functionDepth: 0
    functionLinenumber: 1079
    functionLinenumberEnd: 1096
    functionName: infra_rate_max
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int infra_rate_max(void* data, time_t now, int backoff)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: infra_find_ratelimit
      Src: /src/unbound/services/cache/infra.c:1109,1
    - Dst: infra_find_ratedata
      Src: /src/unbound/services/cache/infra.c:1114,1
    - Dst: infra_rate_max
      Src: /src/unbound/services/cache/infra.c:1116,1
    - Dst: infra_rate_give_second
      Src: /src/unbound/services/cache/infra.c:1117,1
    - Dst: infra_rate_max
      Src: /src/unbound/services/cache/infra.c:1119,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:1120,1
    - Dst: dname_str
      Src: /src/unbound/services/cache/infra.c:1125,1
    - Dst: dname_str
      Src: /src/unbound/services/cache/infra.c:1126,1
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/services/cache/infra.c:1127,1
    - Dst: sldns_wire2str_class_buf
      Src: /src/unbound/services/cache/infra.c:1128,1
    - Dst: addr_to_str
      Src: /src/unbound/services/cache/infra.c:1131,1
    - Dst: verbose
      Src: /src/unbound/services/cache/infra.c:1133,1
    - Dst: verbose
      Src: /src/unbound/services/cache/infra.c:1135,1
    - Dst: infra_create_ratedata
      Src: /src/unbound/services/cache/infra.c:1142,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 7
    argNames:
    - infra
    - name
    - namelen
    - timenow
    - backoff
    - qinfo
    - replylist
    argTypes:
    - struct infra_cache*
    - uint8_t*
    - size_t
    - time_t
    - int
    - struct query_info*
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1098
    functionDepth: 2
    functionLinenumber: 1098
    functionLinenumberEnd: 1144
    functionName: infra_ratelimit_inc
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 1
    functionsReached:
    - infra_rate_give_second
    - addr_to_str
    - verbose
    - lock_rw_unlock
    - sldns_wire2str_type_buf
    - infra_find_ratelimit
    - dname_str
    - sldns_wire2str_class_buf
    - infra_create_ratedata
    - infra_rate_max
    - infra_find_ratedata
    linkageType: ''
    returnType: int
    signature: "int infra_ratelimit_inc(struct infra_cache* infra, uint8_t* name,\n\tsize_t
      namelen, time_t timenow, int backoff, struct query_info* qinfo,\n\tstruct comm_reply*
      replylist)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: infra_find_ratedata
      Src: /src/unbound/services/cache/infra.c:1153,1
    - Dst: infra_rate_get_second
      Src: /src/unbound/services/cache/infra.c:1155,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:1158,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:1163,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - infra
    - name
    - namelen
    - timenow
    argTypes:
    - struct infra_cache*
    - uint8_t*
    - size_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1164
      start: 1146
    functionDepth: 2
    functionLinenumber: 1146
    functionLinenumberEnd: 1164
    functionName: infra_ratelimit_dec
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 1
    functionsReached:
    - lock_rw_unlock
    - infra_rate_get_second
    - infra_find_ratedata
    linkageType: ''
    returnType: void
    signature: "void infra_ratelimit_dec(struct infra_cache* infra, uint8_t* name,\n\tsize_t
      namelen, time_t timenow)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: infra_find_ratelimit
      Src: /src/unbound/services/cache/infra.c:1175,1
    - Dst: infra_find_ratedata
      Src: /src/unbound/services/cache/infra.c:1180,1
    - Dst: infra_rate_max
      Src: /src/unbound/services/cache/infra.c:1183,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:1184,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - infra
    - name
    - namelen
    - timenow
    - backoff
    argTypes:
    - struct infra_cache*
    - uint8_t*
    - size_t
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1187
      start: 1166
    functionDepth: 2
    functionLinenumber: 1166
    functionLinenumberEnd: 1187
    functionName: infra_ratelimit_exceeded
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - lock_rw_unlock
    - infra_rate_max
    - infra_find_ratelimit
    - infra_find_ratedata
    linkageType: ''
    returnType: int
    signature: "int infra_ratelimit_exceeded(struct infra_cache* infra, uint8_t* name,\n\tsize_t
      namelen, time_t timenow, int backoff)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: slabhash_get_mem
      Src: /src/unbound/services/cache/infra.c:1192,1
    - Dst: slabhash_get_mem
      Src: /src/unbound/services/cache/infra.c:1193,1
    - Dst: slabhash_get_mem
      Src: /src/unbound/services/cache/infra.c:1194,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - infra
    argTypes:
    - struct infra_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1197
      start: 1189
    functionDepth: 1
    functionLinenumber: 1189
    functionLinenumberEnd: 1197
    functionName: infra_get_mem
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 1
    functionsReached:
    - slabhash_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t infra_get_mem(struct infra_cache* infra)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: addr_to_str
      Src: /src/unbound/services/cache/infra.c:1214,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/cache/infra.c:1216,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/services/cache/infra.c:1217,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/services/cache/infra.c:1217,1
    - Dst: sldns_wire2str_rrquestion_buf
      Src: /src/unbound/services/cache/infra.c:1218,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/services/cache/infra.c:1219,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/services/cache/infra.c:1220,1
    - Dst: strlen
      Src: /src/unbound/services/cache/infra.c:1222,1
    - Dst: strlen
      Src: /src/unbound/services/cache/infra.c:1222,1
    - Dst: strlen
      Src: /src/unbound/services/cache/infra.c:1223,1
    - Dst: strchr
      Src: /src/unbound/services/cache/infra.c:1224,1
    - Dst: strchr
      Src: /src/unbound/services/cache/infra.c:1225,1
    - Dst: strchr
      Src: /src/unbound/services/cache/infra.c:1226,1
    - Dst: strchr
      Src: /src/unbound/services/cache/infra.c:1227,1
    - Dst: verbose
      Src: /src/unbound/services/cache/infra.c:1228,1
    - Dst: verbose
      Src: /src/unbound/services/cache/infra.c:1232,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 23
    argCount: 6
    argNames:
    - addr
    - addrlen
    - buffer
    - premax
    - max
    - has_cookie
    argTypes:
    - struct sockaddr_storage*
    - socklen_t
    - struct sldns_buffer*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1238
      start: 1200
    functionDepth: 2
    functionLinenumber: 1200
    functionLinenumberEnd: 1238
    functionName: check_ip_ratelimit
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 1
    functionsReached:
    - sldns_wire2str_rrquestion_buf
    - addr_to_str
    - sldns_buffer_at
    - verbose
    - LDNS_QDCOUNT
    - sldns_buffer_limit
    - sldns_buffer_begin
    - strlen
    - strchr
    linkageType: ''
    returnType: int
    signature: "int check_ip_ratelimit(struct sockaddr_storage* addr, socklen_t addrlen,\n\tstruct
      sldns_buffer* buffer, int premax, int max, int has_cookie)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: infra_find_ip_ratedata
      Src: /src/unbound/services/cache/infra.c:1252,1
    - Dst: infra_rate_max
      Src: /src/unbound/services/cache/infra.c:1254,1
    - Dst: infra_rate_give_second
      Src: /src/unbound/services/cache/infra.c:1255,1
    - Dst: infra_rate_max
      Src: /src/unbound/services/cache/infra.c:1257,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:1258,1
    - Dst: check_ip_ratelimit
      Src: /src/unbound/services/cache/infra.c:1259,1
    - Dst: infra_ip_create_ratedata
      Src: /src/unbound/services/cache/infra.c:1264,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 7
    argNames:
    - infra
    - addr
    - addrlen
    - timenow
    - has_cookie
    - backoff
    - buffer
    argTypes:
    - struct infra_cache*
    - struct sockaddr_storage*
    - socklen_t
    - time_t
    - int
    - int
    - struct sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1266
      start: 1240
    functionDepth: 3
    functionLinenumber: 1240
    functionLinenumberEnd: 1266
    functionName: infra_ip_ratelimit_inc
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 1
    functionsReached:
    - infra_rate_give_second
    - infra_find_ip_ratedata
    - lock_rw_unlock
    - check_ip_ratelimit
    - infra_ip_create_ratedata
    - infra_rate_max
    linkageType: ''
    returnType: int
    signature: "int infra_ip_ratelimit_inc(struct infra_cache* infra,\n\tstruct sockaddr_storage*
      addr, socklen_t addrlen, time_t timenow,\n\tint has_cookie, int backoff, struct
      sldns_buffer* buffer)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: infra_find_ip_ratedata
      Src: /src/unbound/services/cache/infra.c:1276,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:1283,1
    - Dst: addr_tree_lookup
      Src: /src/unbound/services/cache/infra.c:1289,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 4
    argNames:
    - infra
    - rep
    - cookie_valid
    - cfg
    argTypes:
    - struct infra_cache*
    - struct comm_reply*
    - int
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1303
      start: 1268
    functionDepth: 3
    functionLinenumber: 1268
    functionLinenumberEnd: 1303
    functionName: infra_wait_limit_allowed
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - lock_rw_unlock
    - infra_find_ip_ratedata
    - addr_tree_lookup
    linkageType: ''
    returnType: int
    signature: "int infra_wait_limit_allowed(struct infra_cache* infra, struct comm_reply*
      rep,\n\tint cookie_valid, struct config_file* cfg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: infra_find_ip_ratedata
      Src: /src/unbound/services/cache/infra.c:1313,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:1318,1
    - Dst: infra_ip_create_ratedata
      Src: /src/unbound/services/cache/infra.c:1323,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - infra
    - rep
    - timenow
    - cfg
    argTypes:
    - struct infra_cache*
    - struct comm_reply*
    - time_t
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1325
      start: 1305
    functionDepth: 3
    functionLinenumber: 1305
    functionLinenumberEnd: 1325
    functionName: infra_wait_limit_inc
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 0
    functionsReached:
    - lock_rw_unlock
    - infra_ip_create_ratedata
    - infra_find_ip_ratedata
    linkageType: ''
    returnType: void
    signature: "void infra_wait_limit_inc(struct infra_cache* infra, struct comm_reply*
      rep,\n\ttime_t timenow, struct config_file* cfg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: infra_find_ip_ratedata
      Src: /src/unbound/services/cache/infra.c:1334,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/infra.c:1340,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - infra
    - rep
    - cfg
    argTypes:
    - struct infra_cache*
    - struct comm_reply*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1342
      start: 1327
    functionDepth: 3
    functionLinenumber: 1327
    functionLinenumberEnd: 1342
    functionName: infra_wait_limit_dec
    functionSourceFile: /src/unbound/services/cache/infra.c
    functionUses: 5
    functionsReached:
    - lock_rw_unlock
    - infra_find_ip_ratedata
    linkageType: ''
    returnType: void
    signature: "void infra_wait_limit_dec(struct infra_cache* infra, struct comm_reply*
      rep,\n\tstruct config_file* cfg)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: rrset_cache_update
      Src: /src/unbound/services/cache/dns.c:90,1
    - Dst: ntohs
      Src: /src/unbound/services/cache/dns.c:91,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/cache/dns.c:98,1
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/services/cache/dns.c:103,1
    - Dst: ntohs
      Src: /src/unbound/services/cache/dns.c:105,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:107,1
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/services/cache/dns.c:115,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/cache/dns.c:129,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:137,1
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/services/cache/dns.c:142,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 8
    argNames:
    - env
    - rep
    - now
    - leeway
    - pside
    - qrep
    - region
    - qstarttime
    argTypes:
    - struct module_env*
    - struct reply_info*
    - time_t
    - time_t
    - int
    - struct reply_info*
    - struct regional*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 145
    functionName: store_rrsets
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 0
    functionsReached:
    - rrset_cache_update
    - lock_rw_unlock
    - PREFETCH_TTL_CALC
    - packed_rrset_copy_region
    - lock_rw_rdlock
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void store_rrsets(struct module_env* env, struct reply_info* rep,
      time_t now,\n\ttime_t leeway, int pside, struct reply_info* qrep,\n\tstruct
      regional* region, time_t qstarttime)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_info_hash
      Src: /src/unbound/services/cache/dns.c:160,1
    - Dst: slabhash_remove
      Src: /src/unbound/services/cache/dns.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 6
    argNames:
    - env
    - qname
    - qnamelen
    - qtype
    - qclass
    - flags
    argTypes:
    - struct module_env*
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 162
    functionName: msg_cache_remove
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 0
    functionsReached:
    - slabhash_remove
    - query_info_hash
    linkageType: ''
    returnType: void
    signature: "void msg_cache_remove(struct module_env* env, uint8_t* qname, size_t
      qnamelen, \n\tuint16_t qtype, uint16_t qclass, uint16_t flags)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reply_info_absolute_ttls
      Src: /src/unbound/services/cache/dns.c:183,1
    - Dst: reply_info_set_ttls
      Src: /src/unbound/services/cache/dns.c:184,1
    - Dst: store_rrsets
      Src: /src/unbound/services/cache/dns.c:185,1
    - Dst: verbose
      Src: /src/unbound/services/cache/dns.c:190,1
    - Dst: reply_info_delete
      Src: /src/unbound/services/cache/dns.c:191,1
    - Dst: msg_cache_remove
      Src: /src/unbound/services/cache/dns.c:203,1
    - Dst: reply_info_sortref
      Src: /src/unbound/services/cache/dns.c:209,1
    - Dst: query_info_entrysetup
      Src: /src/unbound/services/cache/dns.c:210,1
    - Dst: log_err
      Src: /src/unbound/services/cache/dns.c:211,1
    - Dst: reply_info_delete
      Src: /src/unbound/services/cache/dns.c:212,1
    - Dst: slabhash_insert
      Src: /src/unbound/services/cache/dns.c:215,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 10
    argNames:
    - env
    - qinfo
    - hash
    - rep
    - leeway
    - pside
    - qrep
    - flags
    - region
    - qstarttime
    argTypes:
    - struct module_env*
    - struct query_info*
    - hashvalue_type
    - struct reply_info*
    - time_t
    - int
    - struct reply_info*
    - uint32_t
    - struct regional*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 164
    functionDepth: 2
    functionLinenumber: 164
    functionLinenumberEnd: 216
    functionName: dns_cache_store_msg
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 0
    functionsReached:
    - reply_info_delete
    - log_err
    - reply_info_absolute_ttls
    - slabhash_insert
    - reply_info_set_ttls
    - verbose
    - reply_info_sortref
    - query_info_entrysetup
    - msg_cache_remove
    - store_rrsets
    linkageType: ''
    returnType: void
    signature: "void dns_cache_store_msg(struct module_env* env, struct query_info*
      qinfo,\n\thashvalue_type hash, struct reply_info* rep, time_t leeway, int pside,\n\tstruct
      reply_info* qrep, uint32_t flags, struct regional* region,\n\ttime_t qstarttime)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: rrset_cache_lookup
      Src: /src/unbound/services/cache/dns.c:236,1
    - Dst: rrset_cache_lookup
      Src: /src/unbound/services/cache/dns.c:241,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/cache/dns.c:253,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:257,1
    - Dst: rrset_cache_expired_above
      Src: /src/unbound/services/cache/dns.c:262,1
    - Dst: rrset_cache_lookup
      Src: /src/unbound/services/cache/dns.c:269,1
    - Dst: log_nametypeclass
      Src: /src/unbound/services/cache/dns.c:275,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 31
    argCount: 10
    argNames:
    - env
    - qname
    - qnamelen
    - qclass
    - now
    - searchtype
    - stripfront
    - noexpiredabove
    - expiretop
    - expiretoplen
    argTypes:
    - struct module_env*
    - uint8_t*
    - size_t
    - uint16_t
    - time_t
    - uint16_t
    - int
    - int
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 287
    functionName: find_closest_of_type
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 0
    functionsReached:
    - rrset_cache_expired_above
    - log_nametypeclass
    - lock_rw_unlock
    - rrset_cache_lookup
    - query_dname_compare
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: "struct ub_packed_rrset_key *\nfind_closest_of_type(struct module_env*
      env, uint8_t* qname, size_t qnamelen, \n\tuint16_t qclass, time_t now, uint16_t
      searchtype, int stripfront,\n\tint noexpiredabove, uint8_t* expiretop, size_t
      expiretoplen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/services/cache/dns.c:295,1
    - Dst: UPDATE_TTL_FROM_RRSET
      Src: /src/unbound/services/cache/dns.c:299,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - rrset
    - region
    - msg
    - now
    argTypes:
    - struct ub_packed_rrset_key*
    - struct regional*
    - struct dns_msg*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 290
    functionDepth: 1
    functionLinenumber: 290
    functionLinenumberEnd: 301
    functionName: addr_to_additional
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 0
    functionsReached:
    - UPDATE_TTL_FROM_RRSET
    - packed_rrset_copy_region
    linkageType: ''
    returnType: void
    signature: "void addr_to_additional(struct ub_packed_rrset_key* rrset, struct
      regional* region,\n\tstruct dns_msg* msg, time_t now)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: query_info_hash
      Src: /src/unbound/services/cache/dns.c:317,1
    - Dst: slabhash_lookup
      Src: /src/unbound/services/cache/dns.c:318,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:322,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 8
    argNames:
    - env
    - qname
    - qnamelen
    - qtype
    - qclass
    - flags
    - now
    - wr
    argTypes:
    - struct module_env*
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - uint16_t
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 304
    functionDepth: 1
    functionLinenumber: 304
    functionLinenumberEnd: 326
    functionName: msg_cache_lookup
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 1
    functionsReached:
    - lock_rw_unlock
    - slabhash_lookup
    - query_info_hash
    linkageType: ''
    returnType: struct msgreply_entry
    signature: "struct msgreply_entry * \nmsg_cache_lookup(struct module_env* env,
      uint8_t* qname, size_t qnamelen, \n\tuint16_t qtype, uint16_t qclass, uint16_t
      flags, time_t now, int wr)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: rrset_cache_lookup
      Src: /src/unbound/services/cache/dns.c:338,1
    - Dst: delegpt_add_rrset_A
      Src: /src/unbound/services/cache/dns.c:341,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:342,1
    - Dst: addr_to_additional
      Src: /src/unbound/services/cache/dns.c:346,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:347,1
    - Dst: msg_cache_lookup
      Src: /src/unbound/services/cache/dns.c:351,1
    - Dst: delegpt_add_neg_msg
      Src: /src/unbound/services/cache/dns.c:354,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:355,1
    - Dst: rrset_cache_lookup
      Src: /src/unbound/services/cache/dns.c:358,1
    - Dst: delegpt_add_rrset_AAAA
      Src: /src/unbound/services/cache/dns.c:361,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:362,1
    - Dst: addr_to_additional
      Src: /src/unbound/services/cache/dns.c:366,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:367,1
    - Dst: msg_cache_lookup
      Src: /src/unbound/services/cache/dns.c:371,1
    - Dst: msg_cache_lookup
      Src: /src/unbound/services/cache/dns.c:378,1
    - Dst: delegpt_add_neg_msg
      Src: /src/unbound/services/cache/dns.c:381,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:382,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 6
    argNames:
    - env
    - qclass
    - region
    - dp
    - now
    - msg
    argTypes:
    - struct module_env*
    - uint16_t
    - struct regional*
    - struct delegpt*
    - time_t
    - struct dns_msg**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 329
    functionDepth: 2
    functionLinenumber: 329
    functionLinenumberEnd: 387
    functionName: find_add_addrs
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 0
    functionsReached:
    - addr_to_additional
    - lock_rw_unlock
    - rrset_cache_lookup
    - delegpt_add_rrset_AAAA
    - delegpt_add_neg_msg
    - msg_cache_lookup
    - delegpt_add_rrset_A
    linkageType: ''
    returnType: int
    signature: "int find_add_addrs(struct module_env* env, uint16_t qclass, \n\tstruct
      regional* region, struct delegpt* dp, time_t now, \n\tstruct dns_msg** msg)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: rrset_cache_lookup
      Src: /src/unbound/services/cache/dns.c:402,1
    - Dst: delegpt_add_rrset_A
      Src: /src/unbound/services/cache/dns.c:405,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:407,1
    - Dst: log_nametypeclass
      Src: /src/unbound/services/cache/dns.c:410,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:412,1
    - Dst: msg_cache_lookup
      Src: /src/unbound/services/cache/dns.c:416,1
    - Dst: delegpt_add_neg_msg
      Src: /src/unbound/services/cache/dns.c:419,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:420,1
    - Dst: rrset_cache_lookup
      Src: /src/unbound/services/cache/dns.c:423,1
    - Dst: delegpt_add_rrset_AAAA
      Src: /src/unbound/services/cache/dns.c:426,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:428,1
    - Dst: log_nametypeclass
      Src: /src/unbound/services/cache/dns.c:431,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:433,1
    - Dst: msg_cache_lookup
      Src: /src/unbound/services/cache/dns.c:437,1
    - Dst: msg_cache_lookup
      Src: /src/unbound/services/cache/dns.c:444,1
    - Dst: delegpt_add_neg_msg
      Src: /src/unbound/services/cache/dns.c:447,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:448,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 39
    argCount: 5
    argNames:
    - env
    - qclass
    - region
    - dp
    - flags
    argTypes:
    - struct module_env*
    - uint16_t
    - struct regional*
    - struct delegpt*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 453
      start: 390
    functionDepth: 2
    functionLinenumber: 390
    functionLinenumberEnd: 453
    functionName: cache_fill_missing
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 0
    functionsReached:
    - log_nametypeclass
    - lock_rw_unlock
    - rrset_cache_lookup
    - delegpt_add_rrset_AAAA
    - delegpt_add_neg_msg
    - msg_cache_lookup
    - delegpt_add_rrset_A
    linkageType: ''
    returnType: int
    signature: "int cache_fill_missing(struct module_env* env, uint16_t qclass, \n\tstruct
      regional* region, struct delegpt* dp, uint32_t flags)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rrset_cache_lookup
      Src: /src/unbound/services/cache/dns.c:461,1
    - Dst: rrset_cache_lookup
      Src: /src/unbound/services/cache/dns.c:467,1
    - Dst: nsec_has_type
      Src: /src/unbound/services/cache/dns.c:473,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:474,1
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/services/cache/dns.c:481,1
    - Dst: UPDATE_TTL_FROM_RRSET
      Src: /src/unbound/services/cache/dns.c:485,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:487,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 5
    argNames:
    - env
    - region
    - msg
    - dp
    - now
    argTypes:
    - struct module_env*
    - struct regional*
    - struct dns_msg*
    - struct delegpt*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 456
    functionDepth: 2
    functionLinenumber: 456
    functionLinenumberEnd: 489
    functionName: find_add_ds
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 0
    functionsReached:
    - UPDATE_TTL_FROM_RRSET
    - lock_rw_unlock
    - rrset_cache_lookup
    - nsec_has_type
    - packed_rrset_copy_region
    linkageType: ''
    returnType: void
    signature: "void find_add_ds(struct module_env* env, struct regional* region,
      \n\tstruct dns_msg* msg, struct delegpt* dp, time_t now)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/services/cache/dns.c:495,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/cache/dns.c:499,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/cache/dns.c:507,1
    - Dst: regional_alloc
      Src: /src/unbound/services/cache/dns.c:519,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 6
    argNames:
    - qname
    - qnamelen
    - qtype
    - qclass
    - region
    - capacity
    argTypes:
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - struct regional*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 491
    functionDepth: 1
    functionLinenumber: 491
    functionLinenumberEnd: 524
    functionName: dns_msg_create
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 3
    functionsReached:
    - regional_alloc_zero
    - regional_alloc
    - regional_alloc_init
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg *\ndns_msg_create(uint8_t* qname, size_t qnamelen,
      uint16_t qtype, \n\tuint16_t qclass, struct regional* region, size_t capacity)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/services/cache/dns.c:532,1
    - Dst: UPDATE_TTL_FROM_RRSET
      Src: /src/unbound/services/cache/dns.c:535,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - msg
    - region
    - rrset
    - now
    argTypes:
    - struct dns_msg*
    - struct regional*
    - struct ub_packed_rrset_key*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 537
    functionName: dns_msg_authadd
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 3
    functionsReached:
    - UPDATE_TTL_FROM_RRSET
    - packed_rrset_copy_region
    linkageType: ''
    returnType: int
    signature: "int dns_msg_authadd(struct dns_msg* msg, struct regional* region,\n\tstruct
      ub_packed_rrset_key* rrset, time_t now)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/services/cache/dns.c:545,1
    - Dst: UPDATE_TTL_FROM_RRSET
      Src: /src/unbound/services/cache/dns.c:548,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - msg
    - region
    - rrset
    - now
    argTypes:
    - struct dns_msg*
    - struct regional*
    - struct ub_packed_rrset_key*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 539
    functionDepth: 1
    functionLinenumber: 539
    functionLinenumberEnd: 550
    functionName: dns_msg_ansadd
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 1
    functionsReached:
    - UPDATE_TTL_FROM_RRSET
    - packed_rrset_copy_region
    linkageType: ''
    returnType: int
    signature: "int dns_msg_ansadd(struct dns_msg* msg, struct regional* region,\n\tstruct
      ub_packed_rrset_key* rrset, time_t now)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: find_closest_of_type
      Src: /src/unbound/services/cache/dns.c:563,1
    - Dst: delegpt_create
      Src: /src/unbound/services/cache/dns.c:569,1
    - Dst: delegpt_set_name
      Src: /src/unbound/services/cache/dns.c:570,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:571,1
    - Dst: log_err
      Src: /src/unbound/services/cache/dns.c:572,1
    - Dst: dns_msg_create
      Src: /src/unbound/services/cache/dns.c:582,1
    - Dst: dns_msg_authadd
      Src: /src/unbound/services/cache/dns.c:584,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:585,1
    - Dst: log_err
      Src: /src/unbound/services/cache/dns.c:586,1
    - Dst: delegpt_rrset_add_ns
      Src: /src/unbound/services/cache/dns.c:590,1
    - Dst: deleg_port_number
      Src: /src/unbound/services/cache/dns.c:591,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:592,1
    - Dst: log_err
      Src: /src/unbound/services/cache/dns.c:593,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:596,1
    - Dst: find_add_ds
      Src: /src/unbound/services/cache/dns.c:599,1
    - Dst: find_add_addrs
      Src: /src/unbound/services/cache/dns.c:601,1
    - Dst: log_err
      Src: /src/unbound/services/cache/dns.c:602,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 30
    argCount: 11
    argNames:
    - env
    - qname
    - qnamelen
    - qtype
    - qclass
    - region
    - msg
    - now
    - noexpiredabove
    - expiretop
    - expiretoplen
    argTypes:
    - struct module_env*
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - struct regional*
    - struct dns_msg**
    - time_t
    - int
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 552
    functionDepth: 3
    functionLinenumber: 552
    functionLinenumberEnd: 604
    functionName: dns_cache_find_delegation
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 2
    functionsReached:
    - log_err
    - deleg_port_number
    - find_add_ds
    - lock_rw_unlock
    - delegpt_set_name
    - find_add_addrs
    - dns_msg_authadd
    - dns_msg_create
    - delegpt_create
    - delegpt_rrset_add_ns
    - find_closest_of_type
    linkageType: ''
    returnType: struct delegpt
    signature: "struct delegpt * \ndns_cache_find_delegation(struct module_env* env,
      uint8_t* qname, \n\tsize_t qnamelen, uint16_t qtype, uint16_t qclass, \n\tstruct
      regional* region, struct dns_msg** msg, time_t now,\n\tint noexpiredabove, uint8_t*
      expiretop, size_t expiretoplen)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/services/cache/dns.c:610,1
    - Dst: memcpy
      Src: /src/unbound/services/cache/dns.c:614,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/cache/dns.c:615,1
    - Dst: regional_alloc
      Src: /src/unbound/services/cache/dns.c:619,1
    - Dst: regional_alloc
      Src: /src/unbound/services/cache/dns.c:629,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 3
    argNames:
    - region
    - q
    - num
    argTypes:
    - struct regional*
    - struct query_info*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 607
    functionDepth: 1
    functionLinenumber: 607
    functionLinenumberEnd: 634
    functionName: gen_dns_msg
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 0
    functionsReached:
    - memcpy
    - regional_alloc
    - regional_alloc_init
    linkageType: ''
    returnType: struct dns_msg
    signature: 'struct dns_msg *

      gen_dns_msg(struct regional* region, struct query_info* q, size_t num)'
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/services/cache/dns.c:645,1
    - Dst: reply_info_can_answer_expired
      Src: /src/unbound/services/cache/dns.c:647,1
    - Dst: gen_dns_msg
      Src: /src/unbound/services/cache/dns.c:655,1
    - Dst: regional_strdup
      Src: /src/unbound/services/cache/dns.c:667,1
    - Dst: rrset_array_lock
      Src: /src/unbound/services/cache/dns.c:670,1
    - Dst: htons
      Src: /src/unbound/services/cache/dns.c:673,1
    - Dst: htons
      Src: /src/unbound/services/cache/dns.c:674,1
    - Dst: reply_check_cname_chain
      Src: /src/unbound/services/cache/dns.c:675,1
    - Dst: rrset_array_unlock
      Src: /src/unbound/services/cache/dns.c:677,1
    - Dst: reply_all_rrsets_secure
      Src: /src/unbound/services/cache/dns.c:680,1
    - Dst: rrset_array_unlock
      Src: /src/unbound/services/cache/dns.c:682,1
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/services/cache/dns.c:687,1
    - Dst: rrset_array_unlock
      Src: /src/unbound/services/cache/dns.c:690,1
    - Dst: UPDATE_TTL_FROM_RRSET
      Src: /src/unbound/services/cache/dns.c:694,1
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/services/cache/dns.c:703,1
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/services/cache/dns.c:706,1
    - Dst: rrset_array_unlock_touch
      Src: /src/unbound/services/cache/dns.c:711,1
    - Dst: rrset_array_unlock
      Src: /src/unbound/services/cache/dns.c:714,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 56
    argCount: 7
    argNames:
    - env
    - q
    - r
    - region
    - now
    - allow_expired
    - scratch
    argTypes:
    - struct module_env*
    - struct query_info*
    - struct reply_info*
    - struct regional*
    - time_t
    - int
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 716
      start: 636
    functionDepth: 2
    functionLinenumber: 636
    functionLinenumberEnd: 716
    functionName: tomsg
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 1
    functionsReached:
    - rrset_array_unlock
    - UPDATE_TTL_FROM_RRSET
    - reply_all_rrsets_secure
    - regional_strdup
    - TTL_IS_EXPIRED
    - PREFETCH_TTL_CALC
    - htons
    - reply_info_can_answer_expired
    - packed_rrset_copy_region
    - rrset_array_unlock_touch
    - rrset_array_lock
    - reply_check_cname_chain
    - gen_dns_msg
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg *\ntomsg(struct module_env* env, struct query_info*
      q, struct reply_info* r,\n\tstruct regional* region, time_t now, int allow_expired,\n\tstruct
      regional* scratch)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: gen_dns_msg
      Src: /src/unbound/services/cache/dns.c:727,1
    - Dst: memcpy
      Src: /src/unbound/services/cache/dns.c:730,1
    - Dst: regional_strdup
      Src: /src/unbound/services/cache/dns.c:733,1
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/services/cache/dns.c:737,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - origin
    - region
    argTypes:
    - struct dns_msg*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 718
    functionDepth: 2
    functionLinenumber: 718
    functionLinenumberEnd: 744
    functionName: dns_msg_deepcopy_region
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 1
    functionsReached:
    - memcpy
    - gen_dns_msg
    - regional_strdup
    - packed_rrset_copy_region
    linkageType: ''
    returnType: struct dns_msg
    signature: 'struct dns_msg *

      dns_msg_deepcopy_region(struct dns_msg* origin, struct regional* region)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/services/cache/dns.c:754,1
    - Dst: gen_dns_msg
      Src: /src/unbound/services/cache/dns.c:756,1
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/services/cache/dns.c:763,1
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/services/cache/dns.c:772,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 4
    argNames:
    - rrset
    - region
    - now
    - q
    argTypes:
    - struct ub_packed_rrset_key*
    - struct regional*
    - time_t
    - struct query_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 776
      start: 747
    functionDepth: 2
    functionLinenumber: 747
    functionLinenumberEnd: 776
    functionName: rrset_msg
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 0
    functionsReached:
    - TTL_IS_EXPIRED
    - gen_dns_msg
    - PREFETCH_TTL_CALC
    - packed_rrset_copy_region
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg *\nrrset_msg(struct ub_packed_rrset_key* rrset, struct
      regional* region, \n\ttime_t now, struct query_info* q)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/services/cache/dns.c:791,1
    - Dst: gen_dns_msg
      Src: /src/unbound/services/cache/dns.c:808,1
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/services/cache/dns.c:815,1
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/services/cache/dns.c:824,1
    - Dst: get_cname_target
      Src: /src/unbound/services/cache/dns.c:830,1
    - Dst: regional_alloc
      Src: /src/unbound/services/cache/dns.c:838,1
    - Dst: memcpy
      Src: /src/unbound/services/cache/dns.c:843,1
    - Dst: memmove
      Src: /src/unbound/services/cache/dns.c:844,1
    - Dst: regional_alloc
      Src: /src/unbound/services/cache/dns.c:846,1
    - Dst: memset
      Src: /src/unbound/services/cache/dns.c:850,1
    - Dst: htons
      Src: /src/unbound/services/cache/dns.c:853,1
    - Dst: regional_alloc_init
      Src: /src/unbound/services/cache/dns.c:856,1
    - Dst: rrset_key_hash
      Src: /src/unbound/services/cache/dns.c:860,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/services/cache/dns.c:861,1
    - Dst: packed_rrset_ptr_fixup
      Src: /src/unbound/services/cache/dns.c:875,1
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/services/cache/dns.c:878,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/services/cache/dns.c:880,1
    - Dst: memmove
      Src: /src/unbound/services/cache/dns.c:881,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 78
    argCount: 5
    argNames:
    - rrset
    - region
    - now
    - q
    - sec_status
    argTypes:
    - struct ub_packed_rrset_key*
    - struct regional*
    - time_t
    - struct query_info*
    - enum sec_status*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 885
      start: 779
    functionDepth: 2
    functionLinenumber: 779
    functionLinenumberEnd: 885
    functionName: synth_dname_msg
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - get_cname_target
    - memcpy
    - memmove
    - rrset_key_hash
    - sldns_write_uint16
    - TTL_IS_EXPIRED
    - regional_alloc
    - PREFETCH_TTL_CALC
    - htons
    - regional_alloc_init
    - packed_rrset_copy_region
    - packed_rrset_ptr_fixup
    - memset
    - gen_dns_msg
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg *\nsynth_dname_msg(struct ub_packed_rrset_key* rrset,
      struct regional* region, \n\ttime_t now, struct query_info* q, enum sec_status*
      sec_status)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/services/cache/dns.c:899,1
    - Dst: dns_msg_create
      Src: /src/unbound/services/cache/dns.c:903,1
    - Dst: rrset_cache_lookup
      Src: /src/unbound/services/cache/dns.c:918,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:931,1
    - Dst: dns_msg_create
      Src: /src/unbound/services/cache/dns.c:937,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:940,1
    - Dst: dns_msg_ansadd
      Src: /src/unbound/services/cache/dns.c:946,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:947,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:950,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 6
    argNames:
    - env
    - qname
    - qnamelen
    - qtype
    - qclass
    - region
    argTypes:
    - struct module_env*
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 888
    functionDepth: 2
    functionLinenumber: 888
    functionLinenumberEnd: 953
    functionName: fill_any
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 0
    functionsReached:
    - lock_rw_unlock
    - rrset_cache_lookup
    - dns_msg_ansadd
    - log_assert
    - dns_msg_create
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg *\nfill_any(struct module_env* env,\n\tuint8_t* qname,
      size_t qnamelen, uint16_t qtype, uint16_t qclass,\n\tstruct regional* region)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: query_info_hash
      Src: /src/unbound/services/cache/dns.c:973,1
    - Dst: slabhash_lookup
      Src: /src/unbound/services/cache/dns.c:974,1
    - Dst: tomsg
      Src: /src/unbound/services/cache/dns.c:978,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:981,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:985,1
    - Dst: find_closest_of_type
      Src: /src/unbound/services/cache/dns.c:992,1
    - Dst: synth_dname_msg
      Src: /src/unbound/services/cache/dns.c:996,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:1000,1
    - Dst: rrset_cache_lookup
      Src: /src/unbound/services/cache/dns.c:1013,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:1020,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:1024,1
    - Dst: rrset_cache_lookup
      Src: /src/unbound/services/cache/dns.c:1031,1
    - Dst: val_rrset_wildcard
      Src: /src/unbound/services/cache/dns.c:1038,1
    - Dst: rrset_msg
      Src: /src/unbound/services/cache/dns.c:1039,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:1041,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:1045,1
    - Dst: rrset_cache_lookup
      Src: /src/unbound/services/cache/dns.c:1050,1
    - Dst: rrset_msg
      Src: /src/unbound/services/cache/dns.c:1066,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:1068,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:1072,1
    - Dst: dname_is_root
      Src: /src/unbound/services/cache/dns.c:1080,1
    - Dst: dname_strict_subdomain_c
      Src: /src/unbound/services/cache/dns.c:1082,1
    - Dst: dname_remove_label
      Src: /src/unbound/services/cache/dns.c:1084,1
    - Dst: query_info_hash
      Src: /src/unbound/services/cache/dns.c:1085,1
    - Dst: slabhash_lookup
      Src: /src/unbound/services/cache/dns.c:1086,1
    - Dst: query_info_hash
      Src: /src/unbound/services/cache/dns.c:1090,1
    - Dst: slabhash_lookup
      Src: /src/unbound/services/cache/dns.c:1091,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/services/cache/dns.c:1096,1
    - Dst: ntohs
      Src: /src/unbound/services/cache/dns.c:1099,1
    - Dst: tomsg
      Src: /src/unbound/services/cache/dns.c:1100,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:1101,1
    - Dst: iter_scrub_nxdomain
      Src: /src/unbound/services/cache/dns.c:1106,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:1109,1
    - Dst: fill_any
      Src: /src/unbound/services/cache/dns.c:1117,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 77
    argCount: 11
    argNames:
    - env
    - qname
    - qnamelen
    - qtype
    - qclass
    - flags
    - region
    - scratch
    - no_partial
    - dpname
    - dpnamelen
    argTypes:
    - struct module_env*
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - uint16_t
    - struct regional*
    - struct regional*
    - int
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1121
      start: 955
    functionDepth: 3
    functionLinenumber: 955
    functionLinenumberEnd: 1121
    functionName: dns_cache_lookup
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 0
    functionsReached:
    - dname_is_root
    - FLAGS_GET_RCODE
    - ntohs
    - synth_dname_msg
    - lock_rw_unlock
    - rrset_cache_lookup
    - dname_remove_label
    - slabhash_lookup
    - dname_strict_subdomain_c
    - query_info_hash
    - rrset_msg
    - fill_any
    - iter_scrub_nxdomain
    - tomsg
    - val_rrset_wildcard
    - find_closest_of_type
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg * \ndns_cache_lookup(struct module_env* env,\n\tuint8_t*
      qname, size_t qnamelen, uint16_t qtype, uint16_t qclass,\n\tuint16_t flags,
      struct regional* region, struct regional* scratch,\n\tint no_partial, uint8_t*
      dpname, size_t dpnamelen)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: msg_cache_lookup
      Src: /src/unbound/services/cache/dns.c:1133,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/services/cache/dns.c:1138,1
    - Dst: reply_info_could_use_expired
      Src: /src/unbound/services/cache/dns.c:1139,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/services/cache/dns.c:1159,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/services/cache/dns.c:1161,1
    - Dst: verbose
      Src: /src/unbound/services/cache/dns.c:1167,1
    - Dst: verbose
      Src: /src/unbound/services/cache/dns.c:1178,1
    - Dst: verbose
      Src: /src/unbound/services/cache/dns.c:1186,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:1189,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:1192,1
    - Dst: reply_info_copy
      Src: /src/unbound/services/cache/dns.c:1196,1
    - Dst: packed_rrset_ttl_add
      Src: /src/unbound/services/cache/dns.c:1207,1
    - Dst: rrset_cache_update
      Src: /src/unbound/services/cache/dns.c:1213,1
    - Dst: ntohs
      Src: /src/unbound/services/cache/dns.c:1215,1
    - Dst: reply_info_delete
      Src: /src/unbound/services/cache/dns.c:1218,1
    - Dst: memdup
      Src: /src/unbound/services/cache/dns.c:1226,1
    - Dst: reply_info_parsedelete
      Src: /src/unbound/services/cache/dns.c:1228,1
    - Dst: query_info_hash
      Src: /src/unbound/services/cache/dns.c:1236,1
    - Dst: dns_cache_store_msg
      Src: /src/unbound/services/cache/dns.c:1237,1
    - Dst: free
      Src: /src/unbound/services/cache/dns.c:1241,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 45
    argCount: 10
    argNames:
    - env
    - msgqinf
    - msgrep
    - is_referral
    - leeway
    - pside
    - region
    - flags
    - qstarttime
    - is_valrec
    argTypes:
    - struct module_env*
    - struct query_info*
    - struct reply_info*
    - int
    - time_t
    - int
    - struct regional*
    - uint32_t
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1244
      start: 1123
    functionDepth: 3
    functionLinenumber: 1123
    functionLinenumberEnd: 1244
    functionName: dns_cache_store
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 2
    functionsReached:
    - reply_info_delete
    - FLAGS_GET_RCODE
    - rrset_cache_update
    - verbose
    - lock_rw_unlock
    - TTL_IS_EXPIRED
    - reply_info_parsedelete
    - packed_rrset_ttl_add
    - free
    - msg_cache_lookup
    - reply_info_could_use_expired
    - query_info_hash
    - memdup
    - dns_cache_store_msg
    - reply_info_copy
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int dns_cache_store(struct module_env* env, struct query_info* msgqinf,\n\tstruct
      reply_info* msgrep, int is_referral, time_t leeway, int pside,\n\tstruct regional*
      region, uint32_t flags, time_t qstarttime,\n\tint is_valrec)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: msg_cache_lookup
      Src: /src/unbound/services/cache/dns.c:1251,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:1257,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/dns.c:1260,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - env
    - qinfo
    - adjust
    - flags
    argTypes:
    - struct module_env*
    - struct query_info*
    - time_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1263
      start: 1246
    functionDepth: 2
    functionLinenumber: 1246
    functionLinenumberEnd: 1263
    functionName: dns_cache_prefetch_adjust
    functionSourceFile: /src/unbound/services/cache/dns.c
    functionUses: 0
    functionsReached:
    - msg_cache_lookup
    - lock_rw_unlock
    linkageType: ''
    returnType: int
    signature: "int dns_cache_prefetch_adjust(struct module_env* env, struct query_info*
      qinfo,\n        time_t adjust, uint16_t flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 60
    functionName: rrset_markdel
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rrset_markdel(void* key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slabhash_create
      Src: /src/unbound/services/cache/rrset.c:69,1
    - Dst: slabhash_setmarkdel
      Src: /src/unbound/services/cache/rrset.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - cfg
    - alloc
    argTypes:
    - struct config_file*
    - struct alloc_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 76
    functionName: rrset_cache_create
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 1
    functionsReached:
    - slabhash_setmarkdel
    - slabhash_create
    linkageType: ''
    returnType: struct rrset_cache
    signature: "struct rrset_cache * rrset_cache_create(struct config_file* cfg, \n\tstruct
      alloc_cache* alloc)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slabhash_delete
      Src: /src/unbound/services/cache/rrset.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct rrset_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 84
    functionName: rrset_cache_delete
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 2
    functionsReached:
    - slabhash_delete
    linkageType: ''
    returnType: void
    signature: void rrset_cache_delete(struct rrset_cache* r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slabhash_is_size
      Src: /src/unbound/services/cache/rrset.c:89,1
    - Dst: rrset_cache_delete
      Src: /src/unbound/services/cache/rrset.c:92,1
    - Dst: rrset_cache_create
      Src: /src/unbound/services/cache/rrset.c:93,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - r
    - cfg
    - alloc
    argTypes:
    - struct rrset_cache*
    - struct config_file*
    - struct alloc_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 96
    functionName: rrset_cache_adjust
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 1
    functionsReached:
    - slabhash_is_size
    - rrset_cache_create
    - rrset_cache_delete
    linkageType: ''
    returnType: struct rrset_cache
    signature: "struct rrset_cache * rrset_cache_adjust(struct rrset_cache *r, \n\tstruct
      config_file* cfg, struct alloc_cache* alloc)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slabhash_gettable
      Src: /src/unbound/services/cache/rrset.c:102,1
    - Dst: lock_quick_lock
      Src: /src/unbound/services/cache/rrset.c:113,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/cache/rrset.c:120,1
    - Dst: lru_touch
      Src: /src/unbound/services/cache/rrset.c:122,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/rrset.c:124,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/services/cache/rrset.c:125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - r
    - key
    - hash
    - id
    argTypes:
    - struct rrset_cache*
    - struct ub_packed_rrset_key*
    - hashvalue_type
    - rrset_id_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 126
    functionName: rrset_cache_touch
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 0
    functionsReached:
    - lru_touch
    - lock_rw_unlock
    - lock_quick_unlock
    - lock_quick_lock
    - slabhash_gettable
    - lock_rw_rdlock
    linkageType: ''
    returnType: void
    signature: "void rrset_cache_touch(struct rrset_cache* r, struct ub_packed_rrset_key*
      key,\n        hashvalue_type hash, rrset_id_type id)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/services/cache/rrset.c:136,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/services/cache/rrset.c:136,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/services/cache/rrset.c:151,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/services/cache/rrset.c:159,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/services/cache/rrset.c:171,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 32
    argCount: 6
    argNames:
    - nd
    - cd
    - timenow
    - equal
    - ns
    - a_aaaa
    argTypes:
    - void*
    - void*
    - time_t
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 189
    functionName: need_to_update_rrset
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 0
    functionsReached:
    - TTL_IS_EXPIRED
    linkageType: ''
    returnType: int
    signature: "int need_to_update_rrset(void* nd, void* cd, time_t timenow, int equal,
      int ns,\n\tint a_aaaa)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: alloc_get_id
      Src: /src/unbound/services/cache/rrset.c:196,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/services/cache/rrset.c:198,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/rrset.c:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - ref
    - alloc
    argTypes:
    - struct rrset_ref*
    - struct alloc_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 192
    functionDepth: 1
    functionLinenumber: 192
    functionLinenumberEnd: 205
    functionName: rrset_update_id
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - alloc_get_id
    linkageType: ''
    returnType: void
    signature: void rrset_update_id(struct rrset_ref* ref, struct alloc_cache* alloc)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/services/cache/rrset.c:214,1
    - Dst: log_assert
      Src: /src/unbound/services/cache/rrset.c:216,1
    - Dst: log_assert
      Src: /src/unbound/services/cache/rrset.c:217,1
    - Dst: log_nametypeclass
      Src: /src/unbound/services/cache/rrset.c:219,1
    - Dst: ntohs
      Src: /src/unbound/services/cache/rrset.c:219,1
    - Dst: ub_packed_rrset_parsedelete
      Src: /src/unbound/services/cache/rrset.c:220,1
    - Dst: slabhash_lookup
      Src: /src/unbound/services/cache/rrset.c:226,1
    - Dst: rrsetdata_equal
      Src: /src/unbound/services/cache/rrset.c:236,1
    - Dst: need_to_update_rrset
      Src: /src/unbound/services/cache/rrset.c:238,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/rrset.c:242,1
    - Dst: ub_packed_rrset_parsedelete
      Src: /src/unbound/services/cache/rrset.c:243,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/rrset.c:247,1
    - Dst: log_assert
      Src: /src/unbound/services/cache/rrset.c:256,1
    - Dst: slabhash_insert
      Src: /src/unbound/services/cache/rrset.c:257,1
    - Dst: rrset_update_id
      Src: /src/unbound/services/cache/rrset.c:265,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 4
    argNames:
    - r
    - ref
    - alloc
    - timenow
    argTypes:
    - struct rrset_cache*
    - struct rrset_ref*
    - struct alloc_cache*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 270
    functionName: rrset_cache_update
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 3
    functionsReached:
    - slabhash_insert
    - rrsetdata_equal
    - log_nametypeclass
    - ub_packed_rrset_parsedelete
    - lock_rw_unlock
    - log_assert
    - rrset_update_id
    - slabhash_lookup
    - need_to_update_rrset
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int rrset_cache_update(struct rrset_cache* r, struct rrset_ref* ref,\n\tstruct
      alloc_cache* alloc, time_t timenow)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rrsig_get_signer
      Src: /src/unbound/services/cache/rrset.c:285,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/services/cache/rrset.c:289,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - dname
    - rrset
    argTypes:
    - uint8_t*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 273
    functionDepth: 2
    functionLinenumber: 273
    functionLinenumberEnd: 293
    functionName: dname_subdomain_rrsig_signers
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 0
    functionsReached:
    - rrsig_get_signer
    - dname_subdomain_c
    linkageType: ''
    returnType: int
    signature: "int dname_subdomain_rrsig_signers(uint8_t* dname,\n\tstruct ub_packed_rrset_key*
      rrset)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dname_subdomain_rrsig_signers
      Src: /src/unbound/services/cache/rrset.c:306,1
    - Dst: verbose
      Src: /src/unbound/services/cache/rrset.c:307,1
    - Dst: packed_rrset_copy_alloc
      Src: /src/unbound/services/cache/rrset.c:311,1
    - Dst: log_err
      Src: /src/unbound/services/cache/rrset.c:313,1
    - Dst: memmove
      Src: /src/unbound/services/cache/rrset.c:320,1
    - Dst: memdup
      Src: /src/unbound/services/cache/rrset.c:323,1
    - Dst: ub_packed_rrset_parsedelete
      Src: /src/unbound/services/cache/rrset.c:325,1
    - Dst: log_err
      Src: /src/unbound/services/cache/rrset.c:326,1
    - Dst: free
      Src: /src/unbound/services/cache/rrset.c:329,1
    - Dst: rrset_key_hash
      Src: /src/unbound/services/cache/rrset.c:333,1
    - Dst: rrset_cache_update
      Src: /src/unbound/services/cache/rrset.c:337,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 27
    argCount: 6
    argNames:
    - rrset_cache
    - rrset
    - ce
    - ce_len
    - alloc
    - timenow
    argTypes:
    - struct rrset_cache*
    - struct ub_packed_rrset_key*
    - uint8_t*
    - size_t
    - struct alloc_cache*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 295
    functionDepth: 3
    functionLinenumber: 295
    functionLinenumberEnd: 338
    functionName: rrset_cache_update_wildcard
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 1
    functionsReached:
    - log_err
    - memdup
    - memmove
    - ub_packed_rrset_parsedelete
    - verbose
    - rrset_key_hash
    - rrset_cache_update
    - free
    - packed_rrset_copy_alloc
    - dname_subdomain_rrsig_signers
    linkageType: ''
    returnType: void
    signature: "void rrset_cache_update_wildcard(struct rrset_cache* rrset_cache,
      \n\tstruct ub_packed_rrset_key* rrset, uint8_t* ce, size_t ce_len,\n\tstruct
      alloc_cache* alloc, time_t timenow)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/unbound/services/cache/rrset.c:356,1
    - Dst: htons
      Src: /src/unbound/services/cache/rrset.c:357,1
    - Dst: rrset_key_hash
      Src: /src/unbound/services/cache/rrset.c:360,1
    - Dst: slabhash_lookup
      Src: /src/unbound/services/cache/rrset.c:362,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/services/cache/rrset.c:367,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/rrset.c:374,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 8
    argNames:
    - r
    - qname
    - qnamelen
    - qtype
    - qclass
    - flags
    - timenow
    - wr
    argTypes:
    - struct rrset_cache*
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - uint32_t
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 344
    functionDepth: 1
    functionLinenumber: 344
    functionLinenumberEnd: 382
    functionName: rrset_cache_lookup
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 11
    functionsReached:
    - rrset_key_hash
    - lock_rw_unlock
    - TTL_IS_EXPIRED
    - htons
    - slabhash_lookup
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: "struct ub_packed_rrset_key * \nrrset_cache_lookup(struct rrset_cache*
      r, uint8_t* qname, size_t qnamelen, \n\tuint16_t qtype, uint16_t qclass, uint32_t
      flags, time_t timenow,\n\tint wr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/services/cache/rrset.c:392,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/services/cache/rrset.c:395,1
    - Dst: rrset_array_unlock
      Src: /src/unbound/services/cache/rrset.c:397,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - ref
    - count
    - timenow
    argTypes:
    - struct rrset_ref*
    - size_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 402
      start: 384
    functionDepth: 1
    functionLinenumber: 384
    functionLinenumberEnd: 402
    functionName: rrset_array_lock
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 5
    functionsReached:
    - rrset_array_unlock
    - TTL_IS_EXPIRED
    - lock_rw_rdlock
    linkageType: ''
    returnType: int
    signature: int rrset_array_lock(struct rrset_ref* ref, size_t count, time_t timenow)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/rrset.c:411,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - ref
    - count
    argTypes:
    - struct rrset_ref*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 404
    functionDepth: 0
    functionLinenumber: 404
    functionLinenumberEnd: 413
    functionName: rrset_array_unlock
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 5
    functionsReached:
    - lock_rw_unlock
    linkageType: ''
    returnType: void
    signature: void rrset_array_unlock(struct rrset_ref* ref, size_t count)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/services/cache/rrset.c:421,1
    - Dst: log_warn
      Src: /src/unbound/services/cache/rrset.c:423,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/rrset.c:432,1
    - Dst: rrset_cache_touch
      Src: /src/unbound/services/cache/rrset.c:439,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 19
    argCount: 4
    argNames:
    - r
    - scratch
    - ref
    - count
    argTypes:
    - struct rrset_cache*
    - struct regional*
    - struct rrset_ref*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 415
    functionDepth: 2
    functionLinenumber: 415
    functionLinenumberEnd: 442
    functionName: rrset_array_unlock_touch
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 2
    functionsReached:
    - lock_rw_unlock
    - rrset_cache_touch
    - regional_alloc
    - log_warn
    linkageType: ''
    returnType: void
    signature: "void rrset_array_unlock_touch(struct rrset_cache* r, struct regional*
      scratch,\n\tstruct rrset_ref* ref, size_t count)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: rrset_key_hash
      Src: /src/unbound/services/cache/rrset.c:454,1
    - Dst: slabhash_lookup
      Src: /src/unbound/services/cache/rrset.c:456,1
    - Dst: rrsetdata_equal
      Src: /src/unbound/services/cache/rrset.c:460,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/rrset.c:461,1
    - Dst: ntohs
      Src: /src/unbound/services/cache/rrset.c:471,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/rrset.c:481,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 3
    argNames:
    - r
    - rrset
    - now
    argTypes:
    - struct rrset_cache*
    - struct ub_packed_rrset_key*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 444
    functionDepth: 1
    functionLinenumber: 444
    functionLinenumberEnd: 482
    functionName: rrset_update_sec_status
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 5
    functionsReached:
    - rrsetdata_equal
    - rrset_key_hash
    - lock_rw_unlock
    - slabhash_lookup
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void rrset_update_sec_status(struct rrset_cache* r, \n\tstruct ub_packed_rrset_key*
      rrset, time_t now)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: rrset_key_hash
      Src: /src/unbound/services/cache/rrset.c:494,1
    - Dst: slabhash_lookup
      Src: /src/unbound/services/cache/rrset.c:496,1
    - Dst: rrsetdata_equal
      Src: /src/unbound/services/cache/rrset.c:500,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/rrset.c:501,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/rrset.c:518,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - r
    - rrset
    - now
    argTypes:
    - struct rrset_cache*
    - struct ub_packed_rrset_key*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 484
    functionDepth: 1
    functionLinenumber: 484
    functionLinenumberEnd: 519
    functionName: rrset_check_sec_status
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 3
    functionsReached:
    - rrset_key_hash
    - slabhash_lookup
    - rrsetdata_equal
    - lock_rw_unlock
    linkageType: ''
    returnType: void
    signature: "void rrset_check_sec_status(struct rrset_cache* r, \n\tstruct ub_packed_rrset_key*
      rrset, time_t now)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: query_dname_compare
      Src: /src/unbound/services/cache/rrset.c:539,1
    - Dst: rrset_cache_lookup
      Src: /src/unbound/services/cache/rrset.c:544,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/rrset.c:549,1
    - Dst: log_nametypeclass
      Src: /src/unbound/services/cache/rrset.c:551,1
    - Dst: log_nametypeclass
      Src: /src/unbound/services/cache/rrset.c:555,1
    - Dst: rrset_cache_remove
      Src: /src/unbound/services/cache/rrset.c:561,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 8
    argNames:
    - r
    - qname
    - qnamelen
    - searchtype
    - qclass
    - now
    - qnametop
    - qnametoplen
    argTypes:
    - struct rrset_cache*
    - uint8_t**
    - size_t*
    - uint16_t
    - uint16_t
    - time_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 521
    functionDepth: 2
    functionLinenumber: 521
    functionLinenumberEnd: 563
    functionName: rrset_cache_remove_above
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 0
    functionsReached:
    - log_nametypeclass
    - lock_rw_unlock
    - rrset_cache_lookup
    - rrset_cache_remove
    - query_dname_compare
    linkageType: ''
    returnType: void
    signature: "void rrset_cache_remove_above(struct rrset_cache* r, uint8_t** qname,
      size_t*\n\tqnamelen, uint16_t searchtype, uint16_t qclass, time_t now, uint8_t*\n\tqnametop,
      size_t qnametoplen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rrset_cache_lookup
      Src: /src/unbound/services/cache/rrset.c:582,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/services/cache/rrset.c:586,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/rrset.c:588,1
    - Dst: log_nametypeclass
      Src: /src/unbound/services/cache/rrset.c:589,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/services/cache/rrset.c:593,1
    - Dst: query_dname_compare
      Src: /src/unbound/services/cache/rrset.c:598,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 8
    argNames:
    - r
    - qname
    - qnamelen
    - searchtype
    - qclass
    - now
    - qnametop
    - qnametoplen
    argTypes:
    - struct rrset_cache*
    - uint8_t**
    - size_t*
    - uint16_t
    - uint16_t
    - time_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 565
    functionDepth: 2
    functionLinenumber: 565
    functionLinenumberEnd: 602
    functionName: rrset_cache_expired_above
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 1
    functionsReached:
    - log_nametypeclass
    - lock_rw_unlock
    - rrset_cache_lookup
    - TTL_IS_EXPIRED
    - query_dname_compare
    linkageType: ''
    returnType: int
    signature: "int rrset_cache_expired_above(struct rrset_cache* r, uint8_t** qname,
      size_t*\n\tqnamelen, uint16_t searchtype, uint16_t qclass, time_t now, uint8_t*\n\tqnametop,
      size_t qnametoplen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/unbound/services/cache/rrset.c:611,1
    - Dst: htons
      Src: /src/unbound/services/cache/rrset.c:612,1
    - Dst: rrset_key_hash
      Src: /src/unbound/services/cache/rrset.c:614,1
    - Dst: slabhash_remove
      Src: /src/unbound/services/cache/rrset.c:615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 6
    argNames:
    - r
    - nm
    - nmlen
    - type
    - dclass
    - flags
    argTypes:
    - struct rrset_cache*
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 604
    functionDepth: 1
    functionLinenumber: 604
    functionLinenumberEnd: 616
    functionName: rrset_cache_remove
    functionSourceFile: /src/unbound/services/cache/rrset.c
    functionUses: 3
    functionsReached:
    - htons
    - rrset_key_hash
    - slabhash_remove
    linkageType: ''
    returnType: void
    signature: "void rrset_cache_remove(struct rrset_cache* r, uint8_t* nm, size_t
      nmlen,\n\tuint16_t type, uint16_t dclass, uint32_t flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/unbound/testdata/speed_cache.tdir/makeqs.c:10,1
    - Dst: printf
      Src: /src/unbound/testdata/speed_cache.tdir/makeqs.c:12,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 14
      start: 8
    functionDepth: 0
    functionLinenumber: 8
    functionLinenumberEnd: 14
    functionName: main
    functionSourceFile: /src/unbound/testdata/speed_cache.tdir/makeqs.c
    functionUses: 24
    functionsReached:
    - atoi
    - printf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PyDict_GetItemString
      Src: /src/unbound/pythonmod/pythonmod.c:137,1
    - Dst: PyDict_DelItemString
      Src: /src/unbound/pythonmod/pythonmod.c:138,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - dict
    argTypes:
    - PyObject*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 125
    functionDepth: 0
    functionLinenumber: 125
    functionLinenumberEnd: 141
    functionName: clean_python_function_objects
    functionSourceFile: /src/unbound/pythonmod/pythonmod.c
    functionUses: 0
    functionsReached:
    - PyDict_DelItemString
    - PyDict_GetItemString
    linkageType: ''
    returnType: void
    signature: void clean_python_function_objects(PyObject* dict)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: PyErr_Fetch
      Src: /src/unbound/pythonmod/pythonmod.c:167,1
    - Dst: PyErr_NormalizeException
      Src: /src/unbound/pythonmod/pythonmod.c:168,1
    - Dst: PyImport_ImportModule
      Src: /src/unbound/pythonmod/pythonmod.c:171,1
    - Dst: PyImport_ImportModule
      Src: /src/unbound/pythonmod/pythonmod.c:174,1
    - Dst: PyImport_ImportModule
      Src: /src/unbound/pythonmod/pythonmod.c:179,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:183,1
    - Dst: PyImport_ImportModule
      Src: /src/unbound/pythonmod/pythonmod.c:187,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:189,1
    - Dst: PyObject_GetAttrString
      Src: /src/unbound/pythonmod/pythonmod.c:195,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:197,1
    - Dst: PyObject_CallObject
      Src: /src/unbound/pythonmod/pythonmod.c:201,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:203,1
    - Dst: PyObject_GetAttrString
      Src: /src/unbound/pythonmod/pythonmod.c:209,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:211,1
    - Dst: Py_BuildValue
      Src: /src/unbound/pythonmod/pythonmod.c:215,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:219,1
    - Dst: PyObject_CallObject
      Src: /src/unbound/pythonmod/pythonmod.c:224,1
    - Dst: PyErr_Print
      Src: /src/unbound/pythonmod/pythonmod.c:226,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:227,1
    - Dst: Py_DECREF
      Src: /src/unbound/pythonmod/pythonmod.c:233,1
    - Dst: PyObject_GetAttrString
      Src: /src/unbound/pythonmod/pythonmod.c:234,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:236,1
    - Dst: Py_DECREF
      Src: /src/unbound/pythonmod/pythonmod.c:240,1
    - Dst: PyObject_CallObject
      Src: /src/unbound/pythonmod/pythonmod.c:241,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:243,1
    - Dst: PyBytes_Check
      Src: /src/unbound/pythonmod/pythonmod.c:249,1
    - Dst: PyUnicode_Check
      Src: /src/unbound/pythonmod/pythonmod.c:249,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:250,1
    - Dst: PyBytes_Check
      Src: /src/unbound/pythonmod/pythonmod.c:255,1
    - Dst: PyBytes_AsString
      Src: /src/unbound/pythonmod/pythonmod.c:256,1
    - Dst: PyUnicode_AsASCIIString
      Src: /src/unbound/pythonmod/pythonmod.c:258,1
    - Dst: PyBytes_AsString
      Src: /src/unbound/pythonmod/pythonmod.c:259,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:261,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:264,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:265,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:266,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:267,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:268,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:269,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:270,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:271,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:278,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:279,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:280,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 93
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 149
    functionDepth: 1
    functionLinenumber: 149
    functionLinenumberEnd: 281
    functionName: log_py_err
    functionSourceFile: /src/unbound/pythonmod/pythonmod.c
    functionUses: 0
    functionsReached:
    - PyErr_NormalizeException
    - log_err
    - PyObject_GetAttrString
    - PyErr_Print
    - Py_BuildValue
    - Py_DECREF
    - Py_XDECREF
    - PyBytes_AsString
    - PyBytes_Check
    - PyImport_ImportModule
    - PyUnicode_AsASCIIString
    - PyUnicode_Check
    - PyObject_CallObject
    - PyErr_Fetch
    linkageType: ''
    returnType: void
    signature: void log_py_err(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/pythonmod/pythonmod.c:287,1
    - Dst: log_assert
      Src: /src/unbound/pythonmod/pythonmod.c:288,1
    - Dst: PyEval_RestoreThread
      Src: /src/unbound/pythonmod/pythonmod.c:290,1
    - Dst: Py_Finalize
      Src: /src/unbound/pythonmod/pythonmod.c:291,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 292
    functionName: pythonmod_atexit
    functionSourceFile: /src/unbound/pythonmod/pythonmod.c
    functionUses: 0
    functionsReached:
    - PyEval_RestoreThread
    - log_assert
    - Py_Finalize
    linkageType: ''
    returnType: void
    signature: void pythonmod_atexit(void)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/pythonmod/pythonmod.c:308,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:311,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:327,1
    - Dst: Py_IsInitialized
      Src: /src/unbound/pythonmod/pythonmod.c:332,1
    - Dst: mbstowcs
      Src: /src/unbound/pythonmod/pythonmod.c:341,1
    - Dst: Py_SetProgramName
      Src: /src/unbound/pythonmod/pythonmod.c:346,1
    - Dst: PyPreConfig_InitPythonConfig
      Src: /src/unbound/pythonmod/pythonmod.c:350,1
    - Dst: Py_PreInitialize
      Src: /src/unbound/pythonmod/pythonmod.c:351,1
    - Dst: PyStatus_Exception
      Src: /src/unbound/pythonmod/pythonmod.c:352,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:353,1
    - Dst: PyImport_AppendInittab
      Src: /src/unbound/pythonmod/pythonmod.c:360,1
    - Dst: Py_Initialize
      Src: /src/unbound/pythonmod/pythonmod.c:364,1
    - Dst: PyConfig_InitPythonConfig
      Src: /src/unbound/pythonmod/pythonmod.c:366,1
    - Dst: PyConfig_SetString
      Src: /src/unbound/pythonmod/pythonmod.c:367,1
    - Dst: PyStatus_Exception
      Src: /src/unbound/pythonmod/pythonmod.c:368,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:369,1
    - Dst: PyConfig_Clear
      Src: /src/unbound/pythonmod/pythonmod.c:372,1
    - Dst: Py_InitializeFromConfig
      Src: /src/unbound/pythonmod/pythonmod.c:376,1
    - Dst: PyStatus_Exception
      Src: /src/unbound/pythonmod/pythonmod.c:377,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:378,1
    - Dst: PyConfig_Clear
      Src: /src/unbound/pythonmod/pythonmod.c:381,1
    - Dst: PyConfig_Clear
      Src: /src/unbound/pythonmod/pythonmod.c:384,1
    - Dst: PyEval_InitThreads
      Src: /src/unbound/pythonmod/pythonmod.c:388,1
    - Dst: SWIG_init
      Src: /src/unbound/pythonmod/pythonmod.c:390,1
    - Dst: PyEval_SaveThread
      Src: /src/unbound/pythonmod/pythonmod.c:391,1
    - Dst: atexit
      Src: /src/unbound/pythonmod/pythonmod.c:394,1
    - Dst: PyGILState_Ensure
      Src: /src/unbound/pythonmod/pythonmod.c:397,1
    - Dst: PyRun_SimpleString
      Src: /src/unbound/pythonmod/pythonmod.c:401,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:402,1
    - Dst: PyRun_SimpleString
      Src: /src/unbound/pythonmod/pythonmod.c:405,1
    - Dst: PyRun_SimpleString
      Src: /src/unbound/pythonmod/pythonmod.c:406,1
    - Dst: PyRun_SimpleString
      Src: /src/unbound/pythonmod/pythonmod.c:407,1
    - Dst: snprintf
      Src: /src/unbound/pythonmod/pythonmod.c:410,1
    - Dst: PyRun_SimpleString
      Src: /src/unbound/pythonmod/pythonmod.c:412,1
    - Dst: PyRun_SimpleString
      Src: /src/unbound/pythonmod/pythonmod.c:414,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:415,1
    - Dst: PyRun_SimpleString
      Src: /src/unbound/pythonmod/pythonmod.c:418,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:419,1
    - Dst: PyRun_SimpleString
      Src: /src/unbound/pythonmod/pythonmod.c:422,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:424,1
    - Dst: PyFile_FromString
      Src: /src/unbound/pythonmod/pythonmod.c:433,1
    - Dst: PyFile_AsFile
      Src: /src/unbound/pythonmod/pythonmod.c:434,1
    - Dst: fopen
      Src: /src/unbound/pythonmod/pythonmod.c:436,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:440,1
    - Dst: PyImport_AddModule
      Src: /src/unbound/pythonmod/pythonmod.c:445,1
    - Dst: Py_XINCREF
      Src: /src/unbound/pythonmod/pythonmod.c:446,1
    - Dst: PyModule_GetDict
      Src: /src/unbound/pythonmod/pythonmod.c:447,1
    - Dst: Py_XINCREF
      Src: /src/unbound/pythonmod/pythonmod.c:448,1
    - Dst: clean_python_function_objects
      Src: /src/unbound/pythonmod/pythonmod.c:449,1
    - Dst: PyDict_New
      Src: /src/unbound/pythonmod/pythonmod.c:451,1
    - Dst: PyUnicode_FromString
      Src: /src/unbound/pythonmod/pythonmod.c:453,1
    - Dst: PyDict_SetItemString
      Src: /src/unbound/pythonmod/pythonmod.c:454,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:455,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:456,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:459,1
    - Dst: Py_XINCREF
      Src: /src/unbound/pythonmod/pythonmod.c:460,1
    - Dst: PyModule_AddObject
      Src: /src/unbound/pythonmod/pythonmod.c:461,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:462,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:463,1
    - Dst: PyRun_SimpleFile
      Src: /src/unbound/pythonmod/pythonmod.c:468,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:471,1
    - Dst: fseek
      Src: /src/unbound/pythonmod/pythonmod.c:473,1
    - Dst: PyParser_SimpleParseFile
      Src: /src/unbound/pythonmod/pythonmod.c:485,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:491,1
    - Dst: fseek
      Src: /src/unbound/pythonmod/pythonmod.c:493,1
    - Dst: ftell
      Src: /src/unbound/pythonmod/pythonmod.c:494,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:496,1
    - Dst: strerror
      Src: /src/unbound/pythonmod/pythonmod.c:497,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:503,1
    - Dst: malloc
      Src: /src/unbound/pythonmod/pythonmod.c:507,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:509,1
    - Dst: fseek
      Src: /src/unbound/pythonmod/pythonmod.c:512,1
    - Dst: fread
      Src: /src/unbound/pythonmod/pythonmod.c:513,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:514,1
    - Dst: strerror
      Src: /src/unbound/pythonmod/pythonmod.c:515,1
    - Dst: free
      Src: /src/unbound/pythonmod/pythonmod.c:516,1
    - Dst: Py_CompileString
      Src: /src/unbound/pythonmod/pythonmod.c:523,1
    - Dst: log_py_err
      Src: /src/unbound/pythonmod/pythonmod.c:526,1
    - Dst: free
      Src: /src/unbound/pythonmod/pythonmod.c:531,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:538,1
    - Dst: fclose
      Src: /src/unbound/pythonmod/pythonmod.c:540,1
    - Dst: PyDict_GetItemString
      Src: /src/unbound/pythonmod/pythonmod.c:543,1
    - Dst: PyDict_GetItemString
      Src: /src/unbound/pythonmod/pythonmod.c:546,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:548,1
    - Dst: Py_XINCREF
      Src: /src/unbound/pythonmod/pythonmod.c:552,1
    - Dst: PyDict_GetItemString
      Src: /src/unbound/pythonmod/pythonmod.c:553,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:555,1
    - Dst: Py_XINCREF
      Src: /src/unbound/pythonmod/pythonmod.c:558,1
    - Dst: PyDict_GetItemString
      Src: /src/unbound/pythonmod/pythonmod.c:559,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:561,1
    - Dst: Py_XINCREF
      Src: /src/unbound/pythonmod/pythonmod.c:564,1
    - Dst: PyDict_GetItemString
      Src: /src/unbound/pythonmod/pythonmod.c:565,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:567,1
    - Dst: Py_XINCREF
      Src: /src/unbound/pythonmod/pythonmod.c:570,1
    - Dst: SWIG_NewPointerObj
      Src: /src/unbound/pythonmod/pythonmod.c:574,1
    - Dst: SWIG_NewPointerObj
      Src: /src/unbound/pythonmod/pythonmod.c:578,1
    - Dst: PyObject_CallFunction
      Src: /src/unbound/pythonmod/pythonmod.c:581,1
    - Dst: PyErr_Occurred
      Src: /src/unbound/pythonmod/pythonmod.c:582,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:584,1
    - Dst: log_py_err
      Src: /src/unbound/pythonmod/pythonmod.c:585,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:589,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:590,1
    - Dst: PyGILState_Release
      Src: /src/unbound/pythonmod/pythonmod.c:591,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:596,1
    - Dst: fclose
      Src: /src/unbound/pythonmod/pythonmod.c:598,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:602,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:603,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:604,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:605,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:606,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:607,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:608,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:609,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:610,1
    - Dst: PyGILState_Release
      Src: /src/unbound/pythonmod/pythonmod.c:611,1
    CyclomaticComplexity: 56
    EdgeCount: 56
    ICount: 211
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 294
    functionDepth: 2
    functionLinenumber: 294
    functionLinenumberEnd: 613
    functionName: pythonmod_init
    functionSourceFile: /src/unbound/pythonmod/pythonmod.c
    functionUses: 0
    functionsReached:
    - PyConfig_InitPythonConfig
    - PyConfig_Clear
    - snprintf
    - fseek
    - Py_XINCREF
    - PyEval_InitThreads
    - PyParser_SimpleParseFile
    - PyFile_FromString
    - fopen
    - fread
    - PyDict_SetItemString
    - log_py_err
    - log_err
    - clean_python_function_objects
    - fclose
    - SWIG_init
    - SWIG_NewPointerObj
    - calloc
    - PyRun_SimpleFile
    - Py_IsInitialized
    - PyImport_AddModule
    - Py_PreInitialize
    - PyFile_AsFile
    - PyObject_CallFunction
    - ftell
    - PyGILState_Release
    - PyPreConfig_InitPythonConfig
    - PyDict_New
    - PyStatus_Exception
    - PyImport_AppendInittab
    - Py_InitializeFromConfig
    - PyConfig_SetString
    - PyModule_AddObject
    - Py_CompileString
    - malloc
    - free
    - Py_SetProgramName
    - PyErr_Occurred
    - strerror
    - PyEval_SaveThread
    - PyModule_GetDict
    - PyRun_SimpleString
    - PyUnicode_FromString
    - PyDict_GetItemString
    - PyGILState_Ensure
    - Py_XDECREF
    - Py_Initialize
    - atexit
    - mbstowcs
    linkageType: ''
    returnType: int
    signature: int pythonmod_init(struct module_env* env, int id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: PyGILState_Ensure
      Src: /src/unbound/pythonmod/pythonmod.c:626,1
    - Dst: PyObject_CallFunction
      Src: /src/unbound/pythonmod/pythonmod.c:629,1
    - Dst: PyErr_Occurred
      Src: /src/unbound/pythonmod/pythonmod.c:630,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:631,1
    - Dst: log_py_err
      Src: /src/unbound/pythonmod/pythonmod.c:632,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:635,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:637,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:638,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:639,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:640,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:641,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:642,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:643,1
    - Dst: PyGILState_Release
      Src: /src/unbound/pythonmod/pythonmod.c:644,1
    - Dst: free
      Src: /src/unbound/pythonmod/pythonmod.c:649,1
    - Dst: inplace_cb_delete
      Src: /src/unbound/pythonmod/pythonmod.c:653,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 615
    functionDepth: 2
    functionLinenumber: 615
    functionLinenumberEnd: 657
    functionName: pythonmod_deinit
    functionSourceFile: /src/unbound/pythonmod/pythonmod.c
    functionUses: 0
    functionsReached:
    - log_py_err
    - log_err
    - PyGILState_Release
    - PyGILState_Ensure
    - Py_XDECREF
    - inplace_cb_delete
    - free
    - PyErr_Occurred
    - PyObject_CallFunction
    linkageType: ''
    returnType: void
    signature: void pythonmod_deinit(struct module_env* env, int id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PyGILState_Ensure
      Src: /src/unbound/pythonmod/pythonmod.c:664,1
    - Dst: log_query_info
      Src: /src/unbound/pythonmod/pythonmod.c:666,1
    - Dst: log_query_info
      Src: /src/unbound/pythonmod/pythonmod.c:667,1
    - Dst: SWIG_NewPointerObj
      Src: /src/unbound/pythonmod/pythonmod.c:669,1
    - Dst: SWIG_NewPointerObj
      Src: /src/unbound/pythonmod/pythonmod.c:670,1
    - Dst: PyObject_CallFunction
      Src: /src/unbound/pythonmod/pythonmod.c:672,1
    - Dst: PyErr_Occurred
      Src: /src/unbound/pythonmod/pythonmod.c:675,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:677,1
    - Dst: log_py_err
      Src: /src/unbound/pythonmod/pythonmod.c:678,1
    - Dst: PyObject_IsTrue
      Src: /src/unbound/pythonmod/pythonmod.c:681,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:683,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:687,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:688,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:689,1
    - Dst: PyGILState_Release
      Src: /src/unbound/pythonmod/pythonmod.c:691,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - qstate
    - id
    - super
    argTypes:
    - struct module_qstate*
    - int
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 659
    functionDepth: 2
    functionLinenumber: 659
    functionLinenumberEnd: 692
    functionName: pythonmod_inform_super
    functionSourceFile: /src/unbound/pythonmod/pythonmod.c
    functionUses: 0
    functionsReached:
    - log_py_err
    - log_err
    - PyGILState_Release
    - PyGILState_Ensure
    - PyObject_IsTrue
    - log_query_info
    - Py_XDECREF
    - PyErr_Occurred
    - SWIG_NewPointerObj
    - PyObject_CallFunction
    linkageType: ''
    returnType: void
    signature: void pythonmod_inform_super(struct module_qstate* qstate, int id, struct
      module_qstate* super)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: PyGILState_Ensure
      Src: /src/unbound/pythonmod/pythonmod.c:700,1
    - Dst: malloc
      Src: /src/unbound/pythonmod/pythonmod.c:705,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:707,1
    - Dst: PyGILState_Release
      Src: /src/unbound/pythonmod/pythonmod.c:708,1
    - Dst: PyDict_New
      Src: /src/unbound/pythonmod/pythonmod.c:713,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:715,1
    - Dst: PyGILState_Release
      Src: /src/unbound/pythonmod/pythonmod.c:716,1
    - Dst: SWIG_NewPointerObj
      Src: /src/unbound/pythonmod/pythonmod.c:722,1
    - Dst: PyObject_CallFunction
      Src: /src/unbound/pythonmod/pythonmod.c:723,1
    - Dst: PyErr_Occurred
      Src: /src/unbound/pythonmod/pythonmod.c:725,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:727,1
    - Dst: strmodulevent
      Src: /src/unbound/pythonmod/pythonmod.c:727,1
    - Dst: log_py_err
      Src: /src/unbound/pythonmod/pythonmod.c:728,1
    - Dst: PyObject_IsTrue
      Src: /src/unbound/pythonmod/pythonmod.c:731,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod.c:733,1
    - Dst: strmodulevent
      Src: /src/unbound/pythonmod/pythonmod.c:733,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:736,1
    - Dst: Py_XDECREF
      Src: /src/unbound/pythonmod/pythonmod.c:737,1
    - Dst: PyGILState_Release
      Src: /src/unbound/pythonmod/pythonmod.c:739,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 4
    argNames:
    - qstate
    - event
    - id
    - ATTR_UNUSED(outbound)
    argTypes:
    - struct module_qstate*
    - enum module_ev
    - int
    - struct outbound_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 694
    functionDepth: 2
    functionLinenumber: 694
    functionLinenumberEnd: 740
    functionName: pythonmod_operate
    functionSourceFile: /src/unbound/pythonmod/pythonmod.c
    functionUses: 0
    functionsReached:
    - PyGILState_Release
    - log_err
    - log_py_err
    - PyGILState_Ensure
    - PyObject_IsTrue
    - PyDict_New
    - Py_XDECREF
    - malloc
    - PyErr_Occurred
    - SWIG_NewPointerObj
    - strmodulevent
    - PyObject_CallFunction
    linkageType: ''
    returnType: void
    signature: "void pythonmod_operate(struct module_qstate* qstate, enum module_ev
      event,\n\tint id, struct outbound_entry* ATTR_UNUSED(outbound))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/pythonmod/pythonmod.c:749,1
    - Dst: PyGILState_Ensure
      Src: /src/unbound/pythonmod/pythonmod.c:752,1
    - Dst: Py_DECREF
      Src: /src/unbound/pythonmod/pythonmod.c:753,1
    - Dst: PyGILState_Release
      Src: /src/unbound/pythonmod/pythonmod.c:754,1
    - Dst: free
      Src: /src/unbound/pythonmod/pythonmod.c:756,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 760
      start: 742
    functionDepth: 1
    functionLinenumber: 742
    functionLinenumberEnd: 760
    functionName: pythonmod_clear
    functionSourceFile: /src/unbound/pythonmod/pythonmod.c
    functionUses: 0
    functionsReached:
    - PyGILState_Release
    - PyGILState_Ensure
    - verbose
    - Py_DECREF
    - free
    linkageType: ''
    returnType: void
    signature: void pythonmod_clear(struct module_qstate* qstate, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/pythonmod/pythonmod.c:765,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 769
      start: 762
    functionDepth: 1
    functionLinenumber: 762
    functionLinenumberEnd: 769
    functionName: pythonmod_get_mem
    functionSourceFile: /src/unbound/pythonmod/pythonmod.c
    functionUses: 0
    functionsReached:
    - verbose
    linkageType: ''
    returnType: size_t
    signature: size_t pythonmod_get_mem(struct module_env* env, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 783
      start: 780
    functionDepth: 0
    functionLinenumber: 780
    functionLinenumberEnd: 783
    functionName: pythonmod_get_funcblock
    functionSourceFile: /src/unbound/pythonmod/pythonmod.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct module_func_block
    signature: struct module_func_block * pythonmod_get_funcblock(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: PyErr_SetString
      Src: /src/unbound/pythonmod/pythonmod_utils.c:69,1
    - Dst: dns_cache_store
      Src: /src/unbound/pythonmod/pythonmod_utils.c:74,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 4
    argNames:
    - qstate
    - qinfo
    - msgrep
    - is_referral
    argTypes:
    - struct module_qstate*
    - struct query_info*
    - struct reply_info*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 61
    functionDepth: 4
    functionLinenumber: 61
    functionLinenumberEnd: 77
    functionName: storeQueryInCache
    functionSourceFile: /src/unbound/pythonmod/pythonmod_utils.c
    functionUses: 0
    functionsReached:
    - dns_cache_store
    - PyErr_SetString
    linkageType: ''
    returnType: int
    signature: "int storeQueryInCache(struct module_qstate* qstate, struct query_info*
      qinfo,\n\tstruct reply_info* msgrep, int is_referral)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: query_info_hash
      Src: /src/unbound/pythonmod/pythonmod_utils.c:88,1
    - Dst: slabhash_lookup
      Src: /src/unbound/pythonmod/pythonmod_utils.c:89,1
    - Dst: rrset_array_lock
      Src: /src/unbound/pythonmod/pythonmod_utils.c:93,1
    - Dst: rrset_array_unlock
      Src: /src/unbound/pythonmod/pythonmod_utils.c:104,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/pythonmod/pythonmod_utils.c:107,1
    - Dst: log_info
      Src: /src/unbound/pythonmod/pythonmod_utils.c:109,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - qstate
    - qinfo
    argTypes:
    - struct module_qstate*
    - struct query_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 80
    functionDepth: 2
    functionLinenumber: 80
    functionLinenumberEnd: 111
    functionName: invalidateQueryInCache
    functionSourceFile: /src/unbound/pythonmod/pythonmod_utils.c
    functionUses: 0
    functionsReached:
    - rrset_array_unlock
    - lock_rw_unlock
    - log_info
    - query_info_hash
    - rrset_array_lock
    - slabhash_lookup
    linkageType: ''
    returnType: void
    signature: "void invalidateQueryInCache(struct module_qstate* qstate,\n\tstruct
      query_info* qinfo)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/pythonmod/pythonmod_utils.c:120,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod_utils.c:123,1
    - Dst: memset
      Src: /src/unbound/pythonmod/pythonmod_utils.c:127,1
    - Dst: memset
      Src: /src/unbound/pythonmod/pythonmod_utils.c:128,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/pythonmod/pythonmod_utils.c:130,1
    - Dst: parse_packet
      Src: /src/unbound/pythonmod/pythonmod_utils.c:131,1
    - Dst: verbose
      Src: /src/unbound/pythonmod/pythonmod_utils.c:132,1
    - Dst: parse_extract_edns_from_response_msg
      Src: /src/unbound/pythonmod/pythonmod_utils.c:136,1
    - Dst: regional_alloc
      Src: /src/unbound/pythonmod/pythonmod_utils.c:144,1
    - Dst: memset
      Src: /src/unbound/pythonmod/pythonmod_utils.c:149,1
    - Dst: parse_create_msg
      Src: /src/unbound/pythonmod/pythonmod_utils.c:150,1
    - Dst: log_err
      Src: /src/unbound/pythonmod/pythonmod_utils.c:152,1
    - Dst: log_dns_msg
      Src: /src/unbound/pythonmod/pythonmod_utils.c:168,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 2
    argNames:
    - qstate
    - pkt
    argTypes:
    - struct module_qstate*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 172
    functionName: createResponse
    functionSourceFile: /src/unbound/pythonmod/pythonmod_utils.c
    functionUses: 0
    functionsReached:
    - log_err
    - log_dns_msg
    - verbose
    - regional_alloc
    - parse_extract_edns_from_response_msg
    - parse_create_msg
    - sldns_buffer_set_position
    - parse_packet
    - memset
    linkageType: ''
    returnType: int
    signature: int createResponse(struct module_qstate* qstate, sldns_buffer* pkt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/unbound/pythonmod/pythonmod_utils.c:184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - reply
    - dest
    - maxlen
    argTypes:
    - struct comm_reply*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 176
    functionDepth: 2
    functionLinenumber: 176
    functionLinenumberEnd: 187
    functionName: reply_addr2str
    functionSourceFile: /src/unbound/pythonmod/pythonmod_utils.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void reply_addr2str(struct comm_reply* reply, char* dest, int maxlen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/unbound/pythonmod/pythonmod_utils.c:198,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 3
    argNames:
    - target
    - dest
    - maxlen
    argTypes:
    - struct delegpt_addr*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 190
    functionDepth: 2
    functionLinenumber: 190
    functionLinenumberEnd: 201
    functionName: delegpt_addr_addr2str
    functionSourceFile: /src/unbound/pythonmod/pythonmod_utils.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void delegpt_addr_addr2str(struct delegpt_addr* target, char *dest,
      int maxlen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: outside_network_quit_prepare
      Src: /src/unbound/libunbound/libworker.c:95,1
    - Dst: mesh_delete
      Src: /src/unbound/libunbound/libworker.c:96,1
    - Dst: context_release_alloc
      Src: /src/unbound/libunbound/libworker.c:97,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/libunbound/libworker.c:99,1
    - Dst: regional_destroy
      Src: /src/unbound/libunbound/libworker.c:100,1
    - Dst: ub_randfree
      Src: /src/unbound/libunbound/libworker.c:101,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:102,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/libunbound/libworker.c:105,1
    - Dst: outside_network_delete
      Src: /src/unbound/libunbound/libworker.c:107,1
    - Dst: shared_ports_delete
      Src: /src/unbound/libunbound/libworker.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - w
    argTypes:
    - struct libworker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 91
    functionDepth: 3
    functionLinenumber: 91
    functionLinenumberEnd: 109
    functionName: libworker_delete_env
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - ub_randfree
    - SSL_CTX_free
    - outside_network_delete
    - mesh_delete
    - free
    - shared_ports_delete
    - outside_network_quit_prepare
    - sldns_buffer_free
    - context_release_alloc
    - regional_destroy
    linkageType: ''
    returnType: void
    signature: void libworker_delete_env(struct libworker* w)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: libworker_delete_env
      Src: /src/unbound/libunbound/libworker.c:116,1
    - Dst: comm_base_delete
      Src: /src/unbound/libunbound/libworker.c:117,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - w
    argTypes:
    - struct libworker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 112
    functionDepth: 4
    functionLinenumber: 112
    functionLinenumberEnd: 119
    functionName: libworker_delete
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - libworker_delete_env
    - comm_base_delete
    - free
    linkageType: ''
    returnType: void
    signature: void libworker_delete(struct libworker* w)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: libworker_delete_env
      Src: /src/unbound/libunbound/libworker.c:125,1
    - Dst: comm_base_delete_no_base
      Src: /src/unbound/libunbound/libworker.c:126,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:127,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - w
    argTypes:
    - struct libworker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 121
    functionDepth: 4
    functionLinenumber: 121
    functionLinenumberEnd: 128
    functionName: libworker_delete_event
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - libworker_delete_env
    - comm_base_delete_no_base
    - free
    linkageType: ''
    returnType: void
    signature: void libworker_delete_event(struct libworker* w)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/libunbound/libworker.c:134,1
    - Dst: malloc
      Src: /src/unbound/libunbound/libworker.c:141,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:143,1
    - Dst: context_obtain_alloc
      Src: /src/unbound/libunbound/libworker.c:147,1
    - Dst: libworker_delete
      Src: /src/unbound/libunbound/libworker.c:149,1
    - Dst: alloc_set_id_cleanup
      Src: /src/unbound/libunbound/libworker.c:153,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libworker.c:155,1
    - Dst: regional_create_custom
      Src: /src/unbound/libunbound/libworker.c:157,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/libunbound/libworker.c:158,1
    - Dst: connect_sslctx_create
      Src: /src/unbound/libunbound/libworker.c:160,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/libunbound/libworker.c:164,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libworker.c:169,1
    - Dst: libworker_delete
      Src: /src/unbound/libunbound/libworker.c:172,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libworker.c:178,1
    - Dst: ub_initstate
      Src: /src/unbound/libunbound/libworker.c:180,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libworker.c:182,1
    - Dst: libworker_delete
      Src: /src/unbound/libunbound/libworker.c:184,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libworker.c:188,1
    - Dst: hash_set_raninit
      Src: /src/unbound/libunbound/libworker.c:200,1
    - Dst: ub_random
      Src: /src/unbound/libunbound/libworker.c:200,1
    - Dst: comm_base_create_event
      Src: /src/unbound/libunbound/libworker.c:205,1
    - Dst: comm_base_create
      Src: /src/unbound/libunbound/libworker.c:206,1
    - Dst: libworker_delete
      Src: /src/unbound/libunbound/libworker.c:208,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libworker.c:213,1
    - Dst: cfg_condense_ports
      Src: /src/unbound/libunbound/libworker.c:215,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libworker.c:218,1
    - Dst: libworker_delete
      Src: /src/unbound/libunbound/libworker.c:220,1
    - Dst: shared_ports_create
      Src: /src/unbound/libunbound/libworker.c:223,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libworker.c:226,1
    - Dst: libworker_delete
      Src: /src/unbound/libunbound/libworker.c:228,1
    - Dst: outside_network_create
      Src: /src/unbound/libunbound/libworker.c:231,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libworker.c:244,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:246,1
    - Dst: libworker_delete
      Src: /src/unbound/libunbound/libworker.c:248,1
    - Dst: mesh_create
      Src: /src/unbound/libunbound/libworker.c:251,1
    - Dst: libworker_delete
      Src: /src/unbound/libunbound/libworker.c:253,1
    - Dst: comm_base_timept
      Src: /src/unbound/libunbound/libworker.c:262,1
    - Dst: pp_init
      Src: /src/unbound/libunbound/libworker.c:263,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 106
    argCount: 3
    argNames:
    - ctx
    - is_bg
    - eb
    argTypes:
    - struct ub_ctx*
    - int
    - struct ub_event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 131
    functionDepth: 5
    functionLinenumber: 131
    functionLinenumberEnd: 265
    functionName: libworker_setup
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - mesh_create
    - sldns_buffer_new
    - ub_initstate
    - regional_create_custom
    - sldns_buffer_free
    - lock_basic_lock
    - hash_set_raninit
    - ub_random
    - cfg_condense_ports
    - calloc
    - comm_base_create_event
    - pp_init
    - context_obtain_alloc
    - libworker_delete
    - malloc
    - free
    - connect_sslctx_create
    - comm_base_timept
    - shared_ports_create
    - comm_base_create
    - lock_basic_unlock
    - alloc_set_id_cleanup
    - outside_network_create
    linkageType: ''
    returnType: struct libworker
    signature: 'struct libworker *

      libworker_setup(struct ub_ctx* ctx, int is_bg, struct ub_event_base* eb)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: libworker_setup
      Src: /src/unbound/libunbound/libworker.c:270,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ctx
    - eb
    argTypes:
    - struct ub_ctx*
    - struct ub_event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 267
    functionDepth: 6
    functionLinenumber: 267
    functionLinenumberEnd: 271
    functionName: libworker_create_event
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - libworker_setup
    linkageType: ''
    returnType: struct libworker
    signature: "struct libworker * libworker_create_event(struct ub_ctx* ctx,\n\tstruct
      ub_event_base* eb)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libworker.c:279,1
    - Dst: context_deserialize_cancel
      Src: /src/unbound/libunbound/libworker.c:280,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libworker.c:281,1
    - Dst: context_deserialize_cancel
      Src: /src/unbound/libunbound/libworker.c:283,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:291,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - w
    - buf
    - len
    argTypes:
    - struct libworker*
    - uint8_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 292
    functionName: handle_cancel
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - free
    - lock_basic_unlock
    - context_deserialize_cancel
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: void handle_cancel(struct libworker* w, uint8_t* buf, uint32_t len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: context_serial_getcmd
      Src: /src/unbound/libunbound/libworker.c:298,1
    - Dst: log_err
      Src: /src/unbound/libunbound/libworker.c:301,1
    - Dst: context_serial_getcmd
      Src: /src/unbound/libunbound/libworker.c:302,1
    - Dst: comm_base_exit
      Src: /src/unbound/libunbound/libworker.c:308,1
    - Dst: handle_newq
      Src: /src/unbound/libunbound/libworker.c:311,1
    - Dst: handle_cancel
      Src: /src/unbound/libunbound/libworker.c:314,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - w
    - msg
    - len
    argTypes:
    - struct libworker*
    - uint8_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 317
    functionName: libworker_do_cmd
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_err
    - handle_cancel
    - handle_newq
    - context_serial_getcmd
    - comm_base_exit
    linkageType: ''
    returnType: void
    signature: void libworker_do_cmd(struct libworker* w, uint8_t* msg, uint32_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:327,1
    - Dst: comm_base_exit
      Src: /src/unbound/libunbound/libworker.c:329,1
    - Dst: libworker_do_cmd
      Src: /src/unbound/libunbound/libworker.c:332,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - ATTR_UNUSED(tube)
    - msg
    - len
    - err
    - arg
    argTypes:
    - struct tube*
    - uint8_t*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 320
    functionDepth: 3
    functionLinenumber: 320
    functionLinenumberEnd: 333
    functionName: libworker_handle_control_cmd
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - free
    - libworker_do_cmd
    - comm_base_exit
    linkageType: ''
    returnType: void
    signature: "void libworker_handle_control_cmd(struct tube* ATTR_UNUSED(tube),
      \n\tuint8_t* msg, size_t len, int err, void* arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/libunbound/libworker.c:344,1
    - Dst: log_thread_set
      Src: /src/unbound/libunbound/libworker.c:348,1
    - Dst: tube_close_write
      Src: /src/unbound/libunbound/libworker.c:353,1
    - Dst: tube_close_read
      Src: /src/unbound/libunbound/libworker.c:354,1
    - Dst: tube_setup_bg_listen
      Src: /src/unbound/libunbound/libworker.c:356,1
    - Dst: log_err
      Src: /src/unbound/libunbound/libworker.c:358,1
    - Dst: tube_setup_bg_write
      Src: /src/unbound/libunbound/libworker.c:361,1
    - Dst: log_err
      Src: /src/unbound/libunbound/libworker.c:362,1
    - Dst: comm_base_dispatch
      Src: /src/unbound/libunbound/libworker.c:367,1
    - Dst: tube_remove_bg_listen
      Src: /src/unbound/libunbound/libworker.c:372,1
    - Dst: tube_remove_bg_write
      Src: /src/unbound/libunbound/libworker.c:373,1
    - Dst: libworker_delete
      Src: /src/unbound/libunbound/libworker.c:374,1
    - Dst: tube_write_msg
      Src: /src/unbound/libunbound/libworker.c:375,1
    - Dst: tube_close_read
      Src: /src/unbound/libunbound/libworker.c:379,1
    - Dst: tube_close_write
      Src: /src/unbound/libunbound/libworker.c:380,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 28
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 336
    functionDepth: 5
    functionLinenumber: 336
    functionLinenumberEnd: 383
    functionName: libworker_dobg
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_err
    - comm_base_dispatch
    - libworker_delete
    - tube_close_read
    - tube_close_write
    - log_thread_set
    - tube_remove_bg_listen
    - tube_remove_bg_write
    - tube_setup_bg_listen
    - tube_setup_bg_write
    - tube_write_msg
    linkageType: ''
    returnType: void
    signature: 'void *

      libworker_dobg(void* arg)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libworker.c:389,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libworker.c:391,1
    - Dst: libworker_setup
      Src: /src/unbound/libunbound/libworker.c:392,1
    - Dst: ub_thread_create
      Src: /src/unbound/libunbound/libworker.c:399,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libworker.c:401,1
    - Dst: fork
      Src: /src/unbound/libunbound/libworker.c:406,1
    - Dst: libworker_setup
      Src: /src/unbound/libunbound/libworker.c:408,1
    - Dst: fatal_exit
      Src: /src/unbound/libunbound/libworker.c:409,1
    - Dst: tube_close_write
      Src: /src/unbound/libunbound/libworker.c:411,1
    - Dst: tube_close_read
      Src: /src/unbound/libunbound/libworker.c:412,1
    - Dst: libworker_dobg
      Src: /src/unbound/libunbound/libworker.c:413,1
    - Dst: exit
      Src: /src/unbound/libunbound/libworker.c:414,1
    - Dst: tube_close_read
      Src: /src/unbound/libunbound/libworker.c:422,1
    - Dst: tube_close_write
      Src: /src/unbound/libunbound/libworker.c:423,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 33
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ub_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 385
    functionDepth: 6
    functionLinenumber: 385
    functionLinenumberEnd: 429
    functionName: libworker_bg
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - exit
    - libworker_dobg
    - ub_thread_create
    - lock_basic_unlock
    - fatal_exit
    - tube_close_read
    - tube_close_write
    - lock_basic_lock
    - fork
    - libworker_setup
    linkageType: ''
    returnType: int
    signature: int libworker_bg(struct ub_ctx* ctx)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_str
      Src: /src/unbound/libunbound/libworker.c:436,1
    - Dst: strdup
      Src: /src/unbound/libunbound/libworker.c:437,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - res
    - s
    argTypes:
    - struct ub_result*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 432
    functionDepth: 1
    functionLinenumber: 432
    functionLinenumberEnd: 439
    functionName: fill_canon
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - strdup
    - dname_str
    linkageType: ''
    returnType: int
    signature: int fill_canon(struct ub_result* res, uint8_t* s)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: fill_canon
      Src: /src/unbound/libunbound/libworker.c:451,1
    - Dst: calloc
      Src: /src/unbound/libunbound/libworker.c:456,1
    - Dst: calloc
      Src: /src/unbound/libunbound/libworker.c:459,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:461,1
    - Dst: query_dname_compare
      Src: /src/unbound/libunbound/libworker.c:468,1
    - Dst: fill_canon
      Src: /src/unbound/libunbound/libworker.c:469,1
    - Dst: calloc
      Src: /src/unbound/libunbound/libworker.c:472,1
    - Dst: calloc
      Src: /src/unbound/libunbound/libworker.c:475,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:477,1
    - Dst: memdup
      Src: /src/unbound/libunbound/libworker.c:484,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:488,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:491,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:493,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 62
    argCount: 5
    argNames:
    - res
    - answer
    - finalcname
    - rq
    - rep
    argTypes:
    - struct ub_result*
    - struct ub_packed_rrset_key*
    - uint8_t*
    - struct query_info*
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 442
    functionDepth: 2
    functionLinenumber: 442
    functionLinenumberEnd: 516
    functionName: fill_res
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - free
    - calloc
    - query_dname_compare
    - fill_canon
    - memdup
    linkageType: ''
    returnType: int
    signature: "int fill_res(struct ub_result* res, struct ub_packed_rrset_key* answer,\n\tuint8_t*
      finalcname, struct query_info* rq, struct reply_info* rep)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: parse_reply_in_temp_region
      Src: /src/unbound/libunbound/libworker.c:526,1
    - Dst: log_err
      Src: /src/unbound/libunbound/libworker.c:528,1
    - Dst: fill_res
      Src: /src/unbound/libunbound/libworker.c:531,1
    - Dst: reply_find_answer_rrset
      Src: /src/unbound/libunbound/libworker.c:531,1
    - Dst: reply_find_final_cname_target
      Src: /src/unbound/libunbound/libworker.c:532,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/libunbound/libworker.c:535,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 4
    argNames:
    - res
    - buf
    - temp
    - msg_security
    argTypes:
    - struct ub_result*
    - sldns_buffer*
    - struct regional*
    - enum sec_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 519
    functionDepth: 3
    functionLinenumber: 519
    functionLinenumberEnd: 545
    functionName: libworker_enter_result
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_err
    - FLAGS_GET_RCODE
    - fill_res
    - reply_find_answer_rrset
    - reply_find_final_cname_target
    - parse_reply_in_temp_region
    linkageType: ''
    returnType: void
    signature: "void libworker_enter_result(struct ub_result* res, sldns_buffer* buf,\n\tstruct
      regional* temp, enum sec_status msg_security)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/unbound/libunbound/libworker.c:554,1
    - Dst: memdup
      Src: /src/unbound/libunbound/libworker.c:563,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/libunbound/libworker.c:563,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/libunbound/libworker.c:563,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/libunbound/libworker.c:564,1
    - Dst: libworker_enter_result
      Src: /src/unbound/libunbound/libworker.c:571,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 6
    argNames:
    - q
    - rcode
    - buf
    - s
    - why_bogus
    - was_ratelimited
    argTypes:
    - struct ctx_query*
    - int
    - sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 548
    functionDepth: 4
    functionLinenumber: 548
    functionLinenumberEnd: 572
    functionName: libworker_fillup_fg
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_limit
    - sldns_buffer_begin
    - libworker_enter_result
    - memdup
    - strdup
    linkageType: ''
    returnType: void
    signature: "void libworker_fillup_fg(struct ctx_query* q, int rcode, sldns_buffer*
      buf, \n\tenum sec_status s, char* why_bogus, int was_ratelimited)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: comm_base_exit
      Src: /src/unbound/libunbound/libworker.c:580,1
    - Dst: libworker_fillup_fg
      Src: /src/unbound/libunbound/libworker.c:582,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 6
    argNames:
    - arg
    - rcode
    - buf
    - s
    - why_bogus
    - was_ratelimited
    argTypes:
    - void*
    - int
    - sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 574
    functionDepth: 5
    functionLinenumber: 574
    functionLinenumberEnd: 583
    functionName: libworker_fg_done_cb
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - libworker_fillup_fg
    - comm_base_exit
    linkageType: ''
    returnType: void
    signature: "void libworker_fg_done_cb(void* arg, int rcode, sldns_buffer* buf,
      enum sec_status s,\n\tchar* why_bogus, int was_ratelimited)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/libunbound/libworker.c:593,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/libunbound/libworker.c:607,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/libunbound/libworker.c:608,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 4
    argNames:
    - w
    - q
    - qinfo
    - edns
    argTypes:
    - struct libworker*
    - struct ctx_query*
    - struct query_info*
    - struct edns_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 612
      start: 586
    functionDepth: 4
    functionLinenumber: 586
    functionLinenumberEnd: 612
    functionName: setup_qinfo_edns
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - sldns_str2wire_dname
    linkageType: ''
    returnType: int
    signature: "int setup_qinfo_edns(struct libworker* w, struct ctx_query* q, \n\tstruct
      query_info* qinfo, struct edns_data* edns)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: libworker_setup
      Src: /src/unbound/libunbound/libworker.c:616,1
    - Dst: setup_qinfo_edns
      Src: /src/unbound/libunbound/libworker.c:622,1
    - Dst: libworker_delete
      Src: /src/unbound/libunbound/libworker.c:623,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/libunbound/libworker.c:630,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/libunbound/libworker.c:631,1
    - Dst: local_zones_answer
      Src: /src/unbound/libunbound/libworker.c:632,1
    - Dst: regional_free_all
      Src: /src/unbound/libunbound/libworker.c:635,1
    - Dst: libworker_fillup_fg
      Src: /src/unbound/libunbound/libworker.c:636,1
    - Dst: libworker_delete
      Src: /src/unbound/libunbound/libworker.c:638,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:639,1
    - Dst: auth_zones_downstream_answer
      Src: /src/unbound/libunbound/libworker.c:642,1
    - Dst: regional_free_all
      Src: /src/unbound/libunbound/libworker.c:645,1
    - Dst: libworker_fillup_fg
      Src: /src/unbound/libunbound/libworker.c:646,1
    - Dst: libworker_delete
      Src: /src/unbound/libunbound/libworker.c:648,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:649,1
    - Dst: mesh_new_callback
      Src: /src/unbound/libunbound/libworker.c:653,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:656,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:659,1
    - Dst: comm_base_dispatch
      Src: /src/unbound/libunbound/libworker.c:662,1
    - Dst: libworker_delete
      Src: /src/unbound/libunbound/libworker.c:664,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 2
    argNames:
    - ctx
    - q
    argTypes:
    - struct ub_ctx*
    - struct ctx_query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 614
    functionDepth: 13
    functionLinenumber: 614
    functionLinenumberEnd: 666
    functionName: libworker_fg
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - auth_zones_downstream_answer
    - comm_base_dispatch
    - libworker_delete
    - setup_qinfo_edns
    - free
    - mesh_new_callback
    - libworker_fillup_fg
    - local_zones_answer
    - libworker_setup
    - regional_free_all
    - sldns_buffer_write_u16_at
    linkageType: ''
    returnType: int
    signature: int libworker_fg(struct ub_ctx* ctx, struct ctx_query* q)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libworker.c:679,1
    - Dst: rbtree_delete
      Src: /src/unbound/libunbound/libworker.c:680,1
    - Dst: context_query_delete
      Src: /src/unbound/libunbound/libworker.c:682,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libworker.c:683,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/libunbound/libworker.c:692,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/libunbound/libworker.c:693,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 6
    argNames:
    - arg
    - rcode
    - buf
    - s
    - why_bogus
    - was_ratelimited
    argTypes:
    - void*
    - int
    - sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 668
    functionDepth: 2
    functionLinenumber: 668
    functionLinenumberEnd: 695
    functionName: libworker_event_done_cb
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - rbtree_delete
    - lock_basic_unlock
    - sldns_buffer_limit
    - lock_basic_lock
    - sldns_buffer_begin
    - context_query_delete
    linkageType: ''
    returnType: void
    signature: "void libworker_event_done_cb(void* arg, int rcode, sldns_buffer* buf,\n\tenum
      sec_status s, char* why_bogus, int was_ratelimited)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: setup_qinfo_edns
      Src: /src/unbound/libunbound/libworker.c:706,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/libunbound/libworker.c:712,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/libunbound/libworker.c:713,1
    - Dst: local_zones_answer
      Src: /src/unbound/libunbound/libworker.c:714,1
    - Dst: regional_free_all
      Src: /src/unbound/libunbound/libworker.c:717,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:718,1
    - Dst: libworker_event_done_cb
      Src: /src/unbound/libunbound/libworker.c:719,1
    - Dst: auth_zones_downstream_answer
      Src: /src/unbound/libunbound/libworker.c:723,1
    - Dst: regional_free_all
      Src: /src/unbound/libunbound/libworker.c:726,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:727,1
    - Dst: libworker_event_done_cb
      Src: /src/unbound/libunbound/libworker.c:728,1
    - Dst: mesh_new_callback
      Src: /src/unbound/libunbound/libworker.c:735,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:738,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:741,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 3
    argNames:
    - ctx
    - q
    - async_id
    argTypes:
    - struct ub_ctx*
    - struct ctx_query*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 697
    functionDepth: 13
    functionLinenumber: 697
    functionLinenumberEnd: 743
    functionName: libworker_attach_mesh
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - libworker_event_done_cb
    - auth_zones_downstream_answer
    - setup_qinfo_edns
    - free
    - local_zones_answer
    - mesh_new_callback
    - regional_free_all
    - sldns_buffer_write_u16_at
    linkageType: ''
    returnType: int
    signature: "int libworker_attach_mesh(struct ub_ctx* ctx, struct ctx_query* q,\n\tint*
      async_id)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: context_query_delete
      Src: /src/unbound/libunbound/libworker.c:754,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libworker.c:759,1
    - Dst: strdup
      Src: /src/unbound/libunbound/libworker.c:761,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/libunbound/libworker.c:764,1
    - Dst: memdup
      Src: /src/unbound/libunbound/libworker.c:765,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/libunbound/libworker.c:765,1
    - Dst: context_serialize_answer
      Src: /src/unbound/libunbound/libworker.c:767,1
    - Dst: context_serialize_answer
      Src: /src/unbound/libunbound/libworker.c:769,1
    - Dst: context_serialize_answer
      Src: /src/unbound/libunbound/libworker.c:772,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libworker.c:774,1
    - Dst: strdup
      Src: /src/unbound/libunbound/libworker.c:777,1
    - Dst: context_serialize_answer
      Src: /src/unbound/libunbound/libworker.c:779,1
    - Dst: rbtree_delete
      Src: /src/unbound/libunbound/libworker.c:780,1
    - Dst: context_query_delete
      Src: /src/unbound/libunbound/libworker.c:782,1
    - Dst: log_err
      Src: /src/unbound/libunbound/libworker.c:786,1
    - Dst: tube_queue_item
      Src: /src/unbound/libunbound/libworker.c:789,1
    - Dst: log_err
      Src: /src/unbound/libunbound/libworker.c:790,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 6
    argNames:
    - w
    - q
    - pkt
    - err
    - reason
    - was_ratelimited
    argTypes:
    - struct libworker*
    - struct ctx_query*
    - sldns_buffer*
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 746
    functionDepth: 3
    functionLinenumber: 746
    functionLinenumberEnd: 793
    functionName: add_bg_result
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - log_err
    - tube_queue_item
    - rbtree_delete
    - lock_basic_unlock
    - lock_basic_lock
    - sldns_buffer_begin
    - context_serialize_answer
    - memdup
    - strdup
    - context_query_delete
    linkageType: ''
    returnType: void
    signature: "void add_bg_result(struct libworker* w, struct ctx_query* q, sldns_buffer*
      pkt, \n\tint err, char* reason, int was_ratelimited)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libworker.c:805,1
    - Dst: rbtree_delete
      Src: /src/unbound/libunbound/libworker.c:806,1
    - Dst: context_query_delete
      Src: /src/unbound/libunbound/libworker.c:808,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libworker.c:809,1
    - Dst: error_encode
      Src: /src/unbound/libunbound/libworker.c:819,1
    - Dst: add_bg_result
      Src: /src/unbound/libunbound/libworker.c:821,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 6
    argNames:
    - arg
    - rcode
    - buf
    - s
    - why_bogus
    - was_ratelimited
    argTypes:
    - void*
    - int
    - sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 822
      start: 795
    functionDepth: 4
    functionLinenumber: 795
    functionLinenumberEnd: 822
    functionName: libworker_bg_done_cb
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - rbtree_delete
    - add_bg_result
    - lock_basic_unlock
    - lock_basic_lock
    - error_encode
    - context_query_delete
    linkageType: ''
    returnType: void
    signature: "void libworker_bg_done_cb(void* arg, int rcode, sldns_buffer* buf,
      enum sec_status s,\n\tchar* why_bogus, int was_ratelimited)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libworker.c:834,1
    - Dst: context_lookup_new_query
      Src: /src/unbound/libunbound/libworker.c:835,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libworker.c:836,1
    - Dst: context_deserialize_new_query
      Src: /src/unbound/libunbound/libworker.c:838,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:840,1
    - Dst: log_err
      Src: /src/unbound/libunbound/libworker.c:842,1
    - Dst: setup_qinfo_edns
      Src: /src/unbound/libunbound/libworker.c:845,1
    - Dst: add_bg_result
      Src: /src/unbound/libunbound/libworker.c:846,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/libunbound/libworker.c:852,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/libunbound/libworker.c:853,1
    - Dst: local_zones_answer
      Src: /src/unbound/libunbound/libworker.c:854,1
    - Dst: regional_free_all
      Src: /src/unbound/libunbound/libworker.c:857,1
    - Dst: add_bg_result
      Src: /src/unbound/libunbound/libworker.c:859,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:860,1
    - Dst: auth_zones_downstream_answer
      Src: /src/unbound/libunbound/libworker.c:863,1
    - Dst: regional_free_all
      Src: /src/unbound/libunbound/libworker.c:866,1
    - Dst: add_bg_result
      Src: /src/unbound/libunbound/libworker.c:868,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:869,1
    - Dst: mesh_new_callback
      Src: /src/unbound/libunbound/libworker.c:874,1
    - Dst: add_bg_result
      Src: /src/unbound/libunbound/libworker.c:877,1
    - Dst: free
      Src: /src/unbound/libunbound/libworker.c:879,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 40
    argCount: 3
    argNames:
    - w
    - buf
    - len
    argTypes:
    - struct libworker*
    - uint8_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 880
      start: 826
    functionDepth: 13
    functionLinenumber: 826
    functionLinenumberEnd: 880
    functionName: handle_newq
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 1
    functionsReached:
    - log_err
    - auth_zones_downstream_answer
    - add_bg_result
    - context_lookup_new_query
    - lock_basic_unlock
    - setup_qinfo_edns
    - free
    - context_deserialize_new_query
    - lock_basic_lock
    - local_zones_answer
    - mesh_new_callback
    - regional_free_all
    - sldns_buffer_write_u16_at
    linkageType: ''
    returnType: void
    signature: void handle_newq(struct libworker* w, uint8_t* buf, uint32_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: slabhash_clear
      Src: /src/unbound/libunbound/libworker.c:885,1
    - Dst: slabhash_clear
      Src: /src/unbound/libunbound/libworker.c:886,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 882
    functionDepth: 1
    functionLinenumber: 882
    functionLinenumberEnd: 887
    functionName: libworker_alloc_cleanup
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - slabhash_clear
    linkageType: ''
    returnType: void
    signature: void libworker_alloc_cleanup(void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/libunbound/libworker.c:898,1
    - Dst: outnet_serviced_query
      Src: /src/unbound/libunbound/libworker.c:903,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 16
    argNames:
    - qinfo
    - flags
    - dnssec
    - want_dnssec
    - nocaps
    - check_ratelimit
    - addr
    - addrlen
    - zone
    - zonelen
    - tcp_upstream
    - ssl_upstream
    - tls_auth_name
    - q
    - was_ratelimited
    - ratelimit_incremented
    argTypes:
    - struct query_info*
    - uint16_t
    - int
    - int
    - int
    - int
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - int
    - int
    - char*
    - struct module_qstate*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 912
      start: 889
    functionDepth: 0
    functionLinenumber: 889
    functionLinenumberEnd: 912
    functionName: libworker_send_query
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - regional_alloc
    - outnet_serviced_query
    linkageType: ''
    returnType: struct outbound_entry
    signature: "struct outbound_entry * libworker_send_query(struct query_info* qinfo,\n\tuint16_t
      flags, int dnssec, int want_dnssec, int nocaps,\n\tint check_ratelimit,\n\tstruct
      sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone,\n\tsize_t zonelen,
      int tcp_upstream, int ssl_upstream, char* tls_auth_name,\n\tstruct module_qstate*
      q, int* was_ratelimited,\n\tint* ratelimit_incremented)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: mesh_report_reply
      Src: /src/unbound/libunbound/libworker.c:922,1
    - Dst: LDNS_QR_WIRE
      Src: /src/unbound/libunbound/libworker.c:926,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/libunbound/libworker.c:926,1
    - Dst: LDNS_OPCODE_WIRE
      Src: /src/unbound/libunbound/libworker.c:927,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/libunbound/libworker.c:927,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/libunbound/libworker.c:929,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/libunbound/libworker.c:929,1
    - Dst: mesh_report_reply
      Src: /src/unbound/libunbound/libworker.c:932,1
    - Dst: mesh_report_reply
      Src: /src/unbound/libunbound/libworker.c:936,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 4
    argNames:
    - c
    - arg
    - error
    - reply_info
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 914
    functionDepth: 2
    functionLinenumber: 914
    functionLinenumberEnd: 938
    functionName: libworker_handle_service_reply
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - LDNS_QDCOUNT
    - mesh_report_reply
    - sldns_buffer_begin
    - LDNS_QR_WIRE
    - LDNS_OPCODE_WIRE
    linkageType: ''
    returnType: int
    signature: "int libworker_handle_service_reply(struct comm_point* c, void* arg,
      int error,\n        struct comm_reply* reply_info)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:945,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ATTR_UNUSED(tube)
    - ATTR_UNUSED(buffer)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - struct tube*
    - uint8_t*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 946
      start: 941
    functionDepth: 1
    functionLinenumber: 941
    functionLinenumberEnd: 946
    functionName: worker_handle_control_cmd
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void worker_handle_control_cmd(struct tube* ATTR_UNUSED(tube), \n\tuint8_t*
      ATTR_UNUSED(buffer), size_t ATTR_UNUSED(len),\n\tint ATTR_UNUSED(error), void*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:952,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 948
    functionDepth: 1
    functionLinenumber: 948
    functionLinenumberEnd: 954
    functionName: worker_handle_request
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int worker_handle_request(struct comm_point* ATTR_UNUSED(c), \n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:960,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(reply_info)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 956
    functionDepth: 1
    functionLinenumber: 956
    functionLinenumberEnd: 962
    functionName: worker_handle_service_reply
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int worker_handle_service_reply(struct comm_point* ATTR_UNUSED(c),
      \n\tvoid* ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply*
      ATTR_UNUSED(reply_info))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:968,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 970
      start: 964
    functionDepth: 1
    functionLinenumber: 964
    functionLinenumberEnd: 970
    functionName: remote_accept_callback
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int remote_accept_callback(struct comm_point* ATTR_UNUSED(c), \n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:976,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 972
    functionDepth: 1
    functionLinenumber: 972
    functionLinenumberEnd: 978
    functionName: remote_control_callback
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 1
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int remote_control_callback(struct comm_point* ATTR_UNUSED(c), \n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:982,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 983
      start: 980
    functionDepth: 1
    functionLinenumber: 980
    functionLinenumberEnd: 983
    functionName: worker_sighandler
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 1
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_sighandler(int ATTR_UNUSED(sig), void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:995,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 16
    argNames:
    - ATTR_UNUSED(qinfo)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(addr)
    - ATTR_UNUSED
    - ATTR_UNUSED(zone)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(tls_auth_name)
    - ATTR_UNUSED(q)
    - ATTR_UNUSED(was_ratelimited)
    - ATTR_UNUSED(ratelimit_incremented)
    argTypes:
    - struct query_info*
    - uint16_t
    - int
    - int
    - int
    - int
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - int
    - int
    - char*
    - struct module_qstate*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 997
      start: 985
    functionDepth: 1
    functionLinenumber: 985
    functionLinenumberEnd: 997
    functionName: worker_send_query
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: struct outbound_entry
    signature: "struct outbound_entry * worker_send_query(struct query_info* ATTR_UNUSED(qinfo),\n\tuint16_t
      ATTR_UNUSED(flags), int ATTR_UNUSED(dnssec),\n\tint ATTR_UNUSED(want_dnssec),
      int ATTR_UNUSED(nocaps),\n\tint ATTR_UNUSED(check_ratelimit),\n\tstruct sockaddr_storage*
      ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen),\n\tuint8_t* ATTR_UNUSED(zone),
      size_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream),\n\tint ATTR_UNUSED(ssl_upstream),
      char* ATTR_UNUSED(tls_auth_name),\n\tstruct module_qstate* ATTR_UNUSED(q), int*
      ATTR_UNUSED(was_ratelimited),\n\tint* ATTR_UNUSED(ratelimit_incremented))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:1002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 999
    functionDepth: 1
    functionLinenumber: 999
    functionLinenumberEnd: 1003
    functionName: worker_alloc_cleanup
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_alloc_cleanup(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:1007,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 1005
    functionDepth: 1
    functionLinenumber: 1005
    functionLinenumberEnd: 1008
    functionName: worker_stat_timer_cb
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_stat_timer_cb(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:1012,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1013
      start: 1010
    functionDepth: 1
    functionLinenumber: 1010
    functionLinenumberEnd: 1013
    functionName: worker_probe_timer_cb
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_probe_timer_cb(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:1017,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1015
    functionDepth: 1
    functionLinenumber: 1015
    functionLinenumberEnd: 1018
    functionName: worker_start_accept
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_start_accept(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:1022,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1023
      start: 1020
    functionDepth: 1
    functionLinenumber: 1020
    functionLinenumberEnd: 1023
    functionName: worker_stop_accept
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_stop_accept(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:1027,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED(e1)
    - ATTR_UNUSED(e2)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 1025
    functionDepth: 1
    functionLinenumber: 1025
    functionLinenumberEnd: 1029
    functionName: order_lock_cmp
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int order_lock_cmp(const void* ATTR_UNUSED(e1), const void* ATTR_UNUSED(e2))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:1034,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED(a)
    - ATTR_UNUSED(b)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 1031
    functionDepth: 1
    functionLinenumber: 1031
    functionLinenumberEnd: 1036
    functionName: codeline_cmp
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int codeline_cmp(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:1040,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED(a)
    - ATTR_UNUSED(b)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1038
    functionDepth: 1
    functionLinenumber: 1038
    functionLinenumberEnd: 1042
    functionName: replay_var_compare
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int replay_var_compare(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:1046,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED(str)
    - ATTR_UNUSED(arg)
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1044
    functionDepth: 1
    functionLinenumber: 1044
    functionLinenumberEnd: 1047
    functionName: remote_get_opt_ssl
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void remote_get_opt_ssl(char* ATTR_UNUSED(str), void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:1053,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1050
    functionDepth: 1
    functionLinenumber: 1050
    functionLinenumberEnd: 1054
    functionName: worker_win_stop_cb
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void worker_win_stop_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),
      void* \n        ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:1059,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1056
    functionDepth: 1
    functionLinenumber: 1056
    functionLinenumberEnd: 1060
    functionName: wsvc_cron_cb
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void wsvc_cron_cb(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:1067,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1064
    functionDepth: 1
    functionLinenumber: 1064
    functionLinenumberEnd: 1068
    functionName: dtio_tap_callback
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void dtio_tap_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:1075,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1076
      start: 1072
    functionDepth: 1
    functionLinenumber: 1072
    functionLinenumberEnd: 1076
    functionName: dtio_mainfdcallback
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void dtio_mainfdcallback(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:1082,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1079
    functionDepth: 1
    functionLinenumber: 1079
    functionLinenumberEnd: 1083
    functionName: fast_reload_service_cb
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void fast_reload_service_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:1089,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1091
      start: 1085
    functionDepth: 1
    functionLinenumber: 1085
    functionLinenumberEnd: 1091
    functionName: fast_reload_client_callback
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int fast_reload_client_callback(struct comm_point* ATTR_UNUSED(c),\n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:1097,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1094
    functionDepth: 1
    functionLinenumber: 1094
    functionLinenumberEnd: 1098
    functionName: doq_client_event_cb
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void doq_client_event_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/libworker.c:1105,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1106
      start: 1102
    functionDepth: 1
    functionLinenumber: 1102
    functionLinenumberEnd: 1106
    functionName: doq_client_timer_cb
    functionSourceFile: /src/unbound/libunbound/libworker.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void doq_client_timer_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: log_file
      Src: /src/unbound/libunbound/context.c:66,1
    - Dst: log_file
      Src: /src/unbound/libunbound/context.c:71,1
    - Dst: log_init
      Src: /src/unbound/libunbound/context.c:73,1
    - Dst: getpid
      Src: /src/unbound/libunbound/context.c:75,1
    - Dst: cfg_apply_local_port_policy
      Src: /src/unbound/libunbound/context.c:76,1
    - Dst: config_apply
      Src: /src/unbound/libunbound/context.c:77,1
    - Dst: modstack_call_startup
      Src: /src/unbound/libunbound/context.c:78,1
    - Dst: modstack_call_init
      Src: /src/unbound/libunbound/context.c:80,1
    - Dst: listen_setup_locks
      Src: /src/unbound/libunbound/context.c:82,1
    - Dst: log_edns_known_options
      Src: /src/unbound/libunbound/context.c:83,1
    - Dst: local_zones_create
      Src: /src/unbound/libunbound/context.c:84,1
    - Dst: local_zones_apply_cfg
      Src: /src/unbound/libunbound/context.c:87,1
    - Dst: auth_zones_apply_cfg
      Src: /src/unbound/libunbound/context.c:89,1
    - Dst: forwards_create
      Src: /src/unbound/libunbound/context.c:92,1
    - Dst: forwards_apply_cfg
      Src: /src/unbound/libunbound/context.c:93,1
    - Dst: hints_create
      Src: /src/unbound/libunbound/context.c:95,1
    - Dst: hints_apply_cfg
      Src: /src/unbound/libunbound/context.c:96,1
    - Dst: edns_strings_apply_cfg
      Src: /src/unbound/libunbound/context.c:98,1
    - Dst: slabhash_is_size
      Src: /src/unbound/libunbound/context.c:100,1
    - Dst: slabhash_delete
      Src: /src/unbound/libunbound/context.c:102,1
    - Dst: slabhash_create
      Src: /src/unbound/libunbound/context.c:103,1
    - Dst: rrset_cache_adjust
      Src: /src/unbound/libunbound/context.c:110,1
    - Dst: infra_adjust
      Src: /src/unbound/libunbound/context.c:114,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 48
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ub_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 59
    functionDepth: 12
    functionLinenumber: 59
    functionLinenumberEnd: 119
    functionName: context_finalize
    functionSourceFile: /src/unbound/libunbound/context.c
    functionUses: 0
    functionsReached:
    - log_init
    - local_zones_create
    - auth_zones_apply_cfg
    - forwards_apply_cfg
    - getpid
    - cfg_apply_local_port_policy
    - log_edns_known_options
    - rrset_cache_adjust
    - local_zones_apply_cfg
    - config_apply
    - slabhash_create
    - hints_create
    - edns_strings_apply_cfg
    - listen_setup_locks
    - modstack_call_startup
    - hints_apply_cfg
    - modstack_call_init
    - slabhash_delete
    - infra_adjust
    - forwards_create
    - log_file
    - slabhash_is_size
    linkageType: ''
    returnType: int
    signature: int context_finalize(struct ub_ctx* ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 128
    functionName: context_query_cmp
    functionSourceFile: /src/unbound/libunbound/context.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int context_query_cmp(const void* a, const void* b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_resolve_free
      Src: /src/unbound/libunbound/context.c:134,1
    - Dst: free
      Src: /src/unbound/libunbound/context.c:135,1
    - Dst: free
      Src: /src/unbound/libunbound/context.c:136,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - q
    argTypes:
    - struct ctx_query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 137
    functionName: context_query_delete
    functionSourceFile: /src/unbound/libunbound/context.c
    functionUses: 3
    functionsReached:
    - free
    - ub_resolve_free
    linkageType: ''
    returnType: void
    signature: void context_query_delete(struct ctx_query* q)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_search
      Src: /src/unbound/libunbound/context.c:147,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - ctx
    - id
    argTypes:
    - struct ub_ctx*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 154
    functionName: find_id
    functionSourceFile: /src/unbound/libunbound/context.c
    functionUses: 0
    functionsReached:
    - rbtree_search
    linkageType: ''
    returnType: int
    signature: int find_id(struct ub_ctx* ctx, int* id)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/libunbound/context.c:160,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/context.c:162,1
    - Dst: find_id
      Src: /src/unbound/libunbound/context.c:163,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/context.c:164,1
    - Dst: free
      Src: /src/unbound/libunbound/context.c:165,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/context.c:168,1
    - Dst: calloc
      Src: /src/unbound/libunbound/context.c:174,1
    - Dst: free
      Src: /src/unbound/libunbound/context.c:176,1
    - Dst: strdup
      Src: /src/unbound/libunbound/context.c:179,1
    - Dst: free
      Src: /src/unbound/libunbound/context.c:181,1
    - Dst: free
      Src: /src/unbound/libunbound/context.c:182,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/context.c:189,1
    - Dst: rbtree_insert
      Src: /src/unbound/libunbound/context.c:192,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/context.c:193,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 34
    argCount: 7
    argNames:
    - ctx
    - name
    - rrtype
    - rrclass
    - cb
    - cb_event
    - cbarg
    argTypes:
    - struct ub_ctx*
    - char*
    - int
    - int
    - ub_callback_type
    - ub_event_callback_type
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 156
    functionDepth: 2
    functionLinenumber: 156
    functionLinenumberEnd: 195
    functionName: context_new
    functionSourceFile: /src/unbound/libunbound/context.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - free
    - rbtree_insert
    - calloc
    - lock_basic_lock
    - find_id
    - strdup
    linkageType: ''
    returnType: struct ctx_query
    signature: "struct ctx_query * \ncontext_new(struct ub_ctx* ctx, const char* name,
      int rrtype, int rrclass, \n\tub_callback_type cb, ub_event_callback_type cb_event,
      void* cbarg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/context.c:203,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/context.c:210,1
    - Dst: calloc
      Src: /src/unbound/libunbound/context.c:216,1
    - Dst: alloc_init
      Src: /src/unbound/libunbound/context.c:219,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - ctx
    - locking
    argTypes:
    - struct ub_ctx*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 197
    functionDepth: 1
    functionLinenumber: 197
    functionLinenumberEnd: 221
    functionName: context_obtain_alloc
    functionSourceFile: /src/unbound/libunbound/context.c
    functionUses: 1
    functionsReached:
    - lock_basic_unlock
    - alloc_init
    - calloc
    - lock_basic_lock
    linkageType: ''
    returnType: struct alloc_cache
    signature: "struct alloc_cache * \ncontext_obtain_alloc(struct ub_ctx* ctx, int
      locking)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/context.c:230,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/context.c:235,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - alloc
    - locking
    argTypes:
    - struct ub_ctx*
    - struct alloc_cache*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 237
    functionName: context_release_alloc
    functionSourceFile: /src/unbound/libunbound/context.c
    functionUses: 1
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: "void context_release_alloc(struct ub_ctx* ctx, struct alloc_cache*
      alloc,\n\tint locking)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/libunbound/context.c:250,1
    - Dst: malloc
      Src: /src/unbound/libunbound/context.c:252,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/libunbound/context.c:254,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/libunbound/context.c:255,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/libunbound/context.c:256,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/libunbound/context.c:257,1
    - Dst: memmove
      Src: /src/unbound/libunbound/context.c:258,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - q
    - len
    argTypes:
    - struct ctx_query*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 260
    functionName: context_serialize_new_query
    functionSourceFile: /src/unbound/libunbound/context.c
    functionUses: 0
    functionsReached:
    - malloc
    - sldns_write_uint32
    - strlen
    - memmove
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t * \ncontext_serialize_new_query(struct ctx_query* q, uint32_t*
      len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/libunbound/context.c:265,1
    - Dst: free
      Src: /src/unbound/libunbound/context.c:268,1
    - Dst: log_assert
      Src: /src/unbound/libunbound/context.c:271,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/libunbound/context.c:271,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/libunbound/context.c:272,1
    - Dst: calloc
      Src: /src/unbound/libunbound/context.c:275,1
    - Dst: free
      Src: /src/unbound/libunbound/context.c:277,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/libunbound/context.c:280,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/libunbound/context.c:281,1
    - Dst: strdup
      Src: /src/unbound/libunbound/context.c:282,1
    - Dst: free
      Src: /src/unbound/libunbound/context.c:284,1
    - Dst: free
      Src: /src/unbound/libunbound/context.c:285,1
    - Dst: rbtree_insert
      Src: /src/unbound/libunbound/context.c:291,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 3
    argNames:
    - ctx
    - p
    - len
    argTypes:
    - struct ub_ctx*
    - uint8_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 262
    functionDepth: 1
    functionLinenumber: 262
    functionLinenumberEnd: 293
    functionName: context_deserialize_new_query
    functionSourceFile: /src/unbound/libunbound/context.c
    functionUses: 1
    functionsReached:
    - free
    - calloc
    - log_assert
    - rbtree_insert
    - sldns_read_uint32
    - strdup
    linkageType: ''
    returnType: struct ctx_query
    signature: "struct ctx_query * \ncontext_deserialize_new_query(struct ub_ctx*
      ctx, uint8_t* p, uint32_t len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/context.c:303,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/libunbound/context.c:303,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/libunbound/context.c:304,1
    - Dst: rbtree_search
      Src: /src/unbound/libunbound/context.c:305,1
    - Dst: log_assert
      Src: /src/unbound/libunbound/context.c:309,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - p
    - len
    argTypes:
    - struct ub_ctx*
    - uint8_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 311
    functionName: context_lookup_new_query
    functionSourceFile: /src/unbound/libunbound/context.c
    functionUses: 1
    functionsReached:
    - sldns_read_uint32
    - log_assert
    - rbtree_search
    linkageType: ''
    returnType: struct ctx_query
    signature: "struct ctx_query * \ncontext_lookup_new_query(struct ub_ctx* ctx,
      uint8_t* p, uint32_t len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/libunbound/context.c:329,1
    - Dst: strlen
      Src: /src/unbound/libunbound/context.c:330,1
    - Dst: malloc
      Src: /src/unbound/libunbound/context.c:333,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/libunbound/context.c:335,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/libunbound/context.c:336,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/libunbound/context.c:337,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/libunbound/context.c:338,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/libunbound/context.c:339,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/libunbound/context.c:340,1
    - Dst: memmove
      Src: /src/unbound/libunbound/context.c:342,1
    - Dst: memmove
      Src: /src/unbound/libunbound/context.c:344,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/libunbound/context.c:345,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - q
    - err
    - pkt
    - len
    argTypes:
    - struct ctx_query*
    - int
    - sldns_buffer*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 313
    functionDepth: 3
    functionLinenumber: 313
    functionLinenumberEnd: 347
    functionName: context_serialize_answer
    functionSourceFile: /src/unbound/libunbound/context.c
    functionUses: 1
    functionsReached:
    - sldns_buffer_remaining
    - memmove
    - malloc
    - strlen
    - sldns_buffer_begin
    - sldns_write_uint32
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t * \ncontext_serialize_answer(struct ctx_query* q, int err,
      sldns_buffer* pkt,\n\tuint32_t* len)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/context.c:358,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/libunbound/context.c:358,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/libunbound/context.c:359,1
    - Dst: rbtree_search
      Src: /src/unbound/libunbound/context.c:360,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/libunbound/context.c:362,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/libunbound/context.c:363,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/libunbound/context.c:364,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/libunbound/context.c:365,1
    - Dst: memdup
      Src: /src/unbound/libunbound/context.c:368,1
    - Dst: memdup
      Src: /src/unbound/libunbound/context.c:380,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 32
    argCount: 4
    argNames:
    - ctx
    - p
    - len
    - err
    argTypes:
    - struct ub_ctx*
    - uint8_t*
    - uint32_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 349
    functionDepth: 1
    functionLinenumber: 349
    functionLinenumberEnd: 390
    functionName: context_deserialize_answer
    functionSourceFile: /src/unbound/libunbound/context.c
    functionUses: 0
    functionsReached:
    - memdup
    - sldns_read_uint32
    - log_assert
    - rbtree_search
    linkageType: ''
    returnType: struct ctx_query
    signature: "struct ctx_query * \ncontext_deserialize_answer(struct ub_ctx* ctx,\n
      \       uint8_t* p, uint32_t len, int* err)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reallocarray
      Src: /src/unbound/libunbound/context.c:398,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/libunbound/context.c:401,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/libunbound/context.c:402,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - q
    - len
    argTypes:
    - struct ctx_query*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 392
    functionDepth: 2
    functionLinenumber: 392
    functionLinenumberEnd: 404
    functionName: context_serialize_cancel
    functionSourceFile: /src/unbound/libunbound/context.c
    functionUses: 0
    functionsReached:
    - sldns_write_uint32
    - reallocarray
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t * \ncontext_serialize_cancel(struct ctx_query* q, uint32_t*
      len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/libunbound/context.c:412,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/libunbound/context.c:412,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/libunbound/context.c:413,1
    - Dst: rbtree_search
      Src: /src/unbound/libunbound/context.c:414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - p
    - len
    argTypes:
    - struct ub_ctx*
    - uint8_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 416
    functionName: context_deserialize_cancel
    functionSourceFile: /src/unbound/libunbound/context.c
    functionUses: 1
    functionsReached:
    - sldns_read_uint32
    - log_assert
    - rbtree_search
    linkageType: ''
    returnType: struct ctx_query
    signature: "struct ctx_query * context_deserialize_cancel(struct ub_ctx* ctx,\n
      \       uint8_t* p, uint32_t len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/libunbound/context.c:421,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/libunbound/context.c:425,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - len
    argTypes:
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 418
    functionDepth: 1
    functionLinenumber: 418
    functionLinenumberEnd: 427
    functionName: context_serialize_quit
    functionSourceFile: /src/unbound/libunbound/context.c
    functionUses: 0
    functionsReached:
    - malloc
    - sldns_write_uint32
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t * \ncontext_serialize_quit(uint32_t* len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint32
      Src: /src/unbound/libunbound/context.c:434,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - p
    - len
    argTypes:
    - uint8_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 429
    functionDepth: 1
    functionLinenumber: 429
    functionLinenumberEnd: 436
    functionName: context_serial_getcmd
    functionSourceFile: /src/unbound/libunbound/context.c
    functionUses: 1
    functionsReached:
    - sldns_read_uint32
    linkageType: ''
    returnType: enum ub_ctx_cmd
    signature: enum ub_ctx_cmd context_serial_getcmd(uint8_t* p, uint32_t len)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: checklock_start
      Src: /src/unbound/libunbound/libunbound.c:98,1
    - Dst: log_init
      Src: /src/unbound/libunbound/libunbound.c:100,1
    - Dst: log_ident_set
      Src: /src/unbound/libunbound/libunbound.c:101,1
    - Dst: WSAStartup
      Src: /src/unbound/libunbound/libunbound.c:103,1
    - Dst: MAKEWORD
      Src: /src/unbound/libunbound/libunbound.c:103,1
    - Dst: log_err
      Src: /src/unbound/libunbound/libunbound.c:104,1
    - Dst: wsa_strerror
      Src: /src/unbound/libunbound/libunbound.c:105,1
    - Dst: checklock_start
      Src: /src/unbound/libunbound/libunbound.c:110,1
    - Dst: calloc
      Src: /src/unbound/libunbound/libunbound.c:111,1
    - Dst: alloc_init
      Src: /src/unbound/libunbound/libunbound.c:116,1
    - Dst: ub_initstate
      Src: /src/unbound/libunbound/libunbound.c:117,1
    - Dst: ub_randfree
      Src: /src/unbound/libunbound/libunbound.c:118,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:119,1
    - Dst: lock_basic_init
      Src: /src/unbound/libunbound/libunbound.c:123,1
    - Dst: lock_basic_init
      Src: /src/unbound/libunbound/libunbound.c:124,1
    - Dst: lock_basic_init
      Src: /src/unbound/libunbound/libunbound.c:125,1
    - Dst: calloc
      Src: /src/unbound/libunbound/libunbound.c:126,1
    - Dst: ub_randfree
      Src: /src/unbound/libunbound/libunbound.c:128,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:129,1
    - Dst: config_create_forlib
      Src: /src/unbound/libunbound/libunbound.c:133,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:135,1
    - Dst: ub_randfree
      Src: /src/unbound/libunbound/libunbound.c:136,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:137,1
    - Dst: edns_known_options_init
      Src: /src/unbound/libunbound/libunbound.c:142,1
    - Dst: config_delete
      Src: /src/unbound/libunbound/libunbound.c:143,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:144,1
    - Dst: ub_randfree
      Src: /src/unbound/libunbound/libunbound.c:145,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:146,1
    - Dst: auth_zones_create
      Src: /src/unbound/libunbound/libunbound.c:150,1
    - Dst: edns_known_options_delete
      Src: /src/unbound/libunbound/libunbound.c:152,1
    - Dst: config_delete
      Src: /src/unbound/libunbound/libunbound.c:153,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:154,1
    - Dst: ub_randfree
      Src: /src/unbound/libunbound/libunbound.c:155,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:156,1
    - Dst: edns_strings_create
      Src: /src/unbound/libunbound/libunbound.c:160,1
    - Dst: auth_zones_delete
      Src: /src/unbound/libunbound/libunbound.c:162,1
    - Dst: edns_known_options_delete
      Src: /src/unbound/libunbound/libunbound.c:163,1
    - Dst: config_delete
      Src: /src/unbound/libunbound/libunbound.c:164,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:165,1
    - Dst: ub_randfree
      Src: /src/unbound/libunbound/libunbound.c:166,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:167,1
    - Dst: modstack_init
      Src: /src/unbound/libunbound/libunbound.c:175,1
    - Dst: rbtree_init
      Src: /src/unbound/libunbound/libunbound.c:177,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 77
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 90
    functionDepth: 2
    functionLinenumber: 90
    functionLinenumberEnd: 179
    functionName: ub_ctx_create_nopipe
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - ub_initstate
    - log_init
    - auth_zones_create
    - modstack_init
    - log_err
    - lock_basic_init
    - calloc
    - log_ident_set
    - wsa_strerror
    - ub_randfree
    - alloc_init
    - edns_known_options_delete
    - free
    - MAKEWORD
    - config_delete
    - edns_strings_create
    - rbtree_init
    - edns_known_options_init
    - WSAStartup
    - checklock_start
    - auth_zones_delete
    - config_create_forlib
    linkageType: ''
    returnType: struct ub_ctx
    signature: struct ub_ctx * ub_ctx_create_nopipe(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ub_ctx_create_nopipe
      Src: /src/unbound/libunbound/libunbound.c:184,1
    - Dst: tube_create
      Src: /src/unbound/libunbound/libunbound.c:187,1
    - Dst: ub_randfree
      Src: /src/unbound/libunbound/libunbound.c:189,1
    - Dst: config_delete
      Src: /src/unbound/libunbound/libunbound.c:190,1
    - Dst: modstack_call_deinit
      Src: /src/unbound/libunbound/libunbound.c:191,1
    - Dst: modstack_call_destartup
      Src: /src/unbound/libunbound/libunbound.c:192,1
    - Dst: modstack_free
      Src: /src/unbound/libunbound/libunbound.c:193,1
    - Dst: listen_desetup_locks
      Src: /src/unbound/libunbound/libunbound.c:194,1
    - Dst: edns_known_options_delete
      Src: /src/unbound/libunbound/libunbound.c:195,1
    - Dst: edns_strings_delete
      Src: /src/unbound/libunbound/libunbound.c:196,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:197,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:198,1
    - Dst: tube_create
      Src: /src/unbound/libunbound/libunbound.c:202,1
    - Dst: tube_delete
      Src: /src/unbound/libunbound/libunbound.c:204,1
    - Dst: ub_randfree
      Src: /src/unbound/libunbound/libunbound.c:205,1
    - Dst: config_delete
      Src: /src/unbound/libunbound/libunbound.c:206,1
    - Dst: modstack_call_deinit
      Src: /src/unbound/libunbound/libunbound.c:207,1
    - Dst: modstack_call_destartup
      Src: /src/unbound/libunbound/libunbound.c:208,1
    - Dst: modstack_free
      Src: /src/unbound/libunbound/libunbound.c:209,1
    - Dst: listen_desetup_locks
      Src: /src/unbound/libunbound/libunbound.c:210,1
    - Dst: edns_known_options_delete
      Src: /src/unbound/libunbound/libunbound.c:211,1
    - Dst: edns_strings_delete
      Src: /src/unbound/libunbound/libunbound.c:212,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:213,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:214,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 33
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 181
    functionDepth: 3
    functionLinenumber: 181
    functionLinenumberEnd: 219
    functionName: ub_ctx_create
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - modstack_free
    - modstack_call_destartup
    - ub_randfree
    - listen_desetup_locks
    - config_delete
    - edns_known_options_delete
    - edns_strings_delete
    - tube_delete
    - free
    - modstack_call_deinit
    - ub_ctx_create_nopipe
    - tube_create
    linkageType: ''
    returnType: struct ub_ctx
    signature: "struct ub_ctx * \nub_ctx_create(void)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_ctx_create_nopipe
      Src: /src/unbound/libunbound/libunbound.c:224,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ueb
    argTypes:
    - struct ub_event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 221
    functionDepth: 3
    functionLinenumber: 221
    functionLinenumberEnd: 233
    functionName: ub_ctx_create_ub_event
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - ub_ctx_create_nopipe
    linkageType: ''
    returnType: struct ub_ctx
    signature: "struct ub_ctx * \nub_ctx_create_ub_event(struct ub_event_base* ueb)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ub_ctx_create_nopipe
      Src: /src/unbound/libunbound/libunbound.c:238,1
    - Dst: ub_libevent_event_base
      Src: /src/unbound/libunbound/libunbound.c:245,1
    - Dst: ub_ctx_delete
      Src: /src/unbound/libunbound/libunbound.c:247,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - eb
    argTypes:
    - struct event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 235
    functionDepth: 3
    functionLinenumber: 235
    functionLinenumberEnd: 252
    functionName: ub_ctx_create_event
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - ub_ctx_create_nopipe
    - ub_libevent_event_base
    - ub_ctx_delete
    linkageType: ''
    returnType: struct ub_ctx
    signature: "struct ub_ctx * \nub_ctx_create_event(struct event_base* eb)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: context_query_delete
      Src: /src/unbound/libunbound/libunbound.c:259,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - n
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 255
    functionDepth: 2
    functionLinenumber: 255
    functionLinenumberEnd: 260
    functionName: delq
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - context_query_delete
    linkageType: ''
    returnType: void
    signature: void delq(rbnode_type* n, void* ATTR_UNUSED(arg))
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:266,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:271,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:272,1
    - Dst: tube_write_msg
      Src: /src/unbound/libunbound/libunbound.c:273,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:275,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:276,1
    - Dst: tube_read_msg
      Src: /src/unbound/libunbound/libunbound.c:277,1
    - Dst: context_serial_getcmd
      Src: /src/unbound/libunbound/libunbound.c:279,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:280,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:283,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:285,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:289,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:291,1
    - Dst: ub_thread_join
      Src: /src/unbound/libunbound/libunbound.c:292,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:294,1
    - Dst: waitpid
      Src: /src/unbound/libunbound/libunbound.c:296,1
    - Dst: log_err
      Src: /src/unbound/libunbound/libunbound.c:298,1
    - Dst: strerror
      Src: /src/unbound/libunbound/libunbound.c:298,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:304,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ub_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 306
      start: 263
    functionDepth: 2
    functionLinenumber: 263
    functionLinenumberEnd: 306
    functionName: ub_stop_bg
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - log_err
    - lock_basic_unlock
    - waitpid
    - free
    - tube_read_msg
    - lock_basic_lock
    - strerror
    - ub_thread_join
    - context_serial_getcmd
    - tube_write_msg
    linkageType: ''
    returnType: void
    signature: void ub_stop_bg(struct ub_ctx* ctx)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: getpid
      Src: /src/unbound/libunbound/libunbound.c:319,1
    - Dst: pthread_kill
      Src: /src/unbound/libunbound/libunbound.c:340,1
    - Dst: ub_stop_bg
      Src: /src/unbound/libunbound/libunbound.c:347,1
    - Dst: getpid
      Src: /src/unbound/libunbound/libunbound.c:348,1
    - Dst: comm_base_internal
      Src: /src/unbound/libunbound/libunbound.c:352,1
    - Dst: libworker_delete_event
      Src: /src/unbound/libunbound/libunbound.c:354,1
    - Dst: ub_event_base_free
      Src: /src/unbound/libunbound/libunbound.c:357,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:362,1
    - Dst: libworker_delete_event
      Src: /src/unbound/libunbound/libunbound.c:365,1
    - Dst: modstack_call_deinit
      Src: /src/unbound/libunbound/libunbound.c:367,1
    - Dst: modstack_call_destartup
      Src: /src/unbound/libunbound/libunbound.c:368,1
    - Dst: modstack_free
      Src: /src/unbound/libunbound/libunbound.c:369,1
    - Dst: alloc_clear
      Src: /src/unbound/libunbound/libunbound.c:374,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:375,1
    - Dst: local_zones_delete
      Src: /src/unbound/libunbound/libunbound.c:378,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/libunbound/libunbound.c:379,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/libunbound/libunbound.c:380,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/libunbound/libunbound.c:381,1
    - Dst: tube_delete
      Src: /src/unbound/libunbound/libunbound.c:382,1
    - Dst: tube_delete
      Src: /src/unbound/libunbound/libunbound.c:383,1
    - Dst: slabhash_delete
      Src: /src/unbound/libunbound/libunbound.c:385,1
    - Dst: rrset_cache_delete
      Src: /src/unbound/libunbound/libunbound.c:386,1
    - Dst: infra_delete
      Src: /src/unbound/libunbound/libunbound.c:387,1
    - Dst: config_delete
      Src: /src/unbound/libunbound/libunbound.c:388,1
    - Dst: edns_known_options_delete
      Src: /src/unbound/libunbound/libunbound.c:389,1
    - Dst: edns_strings_delete
      Src: /src/unbound/libunbound/libunbound.c:390,1
    - Dst: forwards_delete
      Src: /src/unbound/libunbound/libunbound.c:391,1
    - Dst: hints_delete
      Src: /src/unbound/libunbound/libunbound.c:392,1
    - Dst: auth_zones_delete
      Src: /src/unbound/libunbound/libunbound.c:393,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:394,1
    - Dst: ub_randfree
      Src: /src/unbound/libunbound/libunbound.c:396,1
    - Dst: alloc_clear
      Src: /src/unbound/libunbound/libunbound.c:397,1
    - Dst: listen_desetup_locks
      Src: /src/unbound/libunbound/libunbound.c:398,1
    - Dst: traverse_postorder
      Src: /src/unbound/libunbound/libunbound.c:399,1
    - Dst: log_file
      Src: /src/unbound/libunbound/libunbound.c:401,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:405,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:406,1
    - Dst: WSACleanup
      Src: /src/unbound/libunbound/libunbound.c:408,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 69
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ub_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 308
    functionDepth: 5
    functionLinenumber: 308
    functionLinenumberEnd: 410
    functionName: ub_ctx_delete
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 1
    functionsReached:
    - modstack_call_destartup
    - WSACleanup
    - tube_delete
    - getpid
    - traverse_postorder
    - rrset_cache_delete
    - libworker_delete_event
    - ub_stop_bg
    - comm_base_internal
    - infra_delete
    - modstack_free
    - ub_randfree
    - edns_known_options_delete
    - edns_strings_delete
    - free
    - forwards_delete
    - config_delete
    - lock_basic_destroy
    - slabhash_delete
    - hints_delete
    - listen_desetup_locks
    - alloc_clear
    - log_file
    - local_zones_delete
    - ub_event_base_free
    - pthread_kill
    - modstack_call_deinit
    - auth_zones_delete
    linkageType: ''
    returnType: void
    signature: void ub_ctx_delete(struct ub_ctx* ctx)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:415,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:417,1
    - Dst: config_set_option
      Src: /src/unbound/libunbound/libunbound.c:420,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:421,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:424,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - ctx
    - opt
    - val
    argTypes:
    - struct ub_ctx*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 426
    functionName: ub_ctx_set_option
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - config_set_option
    - lock_basic_lock
    linkageType: ''
    returnType: int
    signature: int ub_ctx_set_option(struct ub_ctx* ctx, const char* opt, const char*
      val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:432,1
    - Dst: config_get_option_collate
      Src: /src/unbound/libunbound/libunbound.c:433,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:434,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - ctx
    - opt
    - str
    argTypes:
    - struct ub_ctx*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 439
      start: 428
    functionDepth: 1
    functionLinenumber: 428
    functionLinenumberEnd: 439
    functionName: ub_ctx_get_option
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    - config_get_option_collate
    linkageType: ''
    returnType: int
    signature: int ub_ctx_get_option(struct ub_ctx* ctx, const char* opt, char** str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:444,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:446,1
    - Dst: config_read
      Src: /src/unbound/libunbound/libunbound.c:449,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:450,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:453,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - ctx
    - fname
    argTypes:
    - struct ub_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 441
    functionDepth: 1
    functionLinenumber: 441
    functionLinenumberEnd: 455
    functionName: ub_ctx_config
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - config_read
    - lock_basic_lock
    linkageType: ''
    returnType: int
    signature: int ub_ctx_config(struct ub_ctx* ctx, const char* fname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/unbound/libunbound/libunbound.c:460,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:462,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:464,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:465,1
    - Dst: cfg_strlist_insert
      Src: /src/unbound/libunbound/libunbound.c:468,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:469,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:472,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - ta
    argTypes:
    - struct ub_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 474
    functionName: ub_ctx_add_ta
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - cfg_strlist_insert
    - free
    - lock_basic_lock
    - strdup
    linkageType: ''
    returnType: int
    signature: int ub_ctx_add_ta(struct ub_ctx* ctx, const char* ta)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/unbound/libunbound/libunbound.c:479,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:481,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:483,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:484,1
    - Dst: cfg_strlist_insert
      Src: /src/unbound/libunbound/libunbound.c:487,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:488,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:491,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - fname
    argTypes:
    - struct ub_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 476
    functionDepth: 1
    functionLinenumber: 476
    functionLinenumberEnd: 493
    functionName: ub_ctx_add_ta_file
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - cfg_strlist_insert
    - free
    - lock_basic_lock
    - strdup
    linkageType: ''
    returnType: int
    signature: int ub_ctx_add_ta_file(struct ub_ctx* ctx, const char* fname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/unbound/libunbound/libunbound.c:497,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:499,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:501,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:502,1
    - Dst: cfg_strlist_insert
      Src: /src/unbound/libunbound/libunbound.c:505,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:507,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:510,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - fname
    argTypes:
    - struct ub_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 495
    functionDepth: 1
    functionLinenumber: 495
    functionLinenumberEnd: 512
    functionName: ub_ctx_add_ta_autr
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - cfg_strlist_insert
    - free
    - lock_basic_lock
    - strdup
    linkageType: ''
    returnType: int
    signature: int ub_ctx_add_ta_autr(struct ub_ctx* ctx, const char* fname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/unbound/libunbound/libunbound.c:517,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:519,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:521,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:522,1
    - Dst: cfg_strlist_insert
      Src: /src/unbound/libunbound/libunbound.c:525,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:526,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:529,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - ctx
    - fname
    argTypes:
    - struct ub_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 531
    functionName: ub_ctx_trustedkeys
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - cfg_strlist_insert
    - free
    - lock_basic_lock
    - strdup
    linkageType: ''
    returnType: int
    signature: int ub_ctx_trustedkeys(struct ub_ctx* ctx, const char* fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:536,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:539,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ctx
    - d
    argTypes:
    - struct ub_ctx*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 533
    functionDepth: 0
    functionLinenumber: 533
    functionLinenumberEnd: 541
    functionName: ub_ctx_debuglevel
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: int
    signature: int ub_ctx_debuglevel(struct ub_ctx* ctx, int d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:545,1
    - Dst: log_file
      Src: /src/unbound/libunbound/libunbound.c:546,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:550,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - out
    argTypes:
    - struct ub_ctx*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 543
    functionDepth: 1
    functionLinenumber: 543
    functionLinenumberEnd: 552
    functionName: ub_ctx_debugout
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    - log_file
    linkageType: ''
    returnType: int
    signature: int ub_ctx_debugout(struct ub_ctx* ctx, void* out)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:561,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:563,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:567,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - ctx
    - dothread
    argTypes:
    - struct ub_ctx*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 554
    functionDepth: 0
    functionLinenumber: 554
    functionLinenumberEnd: 569
    functionName: ub_ctx_async
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: int
    signature: int ub_ctx_async(struct ub_ctx* ctx, int dothread)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tube_poll
      Src: /src/unbound/libunbound/libunbound.c:577,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ub_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 578
      start: 571
    functionDepth: 1
    functionLinenumber: 571
    functionLinenumberEnd: 578
    functionName: ub_poll
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - tube_poll
    linkageType: ''
    returnType: int
    signature: int ub_poll(struct ub_ctx* ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tube_read_fd
      Src: /src/unbound/libunbound/libunbound.c:585,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ub_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 586
      start: 580
    functionDepth: 1
    functionLinenumber: 580
    functionLinenumberEnd: 586
    functionName: ub_fd
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - tube_read_fd
    linkageType: ''
    returnType: int
    signature: int ub_fd(struct ub_ctx* ctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: context_serial_getcmd
      Src: /src/unbound/libunbound/libunbound.c:595,1
    - Dst: log_err
      Src: /src/unbound/libunbound/libunbound.c:596,1
    - Dst: context_serial_getcmd
      Src: /src/unbound/libunbound/libunbound.c:597,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:601,1
    - Dst: context_deserialize_answer
      Src: /src/unbound/libunbound/libunbound.c:602,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:604,1
    - Dst: log_assert
      Src: /src/unbound/libunbound/libunbound.c:609,1
    - Dst: ub_resolve_free
      Src: /src/unbound/libunbound/libunbound.c:621,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/libunbound/libunbound.c:624,1
    - Dst: regional_create
      Src: /src/unbound/libunbound/libunbound.c:625,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/libunbound/libunbound.c:629,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/libunbound/libunbound.c:630,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/libunbound/libunbound.c:631,1
    - Dst: libworker_enter_result
      Src: /src/unbound/libunbound/libunbound.c:632,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/libunbound/libunbound.c:638,1
    - Dst: regional_destroy
      Src: /src/unbound/libunbound/libunbound.c:639,1
    - Dst: rbtree_delete
      Src: /src/unbound/libunbound/libunbound.c:643,1
    - Dst: context_query_delete
      Src: /src/unbound/libunbound/libunbound.c:645,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:646,1
    - Dst: ub_resolve_free
      Src: /src/unbound/libunbound/libunbound.c:649,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 46
    argCount: 7
    argNames:
    - ctx
    - msg
    - len
    - cb
    - cbarg
    - err
    - res
    argTypes:
    - struct ub_ctx*
    - uint8_t*
    - uint32_t
    - ub_callback_type*
    - void**
    - int*
    - struct ub_result**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 651
      start: 589
    functionDepth: 5
    functionLinenumber: 589
    functionLinenumberEnd: 651
    functionName: process_answer_detail
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - log_err
    - sldns_buffer_new
    - sldns_buffer_write
    - rbtree_delete
    - regional_create
    - lock_basic_unlock
    - sldns_buffer_flip
    - sldns_buffer_clear
    - log_assert
    - lock_basic_lock
    - ub_resolve_free
    - sldns_buffer_free
    - libworker_enter_result
    - context_serial_getcmd
    - regional_destroy
    - context_query_delete
    - context_deserialize_answer
    linkageType: ''
    returnType: int
    signature: "int process_answer_detail(struct ub_ctx* ctx, uint8_t* msg, uint32_t
      len,\n\tub_callback_type* cb, void** cbarg, int* err,\n\tstruct ub_result**
      res)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: process_answer_detail
      Src: /src/unbound/libunbound/libunbound.c:663,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - ctx
    - msg
    - len
    argTypes:
    - struct ub_ctx*
    - uint8_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 671
      start: 654
    functionDepth: 6
    functionLinenumber: 654
    functionLinenumberEnd: 671
    functionName: process_answer
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - process_answer_detail
    linkageType: ''
    returnType: int
    signature: int process_answer(struct ub_ctx* ctx, uint8_t* msg, uint32_t len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:683,1
    - Dst: tube_read_msg
      Src: /src/unbound/libunbound/libunbound.c:684,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:685,1
    - Dst: process_answer
      Src: /src/unbound/libunbound/libunbound.c:690,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:691,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:694,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ub_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 697
      start: 673
    functionDepth: 7
    functionLinenumber: 673
    functionLinenumberEnd: 697
    functionName: ub_process
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - free
    - tube_read_msg
    - process_answer
    - lock_basic_lock
    linkageType: ''
    returnType: int
    signature: int ub_process(struct ub_ctx* ctx)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:714,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:715,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:717,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:718,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:721,1
    - Dst: tube_wait
      Src: /src/unbound/libunbound/libunbound.c:729,1
    - Dst: tube_read_msg
      Src: /src/unbound/libunbound/libunbound.c:731,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:733,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:737,1
    - Dst: process_answer_detail
      Src: /src/unbound/libunbound/libunbound.c:740,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:742,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:743,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:749,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ub_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 699
    functionDepth: 6
    functionLinenumber: 699
    functionLinenumberEnd: 753
    functionName: ub_wait
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - free
    - tube_read_msg
    - process_answer_detail
    - lock_basic_lock
    - tube_wait
    linkageType: ''
    returnType: int
    signature: int ub_wait(struct ub_ctx* ctx)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:763,1
    - Dst: context_finalize
      Src: /src/unbound/libunbound/libunbound.c:765,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:767,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:772,1
    - Dst: context_new
      Src: /src/unbound/libunbound/libunbound.c:773,1
    - Dst: libworker_fg
      Src: /src/unbound/libunbound/libunbound.c:778,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:780,1
    - Dst: rbtree_delete
      Src: /src/unbound/libunbound/libunbound.c:781,1
    - Dst: context_query_delete
      Src: /src/unbound/libunbound/libunbound.c:782,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:783,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:792,1
    - Dst: rbtree_delete
      Src: /src/unbound/libunbound/libunbound.c:793,1
    - Dst: context_query_delete
      Src: /src/unbound/libunbound/libunbound.c:794,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:795,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 32
    argCount: 5
    argNames:
    - ctx
    - name
    - rrtype
    - rrclass
    - result
    argTypes:
    - struct ub_ctx*
    - char*
    - int
    - int
    - struct ub_result**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 755
    functionDepth: 14
    functionLinenumber: 755
    functionLinenumberEnd: 797
    functionName: ub_resolve
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - context_new
    - rbtree_delete
    - lock_basic_unlock
    - libworker_fg
    - lock_basic_lock
    - context_finalize
    - context_query_delete
    linkageType: ''
    returnType: int
    signature: "int ub_resolve(struct ub_ctx* ctx, const char* name, int rrtype, \n\tint
      rrclass, struct ub_result** result)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:809,1
    - Dst: context_finalize
      Src: /src/unbound/libunbound/libunbound.c:811,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:813,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:817,1
    - Dst: libworker_create_event
      Src: /src/unbound/libunbound/libunbound.c:819,1
    - Dst: ub_comm_base_now
      Src: /src/unbound/libunbound/libunbound.c:827,1
    - Dst: context_new
      Src: /src/unbound/libunbound/libunbound.c:830,1
    - Dst: libworker_attach_mesh
      Src: /src/unbound/libunbound/libunbound.c:835,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 7
    argNames:
    - ctx
    - name
    - rrtype
    - rrclass
    - mydata
    - callback
    - async_id
    argTypes:
    - struct ub_ctx*
    - char*
    - int
    - int
    - void*
    - ub_event_callback_type
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 799
    functionDepth: 14
    functionLinenumber: 799
    functionLinenumberEnd: 838
    functionName: ub_resolve_event
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - context_new
    - libworker_create_event
    - lock_basic_unlock
    - ub_comm_base_now
    - libworker_attach_mesh
    - lock_basic_lock
    - context_finalize
    linkageType: ''
    returnType: int
    signature: "int ub_resolve_event(struct ub_ctx* ctx, const char* name, int rrtype,
      \n\tint rrclass, void* mydata, ub_event_callback_type callback,\n\tint* async_id)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:853,1
    - Dst: context_finalize
      Src: /src/unbound/libunbound/libunbound.c:855,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:857,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:864,1
    - Dst: libworker_bg
      Src: /src/unbound/libunbound/libunbound.c:865,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:867,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:869,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:873,1
    - Dst: context_new
      Src: /src/unbound/libunbound/libunbound.c:877,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:882,1
    - Dst: context_serialize_new_query
      Src: /src/unbound/libunbound/libunbound.c:883,1
    - Dst: rbtree_delete
      Src: /src/unbound/libunbound/libunbound.c:885,1
    - Dst: context_query_delete
      Src: /src/unbound/libunbound/libunbound.c:887,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:888,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:893,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:895,1
    - Dst: tube_write_msg
      Src: /src/unbound/libunbound/libunbound.c:896,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:897,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:898,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:901,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:902,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 49
    argCount: 7
    argNames:
    - ctx
    - name
    - rrtype
    - rrclass
    - mydata
    - callback
    - async_id
    argTypes:
    - struct ub_ctx*
    - char*
    - int
    - int
    - void*
    - ub_callback_type
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 841
    functionDepth: 13
    functionLinenumber: 841
    functionLinenumberEnd: 904
    functionName: ub_resolve_async
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - context_new
    - rbtree_delete
    - lock_basic_unlock
    - context_query_delete
    - free
    - tube_write_msg
    - lock_basic_lock
    - context_serialize_new_query
    - context_finalize
    - libworker_bg
    linkageType: ''
    returnType: int
    signature: "int ub_resolve_async(struct ub_ctx* ctx, const char* name, int rrtype,
      \n\tint rrclass, void* mydata, ub_callback_type callback, int* async_id)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:912,1
    - Dst: rbtree_search
      Src: /src/unbound/libunbound/libunbound.c:913,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:916,1
    - Dst: log_assert
      Src: /src/unbound/libunbound/libunbound.c:919,1
    - Dst: rbtree_delete
      Src: /src/unbound/libunbound/libunbound.c:924,1
    - Dst: context_serialize_cancel
      Src: /src/unbound/libunbound/libunbound.c:926,1
    - Dst: context_query_delete
      Src: /src/unbound/libunbound/libunbound.c:927,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:928,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:933,1
    - Dst: tube_write_msg
      Src: /src/unbound/libunbound/libunbound.c:934,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:935,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:936,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:939,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:940,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:942,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 2
    argNames:
    - ctx
    - async_id
    argTypes:
    - struct ub_ctx*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 945
      start: 906
    functionDepth: 3
    functionLinenumber: 906
    functionLinenumberEnd: 945
    functionName: ub_cancel
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - rbtree_delete
    - lock_basic_unlock
    - free
    - log_assert
    - lock_basic_lock
    - tube_write_msg
    - context_query_delete
    - rbtree_search
    - context_serialize_cancel
    linkageType: ''
    returnType: int
    signature: int ub_cancel(struct ub_ctx* ctx, int async_id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:952,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:954,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:957,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:958,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:959,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:960,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:961,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:962,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct ub_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 963
      start: 947
    functionDepth: 1
    functionLinenumber: 947
    functionLinenumberEnd: 963
    functionName: ub_resolve_free
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 2
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void ub_resolve_free(struct ub_result* result)
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 27
    argCount: 1
    argNames:
    - err
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 982
      start: 965
    functionDepth: 0
    functionLinenumber: 965
    functionLinenumberEnd: 982
    functionName: ub_strerror
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char * \nub_strerror(int err)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:991,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:993,1
    - Dst: strcmp
      Src: /src/unbound/libunbound/libunbound.c:1001,1
    - Dst: config_delstubs
      Src: /src/unbound/libunbound/libunbound.c:1005,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1007,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1010,1
    - Dst: extstrtoaddr
      Src: /src/unbound/libunbound/libunbound.c:1013,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:1019,1
    - Dst: strcmp
      Src: /src/unbound/libunbound/libunbound.c:1022,1
    - Dst: calloc
      Src: /src/unbound/libunbound/libunbound.c:1023,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1025,1
    - Dst: strdup
      Src: /src/unbound/libunbound/libunbound.c:1029,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:1031,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1032,1
    - Dst: log_assert
      Src: /src/unbound/libunbound/libunbound.c:1039,1
    - Dst: log_assert
      Src: /src/unbound/libunbound/libunbound.c:1040,1
    - Dst: strdup
      Src: /src/unbound/libunbound/libunbound.c:1043,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1045,1
    - Dst: cfg_strlist_insert
      Src: /src/unbound/libunbound/libunbound.c:1049,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1050,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1054,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 57
    argCount: 2
    argNames:
    - ctx
    - addr
    argTypes:
    - struct ub_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 984
    functionDepth: 1
    functionLinenumber: 984
    functionLinenumberEnd: 1056
    functionName: ub_ctx_set_fwd
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - strcmp
    - lock_basic_unlock
    - extstrtoaddr
    - cfg_strlist_insert
    - free
    - calloc
    - log_assert
    - lock_basic_lock
    - strdup
    - config_delstubs
    linkageType: ''
    returnType: int
    signature: int ub_ctx_set_fwd(struct ub_ctx* ctx, const char* addr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:1060,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1062,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1067,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - ctx
    - tls
    argTypes:
    - struct ub_ctx*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1069
      start: 1058
    functionDepth: 0
    functionLinenumber: 1058
    functionLinenumberEnd: 1069
    functionName: ub_ctx_set_tls
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: int
    signature: int ub_ctx_set_tls(struct ub_ctx* ctx, int tls)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: parse_dname
      Src: /src/unbound/libunbound/libunbound.c:1082,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:1086,1
    - Dst: extstrtoaddr
      Src: /src/unbound/libunbound/libunbound.c:1095,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:1101,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1103,1
    - Dst: cfg_stub_find
      Src: /src/unbound/libunbound/libunbound.c:1110,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1113,1
    - Dst: config_delstub
      Src: /src/unbound/libunbound/libunbound.c:1118,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1119,1
    - Dst: calloc
      Src: /src/unbound/libunbound/libunbound.c:1123,1
    - Dst: strdup
      Src: /src/unbound/libunbound/libunbound.c:1124,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:1126,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1127,1
    - Dst: strdup
      Src: /src/unbound/libunbound/libunbound.c:1137,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1139,1
    - Dst: cfg_strlist_insert
      Src: /src/unbound/libunbound/libunbound.c:1143,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1144,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1148,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 61
    argCount: 4
    argNames:
    - ctx
    - zone
    - addr
    - isprime
    argTypes:
    - struct ub_ctx*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1150
      start: 1071
    functionDepth: 5
    functionLinenumber: 1071
    functionLinenumberEnd: 1150
    functionName: ub_ctx_set_stub
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - cfg_stub_find
    - lock_basic_unlock
    - extstrtoaddr
    - cfg_strlist_insert
    - config_delstub
    - free
    - parse_dname
    - calloc
    - lock_basic_lock
    - strdup
    linkageType: ''
    returnType: int
    signature: "int ub_ctx_set_stub(struct ub_ctx* ctx, const char* zone, const char*
      addr,\n\tint isprime)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/libunbound/libunbound.c:1169,1
    - Dst: GetNetworkParams
      Src: /src/unbound/libunbound/libunbound.c:1173,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:1174,1
    - Dst: malloc
      Src: /src/unbound/libunbound/libunbound.c:1175,1
    - Dst: GetNetworkParams
      Src: /src/unbound/libunbound/libunbound.c:1180,1
    - Dst: ub_ctx_set_fwd
      Src: /src/unbound/libunbound/libunbound.c:1185,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:1187,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:1192,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:1197,1
    - Dst: fopen
      Src: /src/unbound/libunbound/libunbound.c:1201,1
    - Dst: fgets
      Src: /src/unbound/libunbound/libunbound.c:1206,1
    - Dst: strncmp
      Src: /src/unbound/libunbound/libunbound.c:1211,1
    - Dst: isxdigit
      Src: /src/unbound/libunbound/libunbound.c:1219,1
    - Dst: ub_ctx_set_fwd
      Src: /src/unbound/libunbound/libunbound.c:1224,1
    - Dst: fclose
      Src: /src/unbound/libunbound/libunbound.c:1225,1
    - Dst: fclose
      Src: /src/unbound/libunbound/libunbound.c:1230,1
    - Dst: ub_ctx_set_fwd
      Src: /src/unbound/libunbound/libunbound.c:1233,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 59
    argCount: 2
    argNames:
    - ctx
    - fname
    argTypes:
    - struct ub_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1152
    functionDepth: 2
    functionLinenumber: 1152
    functionLinenumberEnd: 1236
    functionName: ub_ctx_resolvconf
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - ub_ctx_set_fwd
    - strncmp
    - fclose
    - isxdigit
    - malloc
    - free
    - GetNetworkParams
    - fopen
    - fgets
    linkageType: ''
    returnType: int
    signature: int ub_ctx_resolvconf(struct ub_ctx* ctx, const char* fname)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:1244,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1246,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1250,1
    - Dst: getenv
      Src: /src/unbound/libunbound/libunbound.c:1258,1
    - Dst: snprintf
      Src: /src/unbound/libunbound/libunbound.c:1261,1
    - Dst: ub_ctx_hosts
      Src: /src/unbound/libunbound/libunbound.c:1263,1
    - Dst: snprintf
      Src: /src/unbound/libunbound/libunbound.c:1264,1
    - Dst: ub_ctx_hosts
      Src: /src/unbound/libunbound/libunbound.c:1266,1
    - Dst: fopen
      Src: /src/unbound/libunbound/libunbound.c:1275,1
    - Dst: fgets
      Src: /src/unbound/libunbound/libunbound.c:1280,1
    - Dst: isxdigit
      Src: /src/unbound/libunbound/libunbound.c:1290,1
    - Dst: fclose
      Src: /src/unbound/libunbound/libunbound.c:1300,1
    - Dst: snprintf
      Src: /src/unbound/libunbound/libunbound.c:1318,1
    - Dst: str_is_ip6
      Src: /src/unbound/libunbound/libunbound.c:1319,1
    - Dst: strdup
      Src: /src/unbound/libunbound/libunbound.c:1320,1
    - Dst: fclose
      Src: /src/unbound/libunbound/libunbound.c:1323,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:1327,1
    - Dst: cfg_strlist_insert
      Src: /src/unbound/libunbound/libunbound.c:1328,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1330,1
    - Dst: fclose
      Src: /src/unbound/libunbound/libunbound.c:1331,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1335,1
    - Dst: fclose
      Src: /src/unbound/libunbound/libunbound.c:1338,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 76
    argCount: 2
    argNames:
    - ctx
    - fname
    argTypes:
    - struct ub_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1340
      start: 1238
    functionDepth: 2
    functionLinenumber: 1238
    functionLinenumberEnd: 1340
    functionName: ub_ctx_hosts
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 1
    functionsReached:
    - lock_basic_unlock
    - snprintf
    - isxdigit
    - fclose
    - cfg_strlist_insert
    - ub_ctx_hosts
    - getenv
    - fopen
    - lock_basic_lock
    - str_is_ip6
    - fgets
    - strdup
    linkageType: ''
    returnType: int
    signature: int ub_ctx_hosts(struct ub_ctx* ctx, const char* fname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:1346,1
    - Dst: context_finalize
      Src: /src/unbound/libunbound/libunbound.c:1348,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1350,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ub_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1352
      start: 1343
    functionDepth: 13
    functionLinenumber: 1343
    functionLinenumberEnd: 1352
    functionName: ub_ctx_finalize
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    - context_finalize
    linkageType: ''
    returnType: int
    signature: int ub_ctx_finalize(struct ub_ctx* ctx)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_ctx_finalize
      Src: /src/unbound/libunbound/libunbound.c:1357,1
    - Dst: local_zones_print
      Src: /src/unbound/libunbound/libunbound.c:1360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ub_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 1355
    functionDepth: 14
    functionLinenumber: 1355
    functionLinenumberEnd: 1363
    functionName: ub_ctx_print_local_zones
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - local_zones_print
    - ub_ctx_finalize
    linkageType: ''
    returnType: int
    signature: int ub_ctx_print_local_zones(struct ub_ctx* ctx)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ub_ctx_finalize
      Src: /src/unbound/libunbound/libunbound.c:1375,1
    - Dst: local_zone_str2type
      Src: /src/unbound/libunbound/libunbound.c:1378,1
    - Dst: parse_dname
      Src: /src/unbound/libunbound/libunbound.c:1382,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/libunbound/libunbound.c:1386,1
    - Dst: local_zones_find
      Src: /src/unbound/libunbound/libunbound.c:1387,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/libunbound/libunbound.c:1390,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/libunbound/libunbound.c:1392,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/libunbound/libunbound.c:1393,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:1394,1
    - Dst: local_zones_add_zone
      Src: /src/unbound/libunbound/libunbound.c:1397,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/libunbound/libunbound.c:1399,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/libunbound/libunbound.c:1402,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - ctx
    - zone_name
    - zone_type
    argTypes:
    - struct ub_ctx*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1404
      start: 1366
    functionDepth: 14
    functionLinenumber: 1366
    functionLinenumberEnd: 1404
    functionName: ub_ctx_zone_add
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - local_zones_add_zone
    - free
    - parse_dname
    - local_zones_find
    - ub_ctx_finalize
    - local_zone_str2type
    linkageType: ''
    returnType: int
    signature: "int ub_ctx_zone_add(struct ub_ctx* ctx, const char *zone_name, \n\tconst
      char *zone_type)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ub_ctx_finalize
      Src: /src/unbound/libunbound/libunbound.c:1414,1
    - Dst: parse_dname
      Src: /src/unbound/libunbound/libunbound.c:1417,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/libunbound/libunbound.c:1421,1
    - Dst: local_zones_find
      Src: /src/unbound/libunbound/libunbound.c:1422,1
    - Dst: local_zones_del_zone
      Src: /src/unbound/libunbound/libunbound.c:1425,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/libunbound/libunbound.c:1427,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:1428,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - zone_name
    argTypes:
    - struct ub_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1430
      start: 1407
    functionDepth: 14
    functionLinenumber: 1407
    functionLinenumberEnd: 1430
    functionName: ub_ctx_zone_remove
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - free
    - parse_dname
    - local_zones_del_zone
    - local_zones_find
    - ub_ctx_finalize
    linkageType: ''
    returnType: int
    signature: int ub_ctx_zone_remove(struct ub_ctx* ctx, const char *zone_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_ctx_finalize
      Src: /src/unbound/libunbound/libunbound.c:1435,1
    - Dst: local_zones_add_RR
      Src: /src/unbound/libunbound/libunbound.c:1438,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ctx
    - data
    argTypes:
    - struct ub_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1440
      start: 1433
    functionDepth: 14
    functionLinenumber: 1433
    functionLinenumberEnd: 1440
    functionName: ub_ctx_data_add
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - local_zones_add_RR
    - ub_ctx_finalize
    linkageType: ''
    returnType: int
    signature: int ub_ctx_data_add(struct ub_ctx* ctx, const char *data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ub_ctx_finalize
      Src: /src/unbound/libunbound/libunbound.c:1448,1
    - Dst: parse_dname
      Src: /src/unbound/libunbound/libunbound.c:1451,1
    - Dst: local_zones_del_data
      Src: /src/unbound/libunbound/libunbound.c:1454,1
    - Dst: free
      Src: /src/unbound/libunbound/libunbound.c:1457,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - data
    argTypes:
    - struct ub_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1459
      start: 1443
    functionDepth: 14
    functionLinenumber: 1443
    functionLinenumberEnd: 1459
    functionName: ub_ctx_data_remove
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - free
    - parse_dname
    - ub_ctx_finalize
    - local_zones_del_data
    linkageType: ''
    returnType: int
    signature: int ub_ctx_data_remove(struct ub_ctx* ctx, const char *data)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1464
      start: 1461
    functionDepth: 0
    functionLinenumber: 1461
    functionLinenumberEnd: 1464
    functionName: ub_version
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * ub_version(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ub_libevent_get_event_base
      Src: /src/unbound/libunbound/libunbound.c:1473,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:1478,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1485,1
    - Dst: libworker_delete_event
      Src: /src/unbound/libunbound/libunbound.c:1486,1
    - Dst: lock_basic_lock
      Src: /src/unbound/libunbound/libunbound.c:1488,1
    - Dst: ub_libevent_event_base
      Src: /src/unbound/libunbound/libunbound.c:1489,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/libunbound/libunbound.c:1494,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 2
    argNames:
    - ctx
    - base
    argTypes:
    - struct ub_ctx*
    - struct event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1496
      start: 1466
    functionDepth: 5
    functionLinenumber: 1466
    functionLinenumberEnd: 1496
    functionName: ub_ctx_set_event
    functionSourceFile: /src/unbound/libunbound/libunbound.c
    functionUses: 0
    functionsReached:
    - libworker_delete_event
    - lock_basic_unlock
    - ub_libevent_get_event_base
    - lock_basic_lock
    - ub_libevent_event_base
    linkageType: ''
    returnType: int
    signature: int ub_ctx_set_event(struct ub_ctx* ctx, struct event_base* base)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 77
    functionName: htobe64
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe64(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 78
    functionName: be64toh
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be64toh(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 83
    functionName: be64toh
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be64toh(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 84
    functionName: htobe64
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe64(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 86
    functionName: be64toh
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: be64toh(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 86
    functionDepth: 0
    functionLinenumber: 86
    functionLinenumberEnd: 87
    functionName: htobe64
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: htobe64(n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/cachedb/cachedb.c:108,1
    - Dst: calloc
      Src: /src/unbound/cachedb/cachedb.c:109,1
    - Dst: log_err
      Src: /src/unbound/cachedb/cachedb.c:113,1
    - Dst: edns_register_option
      Src: /src/unbound/cachedb/cachedb.c:118,1
    - Dst: log_err
      Src: /src/unbound/cachedb/cachedb.c:121,1
    - Dst: free
      Src: /src/unbound/cachedb/cachedb.c:122,1
    - Dst: lock_basic_init
      Src: /src/unbound/cachedb/cachedb.c:125,1
    - Dst: lock_protect
      Src: /src/unbound/cachedb/cachedb.c:126,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - env
    - cachedb_env
    argTypes:
    - struct module_env*
    - struct cachedb_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 128
    functionName: testframe_init
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - log_err
    - verbose
    - lock_basic_init
    - free
    - lock_protect
    - calloc
    - edns_register_option
    linkageType: ''
    returnType: int
    signature: int testframe_init(struct module_env* env, struct cachedb_env* cachedb_env)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/cachedb/cachedb.c:136,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/cachedb/cachedb.c:139,1
    - Dst: free
      Src: /src/unbound/cachedb/cachedb.c:140,1
    - Dst: free
      Src: /src/unbound/cachedb/cachedb.c:141,1
    - Dst: free
      Src: /src/unbound/cachedb/cachedb.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - env
    - cachedb_env
    argTypes:
    - struct module_env*
    - struct cachedb_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 143
    functionName: testframe_deinit
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - lock_basic_destroy
    - verbose
    - free
    linkageType: ''
    returnType: void
    signature: void testframe_deinit(struct module_env* env, struct cachedb_env* cachedb_env)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/cachedb/cachedb.c:152,1
    - Dst: lock_basic_lock
      Src: /src/unbound/cachedb/cachedb.c:153,1
    - Dst: strcmp
      Src: /src/unbound/cachedb/cachedb.c:154,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/cachedb/cachedb.c:155,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/cachedb/cachedb.c:156,1
    - Dst: verbose
      Src: /src/unbound/cachedb/cachedb.c:159,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/cachedb/cachedb.c:161,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/cachedb/cachedb.c:162,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/cachedb/cachedb.c:164,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/cachedb/cachedb.c:165,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/cachedb/cachedb.c:168,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 4
    argNames:
    - env
    - cachedb_env
    - key
    - result_buffer
    argTypes:
    - struct module_env*
    - struct cachedb_env*
    - char*
    - struct sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 145
    functionDepth: 5
    functionLinenumber: 145
    functionLinenumberEnd: 170
    functionName: testframe_lookup
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - strcmp
    - sldns_buffer_write
    - verbose
    - lock_basic_unlock
    - sldns_buffer_flip
    - sldns_buffer_clear
    - lock_basic_lock
    linkageType: ''
    returnType: int
    signature: "int testframe_lookup(struct module_env* env, struct cachedb_env* cachedb_env,\n\tchar*
      key, struct sldns_buffer* result_buffer)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/cachedb/cachedb.c:179,1
    - Dst: verbose
      Src: /src/unbound/cachedb/cachedb.c:180,1
    - Dst: free
      Src: /src/unbound/cachedb/cachedb.c:183,1
    - Dst: free
      Src: /src/unbound/cachedb/cachedb.c:185,1
    - Dst: memdup
      Src: /src/unbound/cachedb/cachedb.c:189,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/cachedb/cachedb.c:191,1
    - Dst: log_err
      Src: /src/unbound/cachedb/cachedb.c:192,1
    - Dst: strdup
      Src: /src/unbound/cachedb/cachedb.c:196,1
    - Dst: free
      Src: /src/unbound/cachedb/cachedb.c:198,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/cachedb/cachedb.c:201,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/cachedb/cachedb.c:204,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 6
    argNames:
    - env
    - cachedb_env
    - key
    - data
    - data_len
    - ATTR_UNUSED
    argTypes:
    - struct module_env*
    - struct cachedb_env*
    - char*
    - uint8_t*
    - size_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 172
    functionDepth: 1
    functionLinenumber: 172
    functionLinenumberEnd: 206
    functionName: testframe_store
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - log_err
    - verbose
    - lock_basic_unlock
    - free
    - lock_basic_lock
    - memdup
    - strdup
    linkageType: ''
    returnType: void
    signature: "void testframe_store(struct module_env* env, struct cachedb_env* cachedb_env,\n\tchar*
      key, uint8_t* data, size_t data_len, time_t ATTR_UNUSED(ttl))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/cachedb/cachedb.c:218,1
    - Dst: strcmp
      Src: /src/unbound/cachedb/cachedb.c:221,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 225
    functionName: cachedb_find_backend
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct cachedb_backend
    signature: 'struct cachedb_backend *

      cachedb_find_backend(const char* str)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cachedb_find_backend
      Src: /src/unbound/cachedb/cachedb.c:234,1
    - Dst: log_err
      Src: /src/unbound/cachedb/cachedb.c:236,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - cachedb_env
    - cfg
    argTypes:
    - struct cachedb_env*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 242
    functionName: cachedb_apply_cfg
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - log_err
    - cachedb_find_backend
    linkageType: ''
    returnType: int
    signature: int cachedb_apply_cfg(struct cachedb_env* cachedb_env, struct config_file*
      cfg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/cachedb/cachedb.c:247,1
    - Dst: log_err
      Src: /src/unbound/cachedb/cachedb.c:250,1
    - Dst: cachedb_apply_cfg
      Src: /src/unbound/cachedb/cachedb.c:254,1
    - Dst: log_err
      Src: /src/unbound/cachedb/cachedb.c:255,1
    - Dst: free
      Src: /src/unbound/cachedb/cachedb.c:256,1
    - Dst: log_err
      Src: /src/unbound/cachedb/cachedb.c:264,1
    - Dst: free
      Src: /src/unbound/cachedb/cachedb.c:266,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 244
    functionDepth: 2
    functionLinenumber: 244
    functionLinenumberEnd: 272
    functionName: cachedb_init
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - cachedb_apply_cfg
    - log_err
    - calloc
    - free
    linkageType: ''
    returnType: int
    signature: int cachedb_init(struct module_env* env, int id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/cachedb/cachedb.c:284,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 286
    functionName: cachedb_deinit
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void cachedb_deinit(struct module_env* env, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/cachedb/cachedb.c:292,1
    - Dst: memset
      Src: /src/unbound/cachedb/cachedb.c:297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 289
    functionDepth: 0
    functionLinenumber: 289
    functionLinenumberEnd: 302
    functionName: cachedb_new
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - memset
    - regional_alloc
    linkageType: ''
    returnType: int
    signature: int cachedb_new(struct module_qstate* qstate, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/cachedb/cachedb.c:315,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/cachedb/cachedb.c:316,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/cachedb/cachedb.c:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - qstate
    - id
    - rcode
    argTypes:
    - struct module_qstate*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 322
    functionName: error_response
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 2
    functionsReached:
    - verbose
    - sldns_lookup_by_id
    linkageType: ''
    returnType: int
    signature: int error_response(struct module_qstate* qstate, int id, int rcode)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/cachedb/cachedb.c:344,1
    - Dst: query_dname_tolower
      Src: /src/unbound/cachedb/cachedb.c:345,1
    - Dst: htons
      Src: /src/unbound/cachedb/cachedb.c:349,1
    - Dst: htons
      Src: /src/unbound/cachedb/cachedb.c:350,1
    - Dst: memmove
      Src: /src/unbound/cachedb/cachedb.c:351,1
    - Dst: memmove
      Src: /src/unbound/cachedb/cachedb.c:352,1
    - Dst: strlen
      Src: /src/unbound/cachedb/cachedb.c:355,1
    - Dst: memmove
      Src: /src/unbound/cachedb/cachedb.c:356,1
    - Dst: strlen
      Src: /src/unbound/cachedb/cachedb.c:356,1
    - Dst: strlen
      Src: /src/unbound/cachedb/cachedb.c:357,1
    - Dst: secalgo_hash_sha256
      Src: /src/unbound/cachedb/cachedb.c:361,1
    - Dst: explicit_bzero
      Src: /src/unbound/cachedb/cachedb.c:363,1
    - Dst: memset
      Src: /src/unbound/cachedb/cachedb.c:365,1
    - Dst: log_assert
      Src: /src/unbound/cachedb/cachedb.c:370,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 4
    argNames:
    - qinfo
    - env
    - buf
    - len
    argTypes:
    - struct query_info*
    - struct module_env*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 331
    functionDepth: 3
    functionLinenumber: 331
    functionLinenumberEnd: 377
    functionName: calc_hash
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 1
    functionsReached:
    - memmove
    - htons
    - explicit_bzero
    - log_assert
    - strlen
    - query_dname_tolower
    - secalgo_hash_sha256
    - memset
    linkageType: ''
    returnType: void
    signature: "void calc_hash(struct query_info* qinfo, struct module_env* env, char*
      buf,\n\tsize_t len)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/cachedb/cachedb.c:386,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/cachedb/cachedb.c:397,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/cachedb/cachedb.c:399,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/cachedb/cachedb.c:401,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/cachedb/cachedb.c:417,1
    - Dst: log_dns_msg
      Src: /src/unbound/cachedb/cachedb.c:423,1
    - Dst: reply_info_answer_encode
      Src: /src/unbound/cachedb/cachedb.c:425,1
    - Dst: htobe64
      Src: /src/unbound/cachedb/cachedb.c:436,1
    - Dst: htobe64
      Src: /src/unbound/cachedb/cachedb.c:437,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/cachedb/cachedb.c:438,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/cachedb/cachedb.c:440,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/cachedb/cachedb.c:442,1
    - Dst: sldns_buffer_write_at
      Src: /src/unbound/cachedb/cachedb.c:443,1
    - Dst: sldns_buffer_write_at
      Src: /src/unbound/cachedb/cachedb.c:444,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 2
    argNames:
    - qstate
    - buf
    argTypes:
    - struct module_qstate*
    - struct sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 380
    functionDepth: 4
    functionLinenumber: 380
    functionLinenumberEnd: 448
    functionName: prep_data
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - FLAGS_GET_RCODE
    - reply_info_answer_encode
    - log_dns_msg
    - sldns_buffer_write_at
    - sldns_buffer_limit
    - htobe64
    - sldns_buffer_set_limit
    - edns_opt_list_append_ede
    - memset
    linkageType: ''
    returnType: int
    signature: int prep_data(struct module_qstate* qstate, struct sldns_buffer* buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/cachedb/cachedb.c:456,1
    - Dst: sldns_buffer_read_at
      Src: /src/unbound/cachedb/cachedb.c:458,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/cachedb/cachedb.c:458,1
    - Dst: be64toh
      Src: /src/unbound/cachedb/cachedb.c:460,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/cachedb/cachedb.c:466,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - qstate
    - buf
    argTypes:
    - struct module_qstate*
    - struct sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 451
    functionDepth: 4
    functionLinenumber: 451
    functionLinenumberEnd: 473
    functionName: good_expiry_and_qinfo
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - TTL_IS_EXPIRED
    - be64toh
    - sldns_buffer_read_at
    - sldns_buffer_limit
    linkageType: ''
    returnType: int
    signature: int good_expiry_and_qinfo(struct module_qstate* qstate, struct sldns_buffer*
      buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 3
    argNames:
    - data
    - subtract
    - timestamp
    argTypes:
    - struct packed_rrset_data*
    - time_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 492
    functionName: packed_rrset_ttl_subtract
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void packed_rrset_ttl_subtract(struct packed_rrset_data* data, time_t
      subtract,\n\ttime_t timestamp)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/cachedb/cachedb.c:504,1
    - Dst: packed_rrset_ttl_subtract
      Src: /src/unbound/cachedb/cachedb.c:508,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - msg
    - adjust
    - timestamp
    argTypes:
    - struct dns_msg*
    - time_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 496
    functionDepth: 1
    functionLinenumber: 496
    functionLinenumberEnd: 511
    functionName: adjust_msg_ttl
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - packed_rrset_ttl_subtract
    - PREFETCH_TTL_CALC
    linkageType: ''
    returnType: void
    signature: void adjust_msg_ttl(struct dns_msg* msg, time_t adjust, time_t timestamp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - data
    - ttl
    - timestamp
    argTypes:
    - struct packed_rrset_data*
    - time_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 524
    functionName: packed_rrset_ttl_set
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_rrset_ttl_set(struct packed_rrset_data* data, time_t ttl,
      time_t timestamp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/cachedb/cachedb.c:532,1
    - Dst: packed_rrset_ttl_set
      Src: /src/unbound/cachedb/cachedb.c:536,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - msg
    - ttl
    - timestamp
    argTypes:
    - struct dns_msg*
    - time_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 527
    functionDepth: 1
    functionLinenumber: 527
    functionLinenumberEnd: 539
    functionName: set_msg_ttl
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - packed_rrset_ttl_set
    - PREFETCH_TTL_CALC
    linkageType: ''
    returnType: void
    signature: void set_msg_ttl(struct dns_msg* msg, time_t ttl, time_t timestamp)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/cachedb/cachedb.c:551,1
    - Dst: sldns_buffer_read_at
      Src: /src/unbound/cachedb/cachedb.c:556,1
    - Dst: sldns_buffer_read_at
      Src: /src/unbound/cachedb/cachedb.c:557,1
    - Dst: be64toh
      Src: /src/unbound/cachedb/cachedb.c:559,1
    - Dst: be64toh
      Src: /src/unbound/cachedb/cachedb.c:560,1
    - Dst: log_assert
      Src: /src/unbound/cachedb/cachedb.c:561,1
    - Dst: regional_free_all
      Src: /src/unbound/cachedb/cachedb.c:566,1
    - Dst: regional_alloc
      Src: /src/unbound/cachedb/cachedb.c:567,1
    - Dst: memset
      Src: /src/unbound/cachedb/cachedb.c:571,1
    - Dst: memset
      Src: /src/unbound/cachedb/cachedb.c:572,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/cachedb/cachedb.c:573,1
    - Dst: parse_packet
      Src: /src/unbound/cachedb/cachedb.c:574,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/cachedb/cachedb.c:575,1
    - Dst: parse_extract_edns_from_response_msg
      Src: /src/unbound/cachedb/cachedb.c:578,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/cachedb/cachedb.c:580,1
    - Dst: dns_alloc_msg
      Src: /src/unbound/cachedb/cachedb.c:584,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/cachedb/cachedb.c:585,1
    - Dst: edns_opt_list_find
      Src: /src/unbound/cachedb/cachedb.c:591,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/cachedb/cachedb.c:594,1
    - Dst: regional_alloc
      Src: /src/unbound/cachedb/cachedb.c:599,1
    - Dst: memcpy
      Src: /src/unbound/cachedb/cachedb.c:601,1
    - Dst: verbose
      Src: /src/unbound/cachedb/cachedb.c:611,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/cachedb/cachedb.c:615,1
    - Dst: verbose
      Src: /src/unbound/cachedb/cachedb.c:616,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/cachedb/cachedb.c:619,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/cachedb/cachedb.c:621,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/cachedb/cachedb.c:623,1
    - Dst: adjust_msg_ttl
      Src: /src/unbound/cachedb/cachedb.c:631,1
    - Dst: verbose
      Src: /src/unbound/cachedb/cachedb.c:632,1
    - Dst: limit_nsec_ttl
      Src: /src/unbound/cachedb/cachedb.c:634,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 61
    argCount: 5
    argNames:
    - qstate
    - buf
    - msg_expired
    - msg_timestamp
    - msg_expiry
    argTypes:
    - struct module_qstate*
    - struct sldns_buffer*
    - int*
    - time_t*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 542
    functionDepth: 4
    functionLinenumber: 542
    functionLinenumberEnd: 645
    functionName: parse_data
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - parse_extract_edns_from_response_msg
    - sldns_buffer_read_at
    - limit_nsec_ttl
    - memset
    - regional_free_all
    - dns_alloc_msg
    - memcpy
    - edns_opt_list_find
    - verbose
    - TTL_IS_EXPIRED
    - log_assert
    - parse_packet
    - sldns_read_uint16
    - FLAGS_GET_RCODE
    - be64toh
    - regional_alloc
    - sldns_buffer_limit
    - sldns_buffer_set_limit
    - adjust_msg_ttl
    linkageType: ''
    returnType: int
    signature: "int parse_data(struct module_qstate* qstate, struct sldns_buffer*
      buf,\n\tint* msg_expired, time_t* msg_timestamp, time_t* msg_expiry)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calc_hash
      Src: /src/unbound/cachedb/cachedb.c:656,1
    - Dst: good_expiry_and_qinfo
      Src: /src/unbound/cachedb/cachedb.c:665,1
    - Dst: parse_data
      Src: /src/unbound/cachedb/cachedb.c:670,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 5
    argNames:
    - qstate
    - ie
    - msg_expired
    - msg_timestamp
    - msg_expiry
    argTypes:
    - struct module_qstate*
    - struct cachedb_env*
    - int*
    - time_t*
    - time_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 675
      start: 651
    functionDepth: 5
    functionLinenumber: 651
    functionLinenumberEnd: 675
    functionName: cachedb_extcache_lookup
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - parse_data
    - good_expiry_and_qinfo
    - calc_hash
    linkageType: ''
    returnType: int
    signature: "int cachedb_extcache_lookup(struct module_qstate* qstate, struct cachedb_env*
      ie,\n\tint* msg_expired, time_t* msg_timestamp, time_t* msg_expiry)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calc_hash
      Src: /src/unbound/cachedb/cachedb.c:684,1
    - Dst: prep_data
      Src: /src/unbound/cachedb/cachedb.c:687,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/cachedb/cachedb.c:692,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/cachedb/cachedb.c:693,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - qstate
    - ie
    argTypes:
    - struct module_qstate*
    - struct cachedb_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 680
    functionDepth: 5
    functionLinenumber: 680
    functionLinenumberEnd: 695
    functionName: cachedb_extcache_store
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - prep_data
    - sldns_buffer_limit
    - calc_hash
    - sldns_buffer_begin
    linkageType: ''
    returnType: void
    signature: void cachedb_extcache_store(struct module_qstate* qstate, struct cachedb_env*
      ie)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: iter_stub_fwd_no_cache
      Src: /src/unbound/cachedb/cachedb.c:711,1
    - Dst: dns_cache_lookup
      Src: /src/unbound/cachedb/cachedb.c:714,1
    - Dst: iter_qname_indicates_dnssec
      Src: /src/unbound/cachedb/cachedb.c:722,1
    - Dst: val_neg_getmsg
      Src: /src/unbound/cachedb/cachedb.c:725,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - qstate
    - cde
    argTypes:
    - struct module_qstate*
    - struct cachedb_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 737
      start: 700
    functionDepth: 6
    functionLinenumber: 700
    functionLinenumberEnd: 737
    functionName: cachedb_intcache_lookup
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - iter_qname_indicates_dnssec
    - iter_stub_fwd_no_cache
    - val_neg_getmsg
    - dns_cache_lookup
    linkageType: ''
    returnType: int
    signature: int cachedb_intcache_lookup(struct module_qstate* qstate, struct cachedb_env*
      cde)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: set_msg_ttl
      Src: /src/unbound/cachedb/cachedb.c:758,1
    - Dst: verbose
      Src: /src/unbound/cachedb/cachedb.c:759,1
    - Dst: dns_cache_store
      Src: /src/unbound/cachedb/cachedb.c:768,1
    - Dst: mesh_respond_serve_expired
      Src: /src/unbound/cachedb/cachedb.c:783,1
    - Dst: set_msg_ttl
      Src: /src/unbound/cachedb/cachedb.c:786,1
    - Dst: EXPIRED_REPLY_TTL_CALC
      Src: /src/unbound/cachedb/cachedb.c:787,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 4
    argNames:
    - qstate
    - msg_expired
    - msg_timestamp
    - msg_expiry
    argTypes:
    - struct module_qstate*
    - int
    - time_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 742
    functionDepth: 7
    functionLinenumber: 742
    functionLinenumberEnd: 789
    functionName: cachedb_intcache_store
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - set_msg_ttl
    - verbose
    - dns_cache_store
    - EXPIRED_REPLY_TTL_CALC
    - mesh_respond_serve_expired
    linkageType: ''
    returnType: void
    signature: "void cachedb_intcache_store(struct module_qstate* qstate, int msg_expired,\n\ttime_t
      msg_timestamp, time_t msg_expiry)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: iter_stub_fwd_no_cache
      Src: /src/unbound/cachedb/cachedb.c:815,1
    - Dst: cachedb_intcache_lookup
      Src: /src/unbound/cachedb/cachedb.c:826,1
    - Dst: log_dns_msg
      Src: /src/unbound/cachedb/cachedb.c:829,1
    - Dst: log_info
      Src: /src/unbound/cachedb/cachedb.c:832,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/cachedb/cachedb.c:833,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/cachedb/cachedb.c:834,1
    - Dst: cachedb_extcache_lookup
      Src: /src/unbound/cachedb/cachedb.c:843,1
    - Dst: log_dns_msg
      Src: /src/unbound/cachedb/cachedb.c:846,1
    - Dst: cachedb_intcache_store
      Src: /src/unbound/cachedb/cachedb.c:850,1
    - Dst: log_assert
      Src: /src/unbound/cachedb/cachedb.c:877,1
    - Dst: mesh_respond_serve_expired
      Src: /src/unbound/cachedb/cachedb.c:889,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 48
    argCount: 4
    argNames:
    - qstate
    - ATTR_UNUSED(iq)
    - ie
    - id
    argTypes:
    - struct module_qstate*
    - struct cachedb_qstate*
    - struct cachedb_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 799
    functionDepth: 8
    functionLinenumber: 799
    functionLinenumberEnd: 895
    functionName: cachedb_handle_query
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - iter_stub_fwd_no_cache
    - log_dns_msg
    - cachedb_intcache_lookup
    - cachedb_extcache_lookup
    - log_info
    - log_assert
    - cachedb_intcache_store
    - sldns_lookup_by_id
    - mesh_respond_serve_expired
    linkageType: ''
    returnType: void
    signature: "void cachedb_handle_query(struct module_qstate* qstate,\n\tstruct
      cachedb_qstate* ATTR_UNUSED(iq),\n\tstruct cachedb_env* ie, int id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: iter_stub_fwd_no_cache
      Src: /src/unbound/cachedb/cachedb.c:912,1
    - Dst: cachedb_extcache_store
      Src: /src/unbound/cachedb/cachedb.c:925,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - qstate
    - ATTR_UNUSED(iq)
    - ie
    - id
    argTypes:
    - struct module_qstate*
    - struct cachedb_qstate*
    - struct cachedb_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 905
    functionDepth: 6
    functionLinenumber: 905
    functionLinenumberEnd: 929
    functionName: cachedb_handle_response
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - cachedb_extcache_store
    - iter_stub_fwd_no_cache
    linkageType: ''
    returnType: void
    signature: "void cachedb_handle_response(struct module_qstate* qstate,\n\tstruct
      cachedb_qstate* ATTR_UNUSED(iq), struct cachedb_env* ie, int id)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/cachedb/cachedb.c:937,1
    - Dst: strextstate
      Src: /src/unbound/cachedb/cachedb.c:938,1
    - Dst: strmodulevent
      Src: /src/unbound/cachedb/cachedb.c:938,1
    - Dst: log_query_info
      Src: /src/unbound/cachedb/cachedb.c:939,1
    - Dst: cachedb_new
      Src: /src/unbound/cachedb/cachedb.c:945,1
    - Dst: error_response
      Src: /src/unbound/cachedb/cachedb.c:946,1
    - Dst: cachedb_handle_query
      Src: /src/unbound/cachedb/cachedb.c:952,1
    - Dst: cachedb_handle_response
      Src: /src/unbound/cachedb/cachedb.c:956,1
    - Dst: verbose
      Src: /src/unbound/cachedb/cachedb.c:967,1
    - Dst: error_response
      Src: /src/unbound/cachedb/cachedb.c:968,1
    - Dst: log_err
      Src: /src/unbound/cachedb/cachedb.c:977,1
    - Dst: error_response
      Src: /src/unbound/cachedb/cachedb.c:978,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 4
    argNames:
    - qstate
    - event
    - id
    - outbound
    argTypes:
    - struct module_qstate*
    - enum module_ev
    - int
    - struct outbound_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 931
    functionDepth: 9
    functionLinenumber: 931
    functionLinenumberEnd: 979
    functionName: cachedb_operate
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - log_err
    - cachedb_new
    - strextstate
    - verbose
    - log_query_info
    - cachedb_handle_query
    - strmodulevent
    - error_response
    - cachedb_handle_response
    linkageType: ''
    returnType: void
    signature: "void cachedb_operate(struct module_qstate* qstate, enum module_ev
      event, int id,\n\tstruct outbound_entry* outbound)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/cachedb/cachedb.c:986,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED(qstate)
    - ATTR_UNUSED
    - ATTR_UNUSED(super)
    argTypes:
    - struct module_qstate*
    - int
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 981
    functionDepth: 1
    functionLinenumber: 981
    functionLinenumberEnd: 987
    functionName: cachedb_inform_super
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - verbose
    linkageType: ''
    returnType: void
    signature: "void cachedb_inform_super(struct module_qstate* ATTR_UNUSED(qstate),\n\tint
      ATTR_UNUSED(id), struct module_qstate* ATTR_UNUSED(super))"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1001
      start: 989
    functionDepth: 0
    functionLinenumber: 989
    functionLinenumberEnd: 1001
    functionName: cachedb_clear
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void cachedb_clear(struct module_qstate* qstate, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1010
      start: 1003
    functionDepth: 0
    functionLinenumber: 1003
    functionLinenumberEnd: 1010
    functionName: cachedb_get_mem
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t cachedb_get_mem(struct module_env* env, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1025
      start: 1021
    functionDepth: 0
    functionLinenumber: 1021
    functionLinenumberEnd: 1025
    functionName: cachedb_get_funcblock
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct module_func_block
    signature: "struct module_func_block * \ncachedb_get_funcblock(void)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: modstack_find
      Src: /src/unbound/cachedb/cachedb.c:1031,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - mods
    - env
    argTypes:
    - struct module_stack*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1038
      start: 1027
    functionDepth: 1
    functionLinenumber: 1027
    functionLinenumberEnd: 1038
    functionName: cachedb_is_enabled
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 2
    functionsReached:
    - modstack_find
    linkageType: ''
    returnType: int
    signature: int cachedb_is_enabled(struct module_stack* mods, struct module_env*
      env)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cachedb_msg_remove_qinfo
      Src: /src/unbound/cachedb/cachedb.c:1042,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - qstate
    argTypes:
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1043
      start: 1040
    functionDepth: 1
    functionLinenumber: 1040
    functionLinenumberEnd: 1043
    functionName: cachedb_msg_remove
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 0
    functionsReached:
    - cachedb_msg_remove_qinfo
    linkageType: ''
    returnType: void
    signature: void cachedb_msg_remove(struct module_qstate* qstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: modstack_find
      Src: /src/unbound/cachedb/cachedb.c:1048,1
    - Dst: log_query_info
      Src: /src/unbound/cachedb/cachedb.c:1051,1
    - Dst: calc_hash
      Src: /src/unbound/cachedb/cachedb.c:1052,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/cachedb/cachedb.c:1053,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/cachedb/cachedb.c:1054,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/cachedb/cachedb.c:1055,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/cachedb/cachedb.c:1059,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/cachedb/cachedb.c:1060,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - env
    - qinfo
    argTypes:
    - struct module_env*
    - struct query_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 1045
    functionDepth: 5
    functionLinenumber: 1045
    functionLinenumberEnd: 1062
    functionName: cachedb_msg_remove_qinfo
    functionSourceFile: /src/unbound/cachedb/cachedb.c
    functionUses: 5
    functionsReached:
    - log_query_info
    - sldns_buffer_flip
    - sldns_buffer_limit
    - sldns_buffer_clear
    - calc_hash
    - sldns_buffer_begin
    - sldns_buffer_write_u32
    - modstack_find
    linkageType: ''
    returnType: void
    signature: void cachedb_msg_remove_qinfo(struct module_env* env, struct query_info*
      qinfo)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: redisFree
      Src: /src/unbound/cachedb/redis.c:114,1
    - Dst: free
      Src: /src/unbound/cachedb/redis.c:116,1
    - Dst: redisFree
      Src: /src/unbound/cachedb/redis.c:122,1
    - Dst: free
      Src: /src/unbound/cachedb/redis.c:124,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/cachedb/redis.c:126,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/cachedb/redis.c:127,1
    - Dst: free
      Src: /src/unbound/cachedb/redis.c:128,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 1
    argNames:
    - moddata
    argTypes:
    - struct redis_moddata**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 106
    functionDepth: 1
    functionLinenumber: 106
    functionLinenumberEnd: 130
    functionName: moddata_clean
    functionSourceFile: /src/unbound/cachedb/redis.c
    functionUses: 0
    functionsReached:
    - free
    - lock_basic_destroy
    - redisFree
    linkageType: ''
    returnType: void
    signature: void moddata_clean(struct redis_moddata** moddata)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/unbound/cachedb/redis.c:161,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:162,1
    - Dst: strerror
      Src: /src/unbound/cachedb/redis.c:163,1
    - Dst: lock_basic_lock
      Src: /src/unbound/cachedb/redis.c:165,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/cachedb/redis.c:167,1
    - Dst: timeval_smaller
      Src: /src/unbound/cachedb/redis.c:168,1
    - Dst: verbose
      Src: /src/unbound/cachedb/redis.c:169,1
    - Dst: redisConnectUnixWithTimeout
      Src: /src/unbound/cachedb/redis.c:176,1
    - Dst: redisConnectWithTimeout
      Src: /src/unbound/cachedb/redis.c:178,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:184,1
    - Dst: redisSetTimeout
      Src: /src/unbound/cachedb/redis.c:187,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:188,1
    - Dst: redisCommand
      Src: /src/unbound/cachedb/redis.c:193,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:195,1
    - Dst: freeReplyObject
      Src: /src/unbound/cachedb/redis.c:196,1
    - Dst: freeReplyObject
      Src: /src/unbound/cachedb/redis.c:199,1
    - Dst: redisCommand
      Src: /src/unbound/cachedb/redis.c:203,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:205,1
    - Dst: freeReplyObject
      Src: /src/unbound/cachedb/redis.c:207,1
    - Dst: freeReplyObject
      Src: /src/unbound/cachedb/redis.c:210,1
    - Dst: snprintf
      Src: /src/unbound/cachedb/redis.c:216,1
    - Dst: verbose
      Src: /src/unbound/cachedb/redis.c:217,1
    - Dst: redisFree
      Src: /src/unbound/cachedb/redis.c:226,1
    - Dst: gettimeofday
      Src: /src/unbound/cachedb/redis.c:234,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:235,1
    - Dst: strerror
      Src: /src/unbound/cachedb/redis.c:236,1
    - Dst: timeval_add
      Src: /src/unbound/cachedb/redis.c:239,1
    - Dst: lock_basic_lock
      Src: /src/unbound/cachedb/redis.c:240,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/cachedb/redis.c:242,1
    - Dst: verbose
      Src: /src/unbound/cachedb/redis.c:243,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 81
    argCount: 13
    argNames:
    - host
    - port
    - path
    - password
    - logical_db
    - connect_timeout
    - command_timeout
    - reconnect_interval
    - reconnect_attempts
    - reconnect_wait
    - wait_lock
    - now_tv
    - infostr
    argTypes:
    - char*
    - int
    - char*
    - char*
    - int
    - struct timeval
    - struct timeval
    - struct timeval*
    - int*
    - struct timeval*
    - lock_basic_type*
    - struct timeval*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 132
    functionDepth: 2
    functionLinenumber: 132
    functionLinenumberEnd: 247
    functionName: redis_connect
    functionSourceFile: /src/unbound/cachedb/redis.c
    functionUses: 0
    functionsReached:
    - log_err
    - redisCommand
    - lock_basic_unlock
    - verbose
    - timeval_smaller
    - redisSetTimeout
    - snprintf
    - redisFree
    - freeReplyObject
    - timeval_add
    - redisConnectUnixWithTimeout
    - lock_basic_lock
    - strerror
    - gettimeofday
    - redisConnectWithTimeout
    linkageType: ''
    returnType: redisContext
    signature: "redisContext *\nredis_connect(const char* host, int port, const char*
      path,\n\tconst char* password, int logical_db,\n\tconst struct timeval connect_timeout,\n\tconst
      struct timeval command_timeout,\n\tconst struct timeval* reconnect_interval,\n\tint*
      reconnect_attempts,\n\tstruct timeval* reconnect_wait,\n\tlock_basic_type* wait_lock,\n\tstruct
      timeval* now_tv,\n\tconst char* infostr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - timeout
    - value
    - explicit_value
    argTypes:
    - struct timeval*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 255
    functionName: set_timeout
    functionSourceFile: /src/unbound/cachedb/redis.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void set_timeout(struct timeval* timeout, int value, int explicit_value)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/cachedb/redis.c:263,1
    - Dst: calloc
      Src: /src/unbound/cachedb/redis.c:265,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:267,1
    - Dst: lock_basic_init
      Src: /src/unbound/cachedb/redis.c:270,1
    - Dst: lock_protect
      Src: /src/unbound/cachedb/redis.c:271,1
    - Dst: lock_basic_init
      Src: /src/unbound/cachedb/redis.c:273,1
    - Dst: lock_protect
      Src: /src/unbound/cachedb/redis.c:274,1
    - Dst: set_timeout
      Src: /src/unbound/cachedb/redis.c:293,1
    - Dst: set_timeout
      Src: /src/unbound/cachedb/redis.c:296,1
    - Dst: set_timeout
      Src: /src/unbound/cachedb/redis.c:299,1
    - Dst: set_timeout
      Src: /src/unbound/cachedb/redis.c:302,1
    - Dst: set_timeout
      Src: /src/unbound/cachedb/redis.c:305,1
    - Dst: set_timeout
      Src: /src/unbound/cachedb/redis.c:306,1
    - Dst: calloc
      Src: /src/unbound/cachedb/redis.c:311,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:313,1
    - Dst: calloc
      Src: /src/unbound/cachedb/redis.c:319,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:321,1
    - Dst: redis_connect
      Src: /src/unbound/cachedb/redis.c:326,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:341,1
    - Dst: redis_connect
      Src: /src/unbound/cachedb/redis.c:350,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:365,1
    - Dst: redis_command
      Src: /src/unbound/cachedb/redis.c:379,1
    - Dst: freeReplyObject
      Src: /src/unbound/cachedb/redis.c:386,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:399,1
    - Dst: moddata_clean
      Src: /src/unbound/cachedb/redis.c:404,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 84
    argCount: 2
    argNames:
    - env
    - cachedb_env
    argTypes:
    - struct module_env*
    - struct cachedb_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 406
      start: 257
    functionDepth: 3
    functionLinenumber: 257
    functionLinenumberEnd: 406
    functionName: redis_init
    functionSourceFile: /src/unbound/cachedb/redis.c
    functionUses: 0
    functionsReached:
    - log_err
    - redis_connect
    - verbose
    - lock_basic_init
    - redis_command
    - lock_protect
    - freeReplyObject
    - set_timeout
    - calloc
    - moddata_clean
    linkageType: ''
    returnType: int
    signature: int redis_init(struct module_env* env, struct cachedb_env* cachedb_env)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/cachedb/redis.c:415,1
    - Dst: moddata_clean
      Src: /src/unbound/cachedb/redis.c:416,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - env
    - cachedb_env
    argTypes:
    - struct module_env*
    - struct cachedb_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 408
    functionDepth: 2
    functionLinenumber: 408
    functionLinenumberEnd: 417
    functionName: redis_deinit
    functionSourceFile: /src/unbound/cachedb/redis.c
    functionUses: 0
    functionsReached:
    - moddata_clean
    - verbose
    linkageType: ''
    returnType: void
    signature: void redis_deinit(struct module_env* env, struct cachedb_env* cachedb_env)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/cachedb/redis.c:445,1
    - Dst: redis_connect
      Src: /src/unbound/cachedb/redis.c:457,1
    - Dst: redis_connect
      Src: /src/unbound/cachedb/redis.c:472,1
    - Dst: redisCommand
      Src: /src/unbound/cachedb/redis.c:492,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:496,1
    - Dst: redisFree
      Src: /src/unbound/cachedb/redis.c:498,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:506,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 6
    argNames:
    - env
    - cachedb_env
    - command
    - data
    - data_len
    - write
    argTypes:
    - struct module_env*
    - struct cachedb_env*
    - char*
    - uint8_t*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 431
    functionDepth: 3
    functionLinenumber: 431
    functionLinenumberEnd: 510
    functionName: redis_command
    functionSourceFile: /src/unbound/cachedb/redis.c
    functionUses: 1
    functionsReached:
    - log_err
    - redis_connect
    - redisCommand
    - log_assert
    - redisFree
    linkageType: ''
    returnType: redisReply
    signature: "redisReply *\nredis_command(struct module_env* env, struct cachedb_env*
      cachedb_env,\n\tconst char* command, const uint8_t* data, size_t data_len, int
      write)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/cachedb/redis.c:528,1
    - Dst: snprintf
      Src: /src/unbound/cachedb/redis.c:530,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:532,1
    - Dst: redis_command
      Src: /src/unbound/cachedb/redis.c:536,1
    - Dst: verbose
      Src: /src/unbound/cachedb/redis.c:541,1
    - Dst: verbose
      Src: /src/unbound/cachedb/redis.c:544,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/cachedb/redis.c:546,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:547,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/cachedb/redis.c:551,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/cachedb/redis.c:552,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/cachedb/redis.c:553,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:559,1
    - Dst: freeReplyObject
      Src: /src/unbound/cachedb/redis.c:563,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 34
    argCount: 4
    argNames:
    - env
    - cachedb_env
    - key
    - result_buffer
    argTypes:
    - struct module_env*
    - struct cachedb_env*
    - char*
    - struct sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 565
      start: 512
    functionDepth: 5
    functionLinenumber: 512
    functionLinenumberEnd: 565
    functionName: redis_lookup
    functionSourceFile: /src/unbound/cachedb/redis.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - log_err
    - sldns_buffer_write
    - verbose
    - snprintf
    - sldns_buffer_flip
    - sldns_buffer_clear
    - redis_command
    - freeReplyObject
    linkageType: ''
    returnType: int
    signature: "int redis_lookup(struct module_env* env, struct cachedb_env* cachedb_env,\n\tchar*
      key, struct sldns_buffer* result_buffer)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/cachedb/redis.c:593,1
    - Dst: snprintf
      Src: /src/unbound/cachedb/redis.c:595,1
    - Dst: verbose
      Src: /src/unbound/cachedb/redis.c:599,1
    - Dst: snprintf
      Src: /src/unbound/cachedb/redis.c:601,1
    - Dst: verbose
      Src: /src/unbound/cachedb/redis.c:607,1
    - Dst: snprintf
      Src: /src/unbound/cachedb/redis.c:610,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:616,1
    - Dst: redis_command
      Src: /src/unbound/cachedb/redis.c:620,1
    - Dst: verbose
      Src: /src/unbound/cachedb/redis.c:622,1
    - Dst: log_err
      Src: /src/unbound/cachedb/redis.c:626,1
    - Dst: freeReplyObject
      Src: /src/unbound/cachedb/redis.c:629,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 6
    argNames:
    - env
    - cachedb_env
    - key
    - data
    - data_len
    - ttl
    argTypes:
    - struct module_env*
    - struct cachedb_env*
    - char*
    - uint8_t*
    - size_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 567
    functionDepth: 4
    functionLinenumber: 567
    functionLinenumberEnd: 631
    functionName: redis_store
    functionSourceFile: /src/unbound/cachedb/redis.c
    functionUses: 0
    functionsReached:
    - log_err
    - verbose
    - snprintf
    - redis_command
    - freeReplyObject
    linkageType: ''
    returnType: void
    signature: "void redis_store(struct module_env* env, struct cachedb_env* cachedb_env,\n\tchar*
      key, uint8_t* data, size_t data_len, time_t ttl)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: GetLastError
      Src: /src/unbound/dynlibmod/dynlibmod.c:18,1
    - Dst: FormatMessageA
      Src: /src/unbound/dynlibmod/dynlibmod.c:24,1
    - Dst: MAKELANGID
      Src: /src/unbound/dynlibmod/dynlibmod.c:28,1
    - Dst: log_err
      Src: /src/unbound/dynlibmod/dynlibmod.c:34,1
    - Dst: LocalFree
      Src: /src/unbound/dynlibmod/dynlibmod.c:35,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 38
      start: 17
    functionDepth: 1
    functionLinenumber: 17
    functionLinenumberEnd: 38
    functionName: log_dlerror
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached:
    - GetLastError
    - log_err
    - MAKELANGID
    - LocalFree
    - FormatMessageA
    linkageType: ''
    returnType: void
    signature: void log_dlerror()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LoadLibrary
      Src: /src/unbound/dynlibmod/dynlibmod.c:41,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 42
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 42
    functionName: open_library
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached:
    - LoadLibrary
    linkageType: ''
    returnType: HMODULE
    signature: HMODULE open_library(const char* fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - fname
    - handle
    argTypes:
    - char*
    - __DYNMOD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 47
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 47
    functionName: close_library
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void close_library(const char* fname, __DYNMOD handle)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/dynlibmod/dynlibmod.c:54,1
    - Dst: dlerror
      Src: /src/unbound/dynlibmod/dynlibmod.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 55
    functionName: log_dlerror
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached:
    - dlerror
    - log_err
    linkageType: ''
    returnType: void
    signature: void log_dlerror()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dlopen
      Src: /src/unbound/dynlibmod/dynlibmod.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 59
    functionName: open_library
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached:
    - dlopen
    linkageType: ''
    returnType: void
    signature: void * open_library(const char* fname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dlclose
      Src: /src/unbound/dynlibmod/dynlibmod.c:63,1
    - Dst: log_err
      Src: /src/unbound/dynlibmod/dynlibmod.c:64,1
    - Dst: strerror
      Src: /src/unbound/dynlibmod/dynlibmod.c:64,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - fname
    - handle
    argTypes:
    - char*
    - __DYNMOD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 66
    functionName: close_library
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached:
    - log_err
    - strerror
    - dlclose
    linkageType: ''
    returnType: void
    signature: void close_library(const char* fname, __DYNMOD handle)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/dynlibmod/dynlibmod.c:76,1
    - Dst: log_err
      Src: /src/unbound/dynlibmod/dynlibmod.c:81,1
    - Dst: log_err
      Src: /src/unbound/dynlibmod/dynlibmod.c:93,1
    - Dst: verbose
      Src: /src/unbound/dynlibmod/dynlibmod.c:98,1
    - Dst: open_library
      Src: /src/unbound/dynlibmod/dynlibmod.c:99,1
    - Dst: log_dlerror
      Src: /src/unbound/dynlibmod/dynlibmod.c:102,1
    - Dst: log_err
      Src: /src/unbound/dynlibmod/dynlibmod.c:103,1
    - Dst: __LOADSYM
      Src: /src/unbound/dynlibmod/dynlibmod.c:112,1
    - Dst: log_dlerror
      Src: /src/unbound/dynlibmod/dynlibmod.c:114,1
    - Dst: log_err
      Src: /src/unbound/dynlibmod/dynlibmod.c:115,1
    - Dst: __LOADSYM
      Src: /src/unbound/dynlibmod/dynlibmod.c:120,1
    - Dst: log_dlerror
      Src: /src/unbound/dynlibmod/dynlibmod.c:122,1
    - Dst: log_err
      Src: /src/unbound/dynlibmod/dynlibmod.c:123,1
    - Dst: __LOADSYM
      Src: /src/unbound/dynlibmod/dynlibmod.c:128,1
    - Dst: log_dlerror
      Src: /src/unbound/dynlibmod/dynlibmod.c:130,1
    - Dst: log_err
      Src: /src/unbound/dynlibmod/dynlibmod.c:131,1
    - Dst: __LOADSYM
      Src: /src/unbound/dynlibmod/dynlibmod.c:136,1
    - Dst: log_dlerror
      Src: /src/unbound/dynlibmod/dynlibmod.c:138,1
    - Dst: log_err
      Src: /src/unbound/dynlibmod/dynlibmod.c:139,1
    - Dst: __LOADSYM
      Src: /src/unbound/dynlibmod/dynlibmod.c:144,1
    - Dst: log_dlerror
      Src: /src/unbound/dynlibmod/dynlibmod.c:146,1
    - Dst: log_err
      Src: /src/unbound/dynlibmod/dynlibmod.c:147,1
    - Dst: __LOADSYM
      Src: /src/unbound/dynlibmod/dynlibmod.c:152,1
    - Dst: log_dlerror
      Src: /src/unbound/dynlibmod/dynlibmod.c:154,1
    - Dst: log_err
      Src: /src/unbound/dynlibmod/dynlibmod.c:155,1
    - Dst: struct dynlibmod_env*::func_init
      Src: /src/unbound/dynlibmod/dynlibmod.c:163,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 75
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 73
    functionDepth: 2
    functionLinenumber: 73
    functionLinenumberEnd: 164
    functionName: dynlibmod_init
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached:
    - log_err
    - open_library
    - verbose
    - log_dlerror
    - calloc
    - __LOADSYM
    - struct dynlibmod_env*::func_init
    linkageType: ''
    returnType: int
    signature: int dynlibmod_init(struct module_env* env, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct dynlibmod_env*::func_deinit
      Src: /src/unbound/dynlibmod/dynlibmod.c:171,1
    - Dst: close_library
      Src: /src/unbound/dynlibmod/dynlibmod.c:172,1
    - Dst: free
      Src: /src/unbound/dynlibmod/dynlibmod.c:175,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 176
    functionName: dynlibmod_deinit
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached:
    - close_library
    - struct dynlibmod_env*::func_deinit
    - free
    linkageType: ''
    returnType: void
    signature: void dynlibmod_deinit(struct module_env* env, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dynlibmod_env*::func_operate
      Src: /src/unbound/dynlibmod/dynlibmod.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - qstate
    - event
    - id
    - outbound
    argTypes:
    - struct module_qstate*
    - enum module_ev
    - int
    - struct outbound_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 184
    functionName: dynlibmod_operate
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached:
    - struct dynlibmod_env*::func_operate
    linkageType: ''
    returnType: void
    signature: "void dynlibmod_operate(struct module_qstate* qstate, enum module_ev
      event,\n    int id, struct outbound_entry* outbound)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dynlibmod_env*::func_inform
      Src: /src/unbound/dynlibmod/dynlibmod.c:191,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - qstate
    - id
    - super
    argTypes:
    - struct module_qstate*
    - int
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 192
    functionName: dynlibmod_inform_super
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached:
    - struct dynlibmod_env*::func_inform
    linkageType: ''
    returnType: void
    signature: "void dynlibmod_inform_super(struct module_qstate* qstate, int id,\n
      \   struct module_qstate* super)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct dynlibmod_env*::func_clear
      Src: /src/unbound/dynlibmod/dynlibmod.c:198,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 199
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 199
    functionName: dynlibmod_clear
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached:
    - struct dynlibmod_env*::func_clear
    linkageType: ''
    returnType: void
    signature: void dynlibmod_clear(struct module_qstate* qstate, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/dynlibmod/dynlibmod.c:205,1
    - Dst: struct dynlibmod_env*::func_get_mem
      Src: /src/unbound/dynlibmod/dynlibmod.c:209,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 211
    functionName: dynlibmod_get_mem
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached:
    - struct dynlibmod_env*::func_get_mem
    - verbose
    linkageType: ''
    returnType: size_t
    signature: size_t dynlibmod_get_mem(struct module_env* env, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 11
    argNames:
    - qinfo
    - qstate
    - rep
    - rcode
    - edns
    - opt_list_out
    - repinfo
    - region
    - start_time
    - id
    - callback
    argTypes:
    - struct query_info*
    - struct module_qstate*
    - struct reply_info*
    - int
    - struct edns_data*
    - struct edns_option**
    - struct comm_reply*
    - struct regional*
    - struct timeval*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 220
    functionName: dynlib_inplace_cb_reply_generic
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int dynlib_inplace_cb_reply_generic(struct query_info* qinfo,\n    struct
      module_qstate* qstate, struct reply_info* rep, int rcode,\n    struct edns_data*
      edns, struct edns_option** opt_list_out,\n    struct comm_reply* repinfo, struct
      regional* region,\n    struct timeval* start_time, int id, void* callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 10
    argNames:
    - qinfo
    - flags
    - qstate
    - addr
    - addrlen
    - zone
    - zonelen
    - region
    - id
    - callback
    argTypes:
    - struct query_info*
    - uint16_t
    - struct module_qstate*
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - struct regional*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 228
    functionName: dynlib_inplace_cb_query_generic
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int dynlib_inplace_cb_query_generic(struct query_info* qinfo, uint16_t
      flags,\n    struct module_qstate* qstate, struct sockaddr_storage* addr,\n    socklen_t
      addrlen, uint8_t* zone, size_t zonelen, struct regional* region,\n    int id,
      void* callback)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - qstate
    - id
    - cb_args
    argTypes:
    - struct module_qstate*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 234
    functionName: dynlib_inplace_cb_edns_back_parsed
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int dynlib_inplace_cb_edns_back_parsed(struct module_qstate* qstate,\n
      \   int id, void* cb_args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - qstate
    - response
    - id
    - cb_args
    argTypes:
    - struct module_qstate*
    - struct dns_msg*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 240
    functionName: dynlib_inplace_cb_query_response
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int dynlib_inplace_cb_query_response(struct module_qstate* qstate,\n
      \   struct dns_msg* response, int id, void* cb_args)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/dynlibmod/dynlibmod.c:245,1
    - Dst: log_err
      Src: /src/unbound/dynlibmod/dynlibmod.c:247,1
    - Dst: inplace_cb_register
      Src: /src/unbound/dynlibmod/dynlibmod.c:253,1
    - Dst: inplace_cb_register
      Src: /src/unbound/dynlibmod/dynlibmod.c:255,1
    - Dst: inplace_cb_register
      Src: /src/unbound/dynlibmod/dynlibmod.c:257,1
    - Dst: inplace_cb_register
      Src: /src/unbound/dynlibmod/dynlibmod.c:259,1
    - Dst: free
      Src: /src/unbound/dynlibmod/dynlibmod.c:261,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 5
    argNames:
    - cb
    - type
    - cbarg
    - env
    - id
    argTypes:
    - void*
    - enum inplace_cb_list_type
    - void*
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 264
    functionName: inplace_cb_register_wrapped
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached:
    - malloc
    - log_err
    - inplace_cb_register
    - free
    linkageType: ''
    returnType: int
    signature: "int inplace_cb_register_wrapped(void* cb, enum inplace_cb_list_type
      type, void* cbarg,\n    struct module_env* env, int id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/dynlibmod/dynlibmod.c:276,1
    - Dst: free
      Src: /src/unbound/dynlibmod/dynlibmod.c:277,1
    - Dst: free
      Src: /src/unbound/dynlibmod/dynlibmod.c:282,1
    - Dst: free
      Src: /src/unbound/dynlibmod/dynlibmod.c:283,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - env
    - type
    - id
    argTypes:
    - struct module_env*
    - enum inplace_cb_list_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 292
    functionName: inplace_cb_delete_wrapped
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: "void inplace_cb_delete_wrapped(struct module_env* env, enum inplace_cb_list_type
      type,\n    int id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 307
    functionName: dynlibmod_get_funcblock
    functionSourceFile: /src/unbound/dynlibmod/dynlibmod.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct module_func_block
    signature: struct module_func_block * dynlibmod_get_funcblock(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/dynlibmod/examples/helloworld.c:41,1
    - Dst: struct dynlibmod_env*::inplace_cb_register_wrapped
      Src: /src/unbound/dynlibmod/examples/helloworld.c:43,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 40
    functionDepth: 2
    functionLinenumber: 40
    functionLinenumberEnd: 49
    functionName: init
    functionSourceFile: /src/unbound/dynlibmod/examples/helloworld.c
    functionUses: 149
    functionsReached:
    - log_info
    - struct dynlibmod_env*::inplace_cb_register_wrapped
    linkageType: ''
    returnType: EXPORT
    signature: EXPORT init(struct module_env* env, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/dynlibmod/examples/helloworld.c:54,1
    - Dst: struct dynlibmod_env*::inplace_cb_delete_wrapped
      Src: /src/unbound/dynlibmod/examples/helloworld.c:56,1
    - Dst: free
      Src: /src/unbound/dynlibmod/examples/helloworld.c:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 53
    functionDepth: 2
    functionLinenumber: 53
    functionLinenumberEnd: 58
    functionName: deinit
    functionSourceFile: /src/unbound/dynlibmod/examples/helloworld.c
    functionUses: 7
    functionsReached:
    - free
    - log_info
    - struct dynlibmod_env*::inplace_cb_delete_wrapped
    linkageType: ''
    returnType: EXPORT
    signature: EXPORT deinit(struct module_env* env, int id)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/dynlibmod/examples/helloworld.c:64,1
    - Dst: log_info
      Src: /src/unbound/dynlibmod/examples/helloworld.c:65,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/dynlibmod/examples/helloworld.c:67,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/dynlibmod/examples/helloworld.c:69,1
    - Dst: calloc
      Src: /src/unbound/dynlibmod/examples/helloworld.c:75,1
    - Dst: log_err
      Src: /src/unbound/dynlibmod/examples/helloworld.c:80,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 4
    argNames:
    - qstate
    - event
    - id
    - entry
    argTypes:
    - struct module_qstate*
    - enum module_ev
    - int
    - struct outbound_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 88
    functionName: operate
    functionSourceFile: /src/unbound/dynlibmod/examples/helloworld.c
    functionUses: 2
    functionsReached:
    - log_err
    - sldns_rr_descript
    - log_info
    - calloc
    - sldns_lookup_by_id
    linkageType: ''
    returnType: EXPORT
    signature: "EXPORT operate(struct module_qstate* qstate, enum module_ev event,\n
      \                   int id, struct outbound_entry* entry)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/dynlibmod/examples/helloworld.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - qstate
    - id
    - super
    argTypes:
    - struct module_qstate*
    - int
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: inform_super
    functionSourceFile: /src/unbound/dynlibmod/examples/helloworld.c
    functionUses: 2
    functionsReached:
    - log_info
    linkageType: ''
    returnType: EXPORT
    signature: "EXPORT inform_super(struct module_qstate* qstate, int id,\n                         struct
      module_qstate* super)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/dynlibmod/examples/helloworld.c:101,1
    - Dst: free
      Src: /src/unbound/dynlibmod/examples/helloworld.c:104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 100
    functionDepth: 1
    functionLinenumber: 100
    functionLinenumberEnd: 107
    functionName: clear
    functionSourceFile: /src/unbound/dynlibmod/examples/helloworld.c
    functionUses: 70
    functionsReached:
    - free
    - log_info
    linkageType: ''
    returnType: EXPORT
    signature: EXPORT clear(struct module_qstate* qstate, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/dynlibmod/examples/helloworld.c:112,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 114
    functionName: get_mem
    functionSourceFile: /src/unbound/dynlibmod/examples/helloworld.c
    functionUses: 41
    functionsReached:
    - log_info
    linkageType: ''
    returnType: EXPORT
    signature: EXPORT get_mem(struct module_env* env, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/dynlibmod/examples/helloworld.c:123,1
    - Dst: log_info
      Src: /src/unbound/dynlibmod/examples/helloworld.c:126,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 11
    argNames:
    - qinfo
    - qstate
    - rep
    - rcode
    - edns
    - opt_list_out
    - repinfo
    - region
    - start_time
    - id
    - callback
    argTypes:
    - struct query_info*
    - struct module_qstate*
    - struct reply_info*
    - int
    - struct edns_data*
    - struct edns_option**
    - struct comm_reply*
    - struct regional*
    - struct timeval*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 132
    functionName: reply_callback
    functionSourceFile: /src/unbound/dynlibmod/examples/helloworld.c
    functionUses: 0
    functionsReached:
    - log_info
    linkageType: ''
    returnType: int
    signature: "int reply_callback(struct query_info* qinfo,\n    struct module_qstate*
      qstate, struct reply_info* rep, int rcode,\n    struct edns_data* edns, struct
      edns_option** opt_list_out,\n    struct comm_reply* repinfo, struct regional*
      region,\n    struct timeval* start_time, int id, void* callback)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/winrc/unbound-service-install.c:54,1
    - Dst: wsvc_rc_start
      Src: /src/unbound/winrc/unbound-service-install.c:55,1
    - Dst: fprintf
      Src: /src/unbound/winrc/unbound-service-install.c:59,1
    - Dst: printf
      Src: /src/unbound/winrc/unbound-service-install.c:60,1
    - Dst: wsvc_install
      Src: /src/unbound/winrc/unbound-service-install.c:63,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 65
    functionName: main
    functionSourceFile: /src/unbound/winrc/unbound-service-install.c
    functionUses: 24
    functionsReached:
    - strcmp
    - wsvc_install
    - printf
    - fprintf
    - wsvc_rc_start
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/winrc/unbound-service-remove.c:54,1
    - Dst: wsvc_rc_stop
      Src: /src/unbound/winrc/unbound-service-remove.c:55,1
    - Dst: fprintf
      Src: /src/unbound/winrc/unbound-service-remove.c:59,1
    - Dst: printf
      Src: /src/unbound/winrc/unbound-service-remove.c:60,1
    - Dst: wsvc_remove
      Src: /src/unbound/winrc/unbound-service-remove.c:63,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 65
    functionName: main
    functionSourceFile: /src/unbound/winrc/unbound-service-remove.c
    functionUses: 24
    functionsReached:
    - wsvc_rc_stop
    - strcmp
    - printf
    - fprintf
    - wsvc_remove
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SetServiceStatus
      Src: /src/unbound/winrc/win_svc.c:96,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - state
    - exitcode
    - wait
    argTypes:
    - DWORD
    - DWORD
    - DWORD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 97
    functionName: report_status
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 0
    functionsReached:
    - SetServiceStatus
    linkageType: ''
    returnType: void
    signature: void report_status(DWORD state, DWORD exitcode, DWORD wait)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: report_status
      Src: /src/unbound/winrc/win_svc.c:108,1
    - Dst: WSASetEvent
      Src: /src/unbound/winrc/win_svc.c:111,1
    - Dst: log_err
      Src: /src/unbound/winrc/win_svc.c:112,1
    - Dst: wsa_strerror
      Src: /src/unbound/winrc/win_svc.c:113,1
    - Dst: WSAGetLastError
      Src: /src/unbound/winrc/win_svc.c:113,1
    - Dst: report_status
      Src: /src/unbound/winrc/win_svc.c:118,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - ctrl
    argTypes:
    - DWORD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 104
    functionDepth: 1
    functionLinenumber: 104
    functionLinenumberEnd: 120
    functionName: hdlr
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 0
    functionsReached:
    - log_err
    - wsa_strerror
    - WSASetEvent
    - report_status
    - WSAGetLastError
    linkageType: ''
    returnType: void
    signature: void hdlr(DWORD ctrl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: wsvc_err2str
      Src: /src/unbound/winrc/win_svc.c:135,1
    - Dst: GetLastError
      Src: /src/unbound/winrc/win_svc.c:135,1
    - Dst: snprintf
      Src: /src/unbound/winrc/win_svc.c:136,1
    - Dst: RegisterEventSource
      Src: /src/unbound/winrc/win_svc.c:137,1
    - Dst: ReportEvent
      Src: /src/unbound/winrc/win_svc.c:139,1
    - Dst: DeregisterEventSource
      Src: /src/unbound/winrc/win_svc.c:148,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 149
    functionName: reportev
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 0
    functionsReached:
    - GetLastError
    - wsvc_err2str
    - ReportEvent
    - snprintf
    - RegisterEventSource
    - DeregisterEventSource
    linkageType: ''
    returnType: void
    signature: void reportev(const char* str)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: RegOpenKeyEx
      Src: /src/unbound/winrc/win_svc.c:167,1
    - Dst: reportev
      Src: /src/unbound/winrc/win_svc.c:171,1
    - Dst: RegQueryValueEx
      Src: /src/unbound/winrc/win_svc.c:174,1
    - Dst: RegCloseKey
      Src: /src/unbound/winrc/win_svc.c:175,1
    - Dst: reportev
      Src: /src/unbound/winrc/win_svc.c:176,1
    - Dst: reportev
      Src: /src/unbound/winrc/win_svc.c:180,1
    - Dst: strdup
      Src: /src/unbound/winrc/win_svc.c:186,1
    - Dst: reportev
      Src: /src/unbound/winrc/win_svc.c:187,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - key
    - name
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 158
    functionDepth: 3
    functionLinenumber: 158
    functionLinenumberEnd: 190
    functionName: lookup_reg_str
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 0
    functionsReached:
    - RegCloseKey
    - strdup
    - RegOpenKeyEx
    - RegQueryValueEx
    - reportev
    linkageType: ''
    returnType: char
    signature: 'char *

      lookup_reg_str(const char* key, const char* name)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: RegOpenKeyEx
      Src: /src/unbound/winrc/win_svc.c:207,1
    - Dst: reportev
      Src: /src/unbound/winrc/win_svc.c:211,1
    - Dst: RegQueryValueEx
      Src: /src/unbound/winrc/win_svc.c:214,1
    - Dst: RegCloseKey
      Src: /src/unbound/winrc/win_svc.c:215,1
    - Dst: reportev
      Src: /src/unbound/winrc/win_svc.c:216,1
    - Dst: reportev
      Src: /src/unbound/winrc/win_svc.c:220,1
    - Dst: atoi
      Src: /src/unbound/winrc/win_svc.c:226,1
    - Dst: memmove
      Src: /src/unbound/winrc/win_svc.c:229,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 2
    argNames:
    - key
    - name
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 198
    functionDepth: 3
    functionLinenumber: 198
    functionLinenumberEnd: 233
    functionName: lookup_reg_int
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 0
    functionsReached:
    - RegCloseKey
    - memmove
    - atoi
    - RegOpenKeyEx
    - RegQueryValueEx
    - reportev
    linkageType: ''
    returnType: int
    signature: int lookup_reg_int(const char* key, const char* name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: WaitForSingleObject
      Src: /src/unbound/winrc/win_svc.c:246,1
    - Dst: report_status
      Src: /src/unbound/winrc/win_svc.c:250,1
    - Dst: verbose
      Src: /src/unbound/winrc/win_svc.c:252,1
    - Dst: GetExitCodeProcess
      Src: /src/unbound/winrc/win_svc.c:256,1
    - Dst: log_err
      Src: /src/unbound/winrc/win_svc.c:257,1
    - Dst: verbose
      Src: /src/unbound/winrc/win_svc.c:260,1
    - Dst: log_info
      Src: /src/unbound/winrc/win_svc.c:262,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - pinfo
    argTypes:
    - PROCESS_INFORMATION*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 264
    functionName: waitforubanchor
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 0
    functionsReached:
    - log_err
    - WaitForSingleObject
    - verbose
    - report_status
    - log_info
    - GetExitCodeProcess
    linkageType: ''
    returnType: void
    signature: void waitforubanchor(PROCESS_INFORMATION* pinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lookup_reg_str
      Src: /src/unbound/winrc/win_svc.c:274,1
    - Dst: strlen
      Src: /src/unbound/winrc/win_svc.c:275,1
    - Dst: memset
      Src: /src/unbound/winrc/win_svc.c:278,1
    - Dst: memset
      Src: /src/unbound/winrc/win_svc.c:279,1
    - Dst: verbose
      Src: /src/unbound/winrc/win_svc.c:281,1
    - Dst: report_status
      Src: /src/unbound/winrc/win_svc.c:282,1
    - Dst: CreateProcess
      Src: /src/unbound/winrc/win_svc.c:283,1
    - Dst: log_err
      Src: /src/unbound/winrc/win_svc.c:285,1
    - Dst: waitforubanchor
      Src: /src/unbound/winrc/win_svc.c:287,1
    - Dst: CloseHandle
      Src: /src/unbound/winrc/win_svc.c:288,1
    - Dst: CloseHandle
      Src: /src/unbound/winrc/win_svc.c:289,1
    - Dst: free
      Src: /src/unbound/winrc/win_svc.c:292,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 270
    functionDepth: 4
    functionLinenumber: 270
    functionLinenumberEnd: 293
    functionName: call_root_update
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 0
    functionsReached:
    - log_err
    - lookup_reg_str
    - waitforubanchor
    - CloseHandle
    - verbose
    - report_status
    - free
    - strlen
    - memset
    - CreateProcess
    linkageType: ''
    returnType: void
    signature: void call_root_update(void)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: lookup_reg_str
      Src: /src/unbound/winrc/win_svc.c:310,1
    - Dst: strdup
      Src: /src/unbound/winrc/win_svc.c:312,1
    - Dst: fatal_exit
      Src: /src/unbound/winrc/win_svc.c:313,1
    - Dst: daemon_init
      Src: /src/unbound/winrc/win_svc.c:318,1
    - Dst: report_status
      Src: /src/unbound/winrc/win_svc.c:320,1
    - Dst: config_create
      Src: /src/unbound/winrc/win_svc.c:323,1
    - Dst: config_read
      Src: /src/unbound/winrc/win_svc.c:325,1
    - Dst: log_err
      Src: /src/unbound/winrc/win_svc.c:327,1
    - Dst: log_warn
      Src: /src/unbound/winrc/win_svc.c:330,1
    - Dst: config_auto_slab_values
      Src: /src/unbound/winrc/win_svc.c:331,1
    - Dst: report_status
      Src: /src/unbound/winrc/win_svc.c:333,1
    - Dst: verbose
      Src: /src/unbound/winrc/win_svc.c:335,1
    - Dst: w_config_adjust_directory
      Src: /src/unbound/winrc/win_svc.c:338,1
    - Dst: chdir
      Src: /src/unbound/winrc/win_svc.c:341,1
    - Dst: log_err
      Src: /src/unbound/winrc/win_svc.c:342,1
    - Dst: strerror
      Src: /src/unbound/winrc/win_svc.c:343,1
    - Dst: log_warn
      Src: /src/unbound/winrc/win_svc.c:346,1
    - Dst: verbose
      Src: /src/unbound/winrc/win_svc.c:348,1
    - Dst: log_init
      Src: /src/unbound/winrc/win_svc.c:350,1
    - Dst: report_status
      Src: /src/unbound/winrc/win_svc.c:351,1
    - Dst: verbose
      Src: /src/unbound/winrc/win_svc.c:352,1
    - Dst: daemon_apply_cfg
      Src: /src/unbound/winrc/win_svc.c:353,1
    - Dst: report_status
      Src: /src/unbound/winrc/win_svc.c:355,1
    - Dst: daemon_privileged
      Src: /src/unbound/winrc/win_svc.c:357,1
    - Dst: fatal_exit
      Src: /src/unbound/winrc/win_svc.c:358,1
    - Dst: daemon_remote_create
      Src: /src/unbound/winrc/win_svc.c:360,1
    - Dst: log_err
      Src: /src/unbound/winrc/win_svc.c:361,1
    - Dst: daemon_delete
      Src: /src/unbound/winrc/win_svc.c:362,1
    - Dst: config_delete
      Src: /src/unbound/winrc/win_svc.c:363,1
    - Dst: listen_sslctx_create
      Src: /src/unbound/winrc/win_svc.c:367,1
    - Dst: fatal_exit
      Src: /src/unbound/winrc/win_svc.c:373,1
    - Dst: cfg_has_https
      Src: /src/unbound/winrc/win_svc.c:376,1
    - Dst: listen_sslctx_create
      Src: /src/unbound/winrc/win_svc.c:377,1
    - Dst: fatal_exit
      Src: /src/unbound/winrc/win_svc.c:383,1
    - Dst: cfg_has_quic
      Src: /src/unbound/winrc/win_svc.c:388,1
    - Dst: quic_sslctx_create
      Src: /src/unbound/winrc/win_svc.c:389,1
    - Dst: fatal_exit
      Src: /src/unbound/winrc/win_svc.c:391,1
    - Dst: connect_sslctx_create
      Src: /src/unbound/winrc/win_svc.c:396,1
    - Dst: fatal_exit
      Src: /src/unbound/winrc/win_svc.c:398,1
    - Dst: report_status
      Src: /src/unbound/winrc/win_svc.c:402,1
    - Dst: verbose
      Src: /src/unbound/winrc/win_svc.c:403,1
    - Dst: daemon_open_shared_ports
      Src: /src/unbound/winrc/win_svc.c:404,1
    - Dst: verbose
      Src: /src/unbound/winrc/win_svc.c:405,1
    - Dst: report_status
      Src: /src/unbound/winrc/win_svc.c:406,1
    CyclomaticComplexity: 32
    EdgeCount: 32
    ICount: 85
    argCount: 3
    argNames:
    - r
    - d
    - c
    argTypes:
    - int
    - struct daemon**
    - struct config_file**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 303
    functionDepth: 6
    functionLinenumber: 303
    functionLinenumberEnd: 411
    functionName: service_init
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 0
    functionsReached:
    - log_init
    - config_auto_slab_values
    - daemon_remote_create
    - config_read
    - listen_sslctx_create
    - log_err
    - daemon_privileged
    - config_create
    - daemon_open_shared_ports
    - w_config_adjust_directory
    - verbose
    - strerror
    - log_warn
    - daemon_delete
    - config_delete
    - connect_sslctx_create
    - strdup
    - cfg_has_https
    - daemon_apply_cfg
    - lookup_reg_str
    - quic_sslctx_create
    - daemon_init
    - report_status
    - fatal_exit
    - cfg_has_quic
    - chdir
    linkageType: ''
    returnType: int
    signature: int service_init(int r, struct daemon** d, struct config_file** c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: daemon_cleanup
      Src: /src/unbound/winrc/win_svc.c:419,1
    - Dst: config_delete
      Src: /src/unbound/winrc/win_svc.c:420,1
    - Dst: daemon_delete
      Src: /src/unbound/winrc/win_svc.c:421,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - daemon
    - cfg
    argTypes:
    - struct daemon*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 422
      start: 416
    functionDepth: 5
    functionLinenumber: 416
    functionLinenumberEnd: 422
    functionName: service_deinit
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 0
    functionsReached:
    - config_delete
    - daemon_cleanup
    - daemon_delete
    linkageType: ''
    returnType: void
    signature: void service_deinit(struct daemon* daemon, struct config_file* cfg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 426
      start: 425
    functionDepth: 0
    functionLinenumber: 425
    functionLinenumberEnd: 426
    functionName: ATTR_UNUSED
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ATTR_UNUSED(x)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: RegisterServiceCtrlHandler
      Src: /src/unbound/winrc/win_svc.c:440,1
    - Dst: reportev
      Src: /src/unbound/winrc/win_svc.c:443,1
    - Dst: call_root_update
      Src: /src/unbound/winrc/win_svc.c:451,1
    - Dst: report_status
      Src: /src/unbound/winrc/win_svc.c:454,1
    - Dst: service_init
      Src: /src/unbound/winrc/win_svc.c:455,1
    - Dst: reportev
      Src: /src/unbound/winrc/win_svc.c:456,1
    - Dst: report_status
      Src: /src/unbound/winrc/win_svc.c:457,1
    - Dst: WSACreateEvent
      Src: /src/unbound/winrc/win_svc.c:463,1
    - Dst: log_err
      Src: /src/unbound/winrc/win_svc.c:465,1
    - Dst: wsa_strerror
      Src: /src/unbound/winrc/win_svc.c:465,1
    - Dst: WSAGetLastError
      Src: /src/unbound/winrc/win_svc.c:465,1
    - Dst: reportev
      Src: /src/unbound/winrc/win_svc.c:466,1
    - Dst: report_status
      Src: /src/unbound/winrc/win_svc.c:467,1
    - Dst: WSAResetEvent
      Src: /src/unbound/winrc/win_svc.c:470,1
    - Dst: log_err
      Src: /src/unbound/winrc/win_svc.c:471,1
    - Dst: wsa_strerror
      Src: /src/unbound/winrc/win_svc.c:471,1
    - Dst: WSAGetLastError
      Src: /src/unbound/winrc/win_svc.c:471,1
    - Dst: report_status
      Src: /src/unbound/winrc/win_svc.c:475,1
    - Dst: verbose
      Src: /src/unbound/winrc/win_svc.c:476,1
    - Dst: daemon_fork
      Src: /src/unbound/winrc/win_svc.c:480,1
    - Dst: daemon_cleanup
      Src: /src/unbound/winrc/win_svc.c:482,1
    - Dst: config_delete
      Src: /src/unbound/winrc/win_svc.c:483,1
    - Dst: service_init
      Src: /src/unbound/winrc/win_svc.c:484,1
    - Dst: reportev
      Src: /src/unbound/winrc/win_svc.c:485,1
    - Dst: report_status
      Src: /src/unbound/winrc/win_svc.c:486,1
    - Dst: verbose
      Src: /src/unbound/winrc/win_svc.c:493,1
    - Dst: report_status
      Src: /src/unbound/winrc/win_svc.c:494,1
    - Dst: WSACloseEvent
      Src: /src/unbound/winrc/win_svc.c:495,1
    - Dst: service_deinit
      Src: /src/unbound/winrc/win_svc.c:496,1
    - Dst: free
      Src: /src/unbound/winrc/win_svc.c:497,1
    - Dst: verbose
      Src: /src/unbound/winrc/win_svc.c:498,1
    - Dst: report_status
      Src: /src/unbound/winrc/win_svc.c:499,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 48
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED(argv)
    argTypes:
    - DWORD
    - LPTSTR*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 434
    functionDepth: 7
    functionLinenumber: 434
    functionLinenumberEnd: 500
    functionName: service_main
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 0
    functionsReached:
    - service_init
    - log_err
    - wsa_strerror
    - WSACreateEvent
    - verbose
    - report_status
    - daemon_fork
    - WSAGetLastError
    - daemon_cleanup
    - WSACloseEvent
    - free
    - WSAResetEvent
    - service_deinit
    - config_delete
    - call_root_update
    - reportev
    - RegisterServiceCtrlHandler
    linkageType: ''
    returnType: void
    signature: void service_main(DWORD ATTR_UNUSED(argc), LPTSTR* ATTR_UNUSED(argv))
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fclose
      Src: /src/unbound/winrc/win_svc.c:512,1
    - Dst: fopen
      Src: /src/unbound/winrc/win_svc.c:512,1
    - Dst: log_init
      Src: /src/unbound/winrc/win_svc.c:513,1
    - Dst: verbose
      Src: /src/unbound/winrc/win_svc.c:514,1
    - Dst: log_init
      Src: /src/unbound/winrc/win_svc.c:515,1
    - Dst: strdup
      Src: /src/unbound/winrc/win_svc.c:517,1
    - Dst: fatal_exit
      Src: /src/unbound/winrc/win_svc.c:518,1
    - Dst: StartServiceCtrlDispatcher
      Src: /src/unbound/winrc/win_svc.c:522,1
    - Dst: reportev
      Src: /src/unbound/winrc/win_svc.c:523,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 3
    argNames:
    - cfgfile
    - v
    - c
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 503
    functionDepth: 3
    functionLinenumber: 503
    functionLinenumberEnd: 525
    functionName: service_start
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 0
    functionsReached:
    - verbose
    - fclose
    - fatal_exit
    - log_init
    - fopen
    - reportev
    - StartServiceCtrlDispatcher
    - strdup
    linkageType: ''
    returnType: void
    signature: void service_start(const char* cfgfile, int v, int c)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/winrc/win_svc.c:530,1
    - Dst: wsvc_install
      Src: /src/unbound/winrc/win_svc.c:531,1
    - Dst: strcmp
      Src: /src/unbound/winrc/win_svc.c:532,1
    - Dst: wsvc_remove
      Src: /src/unbound/winrc/win_svc.c:533,1
    - Dst: strcmp
      Src: /src/unbound/winrc/win_svc.c:534,1
    - Dst: service_start
      Src: /src/unbound/winrc/win_svc.c:535,1
    - Dst: strcmp
      Src: /src/unbound/winrc/win_svc.c:536,1
    - Dst: wsvc_rc_start
      Src: /src/unbound/winrc/win_svc.c:537,1
    - Dst: strcmp
      Src: /src/unbound/winrc/win_svc.c:538,1
    - Dst: wsvc_rc_stop
      Src: /src/unbound/winrc/win_svc.c:539,1
    - Dst: fatal_exit
      Src: /src/unbound/winrc/win_svc.c:540,1
    - Dst: exit
      Src: /src/unbound/winrc/win_svc.c:541,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 4
    argNames:
    - wopt
    - cfgfile
    - v
    - c
    argTypes:
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 527
    functionDepth: 4
    functionLinenumber: 527
    functionLinenumberEnd: 542
    functionName: wsvc_command_option
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 1
    functionsReached:
    - exit
    - strcmp
    - wsvc_rc_stop
    - wsvc_install
    - service_start
    - fatal_exit
    - wsvc_remove
    - wsvc_rc_start
    linkageType: ''
    returnType: void
    signature: void wsvc_command_option(const char* wopt, const char* cfgfile, int
      v, int c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/winrc/win_svc.c:548,1
    - Dst: comm_base_exit
      Src: /src/unbound/winrc/win_svc.c:550,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 544
    functionDepth: 1
    functionLinenumber: 544
    functionLinenumberEnd: 551
    functionName: worker_win_stop_cb
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 0
    functionsReached:
    - verbose
    - comm_base_exit
    linkageType: ''
    returnType: void
    signature: void worker_win_stop_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),
      void* arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: WaitForSingleObject
      Src: /src/unbound/winrc/win_svc.c:557,1
    - Dst: verbose
      Src: /src/unbound/winrc/win_svc.c:558,1
    - Dst: GetExitCodeProcess
      Src: /src/unbound/winrc/win_svc.c:562,1
    - Dst: log_err
      Src: /src/unbound/winrc/win_svc.c:563,1
    - Dst: verbose
      Src: /src/unbound/winrc/win_svc.c:566,1
    - Dst: WSASetEvent
      Src: /src/unbound/winrc/win_svc.c:568,1
    - Dst: log_err
      Src: /src/unbound/winrc/win_svc.c:569,1
    - Dst: wsa_strerror
      Src: /src/unbound/winrc/win_svc.c:570,1
    - Dst: WSAGetLastError
      Src: /src/unbound/winrc/win_svc.c:570,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - pinfo
    argTypes:
    - PROCESS_INFORMATION*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 572
    functionName: waitforit
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 0
    functionsReached:
    - log_err
    - wsa_strerror
    - WSASetEvent
    - WaitForSingleObject
    - verbose
    - WSAGetLastError
    - GetExitCodeProcess
    linkageType: ''
    returnType: void
    signature: void waitforit(PROCESS_INFORMATION* pinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_thread_set
      Src: /src/unbound/winrc/win_svc.c:580,1
    - Dst: lookup_reg_str
      Src: /src/unbound/winrc/win_svc.c:581,1
    - Dst: strlen
      Src: /src/unbound/winrc/win_svc.c:582,1
    - Dst: memset
      Src: /src/unbound/winrc/win_svc.c:585,1
    - Dst: memset
      Src: /src/unbound/winrc/win_svc.c:586,1
    - Dst: verbose
      Src: /src/unbound/winrc/win_svc.c:588,1
    - Dst: CreateProcess
      Src: /src/unbound/winrc/win_svc.c:589,1
    - Dst: log_err
      Src: /src/unbound/winrc/win_svc.c:591,1
    - Dst: waitforit
      Src: /src/unbound/winrc/win_svc.c:593,1
    - Dst: CloseHandle
      Src: /src/unbound/winrc/win_svc.c:594,1
    - Dst: CloseHandle
      Src: /src/unbound/winrc/win_svc.c:595,1
    - Dst: free
      Src: /src/unbound/winrc/win_svc.c:598,1
    - Dst: CloseHandle
      Src: /src/unbound/winrc/win_svc.c:600,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 575
    functionDepth: 4
    functionLinenumber: 575
    functionLinenumberEnd: 603
    functionName: win_do_cron
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 0
    functionsReached:
    - log_err
    - lookup_reg_str
    - CloseHandle
    - verbose
    - free
    - log_thread_set
    - waitforit
    - strlen
    - memset
    - CreateProcess
    linkageType: ''
    returnType: void
    signature: 'void *

      win_do_cron(void* ATTR_UNUSED(arg))'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lookup_reg_int
      Src: /src/unbound/winrc/win_svc.c:615,1
    - Dst: memset
      Src: /src/unbound/winrc/win_svc.c:618,1
    - Dst: comm_timer_set
      Src: /src/unbound/winrc/win_svc.c:620,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 606
    functionDepth: 4
    functionLinenumber: 606
    functionLinenumberEnd: 621
    functionName: set_cron_timer
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 0
    functionsReached:
    - memset
    - comm_timer_set
    - lookup_reg_int
    linkageType: ''
    returnType: void
    signature: void set_cron_timer(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/winrc/win_svc.c:628,1
    - Dst: ub_thread_create
      Src: /src/unbound/winrc/win_svc.c:631,1
    - Dst: set_cron_timer
      Src: /src/unbound/winrc/win_svc.c:634,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 623
    functionDepth: 5
    functionLinenumber: 623
    functionLinenumberEnd: 635
    functionName: wsvc_cron_cb
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 0
    functionsReached:
    - verbose
    - set_cron_timer
    - ub_thread_create
    linkageType: ''
    returnType: void
    signature: void wsvc_cron_cb(void* arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ub_winsock_register_wsaevent
      Src: /src/unbound/winrc/win_svc.c:642,1
    - Dst: comm_base_internal
      Src: /src/unbound/winrc/win_svc.c:643,1
    - Dst: fatal_exit
      Src: /src/unbound/winrc/win_svc.c:645,1
    - Dst: comm_timer_create
      Src: /src/unbound/winrc/win_svc.c:649,1
    - Dst: fatal_exit
      Src: /src/unbound/winrc/win_svc.c:652,1
    - Dst: set_cron_timer
      Src: /src/unbound/winrc/win_svc.c:653,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 637
    functionDepth: 5
    functionLinenumber: 637
    functionLinenumberEnd: 655
    functionName: wsvc_setup_worker
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 1
    functionsReached:
    - fatal_exit
    - comm_timer_create
    - comm_base_internal
    - set_cron_timer
    - ub_winsock_register_wsaevent
    linkageType: ''
    returnType: void
    signature: void wsvc_setup_worker(struct worker* worker)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: comm_timer_delete
      Src: /src/unbound/winrc/win_svc.c:659,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - ATTR_UNUSED(worker)
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 657
    functionDepth: 0
    functionLinenumber: 657
    functionLinenumberEnd: 661
    functionName: wsvc_desetup_worker
    functionSourceFile: /src/unbound/winrc/win_svc.c
    functionUses: 1
    functionsReached:
    - comm_timer_delete
    linkageType: ''
    returnType: void
    signature: void wsvc_desetup_worker(struct worker* ATTR_UNUSED(worker))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FormatMessage
      Src: /src/unbound/winrc/w_inst.c:49,1
    - Dst: snprintf
      Src: /src/unbound/winrc/w_inst.c:53,1
    - Dst: snprintf
      Src: /src/unbound/winrc/w_inst.c:56,1
    - Dst: LocalFree
      Src: /src/unbound/winrc/w_inst.c:57,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - str
    - len
    - fixed
    - err
    argTypes:
    - char*
    - size_t
    - char*
    - DWORD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 46
    functionDepth: 2
    functionLinenumber: 46
    functionLinenumberEnd: 58
    functionName: wsvc_err2str
    functionSourceFile: /src/unbound/winrc/w_inst.c
    functionUses: 1
    functionsReached:
    - snprintf
    - FormatMessage
    - LocalFree
    linkageType: ''
    returnType: void
    signature: void wsvc_err2str(char* str, size_t len, const char* fixed, DWORD err)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: wsvc_err2str
      Src: /src/unbound/winrc/w_inst.c:65,1
    - Dst: GetLastError
      Src: /src/unbound/winrc/w_inst.c:65,1
    - Dst: fprintf
      Src: /src/unbound/winrc/w_inst.c:66,1
    - Dst: fprintf
      Src: /src/unbound/winrc/w_inst.c:67,1
    - Dst: exit
      Src: /src/unbound/winrc/w_inst.c:68,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - out
    - str
    argTypes:
    - FILE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 61
    functionDepth: 3
    functionLinenumber: 61
    functionLinenumberEnd: 69
    functionName: fatal_win
    functionSourceFile: /src/unbound/winrc/w_inst.c
    functionUses: 0
    functionsReached:
    - GetLastError
    - wsvc_err2str
    - fprintf
    - exit
    linkageType: ''
    returnType: void
    signature: void fatal_win(FILE* out, const char* str)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/unbound/winrc/w_inst.c:78,1
    - Dst: snprintf
      Src: /src/unbound/winrc/w_inst.c:79,1
    - Dst: RegCreateKeyEx
      Src: /src/unbound/winrc/w_inst.c:81,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:89,1
    - Dst: RegSetValueEx
      Src: /src/unbound/winrc/w_inst.c:92,1
    - Dst: strlen
      Src: /src/unbound/winrc/w_inst.c:96,1
    - Dst: RegCloseKey
      Src: /src/unbound/winrc/w_inst.c:98,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:99,1
    - Dst: RegSetValueEx
      Src: /src/unbound/winrc/w_inst.c:105,1
    - Dst: RegCloseKey
      Src: /src/unbound/winrc/w_inst.c:107,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:108,1
    - Dst: RegSetValueEx
      Src: /src/unbound/winrc/w_inst.c:112,1
    - Dst: strlen
      Src: /src/unbound/winrc/w_inst.c:113,1
    - Dst: RegCloseKey
      Src: /src/unbound/winrc/w_inst.c:114,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:115,1
    - Dst: RegSetValueEx
      Src: /src/unbound/winrc/w_inst.c:118,1
    - Dst: RegCloseKey
      Src: /src/unbound/winrc/w_inst.c:120,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:121,1
    - Dst: RegCloseKey
      Src: /src/unbound/winrc/w_inst.c:125,1
    - Dst: fprintf
      Src: /src/unbound/winrc/w_inst.c:126,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 2
    argNames:
    - out
    - pathname
    argTypes:
    - FILE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 72
    functionDepth: 4
    functionLinenumber: 72
    functionLinenumberEnd: 127
    functionName: event_reg_install
    functionSourceFile: /src/unbound/winrc/w_inst.c
    functionUses: 0
    functionsReached:
    - fatal_win
    - RegSetValueEx
    - RegCloseKey
    - snprintf
    - RegCreateKeyEx
    - strlen
    - fprintf
    linkageType: ''
    returnType: void
    signature: void event_reg_install(FILE* out, const char* pathname)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/unbound/winrc/w_inst.c:135,1
    - Dst: snprintf
      Src: /src/unbound/winrc/w_inst.c:136,1
    - Dst: RegCreateKeyEx
      Src: /src/unbound/winrc/w_inst.c:138,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:146,1
    - Dst: RegDeleteKey
      Src: /src/unbound/winrc/w_inst.c:147,1
    - Dst: RegCloseKey
      Src: /src/unbound/winrc/w_inst.c:148,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:149,1
    - Dst: RegCloseKey
      Src: /src/unbound/winrc/w_inst.c:151,1
    - Dst: fprintf
      Src: /src/unbound/winrc/w_inst.c:152,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - out
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 130
    functionDepth: 4
    functionLinenumber: 130
    functionLinenumberEnd: 153
    functionName: event_reg_remove
    functionSourceFile: /src/unbound/winrc/w_inst.c
    functionUses: 0
    functionsReached:
    - fatal_win
    - RegCloseKey
    - RegDeleteKey
    - snprintf
    - RegCreateKeyEx
    - fprintf
    linkageType: ''
    returnType: void
    signature: void event_reg_remove(FILE* out)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/winrc/w_inst.c:164,1
    - Dst: fprintf
      Src: /src/unbound/winrc/w_inst.c:165,1
    - Dst: exit
      Src: /src/unbound/winrc/w_inst.c:166,1
    - Dst: strlen
      Src: /src/unbound/winrc/w_inst.c:169,1
    - Dst: strlen
      Src: /src/unbound/winrc/w_inst.c:170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - out
    - str
    - maxlen
    argTypes:
    - FILE*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 171
    functionName: quote_it
    functionSourceFile: /src/unbound/winrc/w_inst.c
    functionUses: 0
    functionsReached:
    - exit
    - fprintf
    - strlen
    linkageType: ''
    returnType: void
    signature: void quote_it(FILE* out, char* str, size_t maxlen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/winrc/w_inst.c:177,1
    - Dst: strlen
      Src: /src/unbound/winrc/w_inst.c:178,1
    - Dst: strlen
      Src: /src/unbound/winrc/w_inst.c:179,1
    - Dst: fprintf
      Src: /src/unbound/winrc/w_inst.c:181,1
    - Dst: exit
      Src: /src/unbound/winrc/w_inst.c:182,1
    - Dst: snprintf
      Src: /src/unbound/winrc/w_inst.c:184,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 5
    argNames:
    - out
    - path
    - max
    - from
    - to
    argTypes:
    - FILE*
    - char*
    - size_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 174
    functionDepth: 2
    functionLinenumber: 174
    functionLinenumberEnd: 185
    functionName: change
    functionSourceFile: /src/unbound/winrc/w_inst.c
    functionUses: 4
    functionsReached:
    - exit
    - snprintf
    - fprintf
    - strlen
    linkageType: ''
    returnType: void
    signature: void change(FILE* out, char* path, size_t max, const char* from, const
      char* to)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/unbound/winrc/w_inst.c:195,1
    - Dst: GetModuleFileName
      Src: /src/unbound/winrc/w_inst.c:196,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:197,1
    - Dst: change
      Src: /src/unbound/winrc/w_inst.c:200,1
    - Dst: memmove
      Src: /src/unbound/winrc/w_inst.c:201,1
    - Dst: change
      Src: /src/unbound/winrc/w_inst.c:202,1
    - Dst: event_reg_install
      Src: /src/unbound/winrc/w_inst.c:206,1
    - Dst: quote_it
      Src: /src/unbound/winrc/w_inst.c:210,1
    - Dst: quote_it
      Src: /src/unbound/winrc/w_inst.c:214,1
    - Dst: strcat
      Src: /src/unbound/winrc/w_inst.c:215,1
    - Dst: strcat
      Src: /src/unbound/winrc/w_inst.c:216,1
    - Dst: strcat
      Src: /src/unbound/winrc/w_inst.c:219,1
    - Dst: OpenSCManager
      Src: /src/unbound/winrc/w_inst.c:220,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:221,1
    - Dst: CreateService
      Src: /src/unbound/winrc/w_inst.c:222,1
    - Dst: CloseServiceHandle
      Src: /src/unbound/winrc/w_inst.c:238,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:239,1
    - Dst: CloseServiceHandle
      Src: /src/unbound/winrc/w_inst.c:241,1
    - Dst: CloseServiceHandle
      Src: /src/unbound/winrc/w_inst.c:242,1
    - Dst: fprintf
      Src: /src/unbound/winrc/w_inst.c:243,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 2
    argNames:
    - out
    - rename
    argTypes:
    - FILE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 188
    functionDepth: 5
    functionLinenumber: 188
    functionLinenumberEnd: 244
    functionName: wsvc_install
    functionSourceFile: /src/unbound/winrc/w_inst.c
    functionUses: 2
    functionsReached:
    - GetModuleFileName
    - fatal_win
    - OpenSCManager
    - event_reg_install
    - memmove
    - strcat
    - change
    - CloseServiceHandle
    - quote_it
    - fprintf
    - CreateService
    linkageType: ''
    returnType: void
    signature: void wsvc_install(FILE* out, const char* rename)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/unbound/winrc/w_inst.c:253,1
    - Dst: OpenSCManager
      Src: /src/unbound/winrc/w_inst.c:254,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:255,1
    - Dst: OpenService
      Src: /src/unbound/winrc/w_inst.c:256,1
    - Dst: CloseServiceHandle
      Src: /src/unbound/winrc/w_inst.c:258,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:259,1
    - Dst: DeleteService
      Src: /src/unbound/winrc/w_inst.c:261,1
    - Dst: CloseServiceHandle
      Src: /src/unbound/winrc/w_inst.c:262,1
    - Dst: CloseServiceHandle
      Src: /src/unbound/winrc/w_inst.c:263,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:264,1
    - Dst: CloseServiceHandle
      Src: /src/unbound/winrc/w_inst.c:266,1
    - Dst: CloseServiceHandle
      Src: /src/unbound/winrc/w_inst.c:267,1
    - Dst: event_reg_remove
      Src: /src/unbound/winrc/w_inst.c:268,1
    - Dst: fprintf
      Src: /src/unbound/winrc/w_inst.c:269,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - out
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 248
    functionDepth: 5
    functionLinenumber: 248
    functionLinenumberEnd: 270
    functionName: wsvc_remove
    functionSourceFile: /src/unbound/winrc/w_inst.c
    functionUses: 2
    functionsReached:
    - fatal_win
    - OpenSCManager
    - DeleteService
    - CloseServiceHandle
    - event_reg_remove
    - fprintf
    - OpenService
    linkageType: ''
    returnType: void
    signature: void wsvc_remove(FILE* out)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/unbound/winrc/w_inst.c:279,1
    - Dst: OpenSCManager
      Src: /src/unbound/winrc/w_inst.c:280,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:281,1
    - Dst: OpenService
      Src: /src/unbound/winrc/w_inst.c:282,1
    - Dst: CloseServiceHandle
      Src: /src/unbound/winrc/w_inst.c:284,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:285,1
    - Dst: StartService
      Src: /src/unbound/winrc/w_inst.c:287,1
    - Dst: CloseServiceHandle
      Src: /src/unbound/winrc/w_inst.c:288,1
    - Dst: CloseServiceHandle
      Src: /src/unbound/winrc/w_inst.c:289,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:290,1
    - Dst: CloseServiceHandle
      Src: /src/unbound/winrc/w_inst.c:292,1
    - Dst: CloseServiceHandle
      Src: /src/unbound/winrc/w_inst.c:293,1
    - Dst: fprintf
      Src: /src/unbound/winrc/w_inst.c:294,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - out
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 274
    functionDepth: 4
    functionLinenumber: 274
    functionLinenumberEnd: 295
    functionName: wsvc_rc_start
    functionSourceFile: /src/unbound/winrc/w_inst.c
    functionUses: 2
    functionsReached:
    - fatal_win
    - OpenSCManager
    - StartService
    - CloseServiceHandle
    - fprintf
    - OpenService
    linkageType: ''
    returnType: void
    signature: void wsvc_rc_start(FILE* out)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/unbound/winrc/w_inst.c:305,1
    - Dst: OpenSCManager
      Src: /src/unbound/winrc/w_inst.c:306,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:307,1
    - Dst: OpenService
      Src: /src/unbound/winrc/w_inst.c:308,1
    - Dst: CloseServiceHandle
      Src: /src/unbound/winrc/w_inst.c:310,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:311,1
    - Dst: ControlService
      Src: /src/unbound/winrc/w_inst.c:313,1
    - Dst: CloseServiceHandle
      Src: /src/unbound/winrc/w_inst.c:314,1
    - Dst: CloseServiceHandle
      Src: /src/unbound/winrc/w_inst.c:315,1
    - Dst: fatal_win
      Src: /src/unbound/winrc/w_inst.c:316,1
    - Dst: CloseServiceHandle
      Src: /src/unbound/winrc/w_inst.c:318,1
    - Dst: CloseServiceHandle
      Src: /src/unbound/winrc/w_inst.c:319,1
    - Dst: fprintf
      Src: /src/unbound/winrc/w_inst.c:320,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - out
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 299
    functionDepth: 4
    functionLinenumber: 299
    functionLinenumberEnd: 321
    functionName: wsvc_rc_stop
    functionSourceFile: /src/unbound/winrc/w_inst.c
    functionUses: 2
    functionsReached:
    - fatal_win
    - OpenSCManager
    - ControlService
    - CloseServiceHandle
    - fprintf
    - OpenService
    linkageType: ''
    returnType: void
    signature: void wsvc_rc_stop(FILE* out)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/winrc/anchor-update.c:52,1
    - Dst: printf
      Src: /src/unbound/winrc/anchor-update.c:53,1
    - Dst: exit
      Src: /src/unbound/winrc/anchor-update.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 55
    functionName: usage
    functionSourceFile: /src/unbound/winrc/anchor-update.c
    functionUses: 4
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/winrc/anchor-update.c:60,1
    - Dst: exit
      Src: /src/unbound/winrc/anchor-update.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 62
    functionName: fatal
    functionSourceFile: /src/unbound/winrc/anchor-update.c
    functionUses: 0
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void fatal(const char* str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ub_resolve
      Src: /src/unbound/winrc/anchor-update.c:70,1
    - Dst: printf
      Src: /src/unbound/winrc/anchor-update.c:73,1
    - Dst: ub_strerror
      Src: /src/unbound/winrc/anchor-update.c:73,1
    - Dst: fatal
      Src: /src/unbound/winrc/anchor-update.c:74,1
    - Dst: fatal
      Src: /src/unbound/winrc/anchor-update.c:79,1
    - Dst: fatal
      Src: /src/unbound/winrc/anchor-update.c:80,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - ctx
    - domain
    argTypes:
    - struct ub_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 65
    functionDepth: 15
    functionLinenumber: 65
    functionLinenumberEnd: 82
    functionName: do_lookup
    functionSourceFile: /src/unbound/winrc/anchor-update.c
    functionUses: 1
    functionsReached:
    - ub_strerror
    - fatal
    - printf
    - ub_resolve
    linkageType: ''
    returnType: struct ub_result
    signature: 'struct ub_result *

      do_lookup(struct ub_ctx* ctx, char* domain)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/winrc/anchor-update.c:88,1
    - Dst: perror
      Src: /src/unbound/winrc/anchor-update.c:92,1
    - Dst: fatal
      Src: /src/unbound/winrc/anchor-update.c:93,1
    - Dst: sldns_wire2str_rdata_buf
      Src: /src/unbound/winrc/anchor-update.c:98,1
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/winrc/anchor-update.c:101,1
    - Dst: fprintf
      Src: /src/unbound/winrc/anchor-update.c:102,1
    - Dst: fclose
      Src: /src/unbound/winrc/anchor-update.c:105,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - result
    - file
    argTypes:
    - struct ub_result*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 106
    functionName: do_print
    functionSourceFile: /src/unbound/winrc/anchor-update.c
    functionUses: 0
    functionsReached:
    - perror
    - fatal
    - sldns_wire2str_rdata_buf
    - fclose
    - sldns_wire2str_type_buf
    - fopen
    - fprintf
    linkageType: ''
    returnType: void
    signature: void do_print(struct ub_result* result, char* file)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/winrc/anchor-update.c:115,1
    - Dst: ub_ctx_create
      Src: /src/unbound/winrc/anchor-update.c:116,1
    - Dst: fatal
      Src: /src/unbound/winrc/anchor-update.c:117,1
    - Dst: ub_ctx_add_ta_file
      Src: /src/unbound/winrc/anchor-update.c:119,1
    - Dst: printf
      Src: /src/unbound/winrc/anchor-update.c:120,1
    - Dst: ub_strerror
      Src: /src/unbound/winrc/anchor-update.c:120,1
    - Dst: fatal
      Src: /src/unbound/winrc/anchor-update.c:121,1
    - Dst: do_lookup
      Src: /src/unbound/winrc/anchor-update.c:124,1
    - Dst: ub_ctx_delete
      Src: /src/unbound/winrc/anchor-update.c:125,1
    - Dst: ub_ctx_delete
      Src: /src/unbound/winrc/anchor-update.c:128,1
    - Dst: do_print
      Src: /src/unbound/winrc/anchor-update.c:129,1
    - Dst: ub_resolve_free
      Src: /src/unbound/winrc/anchor-update.c:130,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - domain
    - file
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 109
    functionDepth: 6
    functionLinenumber: 109
    functionLinenumberEnd: 132
    functionName: do_update
    functionSourceFile: /src/unbound/winrc/anchor-update.c
    functionUses: 0
    functionsReached:
    - fatal
    - do_lookup
    - ub_ctx_create
    - printf
    - do_print
    - ub_strerror
    - ub_ctx_delete
    - ub_resolve_free
    - ub_ctx_add_ta_file
    linkageType: ''
    returnType: int
    signature: int do_update(char* domain, char* file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: usage
      Src: /src/unbound/winrc/anchor-update.c:139,1
    - Dst: do_update
      Src: /src/unbound/winrc/anchor-update.c:144,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 135
    functionDepth: 7
    functionLinenumber: 135
    functionLinenumberEnd: 152
    functionName: main
    functionSourceFile: /src/unbound/winrc/anchor-update.c
    functionUses: 24
    functionsReached:
    - usage
    - do_update
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ipsecmod_whitelist_apply_cfg
      Src: /src/unbound/ipsecmod/ipsecmod.c:63,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:68,1
    - Dst: access
      Src: /src/unbound/ipsecmod/ipsecmod.c:71,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:72,1
    - Dst: strerror
      Src: /src/unbound/ipsecmod/ipsecmod.c:73,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 2
    argNames:
    - ipsecmod_env
    - cfg
    argTypes:
    - struct ipsecmod_env*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 59
    functionDepth: 1
    functionLinenumber: 59
    functionLinenumberEnd: 77
    functionName: ipsecmod_apply_cfg
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod.c
    functionUses: 0
    functionsReached:
    - ipsecmod_whitelist_apply_cfg
    - access
    - strerror
    - log_err
    linkageType: ''
    returnType: int
    signature: int ipsecmod_apply_cfg(struct ipsecmod_env* ipsecmod_env, struct config_file*
      cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/ipsecmod/ipsecmod.c:82,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:85,1
    - Dst: ipsecmod_apply_cfg
      Src: /src/unbound/ipsecmod/ipsecmod.c:90,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 79
    functionDepth: 2
    functionLinenumber: 79
    functionLinenumberEnd: 95
    functionName: ipsecmod_init
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod.c
    functionUses: 0
    functionsReached:
    - log_err
    - calloc
    - ipsecmod_apply_cfg
    linkageType: ''
    returnType: int
    signature: int ipsecmod_init(struct module_env* env, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ipsecmod_whitelist_delete
      Src: /src/unbound/ipsecmod/ipsecmod.c:105,1
    - Dst: free
      Src: /src/unbound/ipsecmod/ipsecmod.c:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 108
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 108
    functionName: ipsecmod_deinit
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod.c
    functionUses: 0
    functionsReached:
    - free
    - ipsecmod_whitelist_delete
    linkageType: ''
    returnType: void
    signature: void ipsecmod_deinit(struct module_env* env, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/ipsecmod/ipsecmod.c:114,1
    - Dst: memset
      Src: /src/unbound/ipsecmod/ipsecmod.c:120,1
    - Dst: ipsecmod_domain_is_whitelisted
      Src: /src/unbound/ipsecmod/ipsecmod.c:122,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 111
    functionDepth: 1
    functionLinenumber: 111
    functionLinenumberEnd: 126
    functionName: ipsecmod_new
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod.c
    functionUses: 0
    functionsReached:
    - memset
    - ipsecmod_domain_is_whitelisted
    - regional_alloc
    linkageType: ''
    returnType: int
    signature: int ipsecmod_new(struct module_qstate* qstate, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 133
    functionDepth: 0
    functionLinenumber: 133
    functionLinenumberEnd: 138
    functionName: ipsecmod_error
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ipsecmod_error(struct module_qstate* qstate, int id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_query_info
      Src: /src/unbound/ipsecmod/ipsecmod.c:163,1
    - Dst: fptr_ok
      Src: /src/unbound/ipsecmod/ipsecmod.c:168,1
    - Dst: fptr_whitelist_modenv_detect_cycle
      Src: /src/unbound/ipsecmod/ipsecmod.c:168,1
    - Dst: verbose
      Src: /src/unbound/ipsecmod/ipsecmod.c:171,1
    - Dst: fptr_ok
      Src: /src/unbound/ipsecmod/ipsecmod.c:175,1
    - Dst: fptr_whitelist_modenv_attach_sub
      Src: /src/unbound/ipsecmod/ipsecmod.c:175,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:178,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 7
    argNames:
    - qstate
    - id
    - name
    - namelen
    - qtype
    - qclass
    - flags
    argTypes:
    - struct module_qstate*
    - int
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 183
    functionName: generate_request
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod.c
    functionUses: 3
    functionsReached:
    - log_err
    - fptr_whitelist_modenv_detect_cycle
    - verbose
    - log_query_info
    - fptr_whitelist_modenv_attach_sub
    - fptr_ok
    linkageType: ''
    returnType: int
    signature: "int generate_request(struct module_qstate* qstate, int id, uint8_t*
      name,\n\tsize_t namelen, uint16_t qtype, uint16_t qclass, uint16_t flags)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 10
    argCount: 2
    argNames:
    - s
    - slen
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 213
    functionName: domainname_has_safe_characters
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int domainname_has_safe_characters(char* s, size_t slen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/ipsecmod/ipsecmod.c:228,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:230,1
    - Dst: sscanf
      Src: /src/unbound/ipsecmod/ipsecmod.c:233,1
    - Dst: free
      Src: /src/unbound/ipsecmod/ipsecmod.c:235,1
    - Dst: free
      Src: /src/unbound/ipsecmod/ipsecmod.c:239,1
    - Dst: domainname_has_safe_characters
      Src: /src/unbound/ipsecmod/ipsecmod.c:242,1
    - Dst: free
      Src: /src/unbound/ipsecmod/ipsecmod.c:243,1
    - Dst: free
      Src: /src/unbound/ipsecmod/ipsecmod.c:246,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - s
    - slen
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 248
    functionName: ipseckey_has_safe_characters
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod.c
    functionUses: 0
    functionsReached:
    - domainname_has_safe_characters
    - log_err
    - free
    - calloc
    - sscanf
    linkageType: ''
    returnType: int
    signature: int ipseckey_has_safe_characters(char* s, size_t slen)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_dname
      Src: /src/unbound/ipsecmod/ipsecmod.c:274,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:277,1
    - Dst: domainname_has_safe_characters
      Src: /src/unbound/ipsecmod/ipsecmod.c:280,1
    - Dst: strlen
      Src: /src/unbound/ipsecmod/ipsecmod.c:280,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:281,1
    - Dst: free
      Src: /src/unbound/ipsecmod/ipsecmod.c:282,1
    - Dst: strlen
      Src: /src/unbound/ipsecmod/ipsecmod.c:285,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:286,1
    - Dst: free
      Src: /src/unbound/ipsecmod/ipsecmod.c:287,1
    - Dst: snprintf
      Src: /src/unbound/ipsecmod/ipsecmod.c:290,1
    - Dst: free
      Src: /src/unbound/ipsecmod/ipsecmod.c:291,1
    - Dst: snprintf
      Src: /src/unbound/ipsecmod/ipsecmod.c:295,1
    - Dst: reply_find_answer_rrset
      Src: /src/unbound/ipsecmod/ipsecmod.c:297,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:300,1
    - Dst: ntohs
      Src: /src/unbound/ipsecmod/ipsecmod.c:307,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:309,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:314,1
    - Dst: memset
      Src: /src/unbound/ipsecmod/ipsecmod.c:321,1
    - Dst: sldns_str_print
      Src: /src/unbound/ipsecmod/ipsecmod.c:325,1
    - Dst: sldns_wire2str_rdata_buf
      Src: /src/unbound/ipsecmod/ipsecmod.c:328,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:332,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:337,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:346,1
    - Dst: memset
      Src: /src/unbound/ipsecmod/ipsecmod.c:355,1
    - Dst: sldns_str_print
      Src: /src/unbound/ipsecmod/ipsecmod.c:360,1
    - Dst: sldns_wire2str_ipseckey_scan
      Src: /src/unbound/ipsecmod/ipsecmod.c:367,1
    - Dst: ipseckey_has_safe_characters
      Src: /src/unbound/ipsecmod/ipsecmod.c:374,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:376,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:383,1
    - Dst: verbose
      Src: /src/unbound/ipsecmod/ipsecmod.c:395,1
    - Dst: fork
      Src: /src/unbound/ipsecmod/ipsecmod.c:397,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:398,1
    - Dst: strerror
      Src: /src/unbound/ipsecmod/ipsecmod.c:399,1
    - Dst: execv
      Src: /src/unbound/ipsecmod/ipsecmod.c:403,1
    - Dst: fprintf
      Src: /src/unbound/ipsecmod/ipsecmod.c:404,1
    - Dst: strerror
      Src: /src/unbound/ipsecmod/ipsecmod.c:405,1
    - Dst: _exit
      Src: /src/unbound/ipsecmod/ipsecmod.c:406,1
    - Dst: waitpid
      Src: /src/unbound/ipsecmod/ipsecmod.c:409,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:412,1
    - Dst: strerror
      Src: /src/unbound/ipsecmod/ipsecmod.c:412,1
    - Dst: WIFEXITED
      Src: /src/unbound/ipsecmod/ipsecmod.c:416,1
    - Dst: WEXITSTATUS
      Src: /src/unbound/ipsecmod/ipsecmod.c:416,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 121
    argCount: 3
    argNames:
    - qstate
    - iq
    - ATTR_UNUSED(ie)
    argTypes:
    - struct module_qstate*
    - struct ipsecmod_qstate*
    - struct ipsecmod_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 258
    functionDepth: 7
    functionLinenumber: 258
    functionLinenumberEnd: 421
    functionName: call_hook
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod.c
    functionUses: 0
    functionsReached:
    - WEXITSTATUS
    - snprintf
    - ipseckey_has_safe_characters
    - memset
    - log_err
    - sldns_wire2str_dname
    - fork
    - strlen
    - execv
    - sldns_wire2str_rdata_buf
    - sldns_wire2str_ipseckey_scan
    - reply_find_answer_rrset
    - verbose
    - WIFEXITED
    - free
    - sldns_str_print
    - strerror
    - fprintf
    - domainname_has_safe_characters
    - _exit
    - waitpid
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int call_hook(struct module_qstate* qstate, struct ipsecmod_qstate*
      iq,\n\tstruct ipsecmod_env* ATTR_UNUSED(ie))"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/ipsecmod/ipsecmod.c:449,1
    - Dst: verbose
      Src: /src/unbound/ipsecmod/ipsecmod.c:451,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:467,1
    - Dst: errinf
      Src: /src/unbound/ipsecmod/ipsecmod.c:468,1
    - Dst: ipsecmod_error
      Src: /src/unbound/ipsecmod/ipsecmod.c:469,1
    - Dst: call_hook
      Src: /src/unbound/ipsecmod/ipsecmod.c:473,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:475,1
    - Dst: errinf
      Src: /src/unbound/ipsecmod/ipsecmod.c:476,1
    - Dst: ipsecmod_error
      Src: /src/unbound/ipsecmod/ipsecmod.c:477,1
    - Dst: reply_find_answer_rrset
      Src: /src/unbound/ipsecmod/ipsecmod.c:482,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:485,1
    - Dst: errinf
      Src: /src/unbound/ipsecmod/ipsecmod.c:486,1
    - Dst: ipsecmod_error
      Src: /src/unbound/ipsecmod/ipsecmod.c:487,1
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/ipsecmod/ipsecmod.c:500,1
    - Dst: dns_cache_store
      Src: /src/unbound/ipsecmod/ipsecmod.c:509,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:513,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 53
    argCount: 4
    argNames:
    - qstate
    - iq
    - ie
    - id
    argTypes:
    - struct module_qstate*
    - struct ipsecmod_qstate*
    - struct ipsecmod_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 431
    functionDepth: 8
    functionLinenumber: 431
    functionLinenumberEnd: 516
    functionName: ipsecmod_handle_query
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod.c
    functionUses: 0
    functionsReached:
    - log_err
    - ipsecmod_error
    - call_hook
    - verbose
    - reply_find_answer_rrset
    - sldns_wire2str_type_buf
    - PREFETCH_TTL_CALC
    - dns_cache_store
    - errinf
    linkageType: ''
    returnType: void
    signature: "void ipsecmod_handle_query(struct module_qstate* qstate,\n\tstruct
      ipsecmod_qstate* iq, struct ipsecmod_env* ie, int id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reply_find_answer_rrset
      Src: /src/unbound/ipsecmod/ipsecmod.c:541,1
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/ipsecmod/ipsecmod.c:546,1
    - Dst: verbose
      Src: /src/unbound/ipsecmod/ipsecmod.c:548,1
    - Dst: generate_request
      Src: /src/unbound/ipsecmod/ipsecmod.c:551,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:554,1
    - Dst: errinf
      Src: /src/unbound/ipsecmod/ipsecmod.c:555,1
    - Dst: ipsecmod_error
      Src: /src/unbound/ipsecmod/ipsecmod.c:556,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 4
    argNames:
    - qstate
    - ATTR_UNUSED(iq)
    - ATTR_UNUSED(ie)
    - id
    argTypes:
    - struct module_qstate*
    - struct ipsecmod_qstate*
    - struct ipsecmod_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 526
    functionDepth: 2
    functionLinenumber: 526
    functionLinenumberEnd: 562
    functionName: ipsecmod_handle_response
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod.c
    functionUses: 0
    functionsReached:
    - log_err
    - generate_request
    - ipsecmod_error
    - verbose
    - reply_find_answer_rrset
    - sldns_wire2str_type_buf
    - errinf
    linkageType: ''
    returnType: void
    signature: "void ipsecmod_handle_response(struct module_qstate* qstate,\n\tstruct
      ipsecmod_qstate* ATTR_UNUSED(iq),\n\tstruct ipsecmod_env* ATTR_UNUSED(ie), int
      id)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/ipsecmod/ipsecmod.c:570,1
    - Dst: strextstate
      Src: /src/unbound/ipsecmod/ipsecmod.c:571,1
    - Dst: strmodulevent
      Src: /src/unbound/ipsecmod/ipsecmod.c:571,1
    - Dst: log_query_info
      Src: /src/unbound/ipsecmod/ipsecmod.c:572,1
    - Dst: ipsecmod_new
      Src: /src/unbound/ipsecmod/ipsecmod.c:578,1
    - Dst: errinf
      Src: /src/unbound/ipsecmod/ipsecmod.c:579,1
    - Dst: ipsecmod_error
      Src: /src/unbound/ipsecmod/ipsecmod.c:580,1
    - Dst: ipsecmod_handle_query
      Src: /src/unbound/ipsecmod/ipsecmod.c:586,1
    - Dst: ipsecmod_handle_response
      Src: /src/unbound/ipsecmod/ipsecmod.c:590,1
    - Dst: verbose
      Src: /src/unbound/ipsecmod/ipsecmod.c:601,1
    - Dst: errinf
      Src: /src/unbound/ipsecmod/ipsecmod.c:602,1
    - Dst: ipsecmod_error
      Src: /src/unbound/ipsecmod/ipsecmod.c:603,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:612,1
    - Dst: strmodulevent
      Src: /src/unbound/ipsecmod/ipsecmod.c:612,1
    - Dst: errinf
      Src: /src/unbound/ipsecmod/ipsecmod.c:613,1
    - Dst: ipsecmod_error
      Src: /src/unbound/ipsecmod/ipsecmod.c:614,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 37
    argCount: 4
    argNames:
    - qstate
    - event
    - id
    - outbound
    argTypes:
    - struct module_qstate*
    - enum module_ev
    - int
    - struct outbound_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 564
    functionDepth: 9
    functionLinenumber: 564
    functionLinenumberEnd: 616
    functionName: ipsecmod_operate
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod.c
    functionUses: 0
    functionsReached:
    - log_err
    - ipsecmod_error
    - ipsecmod_handle_query
    - strextstate
    - verbose
    - log_query_info
    - strmodulevent
    - ipsecmod_handle_response
    - ipsecmod_new
    - errinf
    linkageType: ''
    returnType: void
    signature: "void ipsecmod_operate(struct module_qstate* qstate, enum module_ev
      event, int id,\n\tstruct outbound_entry* outbound)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_query_info
      Src: /src/unbound/ipsecmod/ipsecmod.c:623,1
    - Dst: log_query_info
      Src: /src/unbound/ipsecmod/ipsecmod.c:625,1
    - Dst: verbose
      Src: /src/unbound/ipsecmod/ipsecmod.c:628,1
    - Dst: reply_find_answer_rrset
      Src: /src/unbound/ipsecmod/ipsecmod.c:635,1
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/ipsecmod/ipsecmod.c:640,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod.c:643,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - qstate
    - id
    - super
    argTypes:
    - struct module_qstate*
    - int
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 618
    functionDepth: 1
    functionLinenumber: 618
    functionLinenumberEnd: 649
    functionName: ipsecmod_inform_super
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod.c
    functionUses: 0
    functionsReached:
    - log_err
    - verbose
    - log_query_info
    - reply_find_answer_rrset
    - packed_rrset_copy_region
    linkageType: ''
    returnType: void
    signature: "void ipsecmod_inform_super(struct module_qstate* qstate, int id,\n\tstruct
      module_qstate* super)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 651
    functionDepth: 0
    functionLinenumber: 651
    functionLinenumberEnd: 657
    functionName: ipsecmod_clear
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void ipsecmod_clear(struct module_qstate* qstate, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ipsecmod_whitelist_get_mem
      Src: /src/unbound/ipsecmod/ipsecmod.c:665,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 659
    functionDepth: 1
    functionLinenumber: 659
    functionLinenumberEnd: 666
    functionName: ipsecmod_get_mem
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod.c
    functionUses: 0
    functionsReached:
    - ipsecmod_whitelist_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t ipsecmod_get_mem(struct module_env* env, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 681
    functionName: ipsecmod_get_funcblock
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct module_func_block
    signature: 'struct module_func_block *

      ipsecmod_get_funcblock(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:61,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:63,1
    - Dst: calloc
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:66,1
    - Dst: log_err
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:68,1
    - Dst: free
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:69,1
    - Dst: dname_count_labels
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:75,1
    - Dst: name_tree_insert
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:77,1
    - Dst: free
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:79,1
    - Dst: free
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:80,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - whitelist
    - name
    argTypes:
    - rbtree_type*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 56
    functionDepth: 4
    functionLinenumber: 56
    functionLinenumberEnd: 83
    functionName: whitelist_str_cfg
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod-whitelist.c
    functionUses: 0
    functionsReached:
    - log_err
    - free
    - calloc
    - sldns_str2wire_dname
    - name_tree_insert
    - dname_count_labels
    linkageType: ''
    returnType: int
    signature: int whitelist_str_cfg(rbtree_type* whitelist, const char* name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:91,1
    - Dst: whitelist_str_cfg
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:92,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - whitelist
    - cfg
    argTypes:
    - rbtree_type*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 86
    functionDepth: 5
    functionLinenumber: 86
    functionLinenumberEnd: 96
    functionName: read_whitelist
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod-whitelist.c
    functionUses: 0
    functionsReached:
    - whitelist_str_cfg
    - log_assert
    linkageType: ''
    returnType: int
    signature: int read_whitelist(rbtree_type* whitelist, struct config_file* cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_create
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:102,1
    - Dst: read_whitelist
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:105,1
    - Dst: name_tree_init_parents
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:107,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ie
    - cfg
    argTypes:
    - struct ipsecmod_env*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 98
    functionDepth: 6
    functionLinenumber: 98
    functionLinenumberEnd: 109
    functionName: ipsecmod_whitelist_apply_cfg
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod-whitelist.c
    functionUses: 1
    functionsReached:
    - read_whitelist
    - rbtree_create
    - name_tree_init_parents
    linkageType: ''
    returnType: int
    signature: "int ipsecmod_whitelist_apply_cfg(struct ipsecmod_env* ie,\n\tstruct
      config_file* cfg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:116,1
    - Dst: free
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - n
    - ATTR_UNUSED(d)
    argTypes:
    - struct rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 112
    functionDepth: 1
    functionLinenumber: 112
    functionLinenumberEnd: 119
    functionName: whitelist_free
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod-whitelist.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void whitelist_free(struct rbnode_type* n, void* ATTR_UNUSED(d))
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - n
    - arg
    argTypes:
    - struct rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 130
    functionName: whitelist_get_mem
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod-whitelist.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void whitelist_get_mem(struct rbnode_type* n, void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: traverse_postorder
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:136,1
    - Dst: free
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:137,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - whitelist
    argTypes:
    - rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 139
    functionName: ipsecmod_whitelist_delete
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod-whitelist.c
    functionUses: 1
    functionsReached:
    - free
    - traverse_postorder
    linkageType: ''
    returnType: void
    signature: void ipsecmod_whitelist_delete(rbtree_type* whitelist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: name_tree_lookup
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:146,1
    - Dst: dname_count_labels
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:147,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - ie
    - dname
    - dname_len
    - qclass
    argTypes:
    - struct ipsecmod_env*
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 141
    functionDepth: 1
    functionLinenumber: 141
    functionLinenumberEnd: 148
    functionName: ipsecmod_domain_is_whitelisted
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod-whitelist.c
    functionUses: 1
    functionsReached:
    - name_tree_lookup
    - dname_count_labels
    linkageType: ''
    returnType: int
    signature: "int ipsecmod_domain_is_whitelisted(struct ipsecmod_env* ie, uint8_t*
      dname,\n\tsize_t dname_len, uint16_t qclass)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: traverse_postorder
      Src: /src/unbound/ipsecmod/ipsecmod-whitelist.c:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - whitelist
    argTypes:
    - rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 158
    functionName: ipsecmod_whitelist_get_mem
    functionSourceFile: /src/unbound/ipsecmod/ipsecmod-whitelist.c
    functionUses: 1
    functionsReached:
    - traverse_postorder
    linkageType: ''
    returnType: size_t
    signature: size_t ipsecmod_whitelist_get_mem(rbtree_type* whitelist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/iterator/iter_priv.c:57,1
    - Dst: regional_create
      Src: /src/unbound/iterator/iter_priv.c:60,1
    - Dst: priv_delete
      Src: /src/unbound/iterator/iter_priv.c:62,1
    - Dst: addr_tree_init
      Src: /src/unbound/iterator/iter_priv.c:65,1
    - Dst: name_tree_init
      Src: /src/unbound/iterator/iter_priv.c:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 55
    functionDepth: 1
    functionLinenumber: 55
    functionLinenumberEnd: 68
    functionName: priv_create
    functionSourceFile: /src/unbound/iterator/iter_priv.c
    functionUses: 1
    functionsReached:
    - name_tree_init
    - regional_create
    - addr_tree_init
    - calloc
    - priv_delete
    linkageType: ''
    returnType: struct iter_priv
    signature: struct iter_priv * priv_create(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_destroy
      Src: /src/unbound/iterator/iter_priv.c:73,1
    - Dst: free
      Src: /src/unbound/iterator/iter_priv.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - priv
    argTypes:
    - struct iter_priv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 75
    functionName: priv_delete
    functionSourceFile: /src/unbound/iterator/iter_priv.c
    functionUses: 2
    functionsReached:
    - free
    - regional_destroy
    linkageType: ''
    returnType: void
    signature: void priv_delete(struct iter_priv* priv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_priv.c:88,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/iterator/iter_priv.c:89,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_priv.c:91,1
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iter_priv.c:94,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_priv.c:97,1
    - Dst: addr_tree_insert
      Src: /src/unbound/iterator/iter_priv.c:100,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_priv.c:101,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - priv
    - cfg
    argTypes:
    - struct iter_priv*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 106
    functionName: read_addrs
    functionSourceFile: /src/unbound/iterator/iter_priv.c
    functionUses: 0
    functionsReached:
    - log_err
    - netblockstrtoaddr
    - verbose
    - regional_alloc
    - log_assert
    - addr_tree_insert
    linkageType: ''
    returnType: int
    signature: int read_addrs(struct iter_priv* priv, struct config_file* cfg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_priv.c:119,1
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/iterator/iter_priv.c:120,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_priv.c:122,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/iterator/iter_priv.c:125,1
    - Dst: regional_alloc_init
      Src: /src/unbound/iterator/iter_priv.c:126,1
    - Dst: free
      Src: /src/unbound/iterator/iter_priv.c:127,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_priv.c:129,1
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iter_priv.c:132,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_priv.c:135,1
    - Dst: name_tree_insert
      Src: /src/unbound/iterator/iter_priv.c:138,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_priv.c:140,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - priv
    - cfg
    argTypes:
    - struct iter_priv*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 109
    functionDepth: 4
    functionLinenumber: 109
    functionLinenumberEnd: 145
    functionName: read_names
    functionSourceFile: /src/unbound/iterator/iter_priv.c
    functionUses: 0
    functionsReached:
    - log_err
    - verbose
    - dname_count_size_labels
    - regional_alloc
    - free
    - sldns_str2wire_dname
    - log_assert
    - name_tree_insert
    - regional_alloc_init
    linkageType: ''
    returnType: int
    signature: int read_names(struct iter_priv* priv, struct config_file* cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_free_all
      Src: /src/unbound/iterator/iter_priv.c:150,1
    - Dst: addr_tree_init
      Src: /src/unbound/iterator/iter_priv.c:151,1
    - Dst: name_tree_init
      Src: /src/unbound/iterator/iter_priv.c:152,1
    - Dst: read_addrs
      Src: /src/unbound/iterator/iter_priv.c:155,1
    - Dst: read_names
      Src: /src/unbound/iterator/iter_priv.c:157,1
    - Dst: addr_tree_init_parents
      Src: /src/unbound/iterator/iter_priv.c:161,1
    - Dst: name_tree_init_parents
      Src: /src/unbound/iterator/iter_priv.c:162,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - priv
    - cfg
    argTypes:
    - struct iter_priv*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 164
      start: 147
    functionDepth: 2
    functionLinenumber: 147
    functionLinenumberEnd: 164
    functionName: priv_apply_cfg
    functionSourceFile: /src/unbound/iterator/iter_priv.c
    functionUses: 1
    functionsReached:
    - name_tree_init
    - addr_tree_init_parents
    - addr_tree_init
    - read_names
    - name_tree_init_parents
    - regional_free_all
    - read_addrs
    linkageType: ''
    returnType: int
    signature: int priv_apply_cfg(struct iter_priv* priv, struct config_file* cfg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addr_tree_lookup
      Src: /src/unbound/iterator/iter_priv.c:177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - priv
    - addr
    - addrlen
    argTypes:
    - struct iter_priv*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 178
    functionName: priv_lookup_addr
    functionSourceFile: /src/unbound/iterator/iter_priv.c
    functionUses: 0
    functionsReached:
    - addr_tree_lookup
    linkageType: ''
    returnType: int
    signature: "int priv_lookup_addr(struct iter_priv* priv, struct sockaddr_storage*
      addr,\n\tsocklen_t addrlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dname_pkt_copy
      Src: /src/unbound/iterator/iter_priv.c:198,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/iterator/iter_priv.c:199,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_priv.c:200,1
    - Dst: name_tree_lookup
      Src: /src/unbound/iterator/iter_priv.c:201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 5
    argNames:
    - priv
    - pkt
    - name
    - name_len
    - dclass
    argTypes:
    - struct iter_priv*
    - sldns_buffer*
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 202
    functionName: priv_lookup_name
    functionSourceFile: /src/unbound/iterator/iter_priv.c
    functionUses: 0
    functionsReached:
    - dname_pkt_copy
    - name_tree_lookup
    - dname_count_size_labels
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int priv_lookup_name(struct iter_priv* priv, sldns_buffer* pkt,\n\tuint8_t*
      name, size_t name_len, uint16_t dclass)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_get_mem
      Src: /src/unbound/iterator/iter_priv.c:207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - priv
    argTypes:
    - struct iter_priv*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 208
    functionName: priv_get_mem
    functionSourceFile: /src/unbound/iterator/iter_priv.c
    functionUses: 0
    functionsReached:
    - regional_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t priv_get_mem(struct iter_priv* priv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/iterator/iter_priv.c:226,1
    - Dst: htons
      Src: /src/unbound/iterator/iter_priv.c:228,1
    - Dst: memmove
      Src: /src/unbound/iterator/iter_priv.c:231,1
    - Dst: memmove
      Src: /src/unbound/iterator/iter_priv.c:232,1
    - Dst: priv_lookup_addr
      Src: /src/unbound/iterator/iter_priv.c:233,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 5
    argNames:
    - priv
    - d
    - data_len
    - addr
    - addrlen
    argTypes:
    - struct iter_priv*
    - uint8_t*
    - uint16_t
    - struct sockaddr_storage*
    - socklen_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 220
    functionDepth: 2
    functionLinenumber: 220
    functionLinenumberEnd: 241
    functionName: svcb_ipv4hint_contains_priv_addr
    functionSourceFile: /src/unbound/iterator/iter_priv.c
    functionUses: 0
    functionsReached:
    - htons
    - memset
    - priv_lookup_addr
    - memmove
    linkageType: ''
    returnType: int
    signature: "int svcb_ipv4hint_contains_priv_addr(struct iter_priv* priv,\n\tuint8_t*
      d, uint16_t data_len, struct sockaddr_storage* addr,\n\tsocklen_t* addrlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/iterator/iter_priv.c:259,1
    - Dst: htons
      Src: /src/unbound/iterator/iter_priv.c:261,1
    - Dst: memmove
      Src: /src/unbound/iterator/iter_priv.c:264,1
    - Dst: memmove
      Src: /src/unbound/iterator/iter_priv.c:265,1
    - Dst: priv_lookup_addr
      Src: /src/unbound/iterator/iter_priv.c:266,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 5
    argNames:
    - priv
    - d
    - data_len
    - addr
    - addrlen
    argTypes:
    - struct iter_priv*
    - uint8_t*
    - uint16_t
    - struct sockaddr_storage*
    - socklen_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 253
    functionDepth: 2
    functionLinenumber: 253
    functionLinenumberEnd: 274
    functionName: svcb_ipv6hint_contains_priv_addr
    functionSourceFile: /src/unbound/iterator/iter_priv.c
    functionUses: 0
    functionsReached:
    - htons
    - memset
    - priv_lookup_addr
    - memmove
    linkageType: ''
    returnType: int
    signature: "int svcb_ipv6hint_contains_priv_addr(struct iter_priv* priv,\n\tuint8_t*
      d, uint16_t data_len, struct sockaddr_storage* addr,\n\tsocklen_t* addrlen)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/iterator/iter_priv.c:294,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/iterator/iter_priv.c:301,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/iterator/iter_priv.c:302,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/iterator/iter_priv.c:302,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/iterator/iter_priv.c:303,1
    - Dst: pkt_dname_len
      Src: /src/unbound/iterator/iter_priv.c:304,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/iterator/iter_priv.c:305,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/iterator/iter_priv.c:306,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/iterator/iter_priv.c:315,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/iterator/iter_priv.c:316,1
    - Dst: svcb_ipv4hint_contains_priv_addr
      Src: /src/unbound/iterator/iter_priv.c:331,1
    - Dst: svcb_ipv6hint_contains_priv_addr
      Src: /src/unbound/iterator/iter_priv.c:335,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 5
    argNames:
    - priv
    - pkt
    - rr
    - addr
    - addrlen
    argTypes:
    - struct iter_priv*
    - sldns_buffer*
    - struct rr_parse*
    - struct sockaddr_storage*
    - socklen_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 286
    functionDepth: 3
    functionLinenumber: 286
    functionLinenumberEnd: 344
    functionName: svcb_rr_contains_priv_addr
    functionSourceFile: /src/unbound/iterator/iter_priv.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - svcb_ipv4hint_contains_priv_addr
    - sldns_buffer_set_position
    - sldns_buffer_begin
    - svcb_ipv6hint_contains_priv_addr
    - sldns_read_uint16
    - pkt_dname_len
    linkageType: ''
    returnType: int
    signature: "int svcb_rr_contains_priv_addr(struct iter_priv* priv,\n\tsldns_buffer*
      pkt, struct rr_parse* rr, struct sockaddr_storage* addr,\n\tsocklen_t* addrlen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: svcb_rr_contains_priv_addr
      Src: /src/unbound/iterator/iter_priv.c:361,1
    - Dst: msgparse_rrset_remove_rr
      Src: /src/unbound/iterator/iter_priv.c:363,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - priv
    - pkt
    - rrset
    argTypes:
    - struct iter_priv*
    - sldns_buffer*
    - struct rrset_parse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 354
    functionDepth: 4
    functionLinenumber: 354
    functionLinenumberEnd: 370
    functionName: priv_svcb_rrset_bad
    functionSourceFile: /src/unbound/iterator/iter_priv.c
    functionUses: 0
    functionsReached:
    - svcb_rr_contains_priv_addr
    - msgparse_rrset_remove_rr
    linkageType: ''
    returnType: int
    signature: "int priv_svcb_rrset_bad(struct iter_priv* priv, sldns_buffer* pkt,\n\tstruct
      rrset_parse* rrset)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: priv_lookup_name
      Src: /src/unbound/iterator/iter_priv.c:379,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_priv.c:380,1
    - Dst: memset
      Src: /src/unbound/iterator/iter_priv.c:391,1
    - Dst: htons
      Src: /src/unbound/iterator/iter_priv.c:393,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/iterator/iter_priv.c:395,1
    - Dst: memmove
      Src: /src/unbound/iterator/iter_priv.c:400,1
    - Dst: memmove
      Src: /src/unbound/iterator/iter_priv.c:402,1
    - Dst: priv_lookup_addr
      Src: /src/unbound/iterator/iter_priv.c:403,1
    - Dst: msgparse_rrset_remove_rr
      Src: /src/unbound/iterator/iter_priv.c:404,1
    - Dst: memset
      Src: /src/unbound/iterator/iter_priv.c:414,1
    - Dst: htons
      Src: /src/unbound/iterator/iter_priv.c:416,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/iterator/iter_priv.c:418,1
    - Dst: memmove
      Src: /src/unbound/iterator/iter_priv.c:423,1
    - Dst: memmove
      Src: /src/unbound/iterator/iter_priv.c:425,1
    - Dst: priv_lookup_addr
      Src: /src/unbound/iterator/iter_priv.c:426,1
    - Dst: msgparse_rrset_remove_rr
      Src: /src/unbound/iterator/iter_priv.c:427,1
    - Dst: priv_svcb_rrset_bad
      Src: /src/unbound/iterator/iter_priv.c:435,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 52
    argCount: 3
    argNames:
    - priv
    - pkt
    - rrset
    argTypes:
    - struct iter_priv*
    - sldns_buffer*
    - struct rrset_parse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 440
      start: 372
    functionDepth: 5
    functionLinenumber: 372
    functionLinenumberEnd: 440
    functionName: priv_rrset_bad
    functionSourceFile: /src/unbound/iterator/iter_priv.c
    functionUses: 0
    functionsReached:
    - memmove
    - priv_svcb_rrset_bad
    - priv_lookup_addr
    - htons
    - memset
    - sldns_read_uint16
    - msgparse_rrset_remove_rr
    - priv_lookup_name
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int priv_rrset_bad(struct iter_priv* priv, sldns_buffer* pkt,\n\tstruct
      rrset_parse* rrset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_lab_cmp
      Src: /src/unbound/iterator/iter_fwd.c:63,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - k1
    - k2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 65
    functionName: fwd_cmp
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - dname_lab_cmp
    linkageType: ''
    returnType: int
    signature: int fwd_cmp(const void* k1, const void* k2)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/iterator/iter_fwd.c:70,1
    - Dst: lock_rw_init
      Src: /src/unbound/iterator/iter_fwd.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 67
    functionDepth: 1
    functionLinenumber: 67
    functionLinenumberEnd: 76
    functionName: forwards_create
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 3
    functionsReached:
    - calloc
    - lock_rw_init
    linkageType: ''
    returnType: struct iter_forwards
    signature: "struct iter_forwards * \nforwards_create(void)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: delegpt_free_mlc
      Src: /src/unbound/iterator/iter_fwd.c:81,1
    - Dst: free
      Src: /src/unbound/iterator/iter_fwd.c:82,1
    - Dst: free
      Src: /src/unbound/iterator/iter_fwd.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - n
    argTypes:
    - struct iter_forward_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 84
    functionName: fwd_zone_free
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - free
    - delegpt_free_mlc
    linkageType: ''
    returnType: void
    signature: void fwd_zone_free(struct iter_forward_zone* n)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fwd_zone_free
      Src: /src/unbound/iterator/iter_fwd.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - n
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 86
    functionDepth: 2
    functionLinenumber: 86
    functionLinenumberEnd: 90
    functionName: delfwdnode
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - fwd_zone_free
    linkageType: ''
    returnType: void
    signature: void delfwdnode(rbnode_type* n, void* ATTR_UNUSED(arg))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: traverse_postorder
      Src: /src/unbound/iterator/iter_fwd.c:95,1
    - Dst: free
      Src: /src/unbound/iterator/iter_fwd.c:96,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - fwd
    argTypes:
    - struct iter_forwards*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 97
    functionName: fwd_del_tree
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - free
    - traverse_postorder
    linkageType: ''
    returnType: void
    signature: void fwd_del_tree(struct iter_forwards* fwd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/iterator/iter_fwd.c:104,1
    - Dst: fwd_del_tree
      Src: /src/unbound/iterator/iter_fwd.c:105,1
    - Dst: free
      Src: /src/unbound/iterator/iter_fwd.c:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - fwd
    argTypes:
    - struct iter_forwards*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 99
    functionDepth: 2
    functionLinenumber: 99
    functionLinenumberEnd: 107
    functionName: forwards_delete
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 3
    functionsReached:
    - fwd_del_tree
    - lock_rw_destroy
    - free
    linkageType: ''
    returnType: void
    signature: void forwards_delete(struct iter_forwards* fwd)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/iterator/iter_fwd.c:114,1
    - Dst: delegpt_free_mlc
      Src: /src/unbound/iterator/iter_fwd.c:117,1
    - Dst: memdup
      Src: /src/unbound/iterator/iter_fwd.c:122,1
    - Dst: delegpt_free_mlc
      Src: /src/unbound/iterator/iter_fwd.c:124,1
    - Dst: free
      Src: /src/unbound/iterator/iter_fwd.c:125,1
    - Dst: rbtree_insert
      Src: /src/unbound/iterator/iter_fwd.c:131,1
    - Dst: dname_str
      Src: /src/unbound/iterator/iter_fwd.c:133,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_fwd.c:134,1
    - Dst: delegpt_free_mlc
      Src: /src/unbound/iterator/iter_fwd.c:135,1
    - Dst: free
      Src: /src/unbound/iterator/iter_fwd.c:136,1
    - Dst: free
      Src: /src/unbound/iterator/iter_fwd.c:137,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 6
    argNames:
    - fwd
    - c
    - nm
    - nmlen
    - nmlabs
    - dp
    argTypes:
    - struct iter_forwards*
    - uint16_t
    - uint8_t*
    - size_t
    - int
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 140
    functionName: forwards_insert_data
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - log_err
    - delegpt_free_mlc
    - dname_str
    - malloc
    - free
    - rbtree_insert
    - memdup
    linkageType: ''
    returnType: int
    signature: "int forwards_insert_data(struct iter_forwards* fwd, uint16_t c, uint8_t*
      nm, \n\tsize_t nmlen, int nmlabs, struct delegpt* dp)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_size_labels
      Src: /src/unbound/iterator/iter_fwd.c:149,1
    - Dst: rbtree_search
      Src: /src/unbound/iterator/iter_fwd.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - fwd
    - c
    - nm
    argTypes:
    - struct iter_forwards*
    - uint16_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 142
    functionDepth: 1
    functionLinenumber: 142
    functionLinenumberEnd: 151
    functionName: fwd_zone_find
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - dname_count_size_labels
    - rbtree_search
    linkageType: ''
    returnType: struct iter_forward_zone
    signature: 'struct iter_forward_zone *

      fwd_zone_find(struct iter_forwards* fwd, uint16_t c, uint8_t* nm)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: forwards_insert_data
      Src: /src/unbound/iterator/iter_fwd.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - fwd
    - c
    - dp
    argTypes:
    - struct iter_forwards*
    - uint16_t
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 154
    functionDepth: 2
    functionLinenumber: 154
    functionLinenumberEnd: 159
    functionName: forwards_insert
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - forwards_insert_data
    linkageType: ''
    returnType: int
    signature: int forwards_insert(struct iter_forwards* fwd, uint16_t c, struct delegpt*
      dp)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_lab_cmp
      Src: /src/unbound/iterator/iter_fwd.c:173,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - fwd
    argTypes:
    - struct iter_forwards*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 188
    functionName: fwd_init_parents
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - dname_lab_cmp
    linkageType: ''
    returnType: void
    signature: void fwd_init_parents(struct iter_forwards* fwd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_lab_cmp
      Src: /src/unbound/iterator/iter_fwd.c:173,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 1
    argNames:
    - tree
    argTypes:
    - fwd
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 187
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - dname_lab_cmp
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(node, struct iter_forward_zone*, fwd->tree)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/iterator/iter_fwd.c:198,1
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/iterator/iter_fwd.c:201,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_fwd.c:203,1
    - Dst: delegpt_create_mlc
      Src: /src/unbound/iterator/iter_fwd.c:206,1
    - Dst: free
      Src: /src/unbound/iterator/iter_fwd.c:207,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_fwd.c:208,1
    - Dst: free
      Src: /src/unbound/iterator/iter_fwd.c:211,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct config_stub*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 191
    functionDepth: 4
    functionLinenumber: 191
    functionLinenumberEnd: 213
    functionName: read_fwds_name
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - free
    - log_err
    - sldns_str2wire_dname
    - delegpt_create_mlc
    linkageType: ''
    returnType: struct delegpt
    signature: "struct delegpt * \nread_fwds_name(struct config_stub* s)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_fwd.c:224,1
    - Dst: authextstrtodname
      Src: /src/unbound/iterator/iter_fwd.c:225,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_fwd.c:227,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iter_fwd.c:231,1
    - Dst: log_warn
      Src: /src/unbound/iterator/iter_fwd.c:232,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_fwd.c:238,1
    - Dst: delegpt_add_ns_mlc
      Src: /src/unbound/iterator/iter_fwd.c:241,1
    - Dst: free
      Src: /src/unbound/iterator/iter_fwd.c:242,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_fwd.c:243,1
    - Dst: free
      Src: /src/unbound/iterator/iter_fwd.c:246,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - s
    - dp
    argTypes:
    - struct config_stub*
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 249
    functionName: read_fwds_host
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    - log_err
    - free
    - log_assert
    - log_warn
    - delegpt_add_ns_mlc
    - authextstrtodname
    linkageType: ''
    returnType: int
    signature: int read_fwds_host(struct config_stub* s, struct delegpt* dp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_fwd.c:260,1
    - Dst: authextstrtoaddr
      Src: /src/unbound/iterator/iter_fwd.c:261,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_fwd.c:262,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_fwd.c:268,1
    - Dst: delegpt_add_addr_mlc
      Src: /src/unbound/iterator/iter_fwd.c:271,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_fwd.c:273,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - s
    - dp
    argTypes:
    - struct config_stub*
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 278
    functionName: read_fwds_addr
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - log_err
    - authextstrtoaddr
    - log_assert
    - delegpt_add_addr_mlc
    linkageType: ''
    returnType: int
    signature: int read_fwds_addr(struct config_stub* s, struct delegpt* dp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: read_fwds_name
      Src: /src/unbound/iterator/iter_fwd.c:287,1
    - Dst: read_fwds_host
      Src: /src/unbound/iterator/iter_fwd.c:289,1
    - Dst: read_fwds_addr
      Src: /src/unbound/iterator/iter_fwd.c:289,1
    - Dst: delegpt_free_mlc
      Src: /src/unbound/iterator/iter_fwd.c:290,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_fwd.c:305,1
    - Dst: delegpt_log
      Src: /src/unbound/iterator/iter_fwd.c:306,1
    - Dst: forwards_insert
      Src: /src/unbound/iterator/iter_fwd.c:307,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - fwd
    - cfg
    argTypes:
    - struct iter_forwards*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 281
    functionDepth: 5
    functionLinenumber: 281
    functionLinenumberEnd: 311
    functionName: read_forwards
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - read_fwds_host
    - read_fwds_addr
    - verbose
    - delegpt_free_mlc
    - forwards_insert
    - delegpt_log
    - read_fwds_name
    linkageType: ''
    returnType: int
    signature: int read_forwards(struct iter_forwards* fwd, struct config_file* cfg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_size_labels
      Src: /src/unbound/iterator/iter_fwd.c:321,1
    - Dst: forwards_insert_data
      Src: /src/unbound/iterator/iter_fwd.c:322,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - fwd
    - c
    - nm
    argTypes:
    - struct iter_forwards*
    - uint16_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 314
    functionDepth: 2
    functionLinenumber: 314
    functionLinenumberEnd: 324
    functionName: fwd_add_stub_hole
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - forwards_insert_data
    - dname_count_size_labels
    linkageType: ''
    returnType: int
    signature: int fwd_add_stub_hole(struct iter_forwards* fwd, uint16_t c, uint8_t*
      nm)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/iterator/iter_fwd.c:335,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_fwd.c:337,1
    - Dst: fwd_zone_find
      Src: /src/unbound/iterator/iter_fwd.c:340,1
    - Dst: free
      Src: /src/unbound/iterator/iter_fwd.c:342,1
    - Dst: fwd_add_stub_hole
      Src: /src/unbound/iterator/iter_fwd.c:345,1
    - Dst: free
      Src: /src/unbound/iterator/iter_fwd.c:346,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_fwd.c:347,1
    - Dst: free
      Src: /src/unbound/iterator/iter_fwd.c:350,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - fwd
    - cfg
    argTypes:
    - struct iter_forwards*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 327
    functionDepth: 4
    functionLinenumber: 327
    functionLinenumberEnd: 353
    functionName: make_stub_holes
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - log_err
    - fwd_add_stub_hole
    - free
    - sldns_str2wire_dname
    - fwd_zone_find
    linkageType: ''
    returnType: int
    signature: int make_stub_holes(struct iter_forwards* fwd, struct config_file*
      cfg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/iterator/iter_fwd.c:364,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_fwd.c:366,1
    - Dst: fwd_zone_find
      Src: /src/unbound/iterator/iter_fwd.c:369,1
    - Dst: free
      Src: /src/unbound/iterator/iter_fwd.c:371,1
    - Dst: fwd_add_stub_hole
      Src: /src/unbound/iterator/iter_fwd.c:374,1
    - Dst: free
      Src: /src/unbound/iterator/iter_fwd.c:375,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_fwd.c:376,1
    - Dst: free
      Src: /src/unbound/iterator/iter_fwd.c:379,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - fwd
    - cfg
    argTypes:
    - struct iter_forwards*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 356
    functionDepth: 4
    functionLinenumber: 356
    functionLinenumberEnd: 382
    functionName: make_auth_holes
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - log_err
    - fwd_add_stub_hole
    - free
    - sldns_str2wire_dname
    - fwd_zone_find
    linkageType: ''
    returnType: int
    signature: int make_auth_holes(struct iter_forwards* fwd, struct config_file*
      cfg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lock_unprotect
      Src: /src/unbound/iterator/iter_fwd.c:388,1
    - Dst: fwd_del_tree
      Src: /src/unbound/iterator/iter_fwd.c:390,1
    - Dst: rbtree_create
      Src: /src/unbound/iterator/iter_fwd.c:391,1
    - Dst: lock_protect
      Src: /src/unbound/iterator/iter_fwd.c:394,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/iterator/iter_fwd.c:396,1
    - Dst: read_forwards
      Src: /src/unbound/iterator/iter_fwd.c:398,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:399,1
    - Dst: make_stub_holes
      Src: /src/unbound/iterator/iter_fwd.c:402,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:403,1
    - Dst: make_auth_holes
      Src: /src/unbound/iterator/iter_fwd.c:412,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:413,1
    - Dst: fwd_init_parents
      Src: /src/unbound/iterator/iter_fwd.c:416,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:417,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - fwd
    - cfg
    argTypes:
    - struct iter_forwards*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 384
    functionDepth: 6
    functionLinenumber: 384
    functionLinenumberEnd: 419
    functionName: forwards_apply_cfg
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 3
    functionsReached:
    - lock_unprotect
    - fwd_init_parents
    - lock_rw_wrlock
    - lock_rw_unlock
    - make_auth_holes
    - fwd_del_tree
    - lock_protect
    - rbtree_create
    - read_forwards
    - make_stub_holes
    linkageType: ''
    returnType: int
    signature: int forwards_apply_cfg(struct iter_forwards* fwd, struct config_file*
      cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_size_labels
      Src: /src/unbound/iterator/iter_fwd.c:431,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/iterator/iter_fwd.c:433,1
    - Dst: rbtree_search
      Src: /src/unbound/iterator/iter_fwd.c:434,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:436,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - fwd
    - qname
    - qclass
    - nolock
    argTypes:
    - struct iter_forwards*
    - uint8_t*
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 438
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 438
    functionName: forwards_find
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - lock_rw_unlock
    - dname_count_size_labels
    - lock_rw_rdlock
    - rbtree_search
    linkageType: ''
    returnType: struct delegpt
    signature: "struct delegpt * \nforwards_find(struct iter_forwards* fwd, uint8_t*
      qname, uint16_t qclass,\n\tint nolock)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_size_labels
      Src: /src/unbound/iterator/iter_fwd.c:452,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/iterator/iter_fwd.c:454,1
    - Dst: rbtree_find_less_equal
      Src: /src/unbound/iterator/iter_fwd.c:455,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:463,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/iterator/iter_fwd.c:467,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:476,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 4
    argNames:
    - fwd
    - qname
    - qclass
    - nolock
    argTypes:
    - struct iter_forwards*
    - uint8_t*
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 440
    functionDepth: 1
    functionLinenumber: 440
    functionLinenumberEnd: 478
    functionName: forwards_lookup
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 2
    functionsReached:
    - dname_lab_cmp
    - rbtree_find_less_equal
    - dname_count_size_labels
    - lock_rw_unlock
    - lock_rw_rdlock
    linkageType: ''
    returnType: struct delegpt
    signature: "struct delegpt * \nforwards_lookup(struct iter_forwards* fwd, uint8_t*
      qname, uint16_t qclass,\n\tint nolock)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: forwards_lookup
      Src: /src/unbound/iterator/iter_fwd.c:484,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - fwd
    - qclass
    - nolock
    argTypes:
    - struct iter_forwards*
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 480
    functionDepth: 2
    functionLinenumber: 480
    functionLinenumberEnd: 485
    functionName: forwards_lookup_root
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - forwards_lookup
    linkageType: ''
    returnType: struct delegpt
    signature: "struct delegpt * \nforwards_lookup_root(struct iter_forwards* fwd,
      uint16_t qclass, int nolock)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_first
      Src: /src/unbound/iterator/iter_fwd.c:497,1
    - Dst: dname_is_root
      Src: /src/unbound/iterator/iter_fwd.c:501,1
    - Dst: next_root_locked
      Src: /src/unbound/iterator/iter_fwd.c:507,1
    - Dst: rbtree_find_less_equal
      Src: /src/unbound/iterator/iter_fwd.c:518,1
    - Dst: rbtree_next
      Src: /src/unbound/iterator/iter_fwd.c:525,1
    - Dst: dname_is_root
      Src: /src/unbound/iterator/iter_fwd.c:529,1
    - Dst: next_root_locked
      Src: /src/unbound/iterator/iter_fwd.c:535,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 2
    argNames:
    - fwd
    - dclass
    argTypes:
    - struct iter_forwards*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 489
    functionDepth: 1
    functionLinenumber: 489
    functionLinenumberEnd: 537
    functionName: next_root_locked
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 1
    functionsReached:
    - rbtree_find_less_equal
    - dname_is_root
    - rbtree_next
    - rbtree_first
    - next_root_locked
    linkageType: ''
    returnType: int
    signature: int next_root_locked(struct iter_forwards* fwd, uint16_t* dclass)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/iterator/iter_fwd.c:544,1
    - Dst: next_root_locked
      Src: /src/unbound/iterator/iter_fwd.c:545,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:546,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - fwd
    - dclass
    - nolock
    argTypes:
    - struct iter_forwards*
    - uint16_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 539
    functionDepth: 2
    functionLinenumber: 539
    functionLinenumberEnd: 548
    functionName: forwards_next_root
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - next_root_locked
    - lock_rw_unlock
    - lock_rw_rdlock
    linkageType: ''
    returnType: int
    signature: int forwards_next_root(struct iter_forwards* fwd, uint16_t* dclass,
      int nolock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/iterator/iter_fwd.c:557,1
    - Dst: delegpt_get_mem
      Src: /src/unbound/iterator/iter_fwd.c:560,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:562,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - fwd
    argTypes:
    - struct iter_forwards*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 550
    functionDepth: 1
    functionLinenumber: 550
    functionLinenumberEnd: 564
    functionName: forwards_get_mem
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 2
    functionsReached:
    - delegpt_get_mem
    - lock_rw_unlock
    - lock_rw_rdlock
    linkageType: ''
    returnType: size_t
    signature: size_t forwards_get_mem(struct iter_forwards* fwd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: delegpt_get_mem
      Src: /src/unbound/iterator/iter_fwd.c:560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tree
    argTypes:
    - fwd
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 561
      start: 559
    functionDepth: 1
    functionLinenumber: 559
    functionLinenumberEnd: 561
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 0
    functionsReached:
    - delegpt_get_mem
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(p, struct iter_forward_zone*, fwd->tree)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/iterator/iter_fwd.c:572,1
    - Dst: fwd_zone_find
      Src: /src/unbound/iterator/iter_fwd.c:573,1
    - Dst: rbtree_delete
      Src: /src/unbound/iterator/iter_fwd.c:574,1
    - Dst: fwd_zone_free
      Src: /src/unbound/iterator/iter_fwd.c:575,1
    - Dst: forwards_insert
      Src: /src/unbound/iterator/iter_fwd.c:577,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:578,1
    - Dst: fwd_init_parents
      Src: /src/unbound/iterator/iter_fwd.c:581,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:582,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - fwd
    - c
    - dp
    - nolock
    argTypes:
    - struct iter_forwards*
    - uint16_t
    - struct delegpt*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 566
    functionDepth: 3
    functionLinenumber: 566
    functionLinenumberEnd: 584
    functionName: forwards_add_zone
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 2
    functionsReached:
    - rbtree_delete
    - lock_rw_wrlock
    - lock_rw_unlock
    - forwards_insert
    - fwd_zone_free
    - fwd_zone_find
    - fwd_init_parents
    linkageType: ''
    returnType: int
    signature: "int forwards_add_zone(struct iter_forwards* fwd, uint16_t c, struct
      delegpt* dp,\n\tint nolock)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/iterator/iter_fwd.c:592,1
    - Dst: fwd_zone_find
      Src: /src/unbound/iterator/iter_fwd.c:593,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:594,1
    - Dst: rbtree_delete
      Src: /src/unbound/iterator/iter_fwd.c:597,1
    - Dst: fwd_zone_free
      Src: /src/unbound/iterator/iter_fwd.c:598,1
    - Dst: fwd_init_parents
      Src: /src/unbound/iterator/iter_fwd.c:599,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:600,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - fwd
    - c
    - nm
    - nolock
    argTypes:
    - struct iter_forwards*
    - uint16_t
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 601
      start: 586
    functionDepth: 2
    functionLinenumber: 586
    functionLinenumberEnd: 601
    functionName: forwards_delete_zone
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 2
    functionsReached:
    - rbtree_delete
    - lock_rw_wrlock
    - lock_rw_unlock
    - fwd_zone_free
    - fwd_zone_find
    - fwd_init_parents
    linkageType: ''
    returnType: void
    signature: "void forwards_delete_zone(struct iter_forwards* fwd, uint16_t c, uint8_t*
      nm,\n\tint nolock)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/iterator/iter_fwd.c:608,1
    - Dst: fwd_zone_find
      Src: /src/unbound/iterator/iter_fwd.c:609,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:610,1
    - Dst: fwd_add_stub_hole
      Src: /src/unbound/iterator/iter_fwd.c:613,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:614,1
    - Dst: fwd_init_parents
      Src: /src/unbound/iterator/iter_fwd.c:617,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:618,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 4
    argNames:
    - fwd
    - c
    - nm
    - nolock
    argTypes:
    - struct iter_forwards*
    - uint16_t
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 603
    functionDepth: 3
    functionLinenumber: 603
    functionLinenumberEnd: 620
    functionName: forwards_add_stub_hole
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 1
    functionsReached:
    - fwd_add_stub_hole
    - lock_rw_wrlock
    - lock_rw_unlock
    - fwd_zone_find
    - fwd_init_parents
    linkageType: ''
    returnType: int
    signature: "int forwards_add_stub_hole(struct iter_forwards* fwd, uint16_t c,
      uint8_t* nm,\n\tint nolock)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/iterator/iter_fwd.c:628,1
    - Dst: fwd_zone_find
      Src: /src/unbound/iterator/iter_fwd.c:629,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:630,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:634,1
    - Dst: rbtree_delete
      Src: /src/unbound/iterator/iter_fwd.c:637,1
    - Dst: fwd_zone_free
      Src: /src/unbound/iterator/iter_fwd.c:638,1
    - Dst: fwd_init_parents
      Src: /src/unbound/iterator/iter_fwd.c:639,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_fwd.c:640,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 4
    argNames:
    - fwd
    - c
    - nm
    - nolock
    argTypes:
    - struct iter_forwards*
    - uint16_t
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 622
    functionDepth: 2
    functionLinenumber: 622
    functionLinenumberEnd: 641
    functionName: forwards_delete_stub_hole
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 2
    functionsReached:
    - rbtree_delete
    - lock_rw_wrlock
    - lock_rw_unlock
    - fwd_zone_free
    - fwd_zone_find
    - fwd_init_parents
    linkageType: ''
    returnType: void
    signature: "void forwards_delete_stub_hole(struct iter_forwards* fwd, uint16_t
      c,\n\tuint8_t* nm, int nolock)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_unprotect
      Src: /src/unbound/iterator/iter_fwd.c:648,1
    - Dst: lock_unprotect
      Src: /src/unbound/iterator/iter_fwd.c:651,1
    - Dst: lock_protect
      Src: /src/unbound/iterator/iter_fwd.c:655,1
    - Dst: lock_protect
      Src: /src/unbound/iterator/iter_fwd.c:656,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - fwd
    - data
    argTypes:
    - struct iter_forwards*
    - struct iter_forwards*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 643
    functionDepth: 1
    functionLinenumber: 643
    functionLinenumberEnd: 657
    functionName: forwards_swap_tree
    functionSourceFile: /src/unbound/iterator/iter_fwd.c
    functionUses: 1
    functionsReached:
    - lock_protect
    - lock_unprotect
    linkageType: ''
    returnType: void
    signature: void forwards_swap_tree(struct iter_forwards* fwd, struct iter_forwards*
      data)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_resptype.c:58,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_resptype.c:81,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_resptype.c:82,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iter_resptype.c:83,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_resptype.c:89,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iter_resptype.c:90,1
    - Dst: get_cname_target
      Src: /src/unbound/iterator/iter_resptype.c:91,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 2
    argNames:
    - msg
    - request
    argTypes:
    - struct dns_msg*
    - struct query_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 106
    functionName: response_type_from_cache
    functionSourceFile: /src/unbound/iterator/iter_resptype.c
    functionUses: 0
    functionsReached:
    - get_cname_target
    - FLAGS_GET_RCODE
    - query_dname_compare
    - ntohs
    linkageType: ''
    returnType: enum response_type
    signature: "enum response_type response_type_from_cache(struct dns_msg* msg, \n\tstruct
      query_info* request)"
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_resptype.c:126,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_resptype.c:141,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_resptype.c:148,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iter_resptype.c:149,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_resptype.c:159,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_resptype.c:190,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_resptype.c:191,1
    - Dst: dname_strict_subdomain_c
      Src: /src/unbound/iterator/iter_resptype.c:192,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_resptype.c:204,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_resptype.c:205,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iter_resptype.c:206,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_resptype.c:219,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iter_resptype.c:220,1
    - Dst: get_cname_target
      Src: /src/unbound/iterator/iter_resptype.c:221,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_resptype.c:246,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iter_resptype.c:247,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_resptype.c:265,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iter_resptype.c:268,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iter_resptype.c:292,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iter_resptype.c:300,1
    CyclomaticComplexity: 67
    EdgeCount: 67
    ICount: 98
    argCount: 8
    argNames:
    - rdset
    - msg
    - request
    - dp
    - empty_nodata_found
    - msg_lame_empty
    - msg_lame_referral
    - cfg
    argTypes:
    - int
    - struct dns_msg*
    - struct query_info*
    - struct delegpt*
    - int*
    - int
    - int
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 338
    functionName: response_type_from_server
    functionSourceFile: /src/unbound/iterator/iter_resptype.c
    functionUses: 0
    functionsReached:
    - get_cname_target
    - FLAGS_GET_RCODE
    - dname_subdomain_c
    - query_dname_compare
    - dname_strict_subdomain_c
    - ntohs
    linkageType: ''
    returnType: enum response_type
    signature: "enum response_type response_type_from_server(int rdset,\n\tstruct
      dns_msg* msg, struct query_info* request, struct delegpt* dp,\n\tint* empty_nodata_found,
      int msg_lame_empty, int msg_lame_referral,\n\tstruct config_file* cfg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/iterator/iterator.c:90,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:93,1
    - Dst: lock_basic_init
      Src: /src/unbound/iterator/iterator.c:98,1
    - Dst: lock_protect
      Src: /src/unbound/iterator/iterator.c:99,1
    - Dst: iter_apply_cfg
      Src: /src/unbound/iterator/iterator.c:103,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:104,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 109
    functionName: iter_init
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - log_err
    - lock_basic_init
    - lock_protect
    - calloc
    - iter_apply_cfg
    linkageType: ''
    returnType: int
    signature: int iter_init(struct module_env* env, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_destroy
      Src: /src/unbound/iterator/iterator.c:118,1
    - Dst: free
      Src: /src/unbound/iterator/iterator.c:119,1
    - Dst: priv_delete
      Src: /src/unbound/iterator/iterator.c:120,1
    - Dst: donotq_delete
      Src: /src/unbound/iterator/iterator.c:121,1
    - Dst: caps_white_delete
      Src: /src/unbound/iterator/iterator.c:122,1
    - Dst: free
      Src: /src/unbound/iterator/iterator.c:123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 111
    functionDepth: 2
    functionLinenumber: 111
    functionLinenumberEnd: 125
    functionName: iter_deinit
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - free
    - donotq_delete
    - caps_white_delete
    - lock_basic_destroy
    - priv_delete
    linkageType: ''
    returnType: void
    signature: void iter_deinit(struct module_env* env, int id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iterator.c:131,1
    - Dst: memset
      Src: /src/unbound/iterator/iterator.c:136,1
    - Dst: outbound_list_init
      Src: /src/unbound/iterator/iterator.c:160,1
    - Dst: memset
      Src: /src/unbound/iterator/iterator.c:168,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 35
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 170
    functionName: iter_new
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - memset
    - outbound_list_init
    - regional_alloc
    linkageType: ''
    returnType: int
    signature: int iter_new(struct module_qstate* qstate, int id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: iter_state_is_responsestate
      Src: /src/unbound/iterator/iterator.c:187,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:189,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - iq
    - nextstate
    argTypes:
    - struct iter_qstate*
    - enum iter_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 195
    functionName: next_state
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - iter_state_is_responsestate
    - log_err
    linkageType: ''
    returnType: int
    signature: int next_state(struct iter_qstate* iq, enum iter_state nextstate)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - iq
    argTypes:
    - struct iter_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 209
    functionDepth: 2
    functionLinenumber: 209
    functionLinenumberEnd: 213
    functionName: final_state
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - next_state
    linkageType: ''
    returnType: int
    signature: int final_state(struct iter_qstate* iq)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: delegpt_find_ns
      Src: /src/unbound/iterator/iterator.c:233,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:241,1
    - Dst: log_query_info
      Src: /src/unbound/iterator/iterator.c:242,1
    - Dst: cache_fill_missing
      Src: /src/unbound/iterator/iterator.c:246,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:248,1
    - Dst: delegpt_mark_neg
      Src: /src/unbound/iterator/iterator.c:250,1
    - Dst: target_count_increase_nx
      Src: /src/unbound/iterator/iterator.c:254,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 23
    argCount: 3
    argNames:
    - qstate
    - id
    - super
    argTypes:
    - struct module_qstate*
    - int
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 264
      start: 221
    functionDepth: 3
    functionLinenumber: 221
    functionLinenumberEnd: 264
    functionName: error_supers
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - log_err
    - cache_fill_missing
    - target_count_increase_nx
    - delegpt_mark_neg
    - verbose
    - log_query_info
    - delegpt_find_ns
    linkageType: ''
    returnType: void
    signature: void error_supers(struct module_qstate* qstate, int id, struct module_qstate*
      super)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:277,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/iterator/iterator.c:278,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/iterator/iterator.c:279,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - qstate
    - id
    - rcode
    argTypes:
    - struct module_qstate*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 274
    functionDepth: 1
    functionLinenumber: 274
    functionLinenumberEnd: 284
    functionName: error_response
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 3
    functionsReached:
    - verbose
    - sldns_lookup_by_id
    linkageType: ''
    returnType: int
    signature: int error_response(struct module_qstate* qstate, int id, int rcode)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:302,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:305,1
    - Dst: dns_cache_prefetch_adjust
      Src: /src/unbound/iterator/iterator.c:307,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:309,1
    - Dst: msg_cache_lookup
      Src: /src/unbound/iterator/iterator.c:312,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:322,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:327,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iterator.c:332,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iterator.c:334,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iterator.c:336,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:341,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:342,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:344,1
    - Dst: memset
      Src: /src/unbound/iterator/iterator.c:351,1
    - Dst: FLAGS_SET_RCODE
      Src: /src/unbound/iterator/iterator.c:353,1
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/iterator/iterator.c:356,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:360,1
    - Dst: iter_dns_store
      Src: /src/unbound/iterator/iterator.c:361,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:363,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 36
    argCount: 3
    argNames:
    - qstate
    - id
    - rcode
    argTypes:
    - struct module_qstate*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 295
    functionDepth: 3
    functionLinenumber: 295
    functionLinenumberEnd: 364
    functionName: error_response_cache
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - FLAGS_GET_RCODE
    - verbose
    - lock_rw_unlock
    - PREFETCH_TTL_CALC
    - iter_dns_store
    - msg_cache_lookup
    - error_response
    - dns_cache_prefetch_adjust
    - memset
    - FLAGS_SET_RCODE
    linkageType: ''
    returnType: int
    signature: int error_response_cache(struct module_qstate* qstate, int id, int
      rcode)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iterator.c:376,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 6
    argCount: 3
    argNames:
    - sets
    - to
    - dup
    argTypes:
    - struct ub_packed_rrset_key**
    - size_t
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 381
    functionName: prepend_is_duplicate
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - query_dname_compare
    linkageType: ''
    returnType: int
    signature: "int prepend_is_duplicate(struct ub_packed_rrset_key** sets, size_t
      to,\n\tstruct ub_packed_rrset_key* dup)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:397,1
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iterator.c:400,1
    - Dst: ub_packed_rrset_ttl
      Src: /src/unbound/iterator/iterator.c:408,1
    - Dst: ub_packed_rrset_ttl
      Src: /src/unbound/iterator/iterator.c:409,1
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/iterator/iterator.c:410,1
    - Dst: memcpy
      Src: /src/unbound/iterator/iterator.c:414,1
    - Dst: prepend_is_duplicate
      Src: /src/unbound/iterator/iterator.c:419,1
    - Dst: prepend_is_duplicate
      Src: /src/unbound/iterator/iterator.c:420,1
    - Dst: ub_packed_rrset_ttl
      Src: /src/unbound/iterator/iterator.c:425,1
    - Dst: ub_packed_rrset_ttl
      Src: /src/unbound/iterator/iterator.c:426,1
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/iterator/iterator.c:427,1
    - Dst: memcpy
      Src: /src/unbound/iterator/iterator.c:431,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 41
    argCount: 3
    argNames:
    - iq
    - msg
    - region
    argTypes:
    - struct iter_qstate*
    - struct dns_msg*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 384
    functionDepth: 2
    functionLinenumber: 384
    functionLinenumberEnd: 443
    functionName: iter_prepend
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - prepend_is_duplicate
    - memcpy
    - ub_packed_rrset_ttl
    - verbose
    - regional_alloc
    - PREFETCH_TTL_CALC
    linkageType: ''
    returnType: int
    signature: "int iter_prepend(struct iter_qstate* iq, struct dns_msg* msg, \n\tstruct
      regional* region)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_rrset_compare
      Src: /src/unbound/iterator/iterator.c:458,1
    - Dst: rrsetdata_equal
      Src: /src/unbound/iterator/iterator.c:459,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - iq
    - rrset
    argTypes:
    - struct iter_qstate*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 452
    functionDepth: 1
    functionLinenumber: 452
    functionLinenumberEnd: 466
    functionName: iter_find_rrset_in_prepend_answer
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - ub_rrset_compare
    - rrsetdata_equal
    linkageType: ''
    returnType: int
    signature: "int iter_find_rrset_in_prepend_answer(struct iter_qstate* iq,\n\tstruct
      ub_packed_rrset_key* rrset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iterator.c:479,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - qstate
    - iq
    - rrset
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 475
    functionDepth: 0
    functionLinenumber: 475
    functionLinenumberEnd: 491
    functionName: iter_add_prepend_answer
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - regional_alloc
    linkageType: ''
    returnType: int
    signature: "int iter_add_prepend_answer(struct module_qstate* qstate, struct iter_qstate*
      iq,\n\tstruct ub_packed_rrset_key* rrset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iterator.c:504,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - qstate
    - iq
    - rrset
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 500
    functionDepth: 0
    functionLinenumber: 500
    functionLinenumberEnd: 516
    functionName: iter_add_prepend_auth
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - regional_alloc
    linkageType: ''
    returnType: int
    signature: "int iter_add_prepend_auth(struct module_qstate* qstate, struct iter_qstate*
      iq,\n\tstruct ub_packed_rrset_key* rrset)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/iterator/iterator.c:549,1
    - Dst: dname_strict_subdomain_c
      Src: /src/unbound/iterator/iterator.c:550,1
    - Dst: iter_find_rrset_in_prepend_answer
      Src: /src/unbound/iterator/iterator.c:551,1
    - Dst: iter_add_prepend_answer
      Src: /src/unbound/iterator/iterator.c:552,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iterator.c:557,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iterator.c:558,1
    - Dst: iter_find_rrset_in_prepend_answer
      Src: /src/unbound/iterator/iterator.c:559,1
    - Dst: iter_add_prepend_answer
      Src: /src/unbound/iterator/iterator.c:561,1
    - Dst: get_cname_target
      Src: /src/unbound/iterator/iterator.c:563,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iterator.c:573,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iterator.c:574,1
    - Dst: iter_add_prepend_auth
      Src: /src/unbound/iterator/iterator.c:575,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 22
    argCount: 5
    argNames:
    - qstate
    - iq
    - msg
    - mname
    - mname_len
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - struct dns_msg*
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 580
      start: 532
    functionDepth: 2
    functionLinenumber: 532
    functionLinenumberEnd: 580
    functionName: handle_cname_response
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - get_cname_target
    - iter_add_prepend_auth
    - iter_add_prepend_answer
    - iter_find_rrset_in_prepend_answer
    - dname_strict_subdomain_c
    - query_dname_compare
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int handle_cname_response(struct module_qstate* qstate, struct iter_qstate*
      iq,\n        struct dns_msg* msg, uint8_t** mname, size_t* mname_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/iterator/iterator.c:593,1
    - Dst: memcpy
      Src: /src/unbound/iterator/iterator.c:600,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - iq
    - addr
    - addrlen
    argTypes:
    - struct iter_qstate*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 583
    functionDepth: 0
    functionLinenumber: 583
    functionLinenumberEnd: 608
    functionName: fill_fail_addr
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void fill_fail_addr(struct iter_qstate* iq, struct sockaddr_storage*
      addr,\n\tsocklen_t addrlen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/unbound/iterator/iterator.c:615,1
    - Dst: strlcpy
      Src: /src/unbound/iterator/iterator.c:617,1
    - Dst: inet_ntop
      Src: /src/unbound/iterator/iterator.c:621,1
    - Dst: strlcpy
      Src: /src/unbound/iterator/iterator.c:623,1
    - Dst: strlcpy
      Src: /src/unbound/iterator/iterator.c:627,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - iq
    - buf
    - len
    argTypes:
    - struct iter_qstate*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 611
    functionDepth: 2
    functionLinenumber: 611
    functionLinenumberEnd: 628
    functionName: print_fail_addr
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void print_fail_addr(struct iter_qstate* iq, char* buf, size_t len)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: addr_to_str
      Src: /src/unbound/iterator/iterator.c:640,1
    - Dst: print_fail_addr
      Src: /src/unbound/iterator/iterator.c:644,1
    - Dst: snprintf
      Src: /src/unbound/iterator/iterator.c:645,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:646,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:650,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:652,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:654,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:656,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:659,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:660,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:662,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:664,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iterator.c:668,1
    - Dst: sldns_wire2str_rcode_buf
      Src: /src/unbound/iterator/iterator.c:670,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iterator.c:671,1
    - Dst: snprintf
      Src: /src/unbound/iterator/iterator.c:673,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:674,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:678,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 42
    argCount: 2
    argNames:
    - qstate
    - iq
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 682
      start: 631
    functionDepth: 3
    functionLinenumber: 631
    functionLinenumberEnd: 682
    functionName: errinf_reply
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - FLAGS_GET_RCODE
    - addr_to_str
    - snprintf
    - sldns_wire2str_rcode_buf
    - print_fail_addr
    - errinf
    linkageType: ''
    returnType: void
    signature: void errinf_reply(struct module_qstate* qstate, struct iter_qstate*
      iq)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: dname_is_root
      Src: /src/unbound/iterator/iterator.c:695,1
    - Dst: hints_find
      Src: /src/unbound/iterator/iterator.c:696,1
    - Dst: delegpt_copy
      Src: /src/unbound/iterator/iterator.c:700,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:701,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:706,1
    - Dst: forwards_find
      Src: /src/unbound/iterator/iterator.c:709,1
    - Dst: delegpt_copy
      Src: /src/unbound/iterator/iterator.c:713,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:714,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:719,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 7
    argNames:
    - env
    - nm
    - ATTR_UNUSED
    - qclass
    - have_dp
    - retdp
    - region
    argTypes:
    - struct module_env*
    - uint8_t*
    - size_t
    - uint16_t
    - int*
    - struct delegpt**
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 685
    functionDepth: 2
    functionLinenumber: 685
    functionLinenumberEnd: 721
    functionName: can_have_last_resort
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - dname_is_root
    - delegpt_copy
    - lock_rw_unlock
    - forwards_find
    - hints_find
    linkageType: ''
    returnType: int
    signature: "int can_have_last_resort(struct module_env* env, uint8_t* nm, size_t
      ATTR_UNUSED(nmlen),\n\tuint16_t qclass, int* have_dp, struct delegpt** retdp,\n\tstruct
      regional* region)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: name_tree_lookup
      Src: /src/unbound/iterator/iterator.c:728,1
    - Dst: dname_count_labels
      Src: /src/unbound/iterator/iterator.c:729,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ie
    - iq
    argTypes:
    - struct iter_env*
    - struct iter_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 724
    functionDepth: 1
    functionLinenumber: 724
    functionLinenumberEnd: 731
    functionName: is_caps_whitelisted
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - name_tree_lookup
    - dname_count_labels
    linkageType: ''
    returnType: int
    signature: int is_caps_whitelisted(struct iter_env* ie, struct iter_qstate* iq)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/iterator/iterator.c:741,1
    - Dst: calloc
      Src: /src/unbound/iterator/iterator.c:745,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - qstate
    - iq
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 737
    functionDepth: 1
    functionLinenumber: 737
    functionLinenumberEnd: 753
    functionName: target_count_create
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - calloc
    linkageType: ''
    returnType: void
    signature: void target_count_create(struct module_qstate* qstate, struct iter_qstate*
      iq)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - qstate
    - iq
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 755
    functionDepth: 0
    functionLinenumber: 755
    functionLinenumberEnd: 768
    functionName: target_count_store
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void target_count_store(struct module_qstate* qstate, struct iter_qstate*
      iq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: target_count_create
      Src: /src/unbound/iterator/iterator.c:774,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - qstate
    - iq
    - num
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 770
    functionDepth: 2
    functionLinenumber: 770
    functionLinenumberEnd: 778
    functionName: target_count_increase
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - target_count_create
    linkageType: ''
    returnType: void
    signature: "void target_count_increase(struct module_qstate* qstate,\n\tstruct
      iter_qstate* iq, int num)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: target_count_create
      Src: /src/unbound/iterator/iterator.c:784,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - qstate
    - iq
    - num
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 780
    functionDepth: 2
    functionLinenumber: 780
    functionLinenumberEnd: 787
    functionName: target_count_increase_nx
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 1
    functionsReached:
    - target_count_create
    linkageType: ''
    returnType: void
    signature: "void target_count_increase_nx(struct module_qstate* qstate,\n\tstruct
      iter_qstate* iq, int num)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: target_count_create
      Src: /src/unbound/iterator/iterator.c:793,1
    - Dst: target_count_store
      Src: /src/unbound/iterator/iterator.c:796,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - qstate
    - iq
    - num
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 789
    functionDepth: 2
    functionLinenumber: 789
    functionLinenumberEnd: 797
    functionName: target_count_increase_global_quota
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - target_count_store
    - target_count_create
    linkageType: ''
    returnType: void
    signature: "void target_count_increase_global_quota(struct module_qstate* qstate,\n\tstruct
      iter_qstate* iq, int num)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/iterator/iterator.c:856,1
    - Dst: fptr_whitelist_modenv_add_sub
      Src: /src/unbound/iterator/iterator.c:856,1
    - Dst: fptr_ok
      Src: /src/unbound/iterator/iterator.c:865,1
    - Dst: fptr_whitelist_modenv_attach_sub
      Src: /src/unbound/iterator/iterator.c:865,1
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iterator.c:877,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:880,1
    - Dst: fptr_ok
      Src: /src/unbound/iterator/iterator.c:881,1
    - Dst: fptr_whitelist_modenv_kill_sub
      Src: /src/unbound/iterator/iterator.c:881,1
    - Dst: memset
      Src: /src/unbound/iterator/iterator.c:887,1
    - Dst: target_count_create
      Src: /src/unbound/iterator/iterator.c:889,1
    - Dst: outbound_list_init
      Src: /src/unbound/iterator/iterator.c:898,1
    - Dst: memset
      Src: /src/unbound/iterator/iterator.c:908,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 58
    argCount: 12
    argNames:
    - qname
    - qnamelen
    - qtype
    - qclass
    - qstate
    - id
    - iq
    - initial_state
    - finalstate
    - subq_ret
    - v
    - detached
    argTypes:
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - struct module_qstate*
    - int
    - struct iter_qstate*
    - enum iter_state
    - enum iter_state
    - struct module_qstate**
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 822
    functionDepth: 2
    functionLinenumber: 822
    functionLinenumberEnd: 911
    functionName: generate_sub_request
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - log_err
    - fptr_whitelist_modenv_kill_sub
    - fptr_whitelist_modenv_attach_sub
    - regional_alloc
    - outbound_list_init
    - fptr_ok
    - fptr_whitelist_modenv_add_sub
    - target_count_create
    - memset
    linkageType: ''
    returnType: int
    signature: "int generate_sub_request(uint8_t* qname, size_t qnamelen, uint16_t
      qtype, \n\tuint16_t qclass, struct module_qstate* qstate, int id,\n\tstruct
      iter_qstate* iq, enum iter_state initial_state, \n\tenum iter_state finalstate,
      struct module_qstate** subq_ret, int v,\n\tint detached)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:928,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/iterator/iterator.c:929,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/iterator/iterator.c:930,1
    - Dst: hints_find_root
      Src: /src/unbound/iterator/iterator.c:931,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:933,1
    - Dst: generate_sub_request
      Src: /src/unbound/iterator/iterator.c:938,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:941,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:942,1
    - Dst: delegpt_copy
      Src: /src/unbound/iterator/iterator.c:951,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:952,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:954,1
    - Dst: fptr_ok
      Src: /src/unbound/iterator/iterator.c:955,1
    - Dst: fptr_whitelist_modenv_kill_sub
      Src: /src/unbound/iterator/iterator.c:955,1
    - Dst: iter_indicates_dnssec
      Src: /src/unbound/iterator/iterator.c:962,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:965,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 4
    argNames:
    - qstate
    - iq
    - id
    - qclass
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 971
      start: 921
    functionDepth: 1
    functionLinenumber: 921
    functionLinenumberEnd: 971
    functionName: prime_root
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - log_err
    - fptr_whitelist_modenv_kill_sub
    - iter_indicates_dnssec
    - delegpt_copy
    - verbose
    - lock_rw_unlock
    - generate_sub_request
    - fptr_ok
    - hints_find_root
    - sldns_lookup_by_id
    linkageType: ''
    returnType: int
    signature: "int prime_root(struct module_qstate* qstate, struct iter_qstate* iq,
      int id,\n\tuint16_t qclass)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: hints_lookup_stub
      Src: /src/unbound/iterator/iterator.c:999,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iterator.c:1007,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1008,1
    - Dst: delegpt_copy
      Src: /src/unbound/iterator/iterator.c:1018,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1019,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:1021,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1022,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1023,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iterator.c:1026,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iterator.c:1032,1
    - Dst: generate_sub_request
      Src: /src/unbound/iterator/iterator.c:1037,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1040,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1041,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1042,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1043,1
    - Dst: delegpt_copy
      Src: /src/unbound/iterator/iterator.c:1052,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1053,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:1055,1
    - Dst: fptr_ok
      Src: /src/unbound/iterator/iterator.c:1056,1
    - Dst: fptr_whitelist_modenv_kill_sub
      Src: /src/unbound/iterator/iterator.c:1056,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1059,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1060,1
    - Dst: iter_indicates_dnssec
      Src: /src/unbound/iterator/iterator.c:1068,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1071,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 52
    argCount: 5
    argNames:
    - qstate
    - iq
    - id
    - qname
    - qclass
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - int
    - uint8_t*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 987
    functionDepth: 1
    functionLinenumber: 987
    functionLinenumberEnd: 1077
    functionName: prime_stub
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - log_err
    - log_nametypeclass
    - fptr_whitelist_modenv_kill_sub
    - delegpt_copy
    - iter_indicates_dnssec
    - verbose
    - lock_rw_unlock
    - generate_sub_request
    - fptr_ok
    - query_dname_compare
    - error_response
    - hints_lookup_stub
    - errinf
    linkageType: ''
    returnType: int
    signature: "int prime_stub(struct module_qstate* qstate, struct iter_qstate* iq,
      int id,\n\tuint8_t* qname, uint16_t qclass)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/iterator/iterator.c:1094,1
    - Dst: auth_zones_find_zone
      Src: /src/unbound/iterator/iterator.c:1095,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1098,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/iterator/iterator.c:1101,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1102,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iterator.c:1104,1
    - Dst: dname_str
      Src: /src/unbound/iterator/iterator.c:1111,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1112,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1116,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iterator.c:1120,1
    - Dst: dname_str
      Src: /src/unbound/iterator/iterator.c:1128,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1129,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1133,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/iterator/iterator.c:1136,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:1139,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1141,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1144,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1145,1
    - Dst: regional_alloc_init
      Src: /src/unbound/iterator/iterator.c:1148,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:1151,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1153,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1156,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1157,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1167,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 64
    argCount: 4
    argNames:
    - qstate
    - iq
    - delname
    - delnamelen
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1169
      start: 1083
    functionDepth: 3
    functionLinenumber: 1083
    functionLinenumberEnd: 1169
    functionName: auth_zone_delegpt
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - dname_subdomain_c
    - log_err
    - verbose
    - lock_rw_unlock
    - dname_str
    - query_dname_compare
    - regional_alloc_init
    - auth_zones_find_zone
    - lock_rw_rdlock
    - errinf
    linkageType: ''
    returnType: int
    signature: "int auth_zone_delegpt(struct module_qstate* qstate, struct iter_qstate*
      iq,\n\tuint8_t* delname, size_t delnamelen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iterator.c:1188,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iterator.c:1198,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iterator.c:1199,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iterator.c:1203,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iterator.c:1204,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iterator.c:1205,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iterator.c:1212,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iterator.c:1213,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iterator.c:1214,1
    - Dst: generate_sub_request
      Src: /src/unbound/iterator/iterator.c:1215,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iterator.c:1216,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iterator.c:1216,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1219,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 17
    argCount: 3
    argNames:
    - qstate
    - iq
    - id
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1224
      start: 1179
    functionDepth: 1
    functionLinenumber: 1179
    functionLinenumberEnd: 1224
    functionName: generate_a_aaaa_check
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - log_nametypeclass
    - verbose
    - generate_sub_request
    - query_dname_compare
    - log_assert
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void generate_a_aaaa_check(struct module_qstate* qstate, struct iter_qstate*
      iq, \n\tint id)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iterator.c:1239,1
    - Dst: can_have_last_resort
      Src: /src/unbound/iterator/iterator.c:1243,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iterator.c:1248,1
    - Dst: generate_a_aaaa_check
      Src: /src/unbound/iterator/iterator.c:1251,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iterator.c:1258,1
    - Dst: generate_sub_request
      Src: /src/unbound/iterator/iterator.c:1260,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1263,1
    - Dst: delegpt_copy
      Src: /src/unbound/iterator/iterator.c:1273,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:1275,1
    - Dst: fptr_ok
      Src: /src/unbound/iterator/iterator.c:1276,1
    - Dst: fptr_whitelist_modenv_kill_sub
      Src: /src/unbound/iterator/iterator.c:1276,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 3
    argNames:
    - qstate
    - iq
    - id
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1234
    functionDepth: 3
    functionLinenumber: 1234
    functionLinenumberEnd: 1282
    functionName: generate_ns_check
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - log_err
    - log_nametypeclass
    - fptr_whitelist_modenv_kill_sub
    - delegpt_copy
    - verbose
    - generate_a_aaaa_check
    - generate_sub_request
    - fptr_ok
    - query_dname_compare
    - log_assert
    - can_have_last_resort
    linkageType: ''
    returnType: void
    signature: void generate_ns_check(struct module_qstate* qstate, struct iter_qstate*
      iq, int id)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iterator.c:1305,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iterator.c:1309,1
    - Dst: mesh_jostle_exceeded
      Src: /src/unbound/iterator/iterator.c:1320,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iterator.c:1324,1
    - Dst: generate_sub_request
      Src: /src/unbound/iterator/iterator.c:1326,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1330,1
    - Dst: delegpt_copy
      Src: /src/unbound/iterator/iterator.c:1338,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 3
    argNames:
    - qstate
    - iq
    - id
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1341
      start: 1300
    functionDepth: 1
    functionLinenumber: 1300
    functionLinenumberEnd: 1341
    functionName: generate_dnskey_prefetch
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - log_nametypeclass
    - delegpt_copy
    - verbose
    - generate_sub_request
    - query_dname_compare
    - log_assert
    - mesh_jostle_exceeded
    linkageType: ''
    returnType: void
    signature: "void generate_dnskey_prefetch(struct module_qstate* qstate, \n\tstruct
      iter_qstate* iq, int id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: dname_is_root
      Src: /src/unbound/iterator/iterator.c:1364,1
    - Dst: dname_remove_label
      Src: /src/unbound/iterator/iterator.c:1365,1
    - Dst: forwards_lookup
      Src: /src/unbound/iterator/iterator.c:1366,1
    - Dst: delegpt_copy
      Src: /src/unbound/iterator/iterator.c:1371,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1372,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1374,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 2
    argNames:
    - qstate
    - iq
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1376
      start: 1351
    functionDepth: 2
    functionLinenumber: 1351
    functionLinenumberEnd: 1376
    functionName: forward_request
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - forwards_lookup
    - dname_is_root
    - delegpt_copy
    - verbose
    - lock_rw_unlock
    - dname_remove_label
    linkageType: ''
    returnType: int
    signature: int forward_request(struct module_qstate* qstate, struct iter_qstate*
      iq)
  - BBCount: 50
    BranchProfiles: []
    Callsites:
    - Dst: log_query_info
      Src: /src/unbound/iterator/iterator.c:1405,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1411,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1413,1
    - Dst: errinf_dname
      Src: /src/unbound/iterator/iterator.c:1416,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:1417,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1424,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1426,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1428,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1430,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:1436,1
    - Dst: can_have_last_resort
      Src: /src/unbound/iterator/iterator.c:1446,1
    - Dst: rpz_callback_from_iterator_cname
      Src: /src/unbound/iterator/iterator.c:1460,1
    - Dst: reply_find_rrset_section_an
      Src: /src/unbound/iterator/iterator.c:1465,1
    - Dst: handle_cname_response
      Src: /src/unbound/iterator/iterator.c:1472,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1474,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1475,1
    - Dst: rpz_callback_from_iterator_cname
      Src: /src/unbound/iterator/iterator.c:1480,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:1487,1
    - Dst: iter_prepend
      Src: /src/unbound/iterator/iterator.c:1488,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:1489,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1490,1
    - Dst: sock_list_insert
      Src: /src/unbound/iterator/iterator.c:1501,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:1504,1
    - Dst: iter_stub_fwd_no_cache
      Src: /src/unbound/iterator/iterator.c:1508,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1511,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1519,1
    - Dst: dns_cache_lookup
      Src: /src/unbound/iterator/iterator.c:1522,1
    - Dst: iter_qname_indicates_dnssec
      Src: /src/unbound/iterator/iterator.c:1528,1
    - Dst: val_neg_getmsg
      Src: /src/unbound/iterator/iterator.c:1531,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iterator.c:1539,1
    - Dst: response_type_from_cache
      Src: /src/unbound/iterator/iterator.c:1545,1
    - Dst: log_dns_msg
      Src: /src/unbound/iterator/iterator.c:1548,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1550,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1558,1
    - Dst: handle_cname_response
      Src: /src/unbound/iterator/iterator.c:1560,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1562,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1564,1
    - Dst: sock_list_insert
      Src: /src/unbound/iterator/iterator.c:1576,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:1579,1
    - Dst: sock_list_insert
      Src: /src/unbound/iterator/iterator.c:1583,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iterator.c:1584,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1585,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1587,1
    - Dst: final_state
      Src: /src/unbound/iterator/iterator.c:1589,1
    - Dst: forward_request
      Src: /src/unbound/iterator/iterator.c:1593,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:1596,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1597,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1598,1
    - Dst: cache_fill_missing
      Src: /src/unbound/iterator/iterator.c:1600,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1602,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1603,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1614,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1615,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1616,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:1623,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:1634,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1635,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1636,1
    - Dst: can_have_last_resort
      Src: /src/unbound/iterator/iterator.c:1646,1
    - Dst: dname_is_root
      Src: /src/unbound/iterator/iterator.c:1652,1
    - Dst: dname_remove_label
      Src: /src/unbound/iterator/iterator.c:1656,1
    - Dst: dns_cache_find_delegation
      Src: /src/unbound/iterator/iterator.c:1664,1
    - Dst: auth_zone_delegpt
      Src: /src/unbound/iterator/iterator.c:1677,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1678,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:1681,1
    - Dst: prime_stub
      Src: /src/unbound/iterator/iterator.c:1683,1
    - Dst: forwards_lookup_root
      Src: /src/unbound/iterator/iterator.c:1689,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1691,1
    - Dst: hints_find_root
      Src: /src/unbound/iterator/iterator.c:1694,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:1697,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1698,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:1699,1
    - Dst: delegpt_copy
      Src: /src/unbound/iterator/iterator.c:1702,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1703,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:1705,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1706,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1707,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:1710,1
    - Dst: prime_root
      Src: /src/unbound/iterator/iterator.c:1714,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1715,1
    - Dst: iter_dp_is_useless
      Src: /src/unbound/iterator/iterator.c:1740,1
    - Dst: can_have_last_resort
      Src: /src/unbound/iterator/iterator.c:1744,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1746,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:1750,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1752,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1753,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1758,1
    - Dst: delegpt_log
      Src: /src/unbound/iterator/iterator.c:1760,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1761,1
    - Dst: errinf_dname
      Src: /src/unbound/iterator/iterator.c:1763,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1764,1
    - Dst: dname_is_root
      Src: /src/unbound/iterator/iterator.c:1767,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1770,1
    - Dst: hints_find_root
      Src: /src/unbound/iterator/iterator.c:1772,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:1777,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1778,1
    - Dst: delegpt_copy
      Src: /src/unbound/iterator/iterator.c:1781,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1782,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:1784,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1785,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1786,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1791,1
    - Dst: delegpt_log
      Src: /src/unbound/iterator/iterator.c:1793,1
    - Dst: dname_remove_label
      Src: /src/unbound/iterator/iterator.c:1797,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:1802,1
    - Dst: delegpt_log
      Src: /src/unbound/iterator/iterator.c:1803,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:1807,1
    CyclomaticComplexity: 72
    EdgeCount: 72
    ICount: 225
    argCount: 4
    argNames:
    - qstate
    - iq
    - ie
    - id
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - struct iter_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1808
      start: 1396
    functionDepth: 6
    functionLinenumber: 1396
    functionLinenumberEnd: 1808
    functionName: processInitRequest
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - reply_find_rrset_section_an
    - auth_zone_delegpt
    - dname_remove_label
    - sock_list_insert
    - hints_find_root
    - error_response
    - dns_cache_lookup
    - delegpt_log
    - errinf
    - log_err
    - cache_fill_missing
    - iter_stub_fwd_no_cache
    - delegpt_copy
    - forwards_lookup_root
    - forward_request
    - next_state
    - dname_is_root
    - log_dns_msg
    - verbose
    - lock_rw_unlock
    - errinf_dname
    - query_dname_compare
    - iter_prepend
    - FLAGS_GET_RCODE
    - log_query_info
    - error_response_cache
    - handle_cname_response
    - iter_dp_is_useless
    - iter_qname_indicates_dnssec
    - rpz_callback_from_iterator_cname
    - response_type_from_cache
    - dns_cache_find_delegation
    - val_neg_getmsg
    - prime_stub
    - prime_root
    - final_state
    - can_have_last_resort
    linkageType: ''
    returnType: int
    signature: "int processInitRequest(struct module_qstate* qstate, struct iter_qstate*
      iq,\n\tstruct iter_env* ie, int id)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: log_query_info
      Src: /src/unbound/iterator/iterator.c:1831,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:1840,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:1841,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1842,1
    - Dst: hints_lookup_stub
      Src: /src/unbound/iterator/iterator.c:1846,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iterator.c:1850,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:1855,1
    - Dst: dname_is_root
      Src: /src/unbound/iterator/iterator.c:1858,1
    - Dst: dname_remove_label
      Src: /src/unbound/iterator/iterator.c:1859,1
    - Dst: auth_zone_delegpt
      Src: /src/unbound/iterator/iterator.c:1865,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:1866,1
    - Dst: prime_stub
      Src: /src/unbound/iterator/iterator.c:1869,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:1875,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 30
    argCount: 3
    argNames:
    - qstate
    - iq
    - id
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1876
      start: 1825
    functionDepth: 4
    functionLinenumber: 1825
    functionLinenumberEnd: 1876
    functionName: processInitRequest2
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - log_err
    - dname_subdomain_c
    - dname_is_root
    - log_query_info
    - lock_rw_unlock
    - dname_remove_label
    - auth_zone_delegpt
    - error_response
    - hints_lookup_stub
    - prime_stub
    - next_state
    - errinf
    linkageType: ''
    returnType: int
    signature: "int processInitRequest2(struct module_qstate* qstate, struct iter_qstate*
      iq,\n\tint id)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_query_info
      Src: /src/unbound/iterator/iterator.c:1893,1
    - Dst: iter_indicates_dnssec
      Src: /src/unbound/iterator/iterator.c:1897,1
    - Dst: log_dns_msg
      Src: /src/unbound/iterator/iterator.c:1905,1
    - Dst: sock_list_insert
      Src: /src/unbound/iterator/iterator.c:1908,1
    - Dst: final_state
      Src: /src/unbound/iterator/iterator.c:1909,1
    - Dst: generate_dnskey_prefetch
      Src: /src/unbound/iterator/iterator.c:1918,1
    - Dst: fptr_ok
      Src: /src/unbound/iterator/iterator.c:1919,1
    - Dst: fptr_whitelist_modenv_detach_subs
      Src: /src/unbound/iterator/iterator.c:1919,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:1925,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 3
    argNames:
    - qstate
    - iq
    - id
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1926
      start: 1889
    functionDepth: 3
    functionLinenumber: 1889
    functionLinenumberEnd: 1926
    functionName: processInitRequest3
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - iter_indicates_dnssec
    - fptr_whitelist_modenv_detach_subs
    - log_dns_msg
    - generate_dnskey_prefetch
    - log_query_info
    - fptr_ok
    - sock_list_insert
    - next_state
    - final_state
    linkageType: ''
    returnType: int
    signature: "int processInitRequest3(struct module_qstate* qstate, struct iter_qstate*
      iq, \n\tint id)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: generate_sub_request
      Src: /src/unbound/iterator/iterator.c:1948,1
    - Dst: sock_list_insert
      Src: /src/unbound/iterator/iterator.c:1955,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iterator.c:1957,1
    - Dst: delegpt_copy
      Src: /src/unbound/iterator/iterator.c:1958,1
    - Dst: iter_indicates_dnssec
      Src: /src/unbound/iterator/iterator.c:1959,1
    - Dst: dns_cache_find_delegation
      Src: /src/unbound/iterator/iterator.c:1964,1
    - Dst: iter_indicates_dnssec
      Src: /src/unbound/iterator/iterator.c:1971,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iterator.c:1978,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 7
    argNames:
    - qstate
    - iq
    - id
    - name
    - namelen
    - qtype
    - qclass
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - int
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1980
      start: 1942
    functionDepth: 4
    functionLinenumber: 1942
    functionLinenumberEnd: 1980
    functionName: generate_parentside_target_query
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    - iter_indicates_dnssec
    - log_nametypeclass
    - delegpt_copy
    - generate_sub_request
    - sock_list_insert
    - dns_cache_find_delegation
    linkageType: ''
    returnType: int
    signature: "int generate_parentside_target_query(struct module_qstate* qstate,
      \n\tstruct iter_qstate* iq, int id, uint8_t* name, size_t namelen, \n\tuint16_t
      qtype, uint16_t qclass)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: generate_sub_request
      Src: /src/unbound/iterator/iterator.c:2000,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iterator.c:2003,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 7
    argNames:
    - qstate
    - iq
    - id
    - name
    - namelen
    - qtype
    - qclass
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - int
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2005
      start: 1995
    functionDepth: 1
    functionLinenumber: 1995
    functionLinenumberEnd: 2005
    functionName: generate_target_query
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - generate_sub_request
    - log_nametypeclass
    linkageType: ''
    returnType: int
    signature: "int generate_target_query(struct module_qstate* qstate, struct iter_qstate*
      iq,\n        int id, uint8_t* name, size_t namelen, uint16_t qtype, uint16_t
      qclass)"
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: iter_mark_cycle_targets
      Src: /src/unbound/iterator/iterator.c:2031,1
    - Dst: delegpt_count_missing_targets
      Src: /src/unbound/iterator/iterator.c:2032,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iterator.c:2033,1
    - Dst: dname_str
      Src: /src/unbound/iterator/iterator.c:2053,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2054,1
    - Dst: dname_str
      Src: /src/unbound/iterator/iterator.c:2061,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2062,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iterator.c:2069,1
    - Dst: iter_ns_probability
      Src: /src/unbound/iterator/iterator.c:2077,1
    - Dst: generate_target_query
      Src: /src/unbound/iterator/iterator.c:2088,1
    - Dst: mesh_jostle_exceeded
      Src: /src/unbound/iterator/iterator.c:2103,1
    - Dst: generate_target_query
      Src: /src/unbound/iterator/iterator.c:2118,1
    - Dst: mesh_jostle_exceeded
      Src: /src/unbound/iterator/iterator.c:2128,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 69
    argCount: 6
    argNames:
    - qstate
    - iq
    - ie
    - id
    - maxtargets
    - num
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - struct iter_env*
    - int
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2149
      start: 2022
    functionDepth: 2
    functionLinenumber: 2022
    functionLinenumberEnd: 2149
    functionName: query_for_targets
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - delegpt_count_missing_targets
    - verbose
    - iter_ns_probability
    - dname_str
    - generate_target_query
    - log_assert
    - mesh_jostle_exceeded
    - iter_mark_cycle_targets
    linkageType: ''
    returnType: int
    signature: "int query_for_targets(struct module_qstate* qstate, struct iter_qstate*
      iq,\n        struct iter_env* ie, int id, int maxtargets, int* num)"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2169,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iterator.c:2170,1
    - Dst: can_have_last_resort
      Src: /src/unbound/iterator/iterator.c:2172,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2176,1
    - Dst: errinf_dname
      Src: /src/unbound/iterator/iterator.c:2177,1
    - Dst: errinf_reply
      Src: /src/unbound/iterator/iterator.c:2178,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2179,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:2180,1
    - Dst: cache_fill_missing
      Src: /src/unbound/iterator/iterator.c:2184,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:2186,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2188,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:2189,1
    - Dst: dname_is_root
      Src: /src/unbound/iterator/iterator.c:2192,1
    - Dst: hints_find_root
      Src: /src/unbound/iterator/iterator.c:2195,1
    - Dst: delegpt_add_ns
      Src: /src/unbound/iterator/iterator.c:2201,1
    - Dst: delegpt_add_addr
      Src: /src/unbound/iterator/iterator.c:2206,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iterator.c:2210,1
    - Dst: iter_lookup_parent_NS_from_cache
      Src: /src/unbound/iterator/iterator.c:2218,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2223,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:2233,1
    - Dst: cache_fill_missing
      Src: /src/unbound/iterator/iterator.c:2237,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:2239,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2241,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:2242,1
    - Dst: iter_lookup_parent_glue_from_cache
      Src: /src/unbound/iterator/iterator.c:2245,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2248,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:2249,1
    - Dst: delegpt_count_missing_targets
      Src: /src/unbound/iterator/iterator.c:2252,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2254,1
    - Dst: query_for_targets
      Src: /src/unbound/iterator/iterator.c:2255,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2256,1
    - Dst: errinf_dname
      Src: /src/unbound/iterator/iterator.c:2257,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:2259,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:2260,1
    - Dst: target_count_increase
      Src: /src/unbound/iterator/iterator.c:2263,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2270,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2271,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:2272,1
    - Dst: dname_str
      Src: /src/unbound/iterator/iterator.c:2277,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2278,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2281,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:2282,1
    - Dst: iter_mark_pside_cycle_targets
      Src: /src/unbound/iterator/iterator.c:2285,1
    - Dst: can_have_last_resort
      Src: /src/unbound/iterator/iterator.c:2293,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iterator.c:2295,1
    - Dst: generate_parentside_target_query
      Src: /src/unbound/iterator/iterator.c:2305,1
    - Dst: errinf_dname
      Src: /src/unbound/iterator/iterator.c:2308,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:2309,1
    - Dst: mesh_jostle_exceeded
      Src: /src/unbound/iterator/iterator.c:2314,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2317,1
    - Dst: target_count_increase
      Src: /src/unbound/iterator/iterator.c:2319,1
    - Dst: generate_parentside_target_query
      Src: /src/unbound/iterator/iterator.c:2326,1
    - Dst: errinf_dname
      Src: /src/unbound/iterator/iterator.c:2329,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:2330,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2337,1
    - Dst: target_count_increase
      Src: /src/unbound/iterator/iterator.c:2339,1
    - Dst: iter_store_parentside_neg
      Src: /src/unbound/iterator/iterator.c:2349,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2353,1
    - Dst: errinf_dname
      Src: /src/unbound/iterator/iterator.c:2354,1
    - Dst: errinf_reply
      Src: /src/unbound/iterator/iterator.c:2355,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2356,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:2359,1
    CyclomaticComplexity: 47
    EdgeCount: 47
    ICount: 135
    argCount: 4
    argNames:
    - qstate
    - iq
    - ie
    - id
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - struct iter_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2360
      start: 2163
    functionDepth: 5
    functionLinenumber: 2163
    functionLinenumberEnd: 2360
    functionName: processLastResort
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - delegpt_add_ns
    - log_nametypeclass
    - generate_parentside_target_query
    - hints_find_root
    - error_response
    - iter_mark_pside_cycle_targets
    - errinf
    - cache_fill_missing
    - log_err
    - target_count_increase
    - iter_lookup_parent_glue_from_cache
    - errinf_reply
    - next_state
    - dname_is_root
    - delegpt_add_addr
    - verbose
    - lock_rw_unlock
    - iter_store_parentside_neg
    - errinf_dname
    - log_assert
    - mesh_jostle_exceeded
    - delegpt_count_missing_targets
    - error_response_cache
    - dname_str
    - iter_lookup_parent_NS_from_cache
    - query_for_targets
    - can_have_last_resort
    linkageType: ''
    returnType: int
    signature: "int processLastResort(struct module_qstate* qstate, struct iter_qstate*
      iq,\n\tstruct iter_env* ie, int id)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2380,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iterator.c:2388,1
    - Dst: errinf_dname
      Src: /src/unbound/iterator/iterator.c:2389,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:2390,1
    - Dst: dname_remove_label
      Src: /src/unbound/iterator/iterator.c:2394,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2396,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2398,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:2399,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iterator.c:2401,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iterator.c:2411,1
    - Dst: generate_sub_request
      Src: /src/unbound/iterator/iterator.c:2413,1
    - Dst: errinf_dname
      Src: /src/unbound/iterator/iterator.c:2416,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:2417,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 3
    argNames:
    - qstate
    - iq
    - id
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2421
      start: 2376
    functionDepth: 4
    functionLinenumber: 2376
    functionLinenumberEnd: 2421
    functionName: processDSNSFind
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    - log_nametypeclass
    - verbose
    - generate_sub_request
    - dname_remove_label
    - error_response_cache
    - errinf_dname
    - query_dname_compare
    - errinf
    linkageType: ''
    returnType: int
    signature: int processDSNSFind(struct module_qstate* qstate, struct iter_qstate*
      iq, int id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2432,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2438,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2442,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - iq
    - qstate
    - id
    argTypes:
    - struct iter_qstate*
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2447
      start: 2427
    functionDepth: 1
    functionLinenumber: 2427
    functionLinenumberEnd: 2447
    functionName: check_waiting_queries
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - verbose
    linkageType: ''
    returnType: void
    signature: "void check_waiting_queries(struct iter_qstate* iq, struct module_qstate*
      qstate,\n\tint id)"
  - BBCount: 79
    BranchProfiles: []
    Callsites:
    - Dst: log_query_info
      Src: /src/unbound/iterator/iterator.c:2483,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2484,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2490,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2492,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:2493,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2496,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2498,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:2499,1
    - Dst: check_waiting_queries
      Src: /src/unbound/iterator/iterator.c:2508,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2511,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2516,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2518,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:2520,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2525,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2528,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:2529,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2531,1
    - Dst: malloc
      Src: /src/unbound/iterator/iterator.c:2541,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2543,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2545,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:2547,1
    - Dst: memcpy
      Src: /src/unbound/iterator/iterator.c:2549,1
    - Dst: check_waiting_queries
      Src: /src/unbound/iterator/iterator.c:2554,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2559,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2561,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:2563,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2567,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2571,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:2572,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/iterator/iterator.c:2577,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2578,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2591,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2592,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:2593,1
    - Dst: delegpt_no_ipv6
      Src: /src/unbound/iterator/iterator.c:2596,1
    - Dst: delegpt_no_ipv4
      Src: /src/unbound/iterator/iterator.c:2598,1
    - Dst: delegpt_log
      Src: /src/unbound/iterator/iterator.c:2599,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2605,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iterator.c:2617,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iterator.c:2619,1
    - Dst: dname_count_labels
      Src: /src/unbound/iterator/iterator.c:2632,1
    - Dst: dname_count_labels
      Src: /src/unbound/iterator/iterator.c:2634,1
    - Dst: iter_dec_attempts
      Src: /src/unbound/iterator/iterator.c:2643,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2675,1
    - Dst: dname_remove_labels
      Src: /src/unbound/iterator/iterator.c:2676,1
    - Dst: dns_cache_lookup
      Src: /src/unbound/iterator/iterator.c:2686,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iterator.c:2692,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iterator.c:2697,1
    - Dst: final_state
      Src: /src/unbound/iterator/iterator.c:2703,1
    - Dst: generate_sub_request
      Src: /src/unbound/iterator/iterator.c:2707,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2715,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iterator.c:2720,1
    - Dst: auth_zones_can_fallback
      Src: /src/unbound/iterator/iterator.c:2747,1
    - Dst: auth_zones_lookup
      Src: /src/unbound/iterator/iterator.c:2758,1
    - Dst: log_dns_msg
      Src: /src/unbound/iterator/iterator.c:2763,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2767,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:2774,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2781,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2783,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:2784,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:2790,1
    - Dst: mesh_jostle_exceeded
      Src: /src/unbound/iterator/iterator.c:2808,1
    - Dst: query_for_targets
      Src: /src/unbound/iterator/iterator.c:2816,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2817,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:2819,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:2820,1
    - Dst: target_count_increase
      Src: /src/unbound/iterator/iterator.c:2823,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2826,1
    - Dst: delegpt_count_addr
      Src: /src/unbound/iterator/iterator.c:2838,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2846,1
    - Dst: iter_dec_attempts
      Src: /src/unbound/iterator/iterator.c:2851,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2859,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2868,1
    - Dst: query_for_targets
      Src: /src/unbound/iterator/iterator.c:2870,1
    - Dst: target_count_increase
      Src: /src/unbound/iterator/iterator.c:2874,1
    - Dst: delegpt_add_unused_targets
      Src: /src/unbound/iterator/iterator.c:2878,1
    - Dst: rpz_callback_from_iterator_module
      Src: /src/unbound/iterator/iterator.c:2885,1
    - Dst: reply_find_rrset_section_an
      Src: /src/unbound/iterator/iterator.c:2887,1
    - Dst: handle_cname_response
      Src: /src/unbound/iterator/iterator.c:2894,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2896,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:2897,1
    - Dst: rpz_callback_from_iterator_cname
      Src: /src/unbound/iterator/iterator.c:2902,1
    - Dst: outbound_list_clear
      Src: /src/unbound/iterator/iterator.c:2917,1
    - Dst: fptr_ok
      Src: /src/unbound/iterator/iterator.c:2919,1
    - Dst: fptr_whitelist_modenv_detach_subs
      Src: /src/unbound/iterator/iterator.c:2919,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:2923,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:2931,1
    - Dst: iter_prepend
      Src: /src/unbound/iterator/iterator.c:2932,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:2933,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:2934,1
    - Dst: iter_server_selection
      Src: /src/unbound/iterator/iterator.c:2941,1
    - Dst: delegpt_count_missing_targets
      Src: /src/unbound/iterator/iterator.c:2962,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:2964,1
    - Dst: query_for_targets
      Src: /src/unbound/iterator/iterator.c:2966,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2968,1
    - Dst: errinf_dname
      Src: /src/unbound/iterator/iterator.c:2969,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:2971,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:2973,1
    - Dst: delegpt_count_missing_targets
      Src: /src/unbound/iterator/iterator.c:2977,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:2991,1
    - Dst: errinf_dname
      Src: /src/unbound/iterator/iterator.c:2992,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:2993,1
    - Dst: target_count_increase
      Src: /src/unbound/iterator/iterator.c:2997,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3007,1
    - Dst: iter_dec_attempts
      Src: /src/unbound/iterator/iterator.c:3013,1
    - Dst: processLastResort
      Src: /src/unbound/iterator/iterator.c:3021,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3027,1
    - Dst: check_waiting_queries
      Src: /src/unbound/iterator/iterator.c:3028,1
    - Dst: ub_random_max
      Src: /src/unbound/iterator/iterator.c:3048,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3050,1
    - Dst: query_for_targets
      Src: /src/unbound/iterator/iterator.c:3052,1
    - Dst: target_count_increase
      Src: /src/unbound/iterator/iterator.c:3057,1
    - Dst: check_waiting_queries
      Src: /src/unbound/iterator/iterator.c:3058,1
    - Dst: target_count_increase_global_quota
      Src: /src/unbound/iterator/iterator.c:3070,1
    - Dst: dname_str
      Src: /src/unbound/iterator/iterator.c:3074,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3075,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:3078,1
    - Dst: log_query_info
      Src: /src/unbound/iterator/iterator.c:3088,1
    - Dst: log_name_addr
      Src: /src/unbound/iterator/iterator.c:3089,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3091,1
    - Dst: fptr_ok
      Src: /src/unbound/iterator/iterator.c:3096,1
    - Dst: fptr_whitelist_modenv_send_query
      Src: /src/unbound/iterator/iterator.c:3096,1
    - Dst: iter_qname_indicates_dnssec
      Src: /src/unbound/iterator/iterator.c:3104,1
    - Dst: is_caps_whitelisted
      Src: /src/unbound/iterator/iterator.c:3106,1
    - Dst: lock_basic_lock
      Src: /src/unbound/iterator/iterator.c:3115,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/iterator/iterator.c:3117,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3118,1
    - Dst: errinf_dname
      Src: /src/unbound/iterator/iterator.c:3120,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:3122,1
    - Dst: log_addr
      Src: /src/unbound/iterator/iterator.c:3124,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:3128,1
    - Dst: outbound_list_insert
      Src: /src/unbound/iterator/iterator.c:3130,1
    CyclomaticComplexity: 133
    EdgeCount: 133
    ICount: 364
    argCount: 4
    argNames:
    - qstate
    - iq
    - ie
    - id
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - struct iter_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3136
      start: 2465
    functionDepth: 13
    functionLinenumber: 2465
    functionLinenumberEnd: 3136
    functionName: processQueryTargets
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - fptr_whitelist_modenv_detach_subs
    - reply_find_rrset_section_an
    - target_count_increase_global_quota
    - rpz_callback_from_iterator_module
    - outbound_list_insert
    - is_caps_whitelisted
    - error_response
    - lock_basic_lock
    - dns_cache_lookup
    - delegpt_log
    - outbound_list_clear
    - errinf
    - iter_server_selection
    - check_waiting_queries
    - dname_subdomain_c
    - target_count_increase
    - log_err
    - iter_dec_attempts
    - dname_remove_labels
    - fptr_ok
    - fptr_whitelist_modenv_send_query
    - next_state
    - memcpy
    - processLastResort
    - log_dns_msg
    - verbose
    - delegpt_count_addr
    - auth_zones_lookup
    - malloc
    - errinf_dname
    - delegpt_no_ipv4
    - mesh_jostle_exceeded
    - log_name_addr
    - delegpt_count_missing_targets
    - query_for_targets
    - FLAGS_GET_RCODE
    - iter_prepend
    - ub_random_max
    - lock_basic_unlock
    - log_query_info
    - generate_sub_request
    - auth_zones_can_fallback
    - error_response_cache
    - handle_cname_response
    - dname_canonical_compare
    - dname_str
    - rpz_callback_from_iterator_cname
    - iter_qname_indicates_dnssec
    - log_addr
    - delegpt_no_ipv6
    - dname_count_labels
    - final_state
    - delegpt_add_unused_targets
    linkageType: ''
    returnType: int
    signature: "int processQueryTargets(struct module_qstate* qstate, struct iter_qstate*
      iq,\n\tstruct iter_env* ie, int id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/iterator/iterator.c:3144,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - rep
    - from
    - to
    argTypes:
    - struct reply_info*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3148
      start: 3139
    functionDepth: 0
    functionLinenumber: 3139
    functionLinenumberEnd: 3148
    functionName: find_NS
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - ntohs
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: 'struct ub_packed_rrset_key *

      find_NS(struct reply_info* rep, size_t from, size_t to)'
  - BBCount: 79
    BranchProfiles: []
    Callsites:
    - Dst: inplace_cb_query_response_call
      Src: /src/unbound/iterator/iterator.c:3173,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:3174,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3184,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:3185,1
    - Dst: response_type_from_server
      Src: /src/unbound/iterator/iterator.c:3189,1
    - Dst: delegpt_find_addr
      Src: /src/unbound/iterator/iterator.c:3200,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:3206,1
    - Dst: iter_msg_has_dnssec
      Src: /src/unbound/iterator/iterator.c:3224,1
    - Dst: delegpt_find_addr
      Src: /src/unbound/iterator/iterator.c:3230,1
    - Dst: iter_msg_from_zone
      Src: /src/unbound/iterator/iterator.c:3238,1
    - Dst: find_NS
      Src: /src/unbound/iterator/iterator.c:3247,1
    - Dst: find_NS
      Src: /src/unbound/iterator/iterator.c:3251,1
    - Dst: dname_strict_subdomain_c
      Src: /src/unbound/iterator/iterator.c:3253,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iterator.c:3254,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3255,1
    - Dst: iter_scrub_ds
      Src: /src/unbound/iterator/iterator.c:3258,1
    - Dst: iter_scrub_ds
      Src: /src/unbound/iterator/iterator.c:3259,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iterator.c:3261,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iterator.c:3269,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iterator.c:3279,1
    - Dst: get_cname_target
      Src: /src/unbound/iterator/iterator.c:3282,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iterator.c:3284,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iterator.c:3293,1
    - Dst: reply_find_rrset_section_an
      Src: /src/unbound/iterator/iterator.c:3309,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iterator.c:3321,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iterator.c:3325,1
    - Dst: get_cname_target
      Src: /src/unbound/iterator/iterator.c:3329,1
    - Dst: rpz_callback_from_iterator_cname
      Src: /src/unbound/iterator/iterator.c:3331,1
    - Dst: shorten_answer_cname
      Src: /src/unbound/iterator/iterator.c:3337,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3352,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iterator.c:3353,1
    - Dst: iter_ds_toolow
      Src: /src/unbound/iterator/iterator.c:3362,1
    - Dst: iter_dp_cangodown
      Src: /src/unbound/iterator/iterator.c:3363,1
    - Dst: outbound_list_clear
      Src: /src/unbound/iterator/iterator.c:3365,1
    - Dst: fptr_ok
      Src: /src/unbound/iterator/iterator.c:3367,1
    - Dst: fptr_whitelist_modenv_detach_subs
      Src: /src/unbound/iterator/iterator.c:3367,1
    - Dst: processDSNSFind
      Src: /src/unbound/iterator/iterator.c:3371,1
    - Dst: reply_find_answer_rrset
      Src: /src/unbound/iterator/iterator.c:3375,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3379,1
    - Dst: iter_make_minimal
      Src: /src/unbound/iterator/iterator.c:3381,1
    - Dst: iter_dns_store
      Src: /src/unbound/iterator/iterator.c:3384,1
    - Dst: outbound_list_clear
      Src: /src/unbound/iterator/iterator.c:3392,1
    - Dst: fptr_ok
      Src: /src/unbound/iterator/iterator.c:3394,1
    - Dst: fptr_whitelist_modenv_detach_subs
      Src: /src/unbound/iterator/iterator.c:3394,1
    - Dst: sock_list_insert
      Src: /src/unbound/iterator/iterator.c:3399,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iterator.c:3404,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iterator.c:3407,1
    - Dst: iter_scrub_nxdomain
      Src: /src/unbound/iterator/iterator.c:3409,1
    - Dst: final_state
      Src: /src/unbound/iterator/iterator.c:3410,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:3412,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iterator.c:3420,1
    - Dst: final_state
      Src: /src/unbound/iterator/iterator.c:3430,1
    - Dst: log_query_info
      Src: /src/unbound/iterator/iterator.c:3437,1
    - Dst: generate_sub_request
      Src: /src/unbound/iterator/iterator.c:3440,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3448,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:3453,1
    - Dst: final_state
      Src: /src/unbound/iterator/iterator.c:3455,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3460,1
    - Dst: reply_find_rrset_section_ns
      Src: /src/unbound/iterator/iterator.c:3472,1
    - Dst: reply_find_rrset_section_an
      Src: /src/unbound/iterator/iterator.c:3475,1
    - Dst: iter_dns_store
      Src: /src/unbound/iterator/iterator.c:3482,1
    - Dst: iter_store_parentside_NS
      Src: /src/unbound/iterator/iterator.c:3486,1
    - Dst: val_neg_addreferral
      Src: /src/unbound/iterator/iterator.c:3489,1
    - Dst: reply_find_rrset
      Src: /src/unbound/iterator/iterator.c:3495,1
    - Dst: log_rrset_key
      Src: /src/unbound/iterator/iterator.c:3499,1
    - Dst: iter_store_parentside_rrset
      Src: /src/unbound/iterator/iterator.c:3501,1
    - Dst: infra_ratelimit_dec
      Src: /src/unbound/iterator/iterator.c:3514,1
    - Dst: delegpt_from_message
      Src: /src/unbound/iterator/iterator.c:3517,1
    - Dst: deleg_port_number
      Src: /src/unbound/iterator/iterator.c:3518,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:3522,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:3523,1
    - Dst: rrset_cache_remove_above
      Src: /src/unbound/iterator/iterator.c:3534,1
    - Dst: cache_fill_missing
      Src: /src/unbound/iterator/iterator.c:3539,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:3541,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:3542,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iterator.c:3544,1
    - Dst: iter_merge_retry_counts
      Src: /src/unbound/iterator/iterator.c:3546,1
    - Dst: delegpt_log
      Src: /src/unbound/iterator/iterator.c:3548,1
    - Dst: iter_indicates_dnssec
      Src: /src/unbound/iterator/iterator.c:3555,1
    - Dst: generate_dnskey_prefetch
      Src: /src/unbound/iterator/iterator.c:3560,1
    - Dst: generate_ns_check
      Src: /src/unbound/iterator/iterator.c:3567,1
    - Dst: outbound_list_clear
      Src: /src/unbound/iterator/iterator.c:3573,1
    - Dst: fptr_ok
      Src: /src/unbound/iterator/iterator.c:3575,1
    - Dst: fptr_whitelist_modenv_detach_subs
      Src: /src/unbound/iterator/iterator.c:3575,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3581,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:3582,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3589,1
    - Dst: log_dns_msg
      Src: /src/unbound/iterator/iterator.c:3591,1
    - Dst: iter_ds_toolow
      Src: /src/unbound/iterator/iterator.c:3597,1
    - Dst: iter_dp_cangodown
      Src: /src/unbound/iterator/iterator.c:3598,1
    - Dst: outbound_list_clear
      Src: /src/unbound/iterator/iterator.c:3599,1
    - Dst: fptr_ok
      Src: /src/unbound/iterator/iterator.c:3601,1
    - Dst: fptr_whitelist_modenv_detach_subs
      Src: /src/unbound/iterator/iterator.c:3601,1
    - Dst: processDSNSFind
      Src: /src/unbound/iterator/iterator.c:3605,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iterator.c:3608,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3610,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:3614,1
    - Dst: handle_cname_response
      Src: /src/unbound/iterator/iterator.c:3617,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:3619,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:3620,1
    - Dst: iter_dns_store
      Src: /src/unbound/iterator/iterator.c:3627,1
    - Dst: rpz_callback_from_iterator_cname
      Src: /src/unbound/iterator/iterator.c:3638,1
    - Dst: reply_find_rrset_section_an
      Src: /src/unbound/iterator/iterator.c:3640,1
    - Dst: handle_cname_response
      Src: /src/unbound/iterator/iterator.c:3647,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:3649,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:3650,1
    - Dst: rpz_callback_from_iterator_cname
      Src: /src/unbound/iterator/iterator.c:3655,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:3662,1
    - Dst: iter_prepend
      Src: /src/unbound/iterator/iterator.c:3663,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:3664,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:3665,1
    - Dst: outbound_list_clear
      Src: /src/unbound/iterator/iterator.c:3686,1
    - Dst: fptr_ok
      Src: /src/unbound/iterator/iterator.c:3688,1
    - Dst: fptr_whitelist_modenv_detach_subs
      Src: /src/unbound/iterator/iterator.c:3688,1
    - Dst: sock_list_insert
      Src: /src/unbound/iterator/iterator.c:3693,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3696,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:3698,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3701,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iterator.c:3703,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:3704,1
    - Dst: infra_set_lame
      Src: /src/unbound/iterator/iterator.c:3709,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:3715,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3719,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iterator.c:3721,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:3722,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3727,1
    - Dst: infra_set_lame
      Src: /src/unbound/iterator/iterator.c:3728,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:3733,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3740,1
    - Dst: log_warn
      Src: /src/unbound/iterator/iterator.c:3742,1
    - Dst: auth_zones_can_fallback
      Src: /src/unbound/iterator/iterator.c:3755,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3757,1
    - Dst: errinf_dname
      Src: /src/unbound/iterator/iterator.c:3759,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:3761,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3763,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:3770,1
    - Dst: next_state
      Src: /src/unbound/iterator/iterator.c:3773,1
    CyclomaticComplexity: 142
    EdgeCount: 142
    ICount: 304
    argCount: 4
    argNames:
    - qstate
    - iq
    - ie
    - id
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - struct iter_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3774
      start: 3164
    functionDepth: 6
    functionLinenumber: 3164
    functionLinenumberEnd: 3774
    functionName: processQueryResponse
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - iter_store_parentside_rrset
    - fptr_whitelist_modenv_detach_subs
    - deleg_port_number
    - processDSNSFind
    - reply_find_rrset_section_an
    - iter_indicates_dnssec
    - infra_set_lame
    - find_NS
    - sock_list_insert
    - dname_strict_subdomain_c
    - iter_ds_toolow
    - error_response
    - inplace_cb_query_response_call
    - iter_make_minimal
    - outbound_list_clear
    - rrset_cache_remove_above
    - val_neg_addreferral
    - delegpt_log
    - iter_msg_from_zone
    - errinf
    - iter_scrub_nxdomain
    - log_err
    - iter_msg_has_dnssec
    - dname_subdomain_c
    - cache_fill_missing
    - generate_dnskey_prefetch
    - response_type_from_server
    - log_rrset_key
    - generate_ns_check
    - fptr_ok
    - next_state
    - iter_merge_retry_counts
    - iter_store_parentside_NS
    - get_cname_target
    - iter_scrub_ds
    - log_dns_msg
    - reply_find_rrset_section_ns
    - verbose
    - reply_find_answer_rrset
    - errinf_dname
    - query_dname_compare
    - delegpt_from_message
    - log_warn
    - iter_dp_cangodown
    - reply_find_rrset
    - iter_prepend
    - FLAGS_GET_RCODE
    - ntohs
    - log_query_info
    - generate_sub_request
    - auth_zones_can_fallback
    - iter_dns_store
    - error_response_cache
    - infra_ratelimit_dec
    - handle_cname_response
    - rpz_callback_from_iterator_cname
    - delegpt_find_addr
    - final_state
    - shorten_answer_cname
    linkageType: ''
    returnType: int
    signature: "int processQueryResponse(struct module_qstate* qstate, struct iter_qstate*
      iq,\n\tstruct iter_env* ie, int id)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iterator.c:3792,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iterator.c:3793,1
    - Dst: delegpt_from_message
      Src: /src/unbound/iterator/iterator.c:3795,1
    - Dst: deleg_port_number
      Src: /src/unbound/iterator/iterator.c:3796,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3800,1
    - Dst: log_query_info
      Src: /src/unbound/iterator/iterator.c:3807,1
    - Dst: delegpt_log
      Src: /src/unbound/iterator/iterator.c:3808,1
    - Dst: dns_copy_msg
      Src: /src/unbound/iterator/iterator.c:3810,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:3812,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 3
    argNames:
    - qstate
    - id
    - forq
    argTypes:
    - struct module_qstate*
    - int
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3825
      start: 3786
    functionDepth: 1
    functionLinenumber: 3786
    functionLinenumberEnd: 3825
    functionName: prime_supers
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - log_err
    - deleg_port_number
    - dns_copy_msg
    - verbose
    - log_query_info
    - log_assert
    - delegpt_from_message
    - delegpt_log
    linkageType: ''
    returnType: void
    signature: void prime_supers(struct module_qstate* qstate, int id, struct module_qstate*
      forq)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: response_type_from_server
      Src: /src/unbound/iterator/iterator.c:3845,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:3853,1
    - Dst: errinf_dname
      Src: /src/unbound/iterator/iterator.c:3854,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iterator.c:3865,1
    - Dst: generate_sub_request
      Src: /src/unbound/iterator/iterator.c:3868,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3872,1
    - Dst: generate_a_aaaa_check
      Src: /src/unbound/iterator/iterator.c:3874,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3880
      start: 3839
    functionDepth: 2
    functionLinenumber: 3839
    functionLinenumberEnd: 3880
    functionName: processPrimeResponse
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - log_nametypeclass
    - response_type_from_server
    - verbose
    - generate_sub_request
    - generate_a_aaaa_check
    - errinf_dname
    - errinf
    linkageType: ''
    returnType: int
    signature: int processPrimeResponse(struct module_qstate* qstate, int id)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iterator.c:3904,1
    - Dst: log_query_info
      Src: /src/unbound/iterator/iterator.c:3907,1
    - Dst: log_query_info
      Src: /src/unbound/iterator/iterator.c:3908,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3916,1
    - Dst: delegpt_find_ns
      Src: /src/unbound/iterator/iterator.c:3919,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3923,1
    - Dst: log_rrset_key
      Src: /src/unbound/iterator/iterator.c:3934,1
    - Dst: delegpt_add_rrset
      Src: /src/unbound/iterator/iterator.c:3936,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:3938,1
    - Dst: reply_find_answer_rrset
      Src: /src/unbound/iterator/iterator.c:3946,1
    - Dst: delegpt_find_ns
      Src: /src/unbound/iterator/iterator.c:3951,1
    - Dst: delegpt_add_ns
      Src: /src/unbound/iterator/iterator.c:3954,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:3957,1
    - Dst: delegpt_add_rrset
      Src: /src/unbound/iterator/iterator.c:3960,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:3962,1
    - Dst: target_count_increase_nx
      Src: /src/unbound/iterator/iterator.c:3967,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3969,1
    - Dst: delegpt_log
      Src: /src/unbound/iterator/iterator.c:3970,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:3972,1
    - Dst: delegpt_mark_neg
      Src: /src/unbound/iterator/iterator.c:3973,1
    - Dst: target_count_increase_nx
      Src: /src/unbound/iterator/iterator.c:3979,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 43
    argCount: 3
    argNames:
    - qstate
    - id
    - forq
    argTypes:
    - struct module_qstate*
    - int
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3983
      start: 3895
    functionDepth: 3
    functionLinenumber: 3895
    functionLinenumberEnd: 3983
    functionName: processTargetResponse
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - delegpt_add_rrset
    - log_err
    - delegpt_add_ns
    - target_count_increase_nx
    - delegpt_mark_neg
    - log_rrset_key
    - verbose
    - log_query_info
    - reply_find_answer_rrset
    - delegpt_find_ns
    - log_assert
    - delegpt_log
    linkageType: ''
    returnType: void
    signature: "void processTargetResponse(struct module_qstate* qstate, int id,\n\tstruct
      module_qstate* forq)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: reply_find_rrset
      Src: /src/unbound/iterator/iterator.c:4004,1
    - Dst: delegpt_from_message
      Src: /src/unbound/iterator/iterator.c:4012,1
    - Dst: deleg_port_number
      Src: /src/unbound/iterator/iterator.c:4013,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:4015,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:4016,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - qstate
    - id
    - forq
    argTypes:
    - struct module_qstate*
    - int
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4020
      start: 3993
    functionDepth: 1
    functionLinenumber: 3993
    functionLinenumberEnd: 4020
    functionName: processDSNSResponse
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - log_err
    - deleg_port_number
    - delegpt_from_message
    - errinf
    - reply_find_rrset
    linkageType: ''
    returnType: void
    signature: "void processDSNSResponse(struct module_qstate* qstate, int id,\n\tstruct
      module_qstate* forq)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: log_query_info
      Src: /src/unbound/iterator/iterator.c:4036,1
    - Dst: log_query_info
      Src: /src/unbound/iterator/iterator.c:4037,1
    - Dst: dns_copy_msg
      Src: /src/unbound/iterator/iterator.c:4047,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:4049,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:4069,1
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iterator.c:4073,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:4075,1
    - Dst: memcpy
      Src: /src/unbound/iterator/iterator.c:4081,1
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/iterator/iterator.c:4085,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:4088,1
    - Dst: memcpy
      Src: /src/unbound/iterator/iterator.c:4095,1
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/iterator/iterator.c:4099,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:4104,1
    - Dst: memcpy
      Src: /src/unbound/iterator/iterator.c:4111,1
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/iterator/iterator.c:4116,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:4122,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 86
    argCount: 3
    argNames:
    - qstate
    - id
    - forq
    argTypes:
    - struct module_qstate*
    - int
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4151
      start: 4030
    functionDepth: 1
    functionLinenumber: 4030
    functionLinenumberEnd: 4151
    functionName: processClassResponse
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - log_err
    - memcpy
    - dns_copy_msg
    - log_query_info
    - regional_alloc
    - packed_rrset_copy_region
    linkageType: ''
    returnType: void
    signature: "void processClassResponse(struct module_qstate* qstate, int id,\n\tstruct
      module_qstate* forq)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: iter_get_next_root
      Src: /src/unbound/iterator/iterator.c:4174,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iterator.c:4177,1
    - Dst: generate_sub_request
      Src: /src/unbound/iterator/iterator.c:4179,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:4184,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:4186,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:4197,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:4199,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4205
      start: 4162
    functionDepth: 4
    functionLinenumber: 4162
    functionLinenumberEnd: 4205
    functionName: processCollectClass
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - log_nametypeclass
    - verbose
    - generate_sub_request
    - error_response_cache
    - error_response
    - errinf
    - iter_get_next_root
    linkageType: ''
    returnType: int
    signature: int processCollectClass(struct module_qstate* qstate, int id)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_query_info
      Src: /src/unbound/iterator/iterator.c:4221,1
    - Dst: iter_store_parentside_neg
      Src: /src/unbound/iterator/iterator.c:4227,1
    - Dst: target_count_store
      Src: /src/unbound/iterator/iterator.c:4230,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:4232,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:4233,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:4234,1
    - Dst: errinf_to_str_misc
      Src: /src/unbound/iterator/iterator.c:4253,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:4255,1
    - Dst: iter_prepend
      Src: /src/unbound/iterator/iterator.c:4268,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:4269,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:4270,1
    - Dst: iter_dns_store
      Src: /src/unbound/iterator/iterator.c:4280,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 35
    argCount: 3
    argNames:
    - qstate
    - iq
    - id
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4290
      start: 4217
    functionDepth: 3
    functionLinenumber: 4217
    functionLinenumberEnd: 4290
    functionName: processFinished
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 1
    functionsReached:
    - iter_prepend
    - log_err
    - target_count_store
    - verbose
    - log_query_info
    - errinf_to_str_misc
    - iter_store_parentside_neg
    - iter_dns_store
    - error_response
    - errinf
    linkageType: ''
    returnType: int
    signature: "int processFinished(struct module_qstate* qstate, struct iter_qstate*
      iq,\n\tint id)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: processClassResponse
      Src: /src/unbound/iterator/iterator.c:4307,1
    - Dst: processDSNSResponse
      Src: /src/unbound/iterator/iterator.c:4310,1
    - Dst: error_supers
      Src: /src/unbound/iterator/iterator.c:4312,1
    - Dst: prime_supers
      Src: /src/unbound/iterator/iterator.c:4314,1
    - Dst: processTargetResponse
      Src: /src/unbound/iterator/iterator.c:4315,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 3
    argNames:
    - qstate
    - id
    - super
    argTypes:
    - struct module_qstate*
    - int
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4316
      start: 4302
    functionDepth: 4
    functionLinenumber: 4302
    functionLinenumberEnd: 4316
    functionName: iter_inform_super
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - processTargetResponse
    - prime_supers
    - error_supers
    - processDSNSResponse
    - processClassResponse
    linkageType: ''
    returnType: void
    signature: "void iter_inform_super(struct module_qstate* qstate, int id, \n\tstruct
      module_qstate* super)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:4336,1
    - Dst: iter_state_to_string
      Src: /src/unbound/iterator/iterator.c:4337,1
    - Dst: processInitRequest
      Src: /src/unbound/iterator/iterator.c:4340,1
    - Dst: processInitRequest2
      Src: /src/unbound/iterator/iterator.c:4343,1
    - Dst: processInitRequest3
      Src: /src/unbound/iterator/iterator.c:4346,1
    - Dst: processQueryTargets
      Src: /src/unbound/iterator/iterator.c:4349,1
    - Dst: processQueryResponse
      Src: /src/unbound/iterator/iterator.c:4352,1
    - Dst: processPrimeResponse
      Src: /src/unbound/iterator/iterator.c:4355,1
    - Dst: processCollectClass
      Src: /src/unbound/iterator/iterator.c:4358,1
    - Dst: processDSNSFind
      Src: /src/unbound/iterator/iterator.c:4361,1
    - Dst: processFinished
      Src: /src/unbound/iterator/iterator.c:4364,1
    - Dst: log_warn
      Src: /src/unbound/iterator/iterator.c:4367,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 37
    argCount: 4
    argNames:
    - qstate
    - iq
    - ie
    - id
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - struct iter_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4373
      start: 4330
    functionDepth: 14
    functionLinenumber: 4330
    functionLinenumberEnd: 4373
    functionName: iter_handle
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - iter_state_to_string
    - processPrimeResponse
    - processDSNSFind
    - verbose
    - processFinished
    - processInitRequest
    - processInitRequest2
    - log_warn
    - processCollectClass
    - processQueryResponse
    - processInitRequest3
    - processQueryTargets
    linkageType: ''
    returnType: void
    signature: "void iter_handle(struct module_qstate* qstate, struct iter_qstate*
      iq,\n\tstruct iter_env* ie, int id)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:4391,1
    - Dst: iter_handle
      Src: /src/unbound/iterator/iterator.c:4392,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - qstate
    - iq
    - ie
    - id
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - struct iter_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4393
      start: 4383
    functionDepth: 15
    functionLinenumber: 4383
    functionLinenumberEnd: 4393
    functionName: process_request
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - verbose
    - iter_handle
    linkageType: ''
    returnType: void
    signature: "void process_request(struct module_qstate* qstate, struct iter_qstate*
      iq,\n\tstruct iter_env* ie, int id)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:4405,1
    - Dst: is_caps_whitelisted
      Src: /src/unbound/iterator/iterator.c:4411,1
    - Dst: iter_dec_attempts
      Src: /src/unbound/iterator/iterator.c:4422,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:4423,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:4430,1
    - Dst: outbound_list_remove
      Src: /src/unbound/iterator/iterator.c:4431,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:4432,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:4433,1
    - Dst: fill_fail_addr
      Src: /src/unbound/iterator/iterator.c:4438,1
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iterator.c:4440,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:4443,1
    - Dst: memset
      Src: /src/unbound/iterator/iterator.c:4447,1
    - Dst: memset
      Src: /src/unbound/iterator/iterator.c:4448,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/iterator/iterator.c:4450,1
    - Dst: parse_packet
      Src: /src/unbound/iterator/iterator.c:4451,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:4452,1
    - Dst: parse_extract_edns_from_response_msg
      Src: /src/unbound/iterator/iterator.c:4457,1
    - Dst: edns_opt_copy_region
      Src: /src/unbound/iterator/iterator.c:4466,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:4469,1
    - Dst: inplace_cb_edns_back_parsed_call
      Src: /src/unbound/iterator/iterator.c:4474,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:4475,1
    - Dst: scrub_message
      Src: /src/unbound/iterator/iterator.c:4483,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:4497,1
    - Dst: dns_alloc_msg
      Src: /src/unbound/iterator/iterator.c:4504,1
    - Dst: log_query_info
      Src: /src/unbound/iterator/iterator.c:4507,1
    - Dst: log_name_addr
      Src: /src/unbound/iterator/iterator.c:4508,1
    - Dst: log_dns_msg
      Src: /src/unbound/iterator/iterator.c:4511,1
    - Dst: limit_nsec_ttl
      Src: /src/unbound/iterator/iterator.c:4515,1
    - Dst: caps_strip_reply
      Src: /src/unbound/iterator/iterator.c:4526,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:4544,1
    - Dst: caps_failed_rcode
      Src: /src/unbound/iterator/iterator.c:4553,1
    - Dst: caps_failed_rcode
      Src: /src/unbound/iterator/iterator.c:4554,1
    - Dst: caps_failed_rcode
      Src: /src/unbound/iterator/iterator.c:4558,1
    - Dst: caps_failed_rcode
      Src: /src/unbound/iterator/iterator.c:4559,1
    - Dst: caps_failed_rcode
      Src: /src/unbound/iterator/iterator.c:4564,1
    - Dst: caps_failed_rcode
      Src: /src/unbound/iterator/iterator.c:4565,1
    - Dst: reply_equal
      Src: /src/unbound/iterator/iterator.c:4568,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:4570,1
    - Dst: outbound_list_remove
      Src: /src/unbound/iterator/iterator.c:4572,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:4573,1
    - Dst: error_response_cache
      Src: /src/unbound/iterator/iterator.c:4574,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:4582,1
    - Dst: outbound_list_remove
      Src: /src/unbound/iterator/iterator.c:4590,1
    - Dst: iter_handle
      Src: /src/unbound/iterator/iterator.c:4591,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 144
    argCount: 6
    argNames:
    - qstate
    - iq
    - ie
    - id
    - outbound
    - event
    argTypes:
    - struct module_qstate*
    - struct iter_qstate*
    - struct iter_env*
    - int
    - struct outbound_entry*
    - enum module_ev
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4592
      start: 4396
    functionDepth: 15
    functionLinenumber: 4396
    functionLinenumberEnd: 4592
    functionName: process_response
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - parse_extract_edns_from_response_msg
    - is_caps_whitelisted
    - error_response
    - inplace_cb_edns_back_parsed_call
    - limit_nsec_ttl
    - reply_equal
    - memset
    - errinf
    - log_err
    - scrub_message
    - caps_strip_reply
    - iter_dec_attempts
    - fill_fail_addr
    - outbound_list_remove
    - log_dns_msg
    - verbose
    - sldns_buffer_set_position
    - parse_packet
    - iter_handle
    - caps_failed_rcode
    - edns_opt_copy_region
    - log_name_addr
    - log_query_info
    - regional_alloc
    - error_response_cache
    - dns_alloc_msg
    linkageType: ''
    returnType: void
    signature: "void process_response(struct module_qstate* qstate, struct iter_qstate*
      iq, \n\tstruct iter_env* ie, int id, struct outbound_entry* outbound,\n\tenum
      module_ev event)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:4600,1
    - Dst: strextstate
      Src: /src/unbound/iterator/iterator.c:4601,1
    - Dst: strmodulevent
      Src: /src/unbound/iterator/iterator.c:4601,1
    - Dst: log_query_info
      Src: /src/unbound/iterator/iterator.c:4602,1
    - Dst: log_query_info
      Src: /src/unbound/iterator/iterator.c:4605,1
    - Dst: iter_new
      Src: /src/unbound/iterator/iterator.c:4611,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:4612,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:4613,1
    - Dst: process_request
      Src: /src/unbound/iterator/iterator.c:4617,1
    - Dst: iter_handle
      Src: /src/unbound/iterator/iterator.c:4621,1
    - Dst: process_response
      Src: /src/unbound/iterator/iterator.c:4625,1
    - Dst: verbose
      Src: /src/unbound/iterator/iterator.c:4629,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:4630,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:4631,1
    - Dst: log_err
      Src: /src/unbound/iterator/iterator.c:4635,1
    - Dst: errinf
      Src: /src/unbound/iterator/iterator.c:4636,1
    - Dst: error_response
      Src: /src/unbound/iterator/iterator.c:4637,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 4
    argNames:
    - qstate
    - event
    - id
    - outbound
    argTypes:
    - struct module_qstate*
    - enum module_ev
    - int
    - struct outbound_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4638
      start: 4594
    functionDepth: 16
    functionLinenumber: 4594
    functionLinenumberEnd: 4638
    functionName: iter_operate
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - process_request
    - log_err
    - strextstate
    - verbose
    - log_query_info
    - iter_new
    - strmodulevent
    - error_response
    - iter_handle
    - process_response
    - errinf
    linkageType: ''
    returnType: void
    signature: "void iter_operate(struct module_qstate* qstate, enum module_ev event,
      int id,\n\tstruct outbound_entry* outbound)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: outbound_list_clear
      Src: /src/unbound/iterator/iterator.c:4648,1
    - Dst: target_count_store
      Src: /src/unbound/iterator/iterator.c:4649,1
    - Dst: free
      Src: /src/unbound/iterator/iterator.c:4651,1
    - Dst: free
      Src: /src/unbound/iterator/iterator.c:4652,1
    - Dst: free
      Src: /src/unbound/iterator/iterator.c:4653,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4658
      start: 4640
    functionDepth: 2
    functionLinenumber: 4640
    functionLinenumberEnd: 4658
    functionName: iter_clear
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - outbound_list_clear
    - target_count_store
    - free
    linkageType: ''
    returnType: void
    signature: void iter_clear(struct module_qstate* qstate, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: donotq_get_mem
      Src: /src/unbound/iterator/iterator.c:4667,1
    - Dst: priv_get_mem
      Src: /src/unbound/iterator/iterator.c:4667,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4668
      start: 4660
    functionDepth: 2
    functionLinenumber: 4660
    functionLinenumberEnd: 4668
    functionName: iter_get_mem
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached:
    - priv_get_mem
    - donotq_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t iter_get_mem(struct module_env* env, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4683
      start: 4679
    functionDepth: 0
    functionLinenumber: 4679
    functionLinenumberEnd: 4683
    functionName: iter_get_funcblock
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct module_func_block
    signature: "struct module_func_block * \niter_get_funcblock(void)"
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 23
    argCount: 1
    argNames:
    - state
    argTypes:
    - enum iter_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4711
      start: 4685
    functionDepth: 0
    functionLinenumber: 4685
    functionLinenumberEnd: 4711
    functionName: iter_state_to_string
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char * \niter_state_to_string(enum iter_state state)"
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - s
    argTypes:
    - enum iter_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4727
      start: 4713
    functionDepth: 0
    functionLinenumber: 4713
    functionLinenumberEnd: 4727
    functionName: iter_state_is_responsestate
    functionSourceFile: /src/unbound/iterator/iterator.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int iter_state_is_responsestate(enum iter_state s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/unbound/iterator/iter_utils.c:86,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:88,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - target_fetch_policy
    - max_dependency_depth
    - str
    argTypes:
    - int*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 94
    functionName: fetch_fill
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 0
    functionsReached:
    - log_err
    - strtol
    linkageType: ''
    returnType: int
    signature: int fetch_fill(int* target_fetch_policy, int max_dependency_depth,
      const char* str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: cfg_count_numbers
      Src: /src/unbound/iterator/iter_utils.c:101,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:103,1
    - Dst: calloc
      Src: /src/unbound/iterator/iter_utils.c:107,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:110,1
    - Dst: fetch_fill
      Src: /src/unbound/iterator/iter_utils.c:113,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - target_fetch_policy
    - max_dependency_depth
    - str
    argTypes:
    - int**
    - int*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 116
    functionName: read_fetch_policy
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - cfg_count_numbers
    - calloc
    - fetch_fill
    - log_err
    linkageType: ''
    returnType: int
    signature: "int read_fetch_policy(int** target_fetch_policy, int* max_dependency_depth,\n\tconst
      char* str)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_create
      Src: /src/unbound/iterator/iter_utils.c:121,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:123,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 125
    functionName: caps_white_create
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - rbtree_create
    - log_err
    linkageType: ''
    returnType: struct rbtree_type
    signature: 'struct rbtree_type *

      caps_white_create(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/iterator/iter_utils.c:132,1
    - Dst: free
      Src: /src/unbound/iterator/iter_utils.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - n
    - ATTR_UNUSED(d)
    argTypes:
    - struct rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 135
    functionName: caps_free
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void caps_free(struct rbnode_type* n, void* ATTR_UNUSED(d))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: traverse_postorder
      Src: /src/unbound/iterator/iter_utils.c:142,1
    - Dst: free
      Src: /src/unbound/iterator/iter_utils.c:143,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - caps_white
    argTypes:
    - struct rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 144
      start: 137
    functionDepth: 1
    functionLinenumber: 137
    functionLinenumberEnd: 144
    functionName: caps_white_delete
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 2
    functionsReached:
    - free
    - traverse_postorder
    linkageType: ''
    returnType: void
    signature: void caps_white_delete(struct rbtree_type* caps_white)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/iterator/iter_utils.c:153,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:155,1
    - Dst: calloc
      Src: /src/unbound/iterator/iter_utils.c:158,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:160,1
    - Dst: free
      Src: /src/unbound/iterator/iter_utils.c:161,1
    - Dst: dname_count_labels
      Src: /src/unbound/iterator/iter_utils.c:167,1
    - Dst: name_tree_insert
      Src: /src/unbound/iterator/iter_utils.c:169,1
    - Dst: free
      Src: /src/unbound/iterator/iter_utils.c:171,1
    - Dst: free
      Src: /src/unbound/iterator/iter_utils.c:172,1
    - Dst: name_tree_init_parents
      Src: /src/unbound/iterator/iter_utils.c:175,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 2
    argNames:
    - ntree
    - cfg
    argTypes:
    - rbtree_type*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 146
    functionDepth: 4
    functionLinenumber: 146
    functionLinenumberEnd: 177
    functionName: caps_white_apply_cfg
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - log_err
    - free
    - name_tree_init_parents
    - calloc
    - sldns_str2wire_dname
    - name_tree_insert
    - dname_count_labels
    linkageType: ''
    returnType: int
    signature: int caps_white_apply_cfg(rbtree_type* ntree, struct config_file* cfg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: netblockstrtoaddr
      Src: /src/unbound/iterator/iter_utils.c:189,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:191,1
    - Dst: addr_is_ip6
      Src: /src/unbound/iterator/iter_utils.c:194,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:196,1
    - Dst: prefixnet_is_nat64
      Src: /src/unbound/iterator/iter_utils.c:199,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:200,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - nat64
    - cfg
    argTypes:
    - struct iter_nat64*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 206
    functionName: nat64_apply_cfg
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - netblockstrtoaddr
    - prefixnet_is_nat64
    - addr_is_ip6
    - log_err
    linkageType: ''
    returnType: int
    signature: int nat64_apply_cfg(struct iter_nat64* nat64, struct config_file* cfg)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: read_fetch_policy
      Src: /src/unbound/iterator/iter_utils.c:213,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_utils.c:217,1
    - Dst: donotq_create
      Src: /src/unbound/iterator/iter_utils.c:221,1
    - Dst: donotq_apply_cfg
      Src: /src/unbound/iterator/iter_utils.c:222,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:223,1
    - Dst: priv_create
      Src: /src/unbound/iterator/iter_utils.c:227,1
    - Dst: priv_apply_cfg
      Src: /src/unbound/iterator/iter_utils.c:228,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:229,1
    - Dst: caps_white_create
      Src: /src/unbound/iterator/iter_utils.c:234,1
    - Dst: caps_white_apply_cfg
      Src: /src/unbound/iterator/iter_utils.c:235,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:237,1
    - Dst: nat64_apply_cfg
      Src: /src/unbound/iterator/iter_utils.c:243,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:244,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 35
    argCount: 2
    argNames:
    - iter_env
    - cfg
    argTypes:
    - struct iter_env*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 208
    functionDepth: 5
    functionLinenumber: 208
    functionLinenumberEnd: 254
    functionName: iter_apply_cfg
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - log_err
    - donotq_apply_cfg
    - caps_white_apply_cfg
    - verbose
    - read_fetch_policy
    - donotq_create
    - priv_create
    - caps_white_create
    - nat64_apply_cfg
    - priv_apply_cfg
    linkageType: ''
    returnType: int
    signature: int iter_apply_cfg(struct iter_env* iter_env, struct config_file* cfg)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: donotq_lookup
      Src: /src/unbound/iterator/iter_utils.c:310,1
    - Dst: addr_is_ip6
      Src: /src/unbound/iterator/iter_utils.c:312,1
    - Dst: addr_in_common
      Src: /src/unbound/iterator/iter_utils.c:314,1
    - Dst: log_addr
      Src: /src/unbound/iterator/iter_utils.c:327,1
    - Dst: log_addr
      Src: /src/unbound/iterator/iter_utils.c:331,1
    - Dst: addr_is_ip6
      Src: /src/unbound/iterator/iter_utils.c:336,1
    - Dst: addr_is_ip6
      Src: /src/unbound/iterator/iter_utils.c:340,1
    - Dst: addr_is_ip6
      Src: /src/unbound/iterator/iter_utils.c:343,1
    - Dst: addr_to_nat64
      Src: /src/unbound/iterator/iter_utils.c:346,1
    - Dst: log_name_addr
      Src: /src/unbound/iterator/iter_utils.c:350,1
    - Dst: log_name_addr
      Src: /src/unbound/iterator/iter_utils.c:352,1
    - Dst: infra_get_lame_rtt
      Src: /src/unbound/iterator/iter_utils.c:358,1
    - Dst: log_addr
      Src: /src/unbound/iterator/iter_utils.c:361,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_utils.c:362,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 44
    argCount: 7
    argNames:
    - iter_env
    - env
    - name
    - namelen
    - qtype
    - now
    - a
    argTypes:
    - struct iter_env*
    - struct module_env*
    - uint8_t*
    - size_t
    - uint16_t
    - time_t
    - struct delegpt_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 302
    functionDepth: 5
    functionLinenumber: 302
    functionLinenumberEnd: 393
    functionName: iter_filter_unsuitable
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 0
    functionsReached:
    - verbose
    - addr_in_common
    - donotq_lookup
    - addr_to_nat64
    - addr_is_ip6
    - log_addr
    - infra_get_lame_rtt
    - log_name_addr
    linkageType: ''
    returnType: int
    signature: "int iter_filter_unsuitable(struct iter_env* iter_env, struct module_env*
      env,\n\tuint8_t* name, size_t namelen, uint16_t qtype, time_t now,\n\tstruct
      delegpt_addr* a)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: iter_filter_unsuitable
      Src: /src/unbound/iterator/iter_utils.c:409,1
    - Dst: sock_list_find
      Src: /src/unbound/iterator/iter_utils.c:412,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 10
    argNames:
    - iter_env
    - env
    - name
    - namelen
    - qtype
    - now
    - dp
    - best_rtt
    - blacklist
    - num_suitable_results
    argTypes:
    - struct iter_env*
    - struct module_env*
    - uint8_t*
    - size_t
    - uint16_t
    - time_t
    - struct delegpt*
    - int*
    - struct sock_list*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 396
    functionDepth: 6
    functionLinenumber: 396
    functionLinenumberEnd: 425
    functionName: iter_fill_rtt
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 0
    functionsReached:
    - sock_list_find
    - iter_filter_unsuitable
    linkageType: ''
    returnType: int
    signature: "int iter_fill_rtt(struct iter_env* iter_env, struct module_env* env,\n\tuint8_t*
      name, size_t namelen, uint16_t qtype, time_t now,\n\tstruct delegpt* dp, int*
      best_rtt, struct sock_list* blacklist,\n\tsize_t* num_suitable_results)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 428
    functionDepth: 0
    functionLinenumber: 428
    functionLinenumberEnd: 436
    functionName: rtt_compare
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rtt_compare(const void* x, const void* y)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/iterator/iter_utils.c:450,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:452,1
    - Dst: qsort
      Src: /src/unbound/iterator/iter_utils.c:464,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_utils.c:466,1
    - Dst: free
      Src: /src/unbound/iterator/iter_utils.c:468,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - result_list
    - num_results
    - n
    argTypes:
    - struct delegpt_addr*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 471
    functionName: nth_rtt
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 0
    functionsReached:
    - log_err
    - free
    - calloc
    - log_assert
    - qsort
    linkageType: ''
    returnType: int
    signature: int nth_rtt(struct delegpt_addr* result_list, size_t num_results, size_t
      n)
  - BBCount: 34
    BranchProfiles: []
    Callsites:
    - Dst: iter_fill_rtt
      Src: /src/unbound/iterator/iter_utils.c:487,1
    - Dst: delegpt_count_missing_targets
      Src: /src/unbound/iterator/iter_utils.c:494,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_utils.c:496,1
    - Dst: ub_random_max
      Src: /src/unbound/iterator/iter_utils.c:503,1
    - Dst: nth_rtt
      Src: /src/unbound/iterator/iter_utils.c:507,1
    CyclomaticComplexity: 60
    EdgeCount: 60
    ICount: 148
    argCount: 11
    argNames:
    - iter_env
    - env
    - name
    - namelen
    - qtype
    - now
    - dp
    - selected_rtt
    - open_target
    - blacklist
    - prefetch
    argTypes:
    - struct iter_env*
    - struct module_env*
    - uint8_t*
    - size_t
    - uint16_t
    - time_t
    - struct delegpt*
    - int*
    - int
    - struct sock_list*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 475
    functionDepth: 7
    functionLinenumber: 475
    functionLinenumberEnd: 666
    functionName: iter_filter_order
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 0
    functionsReached:
    - delegpt_count_missing_targets
    - nth_rtt
    - ub_random_max
    - verbose
    - iter_fill_rtt
    linkageType: ''
    returnType: int
    signature: "int iter_filter_order(struct iter_env* iter_env, struct module_env*
      env,\n\tuint8_t* name, size_t namelen, uint16_t qtype, time_t now,\n\tstruct
      delegpt* dp, int* selected_rtt, int open_target,\n\tstruct sock_list* blacklist,
      time_t prefetch)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: iter_filter_order
      Src: /src/unbound/iterator/iter_utils.c:678,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_utils.c:683,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_utils.c:686,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_utils.c:691,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_utils.c:697,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_utils.c:701,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_utils.c:705,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_utils.c:719,1
    - Dst: ub_random_max
      Src: /src/unbound/iterator/iter_utils.c:722,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 51
    argCount: 11
    argNames:
    - iter_env
    - env
    - dp
    - name
    - namelen
    - qtype
    - dnssec_lame
    - chase_to_rd
    - open_target
    - blacklist
    - prefetch
    argTypes:
    - struct iter_env*
    - struct module_env*
    - struct delegpt*
    - uint8_t*
    - size_t
    - uint16_t
    - int*
    - int*
    - int
    - struct sock_list*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 668
    functionDepth: 8
    functionLinenumber: 668
    functionLinenumberEnd: 739
    functionName: iter_server_selection
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - verbose
    - log_assert
    - iter_filter_order
    - ub_random_max
    linkageType: ''
    returnType: struct delegpt_addr
    signature: "struct delegpt_addr *\niter_server_selection(struct iter_env* iter_env,\n\tstruct
      module_env* env, struct delegpt* dp,\n\tuint8_t* name, size_t namelen, uint16_t
      qtype, int* dnssec_lame,\n\tint* chase_to_rd, int open_target, struct sock_list*
      blacklist,\n\ttime_t prefetch)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iter_utils.c:745,1
    - Dst: memset
      Src: /src/unbound/iterator/iter_utils.c:749,1
    - Dst: parse_create_msg
      Src: /src/unbound/iterator/iter_utils.c:750,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:751,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - pkt
    - msg
    - region
    argTypes:
    - sldns_buffer*
    - struct msg_parse*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 741
    functionDepth: 1
    functionLinenumber: 741
    functionLinenumberEnd: 755
    functionName: dns_alloc_msg
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 2
    functionsReached:
    - memset
    - regional_alloc
    - parse_create_msg
    - log_err
    linkageType: ''
    returnType: struct dns_msg
    signature: "struct dns_msg *\ndns_alloc_msg(sldns_buffer* pkt, struct msg_parse*
      msg,\n\tstruct regional* region)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iter_utils.c:760,1
    - Dst: regional_alloc_init
      Src: /src/unbound/iterator/iter_utils.c:765,1
    - Dst: reply_info_copy
      Src: /src/unbound/iterator/iter_utils.c:768,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - from
    - region
    argTypes:
    - struct dns_msg*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 757
    functionDepth: 1
    functionLinenumber: 757
    functionLinenumberEnd: 771
    functionName: dns_copy_msg
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 2
    functionsReached:
    - regional_alloc
    - reply_info_copy
    - regional_alloc_init
    linkageType: ''
    returnType: struct dns_msg
    signature: 'struct dns_msg *

      dns_copy_msg(struct dns_msg* from, struct regional* region)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dns_cache_store
      Src: /src/unbound/iterator/iter_utils.c:779,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:781,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 10
    argNames:
    - env
    - msgqinf
    - msgrep
    - is_referral
    - leeway
    - pside
    - region
    - flags
    - qstarttime
    - is_valrec
    argTypes:
    - struct module_env*
    - struct query_info*
    - struct reply_info*
    - int
    - time_t
    - int
    - struct regional*
    - uint16_t
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 773
    functionDepth: 4
    functionLinenumber: 773
    functionLinenumberEnd: 782
    functionName: iter_dns_store
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 3
    functionsReached:
    - dns_cache_store
    - log_err
    linkageType: ''
    returnType: void
    signature: "void iter_dns_store(struct module_env* env, struct query_info* msgqinf,\n\tstruct
      reply_info* msgrep, int is_referral, time_t leeway, int pside,\n\tstruct regional*
      region, uint16_t flags, time_t qstarttime,\n\tint is_valrec)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_random_max
      Src: /src/unbound/iterator/iter_utils.c:792,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - rnd
    - n
    - m
    argTypes:
    - struct ub_randstate*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 794
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 794
    functionName: iter_ns_probability
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - ub_random_max
    linkageType: ''
    returnType: int
    signature: int iter_ns_probability(struct ub_randstate* rnd, int n, int m)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/iterator/iter_utils.c:807,1
    - Dst: fptr_whitelist_modenv_detect_cycle
      Src: /src/unbound/iterator/iter_utils.c:807,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 5
    argNames:
    - qstate
    - name
    - namelen
    - t
    - c
    argTypes:
    - struct module_qstate*
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 797
    functionDepth: 1
    functionLinenumber: 797
    functionLinenumberEnd: 812
    functionName: causes_cycle
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 0
    functionsReached:
    - fptr_whitelist_modenv_detect_cycle
    - fptr_ok
    linkageType: ''
    returnType: int
    signature: "int causes_cycle(struct module_qstate* qstate, uint8_t* name, size_t
      namelen,\n\tuint16_t t, uint16_t c)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: causes_cycle
      Src: /src/unbound/iterator/iter_utils.c:822,1
    - Dst: causes_cycle
      Src: /src/unbound/iterator/iter_utils.c:824,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iter_utils.c:826,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - qstate
    - dp
    argTypes:
    - struct module_qstate*
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 834
      start: 814
    functionDepth: 2
    functionLinenumber: 814
    functionLinenumberEnd: 834
    functionName: iter_mark_cycle_targets
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - log_nametypeclass
    - causes_cycle
    linkageType: ''
    returnType: void
    signature: void iter_mark_cycle_targets(struct module_qstate* qstate, struct delegpt*
      dp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: causes_cycle
      Src: /src/unbound/iterator/iter_utils.c:844,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iter_utils.c:846,1
    - Dst: causes_cycle
      Src: /src/unbound/iterator/iter_utils.c:851,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iter_utils.c:853,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - qstate
    - dp
    argTypes:
    - struct module_qstate*
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 859
      start: 836
    functionDepth: 2
    functionLinenumber: 836
    functionLinenumberEnd: 859
    functionName: iter_mark_pside_cycle_targets
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - log_nametypeclass
    - causes_cycle
    linkageType: ''
    returnType: void
    signature: void iter_mark_pside_cycle_targets(struct module_qstate* qstate, struct
      delegpt* dp)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: addr_is_ip6
      Src: /src/unbound/iterator/iter_utils.c:887,1
    - Dst: addr_is_ip6
      Src: /src/unbound/iterator/iter_utils.c:889,1
    - Dst: addr_is_ip6
      Src: /src/unbound/iterator/iter_utils.c:893,1
    - Dst: addr_is_ip6
      Src: /src/unbound/iterator/iter_utils.c:895,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iter_utils.c:902,1
    - Dst: delegpt_find_ns
      Src: /src/unbound/iterator/iter_utils.c:903,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iter_utils.c:909,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 26
    argCount: 6
    argNames:
    - qinfo
    - qflags
    - dp
    - supports_ipv4
    - supports_ipv6
    - use_nat64
    argTypes:
    - struct query_info*
    - uint16_t
    - struct delegpt*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 861
    functionDepth: 1
    functionLinenumber: 861
    functionLinenumberEnd: 913
    functionName: iter_dp_is_useless
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 2
    functionsReached:
    - dname_subdomain_c
    - delegpt_find_ns
    - addr_is_ip6
    linkageType: ''
    returnType: int
    signature: "int iter_dp_is_useless(struct query_info* qinfo, uint16_t qflags,\n\tstruct
      delegpt* dp, int supports_ipv4, int supports_ipv6,\n\tint use_nat64)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: anchors_lookup
      Src: /src/unbound/iterator/iter_utils.c:922,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/iterator/iter_utils.c:926,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/iterator/iter_utils.c:929,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 2
    argNames:
    - env
    - qinfo
    argTypes:
    - struct module_env*
    - struct query_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 915
    functionDepth: 2
    functionLinenumber: 915
    functionLinenumberEnd: 934
    functionName: iter_qname_indicates_dnssec
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 3
    functionsReached:
    - lock_basic_unlock
    - anchors_lookup
    linkageType: ''
    returnType: int
    signature: int iter_qname_indicates_dnssec(struct module_env* env, struct query_info
      *qinfo)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: anchor_find
      Src: /src/unbound/iterator/iter_utils.c:945,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/iterator/iter_utils.c:949,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/iterator/iter_utils.c:952,1
    - Dst: reply_find_rrset_section_ns
      Src: /src/unbound/iterator/iter_utils.c:957,1
    - Dst: key_cache_obtain
      Src: /src/unbound/iterator/iter_utils.c:962,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iter_utils.c:965,1
    - Dst: key_entry_isgood
      Src: /src/unbound/iterator/iter_utils.c:966,1
    - Dst: key_entry_isbad
      Src: /src/unbound/iterator/iter_utils.c:966,1
    - Dst: regional_free_all
      Src: /src/unbound/iterator/iter_utils.c:967,1
    - Dst: key_entry_isnull
      Src: /src/unbound/iterator/iter_utils.c:969,1
    - Dst: regional_free_all
      Src: /src/unbound/iterator/iter_utils.c:970,1
    - Dst: regional_free_all
      Src: /src/unbound/iterator/iter_utils.c:974,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 29
    argCount: 4
    argNames:
    - env
    - dp
    - msg
    - dclass
    argTypes:
    - struct module_env*
    - struct delegpt*
    - struct dns_msg*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 978
      start: 936
    functionDepth: 4
    functionLinenumber: 936
    functionLinenumberEnd: 978
    functionName: iter_indicates_dnssec
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 5
    functionsReached:
    - anchor_find
    - reply_find_rrset_section_ns
    - lock_basic_unlock
    - key_entry_isgood
    - key_entry_isbad
    - query_dname_compare
    - key_entry_isnull
    - regional_free_all
    - key_cache_obtain
    linkageType: ''
    returnType: int
    signature: "int iter_indicates_dnssec(struct module_env* env, struct delegpt*
      dp,\n        struct dns_msg* msg, uint16_t dclass)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct dns_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 980
    functionDepth: 0
    functionLinenumber: 980
    functionLinenumberEnd: 994
    functionName: iter_msg_has_dnssec
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int iter_msg_has_dnssec(struct dns_msg* msg)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: reply_find_rrset_section_an
      Src: /src/unbound/iterator/iter_utils.c:1002,1
    - Dst: reply_find_rrset_section_ns
      Src: /src/unbound/iterator/iter_utils.c:1004,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1016,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1017,1
    - Dst: dname_count_labels
      Src: /src/unbound/iterator/iter_utils.c:1018,1
    - Dst: dname_strict_subdomain
      Src: /src/unbound/iterator/iter_utils.c:1020,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_utils.c:1027,1
    - Dst: reply_find_rrset_section_an
      Src: /src/unbound/iterator/iter_utils.c:1030,1
    - Dst: reply_find_rrset_section_ns
      Src: /src/unbound/iterator/iter_utils.c:1032,1
    - Dst: reply_find_rrset_section_an
      Src: /src/unbound/iterator/iter_utils.c:1037,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 20
    argCount: 4
    argNames:
    - msg
    - dp
    - type
    - dclass
    argTypes:
    - struct dns_msg*
    - struct delegpt*
    - enum response_type
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 996
    functionDepth: 1
    functionLinenumber: 996
    functionLinenumberEnd: 1041
    functionName: iter_msg_from_zone
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - reply_find_rrset_section_an
    - reply_find_rrset_section_ns
    - dname_strict_subdomain
    - log_assert
    - dname_count_labels
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int iter_msg_from_zone(struct dns_msg* msg, struct delegpt* dp,\n
      \       enum response_type type, uint16_t dclass)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iter_utils.c:1061,1
    - Dst: memcmp
      Src: /src/unbound/iterator/iter_utils.c:1073,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 11
    argCount: 2
    argNames:
    - k1
    - k2
    argTypes:
    - struct ub_packed_rrset_key*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1078
      start: 1049
    functionDepth: 1
    functionLinenumber: 1049
    functionLinenumberEnd: 1078
    functionName: rrset_equal
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 0
    functionsReached:
    - query_dname_compare
    - memcmp
    linkageType: ''
    returnType: int
    signature: int rrset_equal(struct ub_packed_rrset_key* k1, struct ub_packed_rrset_key*
      k2)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dname_canonical_compare
      Src: /src/unbound/iterator/iter_utils.c:1088,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1092,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1092,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1097,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1097,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1083
    functionDepth: 1
    functionLinenumber: 1083
    functionLinenumberEnd: 1102
    functionName: rrset_canonical_sort_cmp
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 0
    functionsReached:
    - dname_canonical_compare
    - ntohs
    linkageType: ''
    returnType: int
    signature: int rrset_canonical_sort_cmp(const void* x, const void* y)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_init
      Src: /src/unbound/iterator/iter_utils.c:1125,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_utils.c:1128,1
    - Dst: qsort
      Src: /src/unbound/iterator/iter_utils.c:1130,1
    - Dst: qsort
      Src: /src/unbound/iterator/iter_utils.c:1132,1
    - Dst: regional_alloc_init
      Src: /src/unbound/iterator/iter_utils.c:1135,1
    - Dst: regional_free_all
      Src: /src/unbound/iterator/iter_utils.c:1138,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_utils.c:1141,1
    - Dst: qsort
      Src: /src/unbound/iterator/iter_utils.c:1143,1
    - Dst: qsort
      Src: /src/unbound/iterator/iter_utils.c:1145,1
    - Dst: rrset_equal
      Src: /src/unbound/iterator/iter_utils.c:1150,1
    - Dst: rrset_canonical_equal
      Src: /src/unbound/iterator/iter_utils.c:1151,1
    - Dst: regional_free_all
      Src: /src/unbound/iterator/iter_utils.c:1153,1
    - Dst: regional_free_all
      Src: /src/unbound/iterator/iter_utils.c:1158,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 3
    argNames:
    - p
    - q
    - region
    argTypes:
    - struct reply_info*
    - struct reply_info*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1160
      start: 1104
    functionDepth: 4
    functionLinenumber: 1104
    functionLinenumberEnd: 1160
    functionName: reply_equal
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - rrset_canonical_equal
    - rrset_equal
    - log_assert
    - regional_alloc_init
    - qsort
    - regional_free_all
    linkageType: ''
    returnType: int
    signature: int reply_equal(struct reply_info* p, struct reply_info* q, struct
      regional* region)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/iterator/iter_utils.c:1175,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1183,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_utils.c:1188,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 1
    argNames:
    - rep
    argTypes:
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1196
      start: 1162
    functionDepth: 1
    functionLinenumber: 1162
    functionLinenumberEnd: 1196
    functionName: caps_strip_reply
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - verbose
    - ntohs
    linkageType: ''
    returnType: void
    signature: void caps_strip_reply(struct reply_info* rep)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_utils.c:1200,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_utils.c:1201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - rep
    argTypes:
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1202
      start: 1198
    functionDepth: 1
    functionLinenumber: 1198
    functionLinenumberEnd: 1202
    functionName: caps_failed_rcode
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - FLAGS_GET_RCODE
    linkageType: ''
    returnType: int
    signature: int caps_failed_rcode(struct reply_info* rep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: packed_rrset_copy_alloc
      Src: /src/unbound/iterator/iter_utils.c:1209,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:1211,1
    - Dst: rrset_key_hash
      Src: /src/unbound/iterator/iter_utils.c:1215,1
    - Dst: rrset_cache_update
      Src: /src/unbound/iterator/iter_utils.c:1219,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 2
    argNames:
    - env
    - rrset
    argTypes:
    - struct module_env*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1204
    functionDepth: 3
    functionLinenumber: 1204
    functionLinenumberEnd: 1220
    functionName: iter_store_parentside_rrset
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - packed_rrset_copy_alloc
    - rrset_key_hash
    - rrset_cache_update
    - log_err
    linkageType: ''
    returnType: void
    signature: "void iter_store_parentside_rrset(struct module_env* env,\n\tstruct
      ub_packed_rrset_key* rrset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/unbound/iterator/iter_utils.c:1228,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - rep
    argTypes:
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1233
      start: 1223
    functionDepth: 0
    functionLinenumber: 1223
    functionLinenumberEnd: 1233
    functionName: reply_get_NS_rrset
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 0
    functionsReached:
    - htons
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: 'struct ub_packed_rrset_key *

      reply_get_NS_rrset(struct reply_info* rep)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reply_get_NS_rrset
      Src: /src/unbound/iterator/iter_utils.c:1238,1
    - Dst: log_rrset_key
      Src: /src/unbound/iterator/iter_utils.c:1240,1
    - Dst: iter_store_parentside_rrset
      Src: /src/unbound/iterator/iter_utils.c:1241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - env
    - rep
    argTypes:
    - struct module_env*
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1243
      start: 1235
    functionDepth: 4
    functionLinenumber: 1235
    functionLinenumberEnd: 1243
    functionName: iter_store_parentside_NS
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - reply_get_NS_rrset
    - iter_store_parentside_rrset
    - log_rrset_key
    linkageType: ''
    returnType: void
    signature: void iter_store_parentside_NS(struct module_env* env, struct reply_info*
      rep)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: reply_get_NS_rrset
      Src: /src/unbound/iterator/iter_utils.c:1255,1
    - Dst: ub_packed_rrset_ttl
      Src: /src/unbound/iterator/iter_utils.c:1257,1
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iter_utils.c:1260,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:1263,1
    - Dst: memset
      Src: /src/unbound/iterator/iter_utils.c:1266,1
    - Dst: htons
      Src: /src/unbound/iterator/iter_utils.c:1268,1
    - Dst: htons
      Src: /src/unbound/iterator/iter_utils.c:1269,1
    - Dst: regional_alloc_init
      Src: /src/unbound/iterator/iter_utils.c:1271,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:1274,1
    - Dst: rrset_key_hash
      Src: /src/unbound/iterator/iter_utils.c:1278,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/iterator/iter_utils.c:1279,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:1283,1
    - Dst: packed_rrset_ptr_fixup
      Src: /src/unbound/iterator/iter_utils.c:1296,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/iterator/iter_utils.c:1298,1
    - Dst: log_rrset_key
      Src: /src/unbound/iterator/iter_utils.c:1300,1
    - Dst: iter_store_parentside_rrset
      Src: /src/unbound/iterator/iter_utils.c:1301,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 41
    argCount: 3
    argNames:
    - env
    - qinfo
    - rep
    argTypes:
    - struct module_env*
    - struct query_info*
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1302
      start: 1245
    functionDepth: 4
    functionLinenumber: 1245
    functionLinenumberEnd: 1302
    functionName: iter_store_parentside_neg
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 2
    functionsReached:
    - regional_alloc_zero
    - log_err
    - log_rrset_key
    - ub_packed_rrset_ttl
    - rrset_key_hash
    - sldns_write_uint16
    - reply_get_NS_rrset
    - regional_alloc
    - htons
    - regional_alloc_init
    - packed_rrset_ptr_fixup
    - memset
    - iter_store_parentside_rrset
    linkageType: ''
    returnType: void
    signature: "void iter_store_parentside_neg(struct module_env* env,\n        struct
      query_info* qinfo, struct reply_info* rep)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rrset_cache_lookup
      Src: /src/unbound/iterator/iter_utils.c:1309,1
    - Dst: log_rrset_key
      Src: /src/unbound/iterator/iter_utils.c:1313,1
    - Dst: delegpt_rrset_add_ns
      Src: /src/unbound/iterator/iter_utils.c:1316,1
    - Dst: deleg_port_number
      Src: /src/unbound/iterator/iter_utils.c:1317,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_utils.c:1318,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_utils.c:1321,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - env
    - dp
    - region
    - qinfo
    argTypes:
    - struct module_env*
    - struct delegpt*
    - struct regional*
    - struct query_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1324
      start: 1304
    functionDepth: 2
    functionLinenumber: 1304
    functionLinenumberEnd: 1324
    functionName: iter_lookup_parent_NS_from_cache
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - deleg_port_number
    - log_rrset_key
    - lock_rw_unlock
    - rrset_cache_lookup
    - delegpt_rrset_add_ns
    linkageType: ''
    returnType: int
    signature: "int iter_lookup_parent_NS_from_cache(struct module_env* env, struct
      delegpt* dp,\n\tstruct regional* region, struct query_info* qinfo)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: delegpt_count_targets
      Src: /src/unbound/iterator/iter_utils.c:1331,1
    - Dst: rrset_cache_lookup
      Src: /src/unbound/iterator/iter_utils.c:1337,1
    - Dst: log_rrset_key
      Src: /src/unbound/iterator/iter_utils.c:1341,1
    - Dst: delegpt_add_rrset_A
      Src: /src/unbound/iterator/iter_utils.c:1344,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:1345,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_utils.c:1346,1
    - Dst: rrset_cache_lookup
      Src: /src/unbound/iterator/iter_utils.c:1349,1
    - Dst: log_rrset_key
      Src: /src/unbound/iterator/iter_utils.c:1353,1
    - Dst: delegpt_add_rrset_AAAA
      Src: /src/unbound/iterator/iter_utils.c:1356,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_utils.c:1357,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_utils.c:1358,1
    - Dst: delegpt_count_targets
      Src: /src/unbound/iterator/iter_utils.c:1362,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 4
    argNames:
    - env
    - dp
    - region
    - qinfo
    argTypes:
    - struct module_env*
    - struct delegpt*
    - struct regional*
    - struct query_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1363
      start: 1326
    functionDepth: 2
    functionLinenumber: 1326
    functionLinenumberEnd: 1363
    functionName: iter_lookup_parent_glue_from_cache
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - log_err
    - log_rrset_key
    - rrset_cache_lookup
    - lock_rw_unlock
    - delegpt_count_targets
    - delegpt_add_rrset_AAAA
    - delegpt_add_rrset_A
    linkageType: ''
    returnType: int
    signature: "int iter_lookup_parent_glue_from_cache(struct module_env* env,\n        struct
      delegpt* dp, struct regional* region, struct query_info* qinfo)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/iterator/iter_utils.c:1374,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/iterator/iter_utils.c:1375,1
    - Dst: hints_next_root
      Src: /src/unbound/iterator/iter_utils.c:1376,1
    - Dst: forwards_next_root
      Src: /src/unbound/iterator/iter_utils.c:1377,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_utils.c:1378,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_utils.c:1379,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - hints
    - fwd
    - c
    argTypes:
    - struct iter_hints*
    - struct iter_forwards*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1391
      start: 1365
    functionDepth: 3
    functionLinenumber: 1365
    functionLinenumberEnd: 1391
    functionName: iter_get_next_root
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - lock_rw_unlock
    - forwards_next_root
    - lock_rw_rdlock
    - hints_next_root
    linkageType: ''
    returnType: int
    signature: "int iter_get_next_root(struct iter_hints* hints, struct iter_forwards*
      fwd,\n\tuint16_t* c)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1404,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iter_utils.c:1405,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iter_utils.c:1406,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iter_utils.c:1407,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1408,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1409,1
    - Dst: memmove
      Src: /src/unbound/iterator/iter_utils.c:1410,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 3
    argNames:
    - msg
    - ns
    - z
    argTypes:
    - struct dns_msg*
    - struct ub_packed_rrset_key*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1420
      start: 1393
    functionDepth: 1
    functionLinenumber: 1393
    functionLinenumberEnd: 1420
    functionName: iter_scrub_ds
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - dname_subdomain_c
    - log_nametypeclass
    - memmove
    - query_dname_compare
    - ntohs
    linkageType: ''
    returnType: void
    signature: void iter_scrub_ds(struct dns_msg* msg, struct ub_packed_rrset_key*
      ns, uint8_t* z)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/iterator/iter_utils.c:1428,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct dns_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1433
      start: 1422
    functionDepth: 1
    functionLinenumber: 1422
    functionLinenumberEnd: 1433
    functionName: iter_scrub_nxdomain
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 2
    functionsReached:
    - memmove
    linkageType: ''
    returnType: void
    signature: void iter_scrub_nxdomain(struct dns_msg* msg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: delegpt_add_to_result_list
      Src: /src/unbound/iterator/iter_utils.c:1441,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 3
    argNames:
    - dp
    - d
    - outbound_msg_retry
    argTypes:
    - struct delegpt*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1447
      start: 1435
    functionDepth: 1
    functionLinenumber: 1435
    functionLinenumberEnd: 1447
    functionName: iter_dec_attempts
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 2
    functionsReached:
    - delegpt_add_to_result_list
    linkageType: ''
    returnType: void
    signature: void iter_dec_attempts(struct delegpt* dp, int d, int outbound_msg_retry)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: delegpt_find_addr
      Src: /src/unbound/iterator/iter_utils.c:1454,1
    - Dst: log_addr
      Src: /src/unbound/iterator/iter_utils.c:1456,1
    - Dst: log_addr
      Src: /src/unbound/iterator/iter_utils.c:1465,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - dp
    - old
    - outbound_msg_retry
    argTypes:
    - struct delegpt*
    - struct delegpt*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1478
      start: 1449
    functionDepth: 1
    functionLinenumber: 1449
    functionLinenumberEnd: 1478
    functionName: iter_merge_retry_counts
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - delegpt_find_addr
    - log_addr
    linkageType: ''
    returnType: void
    signature: "void iter_merge_retry_counts(struct delegpt* dp, struct delegpt* old,\n\tint
      outbound_msg_retry)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1490,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1491,1
    - Dst: val_find_rrset_signer
      Src: /src/unbound/iterator/iter_utils.c:1497,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iter_utils.c:1498,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1502,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1508,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iter_utils.c:1509,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iter_utils.c:1511,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1514,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1515,1
    - Dst: val_find_rrset_signer
      Src: /src/unbound/iterator/iter_utils.c:1518,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iter_utils.c:1519,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 26
    argCount: 2
    argNames:
    - msg
    - dp
    argTypes:
    - struct dns_msg*
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1526
      start: 1480
    functionDepth: 3
    functionLinenumber: 1480
    functionLinenumberEnd: 1526
    functionName: iter_ds_toolow
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - dname_subdomain_c
    - query_dname_compare
    - val_find_rrset_signer
    - ntohs
    linkageType: ''
    returnType: int
    signature: int iter_ds_toolow(struct dns_msg* msg, struct delegpt* dp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iter_utils.c:1535,1
    - Dst: dname_count_labels
      Src: /src/unbound/iterator/iter_utils.c:1538,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - qinfo
    - dp
    argTypes:
    - struct query_info*
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1541
      start: 1528
    functionDepth: 1
    functionLinenumber: 1528
    functionLinenumberEnd: 1541
    functionName: iter_dp_cangodown
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - query_dname_compare
    - dname_count_labels
    linkageType: ''
    returnType: int
    signature: int iter_dp_cangodown(struct query_info* qinfo, struct delegpt* dp)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_utils.c:1552,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/iterator/iter_utils.c:1559,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/iterator/iter_utils.c:1560,1
    - Dst: hints_lookup_stub
      Src: /src/unbound/iterator/iter_utils.c:1561,1
    - Dst: forwards_lookup
      Src: /src/unbound/iterator/iter_utils.c:1563,1
    - Dst: dname_strict_subdomain
      Src: /src/unbound/iterator/iter_utils.c:1568,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_utils.c:1580,1
    - Dst: dname_str
      Src: /src/unbound/iterator/iter_utils.c:1584,1
    - Dst: dname_str
      Src: /src/unbound/iterator/iter_utils.c:1585,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_utils.c:1586,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_utils.c:1590,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_utils.c:1591,1
    - Dst: memmove
      Src: /src/unbound/iterator/iter_utils.c:1596,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_utils.c:1601,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_utils.c:1609,1
    - Dst: dname_str
      Src: /src/unbound/iterator/iter_utils.c:1613,1
    - Dst: dname_str
      Src: /src/unbound/iterator/iter_utils.c:1614,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_utils.c:1615,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_utils.c:1619,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_utils.c:1620,1
    - Dst: memmove
      Src: /src/unbound/iterator/iter_utils.c:1625,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_utils.c:1629,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_utils.c:1632,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_utils.c:1633,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 64
    argCount: 6
    argNames:
    - qstate
    - qinf
    - retdpname
    - retdpnamelen
    - dpname_storage
    - dpname_storage_len
    argTypes:
    - struct module_qstate*
    - struct query_info*
    - uint8_t**
    - size_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1639
      start: 1543
    functionDepth: 2
    functionLinenumber: 1543
    functionLinenumberEnd: 1639
    functionName: iter_stub_fwd_no_cache
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 4
    functionsReached:
    - forwards_lookup
    - memmove
    - verbose
    - lock_rw_unlock
    - dname_strict_subdomain
    - dname_str
    - log_assert
    - hints_lookup_stub
    - lock_rw_rdlock
    linkageType: ''
    returnType: int
    signature: "int iter_stub_fwd_no_cache(struct module_qstate *qstate, struct query_info
      *qinf,\n\tuint8_t** retdpname, size_t* retdpnamelen, uint8_t* dpname_storage,\n\tsize_t
      dpname_storage_len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: modstack_find
      Src: /src/unbound/iterator/iter_utils.c:1644,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - mods
    - env
    - outnet
    argTypes:
    - struct module_stack*
    - struct module_env*
    - struct outside_network*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1655
      start: 1641
    functionDepth: 1
    functionLinenumber: 1641
    functionLinenumberEnd: 1655
    functionName: iterator_set_ip46_support
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - modstack_find
    linkageType: ''
    returnType: void
    signature: "void iterator_set_ip46_support(struct module_stack* mods,\n\tstruct
      module_env* env, struct outside_network* outnet)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1668,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1679,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1680,1
    - Dst: snprintf
      Src: /src/unbound/iterator/iter_utils.c:1686,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1688,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iter_utils.c:1689,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1690,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1691,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct dns_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1697
      start: 1657
    functionDepth: 2
    functionLinenumber: 1657
    functionLinenumberEnd: 1697
    functionName: limit_nsec_ttl
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 2
    functionsReached:
    - snprintf
    - log_nametypeclass
    - ntohs
    linkageType: ''
    returnType: void
    signature: void limit_nsec_ttl(struct dns_msg* msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - rep
    argTypes:
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1706
      start: 1699
    functionDepth: 0
    functionLinenumber: 1699
    functionLinenumberEnd: 1706
    functionName: iter_make_minimal
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void iter_make_minimal(struct reply_info* rep)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - env
    argTypes:
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1714
      start: 1708
    functionDepth: 0
    functionLinenumber: 1708
    functionLinenumberEnd: 1714
    functionName: deleg_port_number
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int deleg_port_number(struct module_env* env)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iter_utils.c:1723,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_utils.c:1728,1
    - Dst: get_cname_target
      Src: /src/unbound/iterator/iter_utils.c:1729,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iter_utils.c:1730,1
    - Dst: val_reply_remove_answers
      Src: /src/unbound/iterator/iter_utils.c:1738,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - rep
    - cutoff
    argTypes:
    - struct reply_info*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1739
      start: 1716
    functionDepth: 2
    functionLinenumber: 1716
    functionLinenumberEnd: 1739
    functionName: shorten_answer_cname
    functionSourceFile: /src/unbound/iterator/iter_utils.c
    functionUses: 1
    functionsReached:
    - get_cname_target
    - val_reply_remove_answers
    - query_dname_compare
    - ntohs
    linkageType: ''
    returnType: void
    signature: void shorten_answer_cname(struct reply_info* rep, uint8_t* cutoff)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/iterator/iter_hints.c:56,1
    - Dst: lock_rw_init
      Src: /src/unbound/iterator/iter_hints.c:60,1
    - Dst: lock_protect
      Src: /src/unbound/iterator/iter_hints.c:61,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 63
    functionName: hints_create
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 3
    functionsReached:
    - lock_protect
    - calloc
    - lock_rw_init
    linkageType: ''
    returnType: struct iter_hints
    signature: "struct iter_hints * \nhints_create(void)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: delegpt_free_mlc
      Src: /src/unbound/iterator/iter_hints.c:68,1
    - Dst: free
      Src: /src/unbound/iterator/iter_hints.c:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct iter_hints_stub*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 70
    functionName: hints_stub_free
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 0
    functionsReached:
    - free
    - delegpt_free_mlc
    linkageType: ''
    returnType: void
    signature: void hints_stub_free(struct iter_hints_stub* s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hints_stub_free
      Src: /src/unbound/iterator/iter_hints.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - n
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 72
    functionDepth: 2
    functionLinenumber: 72
    functionLinenumberEnd: 76
    functionName: delhintnode
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 0
    functionsReached:
    - hints_stub_free
    linkageType: ''
    returnType: void
    signature: void delhintnode(rbnode_type* n, void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: traverse_postorder
      Src: /src/unbound/iterator/iter_hints.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - hints
    argTypes:
    - struct iter_hints*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: hints_del_tree
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 0
    functionsReached:
    - traverse_postorder
    linkageType: ''
    returnType: void
    signature: void hints_del_tree(struct iter_hints* hints)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/iterator/iter_hints.c:88,1
    - Dst: hints_del_tree
      Src: /src/unbound/iterator/iter_hints.c:89,1
    - Dst: free
      Src: /src/unbound/iterator/iter_hints.c:90,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - hints
    argTypes:
    - struct iter_hints*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 83
    functionDepth: 2
    functionLinenumber: 83
    functionLinenumberEnd: 91
    functionName: hints_delete
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 3
    functionsReached:
    - free
    - hints_del_tree
    - lock_rw_destroy
    linkageType: ''
    returnType: void
    signature: void hints_delete(struct iter_hints* hints)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/iterator/iter_hints.c:100,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_hints.c:102,1
    - Dst: delegpt_add_ns_mlc
      Src: /src/unbound/iterator/iter_hints.c:105,1
    - Dst: extstrtoaddr
      Src: /src/unbound/iterator/iter_hints.c:106,1
    - Dst: delegpt_add_target_mlc
      Src: /src/unbound/iterator/iter_hints.c:107,1
    - Dst: free
      Src: /src/unbound/iterator/iter_hints.c:109,1
    - Dst: free
      Src: /src/unbound/iterator/iter_hints.c:112,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - dp
    - sv
    - ip
    argTypes:
    - struct delegpt*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 94
    functionDepth: 4
    functionLinenumber: 94
    functionLinenumberEnd: 114
    functionName: ah
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 0
    functionsReached:
    - log_err
    - extstrtoaddr
    - free
    - delegpt_add_target_mlc
    - sldns_str2wire_dname
    - delegpt_add_ns_mlc
    linkageType: ''
    returnType: int
    signature: int ah(struct delegpt* dp, const char* sv, const char* ip)
  - BBCount: 30
    BranchProfiles: []
    Callsites:
    - Dst: delegpt_create_mlc
      Src: /src/unbound/iterator/iter_hints.c:129,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:134,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:135,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:136,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:137,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:138,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:139,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:140,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:141,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:142,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:143,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:144,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:145,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:146,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:149,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:150,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:151,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:152,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:153,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:154,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:155,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:156,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:157,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:158,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:159,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:160,1
    - Dst: ah
      Src: /src/unbound/iterator/iter_hints.c:161,1
    - Dst: delegpt_free_mlc
      Src: /src/unbound/iterator/iter_hints.c:165,1
    CyclomaticComplexity: 55
    EdgeCount: 55
    ICount: 91
    argCount: 2
    argNames:
    - do_ip4
    - do_ip6
    argTypes:
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 117
    functionDepth: 5
    functionLinenumber: 117
    functionLinenumberEnd: 167
    functionName: compile_time_root_prime
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 0
    functionsReached:
    - delegpt_free_mlc
    - ah
    - delegpt_create_mlc
    linkageType: ''
    returnType: struct delegpt
    signature: "struct delegpt * \ncompile_time_root_prime(int do_ip4, int do_ip6)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/iterator/iter_hints.c:174,1
    - Dst: delegpt_free_mlc
      Src: /src/unbound/iterator/iter_hints.c:177,1
    - Dst: name_tree_insert
      Src: /src/unbound/iterator/iter_hints.c:182,1
    - Dst: dname_str
      Src: /src/unbound/iterator/iter_hints.c:185,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_hints.c:186,1
    - Dst: delegpt_free_mlc
      Src: /src/unbound/iterator/iter_hints.c:187,1
    - Dst: free
      Src: /src/unbound/iterator/iter_hints.c:188,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - hints
    - c
    - dp
    - noprime
    argTypes:
    - struct iter_hints*
    - uint16_t
    - struct delegpt*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 191
    functionName: hints_insert
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 0
    functionsReached:
    - log_err
    - delegpt_free_mlc
    - dname_str
    - malloc
    - free
    - name_tree_insert
    linkageType: ''
    returnType: int
    signature: "int hints_insert(struct iter_hints* hints, uint16_t c, struct delegpt*
      dp,\n\tint noprime)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/iterator/iter_hints.c:201,1
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/iterator/iter_hints.c:204,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_hints.c:206,1
    - Dst: delegpt_create_mlc
      Src: /src/unbound/iterator/iter_hints.c:209,1
    - Dst: free
      Src: /src/unbound/iterator/iter_hints.c:210,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_hints.c:211,1
    - Dst: free
      Src: /src/unbound/iterator/iter_hints.c:214,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct config_stub*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 194
    functionDepth: 4
    functionLinenumber: 194
    functionLinenumberEnd: 216
    functionName: read_stubs_name
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 0
    functionsReached:
    - free
    - log_err
    - sldns_str2wire_dname
    - delegpt_create_mlc
    linkageType: ''
    returnType: struct delegpt
    signature: "struct delegpt * \nread_stubs_name(struct config_stub* s)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_hints.c:227,1
    - Dst: authextstrtodname
      Src: /src/unbound/iterator/iter_hints.c:228,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_hints.c:230,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iter_hints.c:234,1
    - Dst: log_warn
      Src: /src/unbound/iterator/iter_hints.c:235,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_hints.c:241,1
    - Dst: delegpt_add_ns_mlc
      Src: /src/unbound/iterator/iter_hints.c:244,1
    - Dst: free
      Src: /src/unbound/iterator/iter_hints.c:245,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_hints.c:246,1
    - Dst: free
      Src: /src/unbound/iterator/iter_hints.c:249,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 2
    argNames:
    - s
    - dp
    argTypes:
    - struct config_stub*
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 252
    functionName: read_stubs_host
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    - log_err
    - free
    - log_assert
    - log_warn
    - delegpt_add_ns_mlc
    - authextstrtodname
    linkageType: ''
    returnType: int
    signature: int read_stubs_host(struct config_stub* s, struct delegpt* dp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_hints.c:263,1
    - Dst: authextstrtoaddr
      Src: /src/unbound/iterator/iter_hints.c:264,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_hints.c:265,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_hints.c:271,1
    - Dst: delegpt_add_addr_mlc
      Src: /src/unbound/iterator/iter_hints.c:274,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_hints.c:276,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 2
    argNames:
    - s
    - dp
    argTypes:
    - struct config_stub*
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 281
    functionName: read_stubs_addr
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 0
    functionsReached:
    - log_err
    - authextstrtoaddr
    - log_assert
    - delegpt_add_addr_mlc
    linkageType: ''
    returnType: int
    signature: int read_stubs_addr(struct config_stub* s, struct delegpt* dp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: read_stubs_name
      Src: /src/unbound/iterator/iter_hints.c:290,1
    - Dst: read_stubs_host
      Src: /src/unbound/iterator/iter_hints.c:292,1
    - Dst: read_stubs_addr
      Src: /src/unbound/iterator/iter_hints.c:292,1
    - Dst: delegpt_free_mlc
      Src: /src/unbound/iterator/iter_hints.c:293,1
    - Dst: delegpt_log
      Src: /src/unbound/iterator/iter_hints.c:306,1
    - Dst: hints_insert
      Src: /src/unbound/iterator/iter_hints.c:307,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - hints
    - cfg
    argTypes:
    - struct iter_hints*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 311
      start: 284
    functionDepth: 5
    functionLinenumber: 284
    functionLinenumberEnd: 311
    functionName: read_stubs
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 0
    functionsReached:
    - read_stubs_host
    - delegpt_free_mlc
    - read_stubs_addr
    - hints_insert
    - delegpt_log
    - read_stubs_name
    linkageType: ''
    returnType: int
    signature: int read_stubs(struct iter_hints* hints, struct config_file* cfg)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/iterator/iter_hints.c:323,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_hints.c:325,1
    - Dst: strerror
      Src: /src/unbound/iterator/iter_hints.c:326,1
    - Dst: delegpt_create_mlc
      Src: /src/unbound/iterator/iter_hints.c:329,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_hints.c:331,1
    - Dst: fclose
      Src: /src/unbound/iterator/iter_hints.c:332,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_hints.c:335,1
    - Dst: memset
      Src: /src/unbound/iterator/iter_hints.c:336,1
    - Dst: feof
      Src: /src/unbound/iterator/iter_hints.c:339,1
    - Dst: sldns_fp2wire_rr_buf
      Src: /src/unbound/iterator/iter_hints.c:342,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_hints.c:345,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/iterator/iter_hints.c:346,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/iterator/iter_hints.c:347,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/iterator/iter_hints.c:352,1
    - Dst: delegpt_add_ns_mlc
      Src: /src/unbound/iterator/iter_hints.c:354,1
    - Dst: sldns_wirerr_get_rdata
      Src: /src/unbound/iterator/iter_hints.c:354,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_hints.c:356,1
    - Dst: sldns_wirerr_get_class
      Src: /src/unbound/iterator/iter_hints.c:359,1
    - Dst: delegpt_set_name_mlc
      Src: /src/unbound/iterator/iter_hints.c:361,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_hints.c:362,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/iterator/iter_hints.c:366,1
    - Dst: sldns_wirerr_get_rdatalen
      Src: /src/unbound/iterator/iter_hints.c:367,1
    - Dst: memset
      Src: /src/unbound/iterator/iter_hints.c:371,1
    - Dst: htons
      Src: /src/unbound/iterator/iter_hints.c:373,1
    - Dst: memmove
      Src: /src/unbound/iterator/iter_hints.c:374,1
    - Dst: sldns_wirerr_get_rdata
      Src: /src/unbound/iterator/iter_hints.c:375,1
    - Dst: delegpt_add_target_mlc
      Src: /src/unbound/iterator/iter_hints.c:377,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_hints.c:380,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/iterator/iter_hints.c:383,1
    - Dst: sldns_wirerr_get_rdatalen
      Src: /src/unbound/iterator/iter_hints.c:384,1
    - Dst: memset
      Src: /src/unbound/iterator/iter_hints.c:388,1
    - Dst: htons
      Src: /src/unbound/iterator/iter_hints.c:390,1
    - Dst: memmove
      Src: /src/unbound/iterator/iter_hints.c:391,1
    - Dst: sldns_wirerr_get_rdata
      Src: /src/unbound/iterator/iter_hints.c:392,1
    - Dst: delegpt_add_target_mlc
      Src: /src/unbound/iterator/iter_hints.c:394,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_hints.c:397,1
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/iterator/iter_hints.c:402,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/iterator/iter_hints.c:402,1
    - Dst: log_warn
      Src: /src/unbound/iterator/iter_hints.c:404,1
    - Dst: fclose
      Src: /src/unbound/iterator/iter_hints.c:408,1
    - Dst: log_warn
      Src: /src/unbound/iterator/iter_hints.c:410,1
    - Dst: delegpt_free_mlc
      Src: /src/unbound/iterator/iter_hints.c:411,1
    - Dst: delegpt_log
      Src: /src/unbound/iterator/iter_hints.c:414,1
    - Dst: hints_insert
      Src: /src/unbound/iterator/iter_hints.c:415,1
    - Dst: delegpt_free_mlc
      Src: /src/unbound/iterator/iter_hints.c:421,1
    - Dst: fclose
      Src: /src/unbound/iterator/iter_hints.c:422,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 83
    argCount: 2
    argNames:
    - hints
    - fname
    argTypes:
    - struct iter_hints*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 314
    functionDepth: 8
    functionLinenumber: 314
    functionLinenumberEnd: 424
    functionName: read_root_hints
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 0
    functionsReached:
    - sldns_wirerr_get_rdata
    - htons
    - fopen
    - sldns_wirerr_get_type
    - delegpt_log
    - memset
    - delegpt_set_name_mlc
    - log_err
    - fclose
    - feof
    - delegpt_create_mlc
    - delegpt_add_ns_mlc
    - sldns_fp2wire_rr_buf
    - verbose
    - sldns_wire2str_type_buf
    - delegpt_free_mlc
    - LDNS_WIREPARSE_OFFSET
    - hints_insert
    - delegpt_add_target_mlc
    - strerror
    - log_warn
    - memmove
    - sldns_get_errorstr_parse
    - sldns_wirerr_get_rdatalen
    - sldns_wirerr_get_class
    linkageType: ''
    returnType: int
    signature: int read_root_hints(struct iter_hints* hints, char* fname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_hints.c:432,1
    - Dst: strncmp
      Src: /src/unbound/iterator/iter_hints.c:436,1
    - Dst: strlen
      Src: /src/unbound/iterator/iter_hints.c:437,1
    - Dst: strlen
      Src: /src/unbound/iterator/iter_hints.c:438,1
    - Dst: read_root_hints
      Src: /src/unbound/iterator/iter_hints.c:439,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 2
    argNames:
    - hints
    - cfg
    argTypes:
    - struct iter_hints*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 427
    functionDepth: 9
    functionLinenumber: 427
    functionLinenumberEnd: 444
    functionName: read_root_hints_list
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 0
    functionsReached:
    - strncmp
    - log_assert
    - read_root_hints
    - strlen
    linkageType: ''
    returnType: int
    signature: int read_root_hints_list(struct iter_hints* hints, struct config_file*
      cfg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/iterator/iter_hints.c:450,1
    - Dst: hints_del_tree
      Src: /src/unbound/iterator/iter_hints.c:451,1
    - Dst: name_tree_init
      Src: /src/unbound/iterator/iter_hints.c:452,1
    - Dst: read_root_hints_list
      Src: /src/unbound/iterator/iter_hints.c:455,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_hints.c:456,1
    - Dst: read_stubs
      Src: /src/unbound/iterator/iter_hints.c:461,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_hints.c:462,1
    - Dst: hints_find_root
      Src: /src/unbound/iterator/iter_hints.c:467,1
    - Dst: compile_time_root_prime
      Src: /src/unbound/iterator/iter_hints.c:468,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_hints.c:470,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_hints.c:472,1
    - Dst: hints_insert
      Src: /src/unbound/iterator/iter_hints.c:475,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_hints.c:476,1
    - Dst: name_tree_init_parents
      Src: /src/unbound/iterator/iter_hints.c:481,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_hints.c:482,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 2
    argNames:
    - hints
    - cfg
    argTypes:
    - struct iter_hints*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 484
      start: 446
    functionDepth: 10
    functionLinenumber: 446
    functionLinenumberEnd: 484
    functionName: hints_apply_cfg
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 3
    functionsReached:
    - name_tree_init
    - compile_time_root_prime
    - lock_rw_wrlock
    - lock_rw_unlock
    - verbose
    - hints_insert
    - hints_find_root
    - hints_del_tree
    - name_tree_init_parents
    - read_root_hints_list
    - read_stubs
    linkageType: ''
    returnType: int
    signature: int hints_apply_cfg(struct iter_hints* hints, struct config_file* cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_size_labels
      Src: /src/unbound/iterator/iter_hints.c:493,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/iterator/iter_hints.c:495,1
    - Dst: name_tree_find
      Src: /src/unbound/iterator/iter_hints.c:496,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_hints.c:499,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - hints
    - qname
    - qclass
    - nolock
    argTypes:
    - struct iter_hints*
    - uint8_t*
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 486
    functionDepth: 1
    functionLinenumber: 486
    functionLinenumberEnd: 501
    functionName: hints_find
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 1
    functionsReached:
    - name_tree_find
    - dname_count_size_labels
    - lock_rw_rdlock
    - lock_rw_unlock
    linkageType: ''
    returnType: struct delegpt
    signature: "struct delegpt *\nhints_find(struct iter_hints* hints, uint8_t* qname,
      uint16_t qclass,\n\tint nolock)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hints_find
      Src: /src/unbound/iterator/iter_hints.c:507,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - hints
    - qclass
    - nolock
    argTypes:
    - struct iter_hints*
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 503
    functionDepth: 2
    functionLinenumber: 503
    functionLinenumberEnd: 508
    functionName: hints_find_root
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 4
    functionsReached:
    - hints_find
    linkageType: ''
    returnType: struct delegpt
    signature: 'struct delegpt *

      hints_find_root(struct iter_hints* hints, uint16_t qclass, int nolock)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_size_labels
      Src: /src/unbound/iterator/iter_hints.c:519,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/iterator/iter_hints.c:521,1
    - Dst: name_tree_lookup
      Src: /src/unbound/iterator/iter_hints.c:522,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_hints.c:525,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_hints.c:533,1
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iter_hints.c:541,1
    - Dst: dname_strict_subdomain
      Src: /src/unbound/iterator/iter_hints.c:547,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_hints.c:550,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 5
    argNames:
    - hints
    - qname
    - qclass
    - cache_dp
    - nolock
    argTypes:
    - struct iter_hints*
    - uint8_t*
    - uint16_t
    - struct delegpt*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 510
    functionDepth: 1
    functionLinenumber: 510
    functionLinenumberEnd: 552
    functionName: hints_lookup_stub
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 4
    functionsReached:
    - lock_rw_unlock
    - dname_count_size_labels
    - dname_strict_subdomain
    - name_tree_lookup
    - query_dname_compare
    - lock_rw_rdlock
    linkageType: ''
    returnType: struct iter_hints_stub
    signature: "struct iter_hints_stub * \nhints_lookup_stub(struct iter_hints* hints,
      uint8_t* qname,\n\tuint16_t qclass, struct delegpt* cache_dp, int nolock)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/iterator/iter_hints.c:558,1
    - Dst: name_tree_next_root
      Src: /src/unbound/iterator/iter_hints.c:559,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_hints.c:560,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - hints
    - qclass
    - nolock
    argTypes:
    - struct iter_hints*
    - uint16_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 562
    functionName: hints_next_root
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 1
    functionsReached:
    - lock_rw_unlock
    - lock_rw_rdlock
    - name_tree_next_root
    linkageType: ''
    returnType: int
    signature: int hints_next_root(struct iter_hints* hints, uint16_t* qclass, int
      nolock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/iterator/iter_hints.c:570,1
    - Dst: delegpt_get_mem
      Src: /src/unbound/iterator/iter_hints.c:573,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_hints.c:575,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - hints
    argTypes:
    - struct iter_hints*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 564
    functionDepth: 1
    functionLinenumber: 564
    functionLinenumberEnd: 577
    functionName: hints_get_mem
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 2
    functionsReached:
    - delegpt_get_mem
    - lock_rw_unlock
    - lock_rw_rdlock
    linkageType: ''
    returnType: size_t
    signature: size_t hints_get_mem(struct iter_hints* hints)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: delegpt_get_mem
      Src: /src/unbound/iterator/iter_hints.c:573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tree
    argTypes:
    - hints
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 572
    functionDepth: 1
    functionLinenumber: 572
    functionLinenumberEnd: 574
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 0
    functionsReached:
    - delegpt_get_mem
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(p, struct iter_hints_stub*, &hints->tree)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/iterator/iter_hints.c:585,1
    - Dst: name_tree_find
      Src: /src/unbound/iterator/iter_hints.c:586,1
    - Dst: rbtree_delete
      Src: /src/unbound/iterator/iter_hints.c:588,1
    - Dst: hints_stub_free
      Src: /src/unbound/iterator/iter_hints.c:589,1
    - Dst: hints_insert
      Src: /src/unbound/iterator/iter_hints.c:591,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_hints.c:592,1
    - Dst: name_tree_init_parents
      Src: /src/unbound/iterator/iter_hints.c:595,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_hints.c:596,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 5
    argNames:
    - hints
    - c
    - dp
    - noprime
    - nolock
    argTypes:
    - struct iter_hints*
    - uint16_t
    - struct delegpt*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 598
      start: 579
    functionDepth: 2
    functionLinenumber: 579
    functionLinenumberEnd: 598
    functionName: hints_add_stub
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 1
    functionsReached:
    - name_tree_find
    - rbtree_delete
    - lock_rw_wrlock
    - lock_rw_unlock
    - hints_stub_free
    - hints_insert
    - name_tree_init_parents
    linkageType: ''
    returnType: int
    signature: "int hints_add_stub(struct iter_hints* hints, uint16_t c, struct delegpt*
      dp,\n\tint noprime, int nolock)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_size_labels
      Src: /src/unbound/iterator/iter_hints.c:606,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/iterator/iter_hints.c:608,1
    - Dst: name_tree_find
      Src: /src/unbound/iterator/iter_hints.c:609,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_hints.c:611,1
    - Dst: rbtree_delete
      Src: /src/unbound/iterator/iter_hints.c:614,1
    - Dst: hints_stub_free
      Src: /src/unbound/iterator/iter_hints.c:615,1
    - Dst: name_tree_init_parents
      Src: /src/unbound/iterator/iter_hints.c:616,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/iterator/iter_hints.c:617,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - hints
    - c
    - nm
    - nolock
    argTypes:
    - struct iter_hints*
    - uint16_t
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 600
    functionDepth: 2
    functionLinenumber: 600
    functionLinenumberEnd: 618
    functionName: hints_delete_stub
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 1
    functionsReached:
    - name_tree_find
    - rbtree_delete
    - lock_rw_wrlock
    - dname_count_size_labels
    - lock_rw_unlock
    - hints_stub_free
    - name_tree_init_parents
    linkageType: ''
    returnType: void
    signature: "void hints_delete_stub(struct iter_hints* hints, uint16_t c, uint8_t*
      nm,\n\tint nolock)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - hints
    - data
    argTypes:
    - struct iter_hints*
    - struct iter_hints*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 629
      start: 620
    functionDepth: 0
    functionLinenumber: 620
    functionLinenumberEnd: 629
    functionName: hints_swap_tree
    functionSourceFile: /src/unbound/iterator/iter_hints.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void hints_swap_tree(struct iter_hints* hints, struct iter_hints* data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/iterator/iter_donotq.c:54,1
    - Dst: regional_create
      Src: /src/unbound/iterator/iter_donotq.c:58,1
    - Dst: donotq_delete
      Src: /src/unbound/iterator/iter_donotq.c:60,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 51
    functionDepth: 1
    functionLinenumber: 51
    functionLinenumberEnd: 64
    functionName: donotq_create
    functionSourceFile: /src/unbound/iterator/iter_donotq.c
    functionUses: 2
    functionsReached:
    - regional_create
    - calloc
    - donotq_delete
    linkageType: ''
    returnType: struct iter_donotq
    signature: "struct iter_donotq * \ndonotq_create(void)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_destroy
      Src: /src/unbound/iterator/iter_donotq.c:71,1
    - Dst: free
      Src: /src/unbound/iterator/iter_donotq.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - dq
    argTypes:
    - struct iter_donotq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 66
    functionDepth: 1
    functionLinenumber: 66
    functionLinenumberEnd: 73
    functionName: donotq_delete
    functionSourceFile: /src/unbound/iterator/iter_donotq.c
    functionUses: 3
    functionsReached:
    - free
    - regional_destroy
    linkageType: ''
    returnType: void
    signature: void donotq_delete(struct iter_donotq* dq)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iter_donotq.c:80,1
    - Dst: addr_tree_insert
      Src: /src/unbound/iterator/iter_donotq.c:84,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_donotq.c:85,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - dq
    - addr
    - addrlen
    - net
    argTypes:
    - struct iter_donotq*
    - struct sockaddr_storage*
    - socklen_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 76
    functionDepth: 1
    functionLinenumber: 76
    functionLinenumberEnd: 88
    functionName: donotq_insert
    functionSourceFile: /src/unbound/iterator/iter_donotq.c
    functionUses: 0
    functionsReached:
    - verbose
    - regional_alloc
    - addr_tree_insert
    linkageType: ''
    returnType: int
    signature: "int donotq_insert(struct iter_donotq* dq, struct sockaddr_storage*
      addr, \n\tsocklen_t addrlen, int net)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/iterator/iter_donotq.c:97,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/iterator/iter_donotq.c:98,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_donotq.c:99,1
    - Dst: donotq_insert
      Src: /src/unbound/iterator/iter_donotq.c:102,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_donotq.c:103,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - dq
    - str
    argTypes:
    - struct iter_donotq*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 91
    functionDepth: 2
    functionLinenumber: 91
    functionLinenumberEnd: 107
    functionName: donotq_str_cfg
    functionSourceFile: /src/unbound/iterator/iter_donotq.c
    functionUses: 0
    functionsReached:
    - donotq_insert
    - verbose
    - netblockstrtoaddr
    - log_err
    linkageType: ''
    returnType: int
    signature: int donotq_str_cfg(struct iter_donotq* dq, const char* str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_donotq.c:115,1
    - Dst: donotq_str_cfg
      Src: /src/unbound/iterator/iter_donotq.c:116,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - dq
    - cfg
    argTypes:
    - struct iter_donotq*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 110
    functionDepth: 3
    functionLinenumber: 110
    functionLinenumberEnd: 120
    functionName: read_donotq
    functionSourceFile: /src/unbound/iterator/iter_donotq.c
    functionUses: 0
    functionsReached:
    - donotq_str_cfg
    - log_assert
    linkageType: ''
    returnType: int
    signature: int read_donotq(struct iter_donotq* dq, struct config_file* cfg)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: regional_free_all
      Src: /src/unbound/iterator/iter_donotq.c:125,1
    - Dst: addr_tree_init
      Src: /src/unbound/iterator/iter_donotq.c:126,1
    - Dst: read_donotq
      Src: /src/unbound/iterator/iter_donotq.c:127,1
    - Dst: donotq_str_cfg
      Src: /src/unbound/iterator/iter_donotq.c:130,1
    - Dst: donotq_str_cfg
      Src: /src/unbound/iterator/iter_donotq.c:133,1
    - Dst: donotq_str_cfg
      Src: /src/unbound/iterator/iter_donotq.c:135,1
    - Dst: donotq_str_cfg
      Src: /src/unbound/iterator/iter_donotq.c:140,1
    - Dst: donotq_str_cfg
      Src: /src/unbound/iterator/iter_donotq.c:143,1
    - Dst: donotq_str_cfg
      Src: /src/unbound/iterator/iter_donotq.c:145,1
    - Dst: addr_tree_init_parents
      Src: /src/unbound/iterator/iter_donotq.c:149,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 2
    argNames:
    - dq
    - cfg
    argTypes:
    - struct iter_donotq*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 122
    functionDepth: 4
    functionLinenumber: 122
    functionLinenumberEnd: 151
    functionName: donotq_apply_cfg
    functionSourceFile: /src/unbound/iterator/iter_donotq.c
    functionUses: 2
    functionsReached:
    - addr_tree_init_parents
    - donotq_str_cfg
    - addr_tree_init
    - read_donotq
    - regional_free_all
    linkageType: ''
    returnType: int
    signature: int donotq_apply_cfg(struct iter_donotq* dq, struct config_file* cfg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addr_tree_lookup
      Src: /src/unbound/iterator/iter_donotq.c:157,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - donotq
    - addr
    - addrlen
    argTypes:
    - struct iter_donotq*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 158
    functionName: donotq_lookup
    functionSourceFile: /src/unbound/iterator/iter_donotq.c
    functionUses: 1
    functionsReached:
    - addr_tree_lookup
    linkageType: ''
    returnType: int
    signature: "int donotq_lookup(struct iter_donotq* donotq, struct sockaddr_storage*
      addr,\n        socklen_t addrlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_get_mem
      Src: /src/unbound/iterator/iter_donotq.c:164,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - donotq
    argTypes:
    - struct iter_donotq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 165
    functionName: donotq_get_mem
    functionSourceFile: /src/unbound/iterator/iter_donotq.c
    functionUses: 1
    functionsReached:
    - regional_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t donotq_get_mem(struct iter_donotq* donotq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iter_delegpt.c:56,1
    - Dst: memset
      Src: /src/unbound/iterator/iter_delegpt.c:60,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - region
    argTypes:
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 53
    functionDepth: 0
    functionLinenumber: 53
    functionLinenumberEnd: 62
    functionName: delegpt_create
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 1
    functionsReached:
    - memset
    - regional_alloc
    linkageType: ''
    returnType: struct delegpt
    signature: "struct delegpt * \ndelegpt_create(struct regional* region)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: delegpt_create
      Src: /src/unbound/iterator/iter_delegpt.c:66,1
    - Dst: delegpt_set_name
      Src: /src/unbound/iterator/iter_delegpt.c:71,1
    - Dst: delegpt_add_ns
      Src: /src/unbound/iterator/iter_delegpt.c:78,1
    - Dst: delegpt_add_addr
      Src: /src/unbound/iterator/iter_delegpt.c:89,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - dp
    - region
    argTypes:
    - struct delegpt*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 94
    functionName: delegpt_copy
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 8
    functionsReached:
    - delegpt_create
    - delegpt_add_ns
    - delegpt_set_name
    - delegpt_add_addr
    linkageType: ''
    returnType: struct delegpt
    signature: struct delegpt * delegpt_copy(struct delegpt* dp, struct regional*
      region)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_delegpt.c:99,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/iterator/iter_delegpt.c:100,1
    - Dst: regional_alloc_init
      Src: /src/unbound/iterator/iter_delegpt.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - dp
    - region
    - name
    argTypes:
    - struct delegpt*
    - struct regional*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 96
    functionDepth: 1
    functionLinenumber: 96
    functionLinenumberEnd: 103
    functionName: delegpt_set_name
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 2
    functionsReached:
    - dname_count_size_labels
    - log_assert
    - regional_alloc_init
    linkageType: ''
    returnType: int
    signature: int delegpt_set_name(struct delegpt* dp, struct regional* region, uint8_t*
      name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_size_labels
      Src: /src/unbound/iterator/iter_delegpt.c:111,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_delegpt.c:112,1
    - Dst: delegpt_find_ns
      Src: /src/unbound/iterator/iter_delegpt.c:115,1
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iter_delegpt.c:117,1
    - Dst: regional_alloc_init
      Src: /src/unbound/iterator/iter_delegpt.c:122,1
    - Dst: regional_strdup
      Src: /src/unbound/iterator/iter_delegpt.c:134,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 6
    argNames:
    - dp
    - region
    - name
    - lame
    - tls_auth_name
    - port
    argTypes:
    - struct delegpt*
    - struct regional*
    - uint8_t*
    - uint8_t
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 143
    functionName: delegpt_add_ns
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 3
    functionsReached:
    - regional_strdup
    - dname_count_size_labels
    - regional_alloc
    - delegpt_find_ns
    - log_assert
    - regional_alloc_init
    linkageType: ''
    returnType: int
    signature: "int delegpt_add_ns(struct delegpt* dp, struct regional* region, uint8_t*
      name,\n\tuint8_t lame, char* tls_auth_name, int port)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: query_dname_compare
      Src: /src/unbound/iterator/iter_delegpt.c:151,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - dp
    - name
    - namelen
    argTypes:
    - struct delegpt*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 157
    functionName: delegpt_find_ns
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 4
    functionsReached:
    - query_dname_compare
    linkageType: ''
    returnType: struct delegpt_ns
    signature: 'struct delegpt_ns *

      delegpt_find_ns(struct delegpt* dp, uint8_t* name, size_t namelen)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sockaddr_cmp_addr
      Src: /src/unbound/iterator/iter_delegpt.c:165,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 3
    argNames:
    - dp
    - addr
    - addrlen
    argTypes:
    - struct delegpt*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 159
    functionDepth: 1
    functionLinenumber: 159
    functionLinenumberEnd: 173
    functionName: delegpt_find_addr
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 2
    functionsReached:
    - sockaddr_cmp_addr
    linkageType: ''
    returnType: struct delegpt_addr
    signature: "struct delegpt_addr *\ndelegpt_find_addr(struct delegpt* dp, struct
      sockaddr_storage* addr, \n\tsocklen_t addrlen)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: delegpt_find_ns
      Src: /src/unbound/iterator/iter_delegpt.c:180,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_delegpt.c:181,1
    - Dst: addr_is_ip6
      Src: /src/unbound/iterator/iter_delegpt.c:187,1
    - Dst: addr_is_ip6
      Src: /src/unbound/iterator/iter_delegpt.c:193,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_delegpt.c:197,1
    - Dst: delegpt_add_addr
      Src: /src/unbound/iterator/iter_delegpt.c:198,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 9
    argNames:
    - dp
    - region
    - name
    - namelen
    - addr
    - addrlen
    - bogus
    - lame
    - additions
    argTypes:
    - struct delegpt*
    - struct regional*
    - uint8_t*
    - size_t
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t
    - uint8_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 175
    functionDepth: 2
    functionLinenumber: 175
    functionLinenumberEnd: 200
    functionName: delegpt_add_target
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 0
    functionsReached:
    - delegpt_find_ns
    - log_assert
    - addr_is_ip6
    - delegpt_add_addr
    linkageType: ''
    returnType: int
    signature: "int delegpt_add_target(struct delegpt* dp, struct regional* region,\n\tuint8_t*
      name, size_t namelen, struct sockaddr_storage* addr,\n\tsocklen_t addrlen, uint8_t
      bogus, uint8_t lame, int* additions)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_delegpt.c:208,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_delegpt.c:210,1
    - Dst: sockaddr_store_port
      Src: /src/unbound/iterator/iter_delegpt.c:211,1
    - Dst: delegpt_find_addr
      Src: /src/unbound/iterator/iter_delegpt.c:214,1
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iter_delegpt.c:224,1
    - Dst: memcpy
      Src: /src/unbound/iterator/iter_delegpt.c:229,1
    - Dst: regional_strdup
      Src: /src/unbound/iterator/iter_delegpt.c:236,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 37
    argCount: 9
    argNames:
    - dp
    - region
    - addr
    - addrlen
    - bogus
    - lame
    - tls_auth_name
    - port
    - additions
    argTypes:
    - struct delegpt*
    - struct regional*
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t
    - uint8_t
    - char*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 247
    functionName: delegpt_add_addr
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 3
    functionsReached:
    - memcpy
    - regional_strdup
    - sockaddr_store_port
    - regional_alloc
    - log_assert
    - delegpt_find_addr
    linkageType: ''
    returnType: int
    signature: "int delegpt_add_addr(struct delegpt* dp, struct regional* region,\n\tstruct
      sockaddr_storage* addr, socklen_t addrlen, uint8_t bogus,\n\tuint8_t lame, char*
      tls_auth_name, int port, int* additions)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - dp
    - numns
    - missing
    argTypes:
    - struct delegpt*
    - size_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 249
    functionDepth: 0
    functionLinenumber: 249
    functionLinenumberEnd: 260
    functionName: delegpt_count_ns
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void delegpt_count_ns(struct delegpt* dp, size_t* numns, size_t* missing)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - dp
    - numaddr
    - numres
    - numavail
    argTypes:
    - struct delegpt*
    - size_t*
    - size_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 262
    functionDepth: 0
    functionLinenumber: 262
    functionLinenumberEnd: 279
    functionName: delegpt_count_addr
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void delegpt_count_addr(struct delegpt* dp, size_t* numaddr, size_t*
      numres, \n\tsize_t* numavail)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dname_str
      Src: /src/unbound/iterator/iter_delegpt.c:289,1
    - Dst: log_info
      Src: /src/unbound/iterator/iter_delegpt.c:291,1
    - Dst: delegpt_count_ns
      Src: /src/unbound/iterator/iter_delegpt.c:294,1
    - Dst: delegpt_count_addr
      Src: /src/unbound/iterator/iter_delegpt.c:295,1
    - Dst: log_info
      Src: /src/unbound/iterator/iter_delegpt.c:296,1
    - Dst: dname_str
      Src: /src/unbound/iterator/iter_delegpt.c:303,1
    - Dst: log_info
      Src: /src/unbound/iterator/iter_delegpt.c:304,1
    - Dst: snprintf
      Src: /src/unbound/iterator/iter_delegpt.c:318,1
    - Dst: snprintf
      Src: /src/unbound/iterator/iter_delegpt.c:320,1
    - Dst: log_addr
      Src: /src/unbound/iterator/iter_delegpt.c:321,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 2
    argNames:
    - v
    - dp
    argTypes:
    - enum verbosity_value
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 324
      start: 281
    functionDepth: 2
    functionLinenumber: 281
    functionLinenumberEnd: 324
    functionName: delegpt_log
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 8
    functionsReached:
    - snprintf
    - log_info
    - delegpt_count_addr
    - dname_str
    - delegpt_count_ns
    - log_addr
    linkageType: ''
    returnType: void
    signature: void delegpt_log(enum verbosity_value v, struct delegpt* dp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - dp
    - find
    argTypes:
    - struct delegpt*
    - struct delegpt_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 336
    functionName: delegpt_addr_on_result_list
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int delegpt_addr_on_result_list(struct delegpt* dp, struct delegpt_addr*
      find)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - dp
    - del
    argTypes:
    - struct delegpt*
    - struct delegpt_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 338
    functionDepth: 0
    functionLinenumber: 338
    functionLinenumberEnd: 353
    functionName: delegpt_usable_list_remove_addr
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void delegpt_usable_list_remove_addr(struct delegpt* dp, struct delegpt_addr*
      del)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: delegpt_addr_on_result_list
      Src: /src/unbound/iterator/iter_delegpt.c:358,1
    - Dst: delegpt_usable_list_remove_addr
      Src: /src/unbound/iterator/iter_delegpt.c:360,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - dp
    - a
    argTypes:
    - struct delegpt*
    - struct delegpt_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 363
    functionName: delegpt_add_to_result_list
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 1
    functionsReached:
    - delegpt_usable_list_remove_addr
    - delegpt_addr_on_result_list
    linkageType: ''
    returnType: void
    signature: void delegpt_add_to_result_list(struct delegpt* dp, struct delegpt_addr*
      a)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - dp
    argTypes:
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 365
    functionDepth: 0
    functionLinenumber: 365
    functionLinenumberEnd: 375
    functionName: delegpt_add_unused_targets
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void delegpt_add_unused_targets(struct delegpt* dp)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - dp
    argTypes:
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 377
    functionDepth: 0
    functionLinenumber: 377
    functionLinenumberEnd: 385
    functionName: delegpt_count_targets
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t delegpt_count_targets(struct delegpt* dp)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - dp
    - alllame
    argTypes:
    - struct delegpt*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 399
    functionName: delegpt_count_missing_targets
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t delegpt_count_missing_targets(struct delegpt* dp, int* alllame)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_delegpt.c:407,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_delegpt.c:408,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 4
    argNames:
    - rep
    - from
    - to
    - qclass
    argTypes:
    - struct reply_info*
    - size_t
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 402
    functionDepth: 0
    functionLinenumber: 402
    functionLinenumberEnd: 412
    functionName: find_NS
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 1
    functionsReached:
    - ntohs
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: 'struct ub_packed_rrset_key *

      find_NS(struct reply_info* rep, size_t from, size_t to, uint16_t qclass)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: find_NS
      Src: /src/unbound/iterator/iter_delegpt.c:421,1
    - Dst: find_NS
      Src: /src/unbound/iterator/iter_delegpt.c:428,1
    - Dst: delegpt_create
      Src: /src/unbound/iterator/iter_delegpt.c:438,1
    - Dst: delegpt_set_name
      Src: /src/unbound/iterator/iter_delegpt.c:442,1
    - Dst: delegpt_rrset_add_ns
      Src: /src/unbound/iterator/iter_delegpt.c:444,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_delegpt.c:455,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_delegpt.c:456,1
    - Dst: delegpt_add_rrset_A
      Src: /src/unbound/iterator/iter_delegpt.c:457,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_delegpt.c:459,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_delegpt.c:460,1
    - Dst: delegpt_add_rrset_AAAA
      Src: /src/unbound/iterator/iter_delegpt.c:461,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 27
    argCount: 3
    argNames:
    - msg
    - region
    - port
    argTypes:
    - struct dns_msg*
    - struct regional*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 466
      start: 414
    functionDepth: 2
    functionLinenumber: 414
    functionLinenumberEnd: 466
    functionName: delegpt_from_message
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 3
    functionsReached:
    - delegpt_set_name
    - find_NS
    - delegpt_add_rrset_AAAA
    - delegpt_add_rrset_A
    - delegpt_create
    - delegpt_rrset_add_ns
    - ntohs
    linkageType: ''
    returnType: struct delegpt
    signature: "struct delegpt * \ndelegpt_from_message(struct dns_msg* msg, struct
      regional* region, int port)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_delegpt.c:475,1
    - Dst: dname_valid
      Src: /src/unbound/iterator/iter_delegpt.c:480,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/iterator/iter_delegpt.c:481,1
    - Dst: delegpt_add_ns
      Src: /src/unbound/iterator/iter_delegpt.c:484,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 13
    argCount: 5
    argNames:
    - dp
    - region
    - ns_rrset
    - lame
    - port
    argTypes:
    - struct delegpt*
    - struct regional*
    - struct ub_packed_rrset_key*
    - uint8_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 468
    functionDepth: 2
    functionLinenumber: 468
    functionLinenumberEnd: 489
    functionName: delegpt_rrset_add_ns
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 3
    functionsReached:
    - sldns_read_uint16
    - delegpt_add_ns
    - log_assert
    - dname_valid
    linkageType: ''
    returnType: int
    signature: "int delegpt_rrset_add_ns(struct delegpt* dp, struct regional* region,\n
      \       struct ub_packed_rrset_key* ns_rrset, uint8_t lame, int port)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_delegpt.c:499,1
    - Dst: memset
      Src: /src/unbound/iterator/iter_delegpt.c:500,1
    - Dst: memmove
      Src: /src/unbound/iterator/iter_delegpt.c:505,1
    - Dst: delegpt_add_target
      Src: /src/unbound/iterator/iter_delegpt.c:506,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 5
    argNames:
    - dp
    - region
    - ak
    - lame
    - additions
    argTypes:
    - struct delegpt*
    - struct regional*
    - struct ub_packed_rrset_key*
    - uint8_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 491
    functionDepth: 3
    functionLinenumber: 491
    functionLinenumberEnd: 512
    functionName: delegpt_add_rrset_A
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 4
    functionsReached:
    - memset
    - log_assert
    - delegpt_add_target
    - memmove
    linkageType: ''
    returnType: int
    signature: "int delegpt_add_rrset_A(struct delegpt* dp, struct regional* region,\n\tstruct
      ub_packed_rrset_key* ak, uint8_t lame, int* additions)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_delegpt.c:522,1
    - Dst: memset
      Src: /src/unbound/iterator/iter_delegpt.c:523,1
    - Dst: memmove
      Src: /src/unbound/iterator/iter_delegpt.c:528,1
    - Dst: delegpt_add_target
      Src: /src/unbound/iterator/iter_delegpt.c:529,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 5
    argNames:
    - dp
    - region
    - ak
    - lame
    - additions
    argTypes:
    - struct delegpt*
    - struct regional*
    - struct ub_packed_rrset_key*
    - uint8_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 535
      start: 514
    functionDepth: 3
    functionLinenumber: 514
    functionLinenumberEnd: 535
    functionName: delegpt_add_rrset_AAAA
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 4
    functionsReached:
    - memset
    - log_assert
    - delegpt_add_target
    - memmove
    linkageType: ''
    returnType: int
    signature: "int delegpt_add_rrset_AAAA(struct delegpt* dp, struct regional* region,\n\tstruct
      ub_packed_rrset_key* ak, uint8_t lame, int* additions)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_delegpt.c:543,1
    - Dst: delegpt_rrset_add_ns
      Src: /src/unbound/iterator/iter_delegpt.c:544,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_delegpt.c:545,1
    - Dst: delegpt_add_rrset_A
      Src: /src/unbound/iterator/iter_delegpt.c:546,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_delegpt.c:547,1
    - Dst: delegpt_add_rrset_AAAA
      Src: /src/unbound/iterator/iter_delegpt.c:548,1
    - Dst: log_warn
      Src: /src/unbound/iterator/iter_delegpt.c:550,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 5
    argNames:
    - dp
    - region
    - rrset
    - lame
    - additions
    argTypes:
    - struct delegpt*
    - struct regional*
    - struct ub_packed_rrset_key*
    - uint8_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 537
    functionDepth: 4
    functionLinenumber: 537
    functionLinenumberEnd: 552
    functionName: delegpt_add_rrset
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 1
    functionsReached:
    - delegpt_add_rrset_AAAA
    - log_warn
    - delegpt_add_rrset_A
    - delegpt_rrset_add_ns
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int delegpt_add_rrset(struct delegpt* dp, struct regional* region,\n
      \       struct ub_packed_rrset_key* rrset, uint8_t lame, int* additions)"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - ns
    - qtype
    argTypes:
    - struct delegpt_ns*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 554
    functionDepth: 0
    functionLinenumber: 554
    functionLinenumberEnd: 564
    functionName: delegpt_mark_neg
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void delegpt_mark_neg(struct delegpt_ns* ns, uint16_t qtype)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_delegpt.c:572,1
    - Dst: delegpt_find_ns
      Src: /src/unbound/iterator/iter_delegpt.c:573,1
    - Dst: delegpt_mark_neg
      Src: /src/unbound/iterator/iter_delegpt.c:575,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - dp
    - msg
    argTypes:
    - struct delegpt*
    - struct msgreply_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 577
      start: 566
    functionDepth: 2
    functionLinenumber: 566
    functionLinenumberEnd: 577
    functionName: delegpt_add_neg_msg
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 2
    functionsReached:
    - FLAGS_GET_RCODE
    - delegpt_find_ns
    - delegpt_mark_neg
    linkageType: ''
    returnType: void
    signature: void delegpt_add_neg_msg(struct delegpt* dp, struct msgreply_entry*
      msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - dp
    argTypes:
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 579
    functionDepth: 0
    functionLinenumber: 579
    functionLinenumberEnd: 587
    functionName: delegpt_no_ipv6
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void delegpt_no_ipv6(struct delegpt* dp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - dp
    argTypes:
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 597
      start: 589
    functionDepth: 0
    functionLinenumber: 589
    functionLinenumberEnd: 597
    functionName: delegpt_no_ipv4
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void delegpt_no_ipv4(struct delegpt* dp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/iterator/iter_delegpt.c:601,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/iterator/iter_delegpt.c:606,1
    - Dst: memdup
      Src: /src/unbound/iterator/iter_delegpt.c:607,1
    - Dst: free
      Src: /src/unbound/iterator/iter_delegpt.c:609,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - name
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 599
    functionDepth: 1
    functionLinenumber: 599
    functionLinenumberEnd: 614
    functionName: delegpt_create_mlc
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 5
    functionsReached:
    - free
    - dname_count_size_labels
    - calloc
    - memdup
    linkageType: ''
    returnType: struct delegpt
    signature: struct delegpt * delegpt_create_mlc(uint8_t* name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_delegpt.c:621,1
    - Dst: free
      Src: /src/unbound/iterator/iter_delegpt.c:625,1
    - Dst: free
      Src: /src/unbound/iterator/iter_delegpt.c:626,1
    - Dst: free
      Src: /src/unbound/iterator/iter_delegpt.c:627,1
    - Dst: free
      Src: /src/unbound/iterator/iter_delegpt.c:633,1
    - Dst: free
      Src: /src/unbound/iterator/iter_delegpt.c:634,1
    - Dst: free
      Src: /src/unbound/iterator/iter_delegpt.c:637,1
    - Dst: free
      Src: /src/unbound/iterator/iter_delegpt.c:638,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - dp
    argTypes:
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 639
      start: 616
    functionDepth: 1
    functionLinenumber: 616
    functionLinenumberEnd: 639
    functionName: delegpt_free_mlc
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 11
    functionsReached:
    - free
    - log_assert
    linkageType: ''
    returnType: void
    signature: void delegpt_free_mlc(struct delegpt* dp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_delegpt.c:643,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/iterator/iter_delegpt.c:644,1
    - Dst: memdup
      Src: /src/unbound/iterator/iter_delegpt.c:645,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - dp
    - name
    argTypes:
    - struct delegpt*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 641
    functionDepth: 1
    functionLinenumber: 641
    functionLinenumberEnd: 647
    functionName: delegpt_set_name_mlc
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 1
    functionsReached:
    - dname_count_size_labels
    - memdup
    - log_assert
    linkageType: ''
    returnType: int
    signature: int delegpt_set_name_mlc(struct delegpt* dp, uint8_t* name)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_size_labels
      Src: /src/unbound/iterator/iter_delegpt.c:654,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_delegpt.c:655,1
    - Dst: delegpt_find_ns
      Src: /src/unbound/iterator/iter_delegpt.c:658,1
    - Dst: malloc
      Src: /src/unbound/iterator/iter_delegpt.c:660,1
    - Dst: memdup
      Src: /src/unbound/iterator/iter_delegpt.c:664,1
    - Dst: free
      Src: /src/unbound/iterator/iter_delegpt.c:666,1
    - Dst: strdup
      Src: /src/unbound/iterator/iter_delegpt.c:678,1
    - Dst: free
      Src: /src/unbound/iterator/iter_delegpt.c:680,1
    - Dst: free
      Src: /src/unbound/iterator/iter_delegpt.c:681,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 35
    argCount: 5
    argNames:
    - dp
    - name
    - lame
    - tls_auth_name
    - port
    argTypes:
    - struct delegpt*
    - uint8_t*
    - uint8_t
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 649
    functionDepth: 2
    functionLinenumber: 649
    functionLinenumberEnd: 690
    functionName: delegpt_add_ns_mlc
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 5
    functionsReached:
    - dname_count_size_labels
    - malloc
    - free
    - delegpt_find_ns
    - log_assert
    - memdup
    - strdup
    linkageType: ''
    returnType: int
    signature: "int delegpt_add_ns_mlc(struct delegpt* dp, uint8_t* name, uint8_t
      lame,\n\tchar* tls_auth_name, int port)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_delegpt.c:697,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_delegpt.c:699,1
    - Dst: sockaddr_store_port
      Src: /src/unbound/iterator/iter_delegpt.c:700,1
    - Dst: delegpt_find_addr
      Src: /src/unbound/iterator/iter_delegpt.c:703,1
    - Dst: malloc
      Src: /src/unbound/iterator/iter_delegpt.c:711,1
    - Dst: memcpy
      Src: /src/unbound/iterator/iter_delegpt.c:715,1
    - Dst: strdup
      Src: /src/unbound/iterator/iter_delegpt.c:722,1
    - Dst: free
      Src: /src/unbound/iterator/iter_delegpt.c:724,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 7
    argNames:
    - dp
    - addr
    - addrlen
    - bogus
    - lame
    - tls_auth_name
    - port
    argTypes:
    - struct delegpt*
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t
    - uint8_t
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 735
      start: 692
    functionDepth: 2
    functionLinenumber: 692
    functionLinenumberEnd: 735
    functionName: delegpt_add_addr_mlc
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 3
    functionsReached:
    - memcpy
    - sockaddr_store_port
    - malloc
    - free
    - log_assert
    - delegpt_find_addr
    - strdup
    linkageType: ''
    returnType: int
    signature: "int delegpt_add_addr_mlc(struct delegpt* dp, struct sockaddr_storage*
      addr,\n\tsocklen_t addrlen, uint8_t bogus, uint8_t lame, char* tls_auth_name,\n\tint
      port)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: delegpt_find_ns
      Src: /src/unbound/iterator/iter_delegpt.c:741,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_delegpt.c:742,1
    - Dst: addr_is_ip6
      Src: /src/unbound/iterator/iter_delegpt.c:748,1
    - Dst: addr_is_ip6
      Src: /src/unbound/iterator/iter_delegpt.c:754,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_delegpt.c:758,1
    - Dst: delegpt_add_addr_mlc
      Src: /src/unbound/iterator/iter_delegpt.c:759,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 18
    argCount: 7
    argNames:
    - dp
    - name
    - namelen
    - addr
    - addrlen
    - bogus
    - lame
    argTypes:
    - struct delegpt*
    - uint8_t*
    - size_t
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 737
    functionDepth: 3
    functionLinenumber: 737
    functionLinenumberEnd: 761
    functionName: delegpt_add_target_mlc
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 2
    functionsReached:
    - delegpt_add_addr_mlc
    - delegpt_find_ns
    - log_assert
    - addr_is_ip6
    linkageType: ''
    returnType: int
    signature: "int delegpt_add_target_mlc(struct delegpt* dp, uint8_t* name, size_t
      namelen,\n\tstruct sockaddr_storage* addr, socklen_t addrlen, uint8_t bogus,\n\tuint8_t
      lame)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: delegpt_count_targets
      Src: /src/unbound/iterator/iter_delegpt.c:769,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - dp
    argTypes:
    - struct delegpt*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 773
      start: 763
    functionDepth: 1
    functionLinenumber: 763
    functionLinenumberEnd: 773
    functionName: delegpt_get_mem
    functionSourceFile: /src/unbound/iterator/iter_delegpt.c
    functionUses: 4
    functionsReached:
    - delegpt_count_targets
    linkageType: ''
    returnType: size_t
    signature: size_t delegpt_get_mem(struct delegpt* dp)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dname_pkt_copy
      Src: /src/unbound/iterator/iter_scrub.c:69,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iter_scrub.c:70,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_scrub.c:71,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_scrub.c:83,1
    - Dst: msgparse_bucket_remove
      Src: /src/unbound/iterator/iter_scrub.c:85,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 5
    argNames:
    - str
    - pkt
    - msg
    - prev
    - rrset
    argTypes:
    - char*
    - sldns_buffer*
    - struct msg_parse*
    - struct rrset_parse*
    - struct rrset_parse**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 87
      start: 62
    functionDepth: 1
    functionLinenumber: 62
    functionLinenumberEnd: 87
    functionName: remove_rrset
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 2
    functionsReached:
    - dname_pkt_copy
    - ntohs
    - log_nametypeclass
    - log_assert
    - msgparse_bucket_remove
    linkageType: ''
    returnType: void
    signature: "void remove_rrset(const char* str, sldns_buffer* pkt, struct msg_parse*
      msg, \n\tstruct rrset_parse* prev, struct rrset_parse** rrset)"
  - BBCount: 9
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - t
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 107
    functionName: has_additional
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int has_additional(uint16_t t)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/iterator/iter_scrub.c:136,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/iterator/iter_scrub.c:140,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/iterator/iter_scrub.c:141,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/iterator/iter_scrub.c:141,1
    - Dst: pkt_dname_len
      Src: /src/unbound/iterator/iter_scrub.c:142,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/iterator/iter_scrub.c:143,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 5
    argNames:
    - rrset
    - rr
    - nm
    - nmlen
    - pkt
    argTypes:
    - struct rrset_parse*
    - struct rr_parse*
    - uint8_t**
    - size_t*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 147
    functionName: get_additional_name
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_set_position
    - sldns_buffer_begin
    - sldns_read_uint16
    - pkt_dname_len
    linkageType: ''
    returnType: int
    signature: "int get_additional_name(struct rrset_parse* rrset, struct rr_parse*
      rr, \n\tuint8_t** nm, size_t* nmlen, sldns_buffer* pkt)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: has_additional
      Src: /src/unbound/iterator/iter_scrub.c:159,1
    - Dst: get_additional_name
      Src: /src/unbound/iterator/iter_scrub.c:162,1
    - Dst: pkt_hash_rrset
      Src: /src/unbound/iterator/iter_scrub.c:164,1
    - Dst: msgparse_hashtable_lookup
      Src: /src/unbound/iterator/iter_scrub.c:166,1
    - Dst: pkt_hash_rrset
      Src: /src/unbound/iterator/iter_scrub.c:174,1
    - Dst: msgparse_hashtable_lookup
      Src: /src/unbound/iterator/iter_scrub.c:176,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 3
    argNames:
    - pkt
    - msg
    - rrset
    argTypes:
    - sldns_buffer*
    - struct msg_parse*
    - struct rrset_parse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 150
    functionDepth: 3
    functionLinenumber: 150
    functionLinenumberEnd: 183
    functionName: mark_additional_rrset
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached:
    - pkt_hash_rrset
    - get_additional_name
    - msgparse_hashtable_lookup
    - has_additional
    linkageType: ''
    returnType: void
    signature: "void mark_additional_rrset(sldns_buffer* pkt, struct msg_parse* msg,
      \n\tstruct rrset_parse* rrset)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/iterator/iter_scrub.c:193,1
    - Dst: dname_valid
      Src: /src/unbound/iterator/iter_scrub.c:210,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/iterator/iter_scrub.c:214,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/iterator/iter_scrub.c:215,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/iterator/iter_scrub.c:215,1
    - Dst: pkt_dname_len
      Src: /src/unbound/iterator/iter_scrub.c:216,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/iterator/iter_scrub.c:217,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 27
    argCount: 4
    argNames:
    - rrset
    - sname
    - snamelen
    - pkt
    argTypes:
    - struct rrset_parse*
    - uint8_t**
    - size_t*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 186
    functionDepth: 2
    functionLinenumber: 186
    functionLinenumberEnd: 222
    functionName: parse_get_cname_target
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - verbose
    - sldns_buffer_set_position
    - dname_valid
    - sldns_buffer_begin
    - pkt_dname_len
    linkageType: ''
    returnType: int
    signature: "int parse_get_cname_target(struct rrset_parse* rrset, uint8_t** sname,
      \n\tsize_t* snamelen, sldns_buffer* pkt)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: parse_get_cname_target
      Src: /src/unbound/iterator/iter_scrub.c:232,1
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_scrub.c:238,1
    - Dst: dname_pkt_copy
      Src: /src/unbound/iterator/iter_scrub.c:245,1
    - Dst: dname_pkt_copy
      Src: /src/unbound/iterator/iter_scrub.c:246,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 6
    argNames:
    - qname
    - qnamelen
    - dname_rrset
    - alias
    - aliaslen
    - pkt
    argTypes:
    - uint8_t*
    - size_t
    - struct rrset_parse*
    - uint8_t*
    - size_t*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 225
    functionDepth: 3
    functionLinenumber: 225
    functionLinenumberEnd: 248
    functionName: synth_cname
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 2
    functionsReached:
    - dname_pkt_copy
    - log_assert
    - parse_get_cname_target
    linkageType: ''
    returnType: int
    signature: "int synth_cname(uint8_t* qname, size_t qnamelen, struct rrset_parse*
      dname_rrset, \n\tuint8_t* alias, size_t* aliaslen, sldns_buffer* pkt)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iter_scrub.c:257,1
    - Dst: memset
      Src: /src/unbound/iterator/iter_scrub.c:261,1
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iter_scrub.c:262,1
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iter_scrub.c:268,1
    - Dst: dname_pkt_copy
      Src: /src/unbound/iterator/iter_scrub.c:271,1
    - Dst: pkt_hash_rrset
      Src: /src/unbound/iterator/iter_scrub.c:278,1
    - Dst: memset
      Src: /src/unbound/iterator/iter_scrub.c:280,1
    - Dst: regional_alloc
      Src: /src/unbound/iterator/iter_scrub.c:282,1
    - Dst: memmove
      Src: /src/unbound/iterator/iter_scrub.c:286,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/iterator/iter_scrub.c:291,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/iterator/iter_scrub.c:296,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/iterator/iter_scrub.c:297,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/iterator/iter_scrub.c:299,1
    - Dst: memmove
      Src: /src/unbound/iterator/iter_scrub.c:300,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 48
    argCount: 10
    argNames:
    - sname
    - snamelen
    - alias
    - aliaslen
    - region
    - msg
    - rrset
    - prev
    - nx
    - pkt
    argTypes:
    - uint8_t**
    - size_t*
    - uint8_t*
    - size_t
    - struct regional*
    - struct msg_parse*
    - struct rrset_parse*
    - struct rrset_parse*
    - struct rrset_parse*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 317
    functionName: synth_cname_rrset
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached:
    - dname_pkt_copy
    - memmove
    - pkt_hash_rrset
    - sldns_write_uint16
    - regional_alloc
    - sldns_write_uint32
    - memset
    - sldns_read_uint32
    linkageType: ''
    returnType: struct rrset_parse
    signature: "struct rrset_parse *\nsynth_cname_rrset(uint8_t** sname, size_t* snamelen,
      uint8_t* alias, \n\tsize_t aliaslen, struct regional* region, struct msg_parse*
      msg, \n\tstruct rrset_parse* rrset, struct rrset_parse* prev,\n\tstruct rrset_parse*
      nx, sldns_buffer* pkt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct msg_parse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 331
    functionName: pkt_contains_ns
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int pkt_contains_ns(struct msg_parse* msg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_pkt_copy
      Src: /src/unbound/iterator/iter_scrub.c:340,1
    - Dst: dname_pkt_copy
      Src: /src/unbound/iterator/iter_scrub.c:341,1
    - Dst: dname_strict_subdomain_c
      Src: /src/unbound/iterator/iter_scrub.c:342,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - pkt
    - sname
    - dr
    argTypes:
    - sldns_buffer*
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 334
    functionDepth: 1
    functionLinenumber: 334
    functionLinenumberEnd: 343
    functionName: pkt_strict_sub
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached:
    - dname_pkt_copy
    - dname_strict_subdomain_c
    linkageType: ''
    returnType: int
    signature: int pkt_strict_sub(sldns_buffer* pkt, uint8_t* sname, uint8_t* dr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_pkt_copy
      Src: /src/unbound/iterator/iter_scrub.c:350,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iter_scrub.c:351,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - pkt
    - comprname
    - zone
    argTypes:
    - sldns_buffer*
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 352
    functionName: pkt_sub
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached:
    - dname_pkt_copy
    - dname_subdomain_c
    linkageType: ''
    returnType: int
    signature: int pkt_sub(sldns_buffer* pkt, uint8_t* comprname, uint8_t* zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_pkt_copy
      Src: /src/unbound/iterator/iter_scrub.c:359,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/iterator/iter_scrub.c:360,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - pkt
    - zone
    - comprname
    argTypes:
    - sldns_buffer*
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 355
    functionDepth: 1
    functionLinenumber: 355
    functionLinenumberEnd: 361
    functionName: sub_of_pkt
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached:
    - dname_pkt_copy
    - dname_subdomain_c
    linkageType: ''
    returnType: int
    signature: int sub_of_pkt(sldns_buffer* pkt, uint8_t* zone, uint8_t* comprname)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct msg_parse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 364
    functionDepth: 0
    functionLinenumber: 364
    functionLinenumberEnd: 373
    functionName: soa_in_auth
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int soa_in_auth(struct msg_parse* msg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 4
    argCount: 1
    argNames:
    - tp
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 376
    functionDepth: 0
    functionLinenumber: 376
    functionLinenumberEnd: 384
    functionName: type_allowed_in_authority_section
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int type_allowed_in_authority_section(uint16_t tp)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - tp
    argTypes:
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 393
    functionName: type_allowed_in_additional_section
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int type_allowed_in_additional_section(uint16_t tp)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dname_pkt_copy
      Src: /src/unbound/iterator/iter_scrub.c:422,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iter_scrub.c:423,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_scrub.c:424,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 3
    argNames:
    - pkt
    - rrset
    - count
    argTypes:
    - sldns_buffer*
    - struct rrset_parse*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 436
    functionName: shorten_rrset
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached:
    - dname_pkt_copy
    - log_nametypeclass
    - ntohs
    linkageType: ''
    returnType: void
    signature: void shorten_rrset(sldns_buffer* pkt, struct rrset_parse* rrset, int
      count)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dname_pkt_copy
      Src: /src/unbound/iterator/iter_scrub.c:459,1
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iter_scrub.c:460,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_scrub.c:461,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - pkt
    - rrset
    - count
    argTypes:
    - sldns_buffer*
    - struct rrset_parse*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 473
      start: 439
    functionDepth: 1
    functionLinenumber: 439
    functionLinenumberEnd: 473
    functionName: shorten_rrsig
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached:
    - dname_pkt_copy
    - log_nametypeclass
    - ntohs
    linkageType: ''
    returnType: void
    signature: void shorten_rrsig(sldns_buffer* pkt, struct rrset_parse* rrset, int
      count)
  - BBCount: 46
    BranchProfiles: []
    Callsites:
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_scrub.c:499,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_scrub.c:500,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_scrub.c:501,1
    - Dst: shorten_rrsig
      Src: /src/unbound/iterator/iter_scrub.c:514,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:521,1
    - Dst: pkt_strict_sub
      Src: /src/unbound/iterator/iter_scrub.c:526,1
    - Dst: pkt_sub
      Src: /src/unbound/iterator/iter_scrub.c:527,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_scrub.c:534,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:540,1
    - Dst: synth_cname
      Src: /src/unbound/iterator/iter_scrub.c:544,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_scrub.c:546,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_scrub.c:548,1
    - Dst: dname_pkt_compare
      Src: /src/unbound/iterator/iter_scrub.c:557,1
    - Dst: parse_get_cname_target
      Src: /src/unbound/iterator/iter_scrub.c:561,1
    - Dst: dname_pkt_compare
      Src: /src/unbound/iterator/iter_scrub.c:563,1
    - Dst: synth_cname_rrset
      Src: /src/unbound/iterator/iter_scrub.c:572,1
    - Dst: log_err
      Src: /src/unbound/iterator/iter_scrub.c:575,1
    - Dst: dname_pkt_compare
      Src: /src/unbound/iterator/iter_scrub.c:584,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:585,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:595,1
    - Dst: pkt_strict_sub
      Src: /src/unbound/iterator/iter_scrub.c:604,1
    - Dst: pkt_sub
      Src: /src/unbound/iterator/iter_scrub.c:605,1
    - Dst: synth_cname
      Src: /src/unbound/iterator/iter_scrub.c:615,1
    - Dst: parse_get_cname_target
      Src: /src/unbound/iterator/iter_scrub.c:617,1
    - Dst: dname_pkt_compare
      Src: /src/unbound/iterator/iter_scrub.c:618,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_scrub.c:623,1
    - Dst: parse_get_cname_target
      Src: /src/unbound/iterator/iter_scrub.c:638,1
    - Dst: dname_pkt_compare
      Src: /src/unbound/iterator/iter_scrub.c:646,1
    - Dst: shorten_rrset
      Src: /src/unbound/iterator/iter_scrub.c:650,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:662,1
    - Dst: shorten_rrset
      Src: /src/unbound/iterator/iter_scrub.c:669,1
    - Dst: dname_pkt_compare
      Src: /src/unbound/iterator/iter_scrub.c:675,1
    - Dst: mark_additional_rrset
      Src: /src/unbound/iterator/iter_scrub.c:676,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:690,1
    - Dst: type_allowed_in_authority_section
      Src: /src/unbound/iterator/iter_scrub.c:696,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:697,1
    - Dst: shorten_rrsig
      Src: /src/unbound/iterator/iter_scrub.c:702,1
    - Dst: sub_of_pkt
      Src: /src/unbound/iterator/iter_scrub.c:706,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:707,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_scrub.c:717,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_scrub.c:718,1
    - Dst: soa_in_auth
      Src: /src/unbound/iterator/iter_scrub.c:719,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:720,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_scrub.c:733,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:736,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_scrub.c:741,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:743,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_scrub.c:754,1
    - Dst: dname_pkt_compare
      Src: /src/unbound/iterator/iter_scrub.c:756,1
    - Dst: soa_in_auth
      Src: /src/unbound/iterator/iter_scrub.c:757,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:759,1
    - Dst: ntohs
      Src: /src/unbound/iterator/iter_scrub.c:763,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:764,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:771,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_scrub.c:782,1
    - Dst: soa_in_auth
      Src: /src/unbound/iterator/iter_scrub.c:784,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:787,1
    - Dst: shorten_rrset
      Src: /src/unbound/iterator/iter_scrub.c:791,1
    - Dst: dname_pkt_compare
      Src: /src/unbound/iterator/iter_scrub.c:799,1
    - Dst: mark_additional_rrset
      Src: /src/unbound/iterator/iter_scrub.c:819,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:836,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:845,1
    - Dst: type_allowed_in_additional_section
      Src: /src/unbound/iterator/iter_scrub.c:851,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:852,1
    - Dst: shorten_rrsig
      Src: /src/unbound/iterator/iter_scrub.c:857,1
    CyclomaticComplexity: 116
    EdgeCount: 116
    ICount: 191
    argCount: 6
    argNames:
    - pkt
    - msg
    - qinfo
    - region
    - env
    - zonename
    argTypes:
    - sldns_buffer*
    - struct msg_parse*
    - struct query_info*
    - struct regional*
    - struct module_env*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 488
    functionDepth: 4
    functionLinenumber: 488
    functionLinenumberEnd: 863
    functionName: scrub_normalize
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached:
    - pkt_strict_sub
    - FLAGS_GET_RCODE
    - log_err
    - synth_cname
    - parse_get_cname_target
    - pkt_sub
    - verbose
    - synth_cname_rrset
    - type_allowed_in_authority_section
    - mark_additional_rrset
    - shorten_rrset
    - shorten_rrsig
    - remove_rrset
    - type_allowed_in_additional_section
    - soa_in_auth
    - sub_of_pkt
    - dname_pkt_compare
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int scrub_normalize(sldns_buffer* pkt, struct msg_parse* msg, \n\tstruct
      query_info* qinfo, struct regional* region,\n\tstruct module_env* env, uint8_t*
      zonename)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: alloc_special_obtain
      Src: /src/unbound/iterator/iter_scrub.c:884,1
    - Dst: parse_copy_decompress_rrset
      Src: /src/unbound/iterator/iter_scrub.c:888,1
    - Dst: alloc_special_release
      Src: /src/unbound/iterator/iter_scrub.c:889,1
    - Dst: packed_rrset_ttl_add
      Src: /src/unbound/iterator/iter_scrub.c:893,1
    - Dst: rrset_cache_update
      Src: /src/unbound/iterator/iter_scrub.c:897,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 4
    argNames:
    - pkt
    - msg
    - env
    - rrset
    argTypes:
    - sldns_buffer*
    - struct msg_parse*
    - struct module_env*
    - struct rrset_parse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 898
      start: 875
    functionDepth: 3
    functionLinenumber: 875
    functionLinenumberEnd: 898
    functionName: store_rrset
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached:
    - rrset_cache_update
    - packed_rrset_ttl_add
    - parse_copy_decompress_rrset
    - alloc_special_release
    - alloc_special_obtain
    linkageType: ''
    returnType: void
    signature: "void store_rrset(sldns_buffer* pkt, struct msg_parse* msg, struct
      module_env* env,\n\tstruct rrset_parse* rrset)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/iterator/iter_scrub.c:913,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/iterator/iter_scrub.c:915,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/iterator/iter_scrub.c:918,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/iterator/iter_scrub.c:919,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/iterator/iter_scrub.c:920,1
    - Dst: pkt_dname_len
      Src: /src/unbound/iterator/iter_scrub.c:921,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/iterator/iter_scrub.c:923,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/iterator/iter_scrub.c:926,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/iterator/iter_scrub.c:928,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/iterator/iter_scrub.c:931,1
    - Dst: pkt_sub
      Src: /src/unbound/iterator/iter_scrub.c:932,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - pkt
    - rrset
    - zonename
    argTypes:
    - sldns_buffer*
    - struct rrset_parse*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 939
      start: 907
    functionDepth: 2
    functionLinenumber: 907
    functionLinenumberEnd: 939
    functionName: sanitize_nsec_is_overreach
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - pkt_sub
    - sldns_buffer_set_position
    - log_assert
    - sldns_buffer_begin
    - sldns_read_uint16
    - pkt_dname_len
    linkageType: ''
    returnType: int
    signature: "int sanitize_nsec_is_overreach(sldns_buffer* pkt,\n\tstruct rrset_parse*
      rrset, uint8_t* zonename)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: errinf_ede
      Src: /src/unbound/iterator/iter_scrub.c:957,1
    - Dst: msgparse_rrset_remove_rr
      Src: /src/unbound/iterator/iter_scrub.c:960,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:962,1
    - Dst: errinf_ede
      Src: /src/unbound/iterator/iter_scrub.c:975,1
    - Dst: msgparse_rrset_remove_rr
      Src: /src/unbound/iterator/iter_scrub.c:978,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:980,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 6
    argNames:
    - pkt
    - msg
    - prev
    - rrset
    - added_ede
    - qstate
    argTypes:
    - sldns_buffer*
    - struct msg_parse*
    - struct rrset_parse*
    - struct rrset_parse**
    - int*
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 989
      start: 943
    functionDepth: 2
    functionLinenumber: 943
    functionLinenumberEnd: 989
    functionName: scrub_sanitize_rr_length
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached:
    - remove_rrset
    - msgparse_rrset_remove_rr
    - errinf_ede
    linkageType: ''
    returnType: int
    signature: "int scrub_sanitize_rr_length(sldns_buffer* pkt, struct msg_parse*
      msg,\n\tstruct rrset_parse* prev, struct rrset_parse** rrset, int* added_ede,\n\tstruct
      module_qstate* qstate)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: pkt_strict_sub
      Src: /src/unbound/iterator/iter_scrub.c:1035,1
    - Dst: pkt_sub
      Src: /src/unbound/iterator/iter_scrub.c:1036,1
    - Dst: pkt_strict_sub
      Src: /src/unbound/iterator/iter_scrub.c:1051,1
    - Dst: pkt_sub
      Src: /src/unbound/iterator/iter_scrub.c:1052,1
    - Dst: dname_pkt_compare
      Src: /src/unbound/iterator/iter_scrub.c:1059,1
    - Dst: has_additional
      Src: /src/unbound/iterator/iter_scrub.c:1060,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:1061,1
    - Dst: dname_pkt_compare
      Src: /src/unbound/iterator/iter_scrub.c:1068,1
    - Dst: parse_get_cname_target
      Src: /src/unbound/iterator/iter_scrub.c:1072,1
    - Dst: scrub_sanitize_rr_length
      Src: /src/unbound/iterator/iter_scrub.c:1094,1
    - Dst: priv_rrset_bad
      Src: /src/unbound/iterator/iter_scrub.c:1109,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:1110,1
    - Dst: pkt_sub
      Src: /src/unbound/iterator/iter_scrub.c:1122,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_scrub.c:1126,1
    - Dst: soa_in_auth
      Src: /src/unbound/iterator/iter_scrub.c:1127,1
    - Dst: sub_of_pkt
      Src: /src/unbound/iterator/iter_scrub.c:1128,1
    - Dst: store_rrset
      Src: /src/unbound/iterator/iter_scrub.c:1142,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:1143,1
    - Dst: has_additional
      Src: /src/unbound/iterator/iter_scrub.c:1147,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:1148,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:1164,1
    - Dst: sanitize_nsec_is_overreach
      Src: /src/unbound/iterator/iter_scrub.c:1170,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:1171,1
    - Dst: pkt_strict_sub
      Src: /src/unbound/iterator/iter_scrub.c:1178,1
    - Dst: pkt_hash_rrset
      Src: /src/unbound/iterator/iter_scrub.c:1189,1
    - Dst: store_rrset
      Src: /src/unbound/iterator/iter_scrub.c:1190,1
    - Dst: remove_rrset
      Src: /src/unbound/iterator/iter_scrub.c:1191,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_scrub.c:1203,1
    - Dst: verbose
      Src: /src/unbound/iterator/iter_scrub.c:1210,1
    CyclomaticComplexity: 67
    EdgeCount: 67
    ICount: 84
    argCount: 11
    argNames:
    - pkt
    - msg
    - qinfo
    - zonename
    - env
    - ie
    - qstate
    - pkt_before_NS
    - msg_lame_empty
    - msg_lame_referral
    - rdset
    argTypes:
    - sldns_buffer*
    - struct msg_parse*
    - struct query_info*
    - uint8_t*
    - struct module_env*
    - struct iter_env*
    - struct module_qstate*
    - int
    - int*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1214
      start: 1012
    functionDepth: 6
    functionLinenumber: 1012
    functionLinenumberEnd: 1214
    functionName: scrub_sanitize
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 0
    functionsReached:
    - pkt_strict_sub
    - FLAGS_GET_RCODE
    - parse_get_cname_target
    - pkt_sub
    - pkt_hash_rrset
    - sanitize_nsec_is_overreach
    - verbose
    - has_additional
    - scrub_sanitize_rr_length
    - remove_rrset
    - priv_rrset_bad
    - soa_in_auth
    - store_rrset
    - sub_of_pkt
    - dname_pkt_compare
    linkageType: ''
    returnType: int
    signature: "int scrub_sanitize(sldns_buffer* pkt, struct msg_parse* msg, \n\tstruct
      query_info* qinfo, uint8_t* zonename, struct module_env* env,\n\tstruct iter_env*
      ie, struct module_qstate* qstate,\n\tint pkt_before_NS, int* msg_lame_empty,
      int* msg_lame_referral,\n\tint rdset)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: log_nametypeclass
      Src: /src/unbound/iterator/iter_scrub.c:1225,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_scrub.c:1238,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_scrub.c:1239,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/iterator/iter_scrub.c:1240,1
    - Dst: dname_pkt_compare
      Src: /src/unbound/iterator/iter_scrub.c:1247,1
    - Dst: pkt_contains_ns
      Src: /src/unbound/iterator/iter_scrub.c:1260,1
    - Dst: soa_in_auth
      Src: /src/unbound/iterator/iter_scrub.c:1260,1
    - Dst: scrub_normalize
      Src: /src/unbound/iterator/iter_scrub.c:1263,1
    - Dst: scrub_sanitize
      Src: /src/unbound/iterator/iter_scrub.c:1266,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 23
    argCount: 11
    argNames:
    - pkt
    - msg
    - qinfo
    - zonename
    - region
    - env
    - qstate
    - ie
    - msg_lame_empty
    - msg_lame_referral
    - rdset
    argTypes:
    - sldns_buffer*
    - struct msg_parse*
    - struct query_info*
    - uint8_t*
    - struct regional*
    - struct module_env*
    - struct module_qstate*
    - struct iter_env*
    - int*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1270
      start: 1216
    functionDepth: 7
    functionLinenumber: 1216
    functionLinenumberEnd: 1270
    functionName: scrub_message
    functionSourceFile: /src/unbound/iterator/iter_scrub.c
    functionUses: 3
    functionsReached:
    - FLAGS_GET_RCODE
    - scrub_normalize
    - log_nametypeclass
    - soa_in_auth
    - pkt_contains_ns
    - dname_pkt_compare
    - scrub_sanitize
    linkageType: ''
    returnType: int
    signature: "int scrub_message(sldns_buffer* pkt, struct msg_parse* msg, \n\tstruct
      query_info* qinfo, uint8_t* zonename, struct regional* region,\n\tstruct module_env*
      env, struct module_qstate* qstate,\n\tstruct iter_env* ie, int* msg_lame_empty,
      int* msg_lame_referral,\n\tint rdset)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:60,1
    - Dst: regional_create
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:64,1
    - Dst: ecs_whitelist_delete
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:66,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 70
    functionName: ecs_whitelist_create
    functionSourceFile: /src/unbound/edns-subnet/subnet-whitelist.c
    functionUses: 0
    functionsReached:
    - regional_create
    - calloc
    - ecs_whitelist_delete
    linkageType: ''
    returnType: struct ecs_whitelist
    signature: "struct ecs_whitelist * \necs_whitelist_create(void)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_destroy
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:77,1
    - Dst: free
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - whitelist
    argTypes:
    - struct ecs_whitelist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 79
    functionName: ecs_whitelist_delete
    functionSourceFile: /src/unbound/edns-subnet/subnet-whitelist.c
    functionUses: 1
    functionsReached:
    - free
    - regional_destroy
    linkageType: ''
    returnType: void
    signature: void ecs_whitelist_delete(struct ecs_whitelist* whitelist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:86,1
    - Dst: addr_tree_insert
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:90,1
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:91,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - whitelist
    - addr
    - addrlen
    - net
    argTypes:
    - struct ecs_whitelist*
    - struct sockaddr_storage*
    - socklen_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 95
    functionName: upstream_insert
    functionSourceFile: /src/unbound/edns-subnet/subnet-whitelist.c
    functionUses: 0
    functionsReached:
    - verbose
    - regional_alloc
    - addr_tree_insert
    linkageType: ''
    returnType: int
    signature: "int upstream_insert(struct ecs_whitelist* whitelist, \n\tstruct sockaddr_storage*
      addr, socklen_t addrlen, int net)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:104,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:105,1
    - Dst: log_err
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:106,1
    - Dst: upstream_insert
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:109,1
    - Dst: log_err
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:110,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - whitelist
    - str
    argTypes:
    - struct ecs_whitelist*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 98
    functionDepth: 2
    functionLinenumber: 98
    functionLinenumberEnd: 114
    functionName: upstream_str_cfg
    functionSourceFile: /src/unbound/edns-subnet/subnet-whitelist.c
    functionUses: 0
    functionsReached:
    - verbose
    - netblockstrtoaddr
    - upstream_insert
    - log_err
    linkageType: ''
    returnType: int
    signature: int upstream_str_cfg(struct ecs_whitelist* whitelist, const char* str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:122,1
    - Dst: upstream_str_cfg
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:123,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - whitelist
    - cfg
    argTypes:
    - struct ecs_whitelist*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 117
    functionDepth: 3
    functionLinenumber: 117
    functionLinenumberEnd: 127
    functionName: read_upstream
    functionSourceFile: /src/unbound/edns-subnet/subnet-whitelist.c
    functionUses: 0
    functionsReached:
    - log_assert
    - upstream_str_cfg
    linkageType: ''
    returnType: int
    signature: int read_upstream(struct ecs_whitelist* whitelist, struct config_file*
      cfg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:141,1
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:142,1
    - Dst: log_err
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:144,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:147,1
    - Dst: regional_alloc_init
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:148,1
    - Dst: free
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:150,1
    - Dst: log_err
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:152,1
    - Dst: regional_alloc
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:155,1
    - Dst: log_err
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:158,1
    - Dst: name_tree_insert
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:161,1
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:163,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 2
    argNames:
    - whitelist
    - cfg
    argTypes:
    - struct ecs_whitelist*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 130
    functionDepth: 4
    functionLinenumber: 130
    functionLinenumberEnd: 168
    functionName: read_names
    functionSourceFile: /src/unbound/edns-subnet/subnet-whitelist.c
    functionUses: 1
    functionsReached:
    - log_err
    - verbose
    - dname_count_size_labels
    - regional_alloc
    - free
    - sldns_str2wire_dname
    - log_assert
    - name_tree_insert
    - regional_alloc_init
    linkageType: ''
    returnType: int
    signature: int read_names(struct ecs_whitelist* whitelist, struct config_file*
      cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_free_all
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:174,1
    - Dst: addr_tree_init
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:175,1
    - Dst: name_tree_init
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:176,1
    - Dst: read_upstream
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:177,1
    - Dst: read_names
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:179,1
    - Dst: addr_tree_init_parents
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:181,1
    - Dst: name_tree_init_parents
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - whitelist
    - cfg
    argTypes:
    - struct ecs_whitelist*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 170
    functionDepth: 4
    functionLinenumber: 170
    functionLinenumberEnd: 184
    functionName: ecs_whitelist_apply_cfg
    functionSourceFile: /src/unbound/edns-subnet/subnet-whitelist.c
    functionUses: 0
    functionsReached:
    - name_tree_init
    - addr_tree_init_parents
    - addr_tree_init
    - read_names
    - name_tree_init_parents
    - read_upstream
    - regional_free_all
    linkageType: ''
    returnType: int
    signature: "int ecs_whitelist_apply_cfg(struct ecs_whitelist* whitelist,\n\tstruct
      config_file* cfg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: addr_tree_lookup
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:192,1
    - Dst: dname_count_labels
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:195,1
    - Dst: name_tree_lookup
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:196,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - whitelist
    - addr
    - addrlen
    - qname
    - qname_len
    - qclass
    argTypes:
    - struct ecs_whitelist*
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 198
    functionName: ecs_is_whitelisted
    functionSourceFile: /src/unbound/edns-subnet/subnet-whitelist.c
    functionUses: 0
    functionsReached:
    - name_tree_lookup
    - dname_count_labels
    - addr_tree_lookup
    linkageType: ''
    returnType: int
    signature: "int ecs_is_whitelisted(struct ecs_whitelist* whitelist,\n\tstruct
      sockaddr_storage* addr, socklen_t addrlen, uint8_t* qname,\n\tsize_t qname_len,
      uint16_t qclass)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_get_mem
      Src: /src/unbound/edns-subnet/subnet-whitelist.c:204,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - whitelist
    argTypes:
    - struct ecs_whitelist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 205
    functionName: ecs_whitelist_get_mem
    functionSourceFile: /src/unbound/edns-subnet/subnet-whitelist.c
    functionUses: 0
    functionsReached:
    - regional_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t ecs_whitelist_get_mem(struct ecs_whitelist* whitelist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/edns-subnet/addrtree.c:59,1
    - Dst: calloc
      Src: /src/unbound/edns-subnet/addrtree.c:68,1
    - Dst: free
      Src: /src/unbound/edns-subnet/addrtree.c:70,1
    - Dst: memcpy
      Src: /src/unbound/edns-subnet/addrtree.c:73,1
    - Dst: log_assert
      Src: /src/unbound/edns-subnet/addrtree.c:76,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 5
    argNames:
    - node
    - addr
    - addrlen
    - parent_node
    - parent_index
    argTypes:
    - struct addrnode*
    - addrkey_t*
    - addrlen_t
    - struct addrnode*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 79
    functionName: edge_create
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached:
    - memcpy
    - malloc
    - free
    - calloc
    - log_assert
    linkageType: ''
    returnType: struct addredge
    signature: "struct addredge * \nedge_create(struct addrnode *node, const addrkey_t
      *addr, \n\taddrlen_t addrlen, struct addrnode *parent_node, int parent_index)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/edns-subnet/addrtree.c:93,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 4
    argNames:
    - tree
    - elem
    - scope
    - ttl
    argTypes:
    - struct addrtree*
    - void*
    - addrlen_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 89
    functionDepth: 1
    functionLinenumber: 89
    functionLinenumberEnd: 107
    functionName: node_create
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached:
    - malloc
    linkageType: ''
    returnType: struct addrnode
    signature: "struct addrnode * \nnode_create(struct addrtree *tree, void *elem,
      addrlen_t scope, \n\ttime_t ttl)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: struct addrtree*::sizefunc
      Src: /src/unbound/edns-subnet/addrtree.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tree
    - n
    argTypes:
    - struct addrtree*
    - struct addrnode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 114
    functionDepth: 1
    functionLinenumber: 114
    functionLinenumberEnd: 119
    functionName: node_size
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached:
    - struct addrtree*::sizefunc
    linkageType: ''
    returnType: size_t
    signature: size_t node_size(const struct addrtree *tree, const struct addrnode
      *n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/edns-subnet/addrtree.c:126,1
    - Dst: log_assert
      Src: /src/unbound/edns-subnet/addrtree.c:127,1
    - Dst: calloc
      Src: /src/unbound/edns-subnet/addrtree.c:128,1
    - Dst: node_create
      Src: /src/unbound/edns-subnet/addrtree.c:131,1
    - Dst: free
      Src: /src/unbound/edns-subnet/addrtree.c:133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 3
    argNames:
    - max_depth
    - env
    - max_node_count
    argTypes:
    - addrlen_t
    - void*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 121
    functionDepth: 2
    functionLinenumber: 121
    functionLinenumberEnd: 146
    functionName: addrtree_create
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached:
    - free
    - calloc
    - log_assert
    - node_create
    linkageType: ''
    returnType: struct addrtree
    signature: "struct addrtree * \naddrtree_create(addrlen_t max_depth, void (*delfunc)(void
      *, void *), \n\tsize_t (*sizefunc)(void *), void *env, uint32_t max_node_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: struct addrtree*::sizefunc
      Src: /src/unbound/edns-subnet/addrtree.c:157,1
    - Dst: struct addrtree*::delfunc
      Src: /src/unbound/edns-subnet/addrtree.c:158,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - tree
    - node
    argTypes:
    - struct addrtree*
    - struct addrnode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 161
    functionName: clean_node
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached:
    - struct addrtree*::delfunc
    - struct addrtree*::sizefunc
    linkageType: ''
    returnType: void
    signature: void clean_node(struct addrtree *tree, struct addrnode *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - tree
    - node
    argTypes:
    - struct addrtree*
    - struct addrnode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 164
    functionDepth: 0
    functionLinenumber: 164
    functionLinenumberEnd: 182
    functionName: lru_pop
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lru_pop(struct addrtree *tree, struct addrnode *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - tree
    - node
    argTypes:
    - struct addrtree*
    - struct addrnode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 197
    functionName: lru_push
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lru_push(struct addrtree *tree, struct addrnode *node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lru_pop
      Src: /src/unbound/edns-subnet/addrtree.c:204,1
    - Dst: lru_push
      Src: /src/unbound/edns-subnet/addrtree.c:205,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - tree
    - node
    argTypes:
    - struct addrtree*
    - struct addrnode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 206
    functionName: lru_update
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached:
    - lru_pop
    - lru_push
    linkageType: ''
    returnType: void
    signature: void lru_update(struct addrtree *tree, struct addrnode *node)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: clean_node
      Src: /src/unbound/edns-subnet/addrtree.c:221,1
    - Dst: node_size
      Src: /src/unbound/edns-subnet/addrtree.c:232,1
    - Dst: free
      Src: /src/unbound/edns-subnet/addrtree.c:233,1
    - Dst: free
      Src: /src/unbound/edns-subnet/addrtree.c:234,1
    - Dst: lru_pop
      Src: /src/unbound/edns-subnet/addrtree.c:235,1
    - Dst: free
      Src: /src/unbound/edns-subnet/addrtree.c:236,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - tree
    - node
    argTypes:
    - struct addrtree*
    - struct addrnode*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 237
    functionName: purge_node
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached:
    - clean_node
    - node_size
    - lru_pop
    - free
    linkageType: ''
    returnType: void
    signature: void purge_node(struct addrtree *tree, struct addrnode *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lru_update
      Src: /src/unbound/edns-subnet/addrtree.c:256,1
    - Dst: purge_node
      Src: /src/unbound/edns-subnet/addrtree.c:260,1
    - Dst: purge_node
      Src: /src/unbound/edns-subnet/addrtree.c:266,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 1
    argNames:
    - tree
    argTypes:
    - struct addrtree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 243
    functionDepth: 3
    functionLinenumber: 243
    functionLinenumberEnd: 269
    functionName: lru_cleanup
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached:
    - lru_update
    - purge_node
    linkageType: ''
    returnType: void
    signature: void lru_cleanup(struct addrtree *tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tree
    argTypes:
    - struct addrtree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 275
    functionName: addrtree_size
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t addrtree_size(const struct addrtree *tree)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: clean_node
      Src: /src/unbound/edns-subnet/addrtree.c:281,1
    - Dst: free
      Src: /src/unbound/edns-subnet/addrtree.c:282,1
    - Dst: clean_node
      Src: /src/unbound/edns-subnet/addrtree.c:286,1
    - Dst: node_size
      Src: /src/unbound/edns-subnet/addrtree.c:287,1
    - Dst: free
      Src: /src/unbound/edns-subnet/addrtree.c:288,1
    - Dst: free
      Src: /src/unbound/edns-subnet/addrtree.c:289,1
    - Dst: free
      Src: /src/unbound/edns-subnet/addrtree.c:290,1
    - Dst: log_assert
      Src: /src/unbound/edns-subnet/addrtree.c:292,1
    - Dst: addrtree_size
      Src: /src/unbound/edns-subnet/addrtree.c:292,1
    - Dst: free
      Src: /src/unbound/edns-subnet/addrtree.c:293,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - tree
    argTypes:
    - struct addrtree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 277
    functionDepth: 2
    functionLinenumber: 277
    functionLinenumberEnd: 294
    functionName: addrtree_delete
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached:
    - node_size
    - free
    - addrtree_size
    - log_assert
    - clean_node
    linkageType: ''
    returnType: void
    signature: void addrtree_delete(struct addrtree *tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/edns-subnet/addrtree.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - addr
    - addrlen
    - n
    argTypes:
    - addrkey_t*
    - addrlen_t
    - addrlen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 303
    functionDepth: 1
    functionLinenumber: 303
    functionLinenumberEnd: 309
    functionName: getbit
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int getbit(const addrkey_t *addr, addrlen_t addrlen, addrlen_t n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - key1
    - key2
    - n
    argTypes:
    - addrkey_t*
    - addrkey_t*
    - addrlen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 320
    functionName: cmpbit
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int cmpbit(const addrkey_t *key1, const addrkey_t *key2, addrlen_t
      n)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/edns-subnet/addrtree.c:337,1
    - Dst: cmpbit
      Src: /src/unbound/edns-subnet/addrtree.c:339,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 5
    argNames:
    - s1
    - l1
    - s2
    - l2
    - skip
    argTypes:
    - addrkey_t*
    - addrlen_t
    - addrkey_t*
    - addrlen_t
    - addrlen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 331
    functionDepth: 1
    functionLinenumber: 331
    functionLinenumberEnd: 342
    functionName: bits_common
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached:
    - log_assert
    - cmpbit
    linkageType: ''
    returnType: addrlen_t
    signature: "addrlen_t bits_common(const addrkey_t *s1, addrlen_t l1, \n\tconst
      addrkey_t *s2, addrlen_t l2, addrlen_t skip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bits_common
      Src: /src/unbound/edns-subnet/addrtree.c:357,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - s1
    - l1
    - s2
    - l2
    - skip
    argTypes:
    - addrkey_t*
    - addrlen_t
    - addrkey_t*
    - addrlen_t
    - addrlen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 353
    functionDepth: 2
    functionLinenumber: 353
    functionLinenumberEnd: 358
    functionName: issub
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached:
    - bits_common
    linkageType: ''
    returnType: int
    signature: "int issub(const addrkey_t *s1, addrlen_t l1, \n\tconst addrkey_t *s2,
      addrlen_t l2,  addrlen_t skip)"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/edns-subnet/addrtree.c:371,1
    - Dst: log_assert
      Src: /src/unbound/edns-subnet/addrtree.c:380,1
    - Dst: clean_node
      Src: /src/unbound/edns-subnet/addrtree.c:384,1
    - Dst: struct addrtree*::sizefunc
      Src: /src/unbound/edns-subnet/addrtree.c:389,1
    - Dst: getbit
      Src: /src/unbound/edns-subnet/addrtree.c:392,1
    - Dst: purge_node
      Src: /src/unbound/edns-subnet/addrtree.c:399,1
    - Dst: node_create
      Src: /src/unbound/edns-subnet/addrtree.c:404,1
    - Dst: edge_create
      Src: /src/unbound/edns-subnet/addrtree.c:406,1
    - Dst: clean_node
      Src: /src/unbound/edns-subnet/addrtree.c:408,1
    - Dst: free
      Src: /src/unbound/edns-subnet/addrtree.c:410,1
    - Dst: node_size
      Src: /src/unbound/edns-subnet/addrtree.c:413,1
    - Dst: lru_push
      Src: /src/unbound/edns-subnet/addrtree.c:414,1
    - Dst: lru_cleanup
      Src: /src/unbound/edns-subnet/addrtree.c:415,1
    - Dst: bits_common
      Src: /src/unbound/edns-subnet/addrtree.c:419,1
    - Dst: node_create
      Src: /src/unbound/edns-subnet/addrtree.c:431,1
    - Dst: edge_create
      Src: /src/unbound/edns-subnet/addrtree.c:434,1
    - Dst: clean_node
      Src: /src/unbound/edns-subnet/addrtree.c:436,1
    - Dst: free
      Src: /src/unbound/edns-subnet/addrtree.c:438,1
    - Dst: lru_push
      Src: /src/unbound/edns-subnet/addrtree.c:441,1
    - Dst: getbit
      Src: /src/unbound/edns-subnet/addrtree.c:443,1
    - Dst: node_size
      Src: /src/unbound/edns-subnet/addrtree.c:456,1
    - Dst: node_create
      Src: /src/unbound/edns-subnet/addrtree.c:461,1
    - Dst: edge_create
      Src: /src/unbound/edns-subnet/addrtree.c:463,1
    - Dst: clean_node
      Src: /src/unbound/edns-subnet/addrtree.c:465,1
    - Dst: free
      Src: /src/unbound/edns-subnet/addrtree.c:467,1
    - Dst: node_size
      Src: /src/unbound/edns-subnet/addrtree.c:470,1
    - Dst: lru_push
      Src: /src/unbound/edns-subnet/addrtree.c:471,1
    - Dst: lru_cleanup
      Src: /src/unbound/edns-subnet/addrtree.c:473,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 88
    argCount: 8
    argNames:
    - tree
    - addr
    - sourcemask
    - scope
    - elem
    - ttl
    - now
    - only_match_scope_zero
    argTypes:
    - struct addrtree*
    - addrkey_t*
    - addrlen_t
    - addrlen_t
    - void*
    - time_t
    - time_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 360
    functionDepth: 4
    functionLinenumber: 360
    functionLinenumberEnd: 476
    functionName: addrtree_insert
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached:
    - node_size
    - lru_cleanup
    - getbit
    - lru_push
    - free
    - bits_common
    - log_assert
    - purge_node
    - clean_node
    - edge_create
    - node_create
    - struct addrtree*::sizefunc
    linkageType: ''
    returnType: void
    signature: "void addrtree_insert(struct addrtree *tree, const addrkey_t *addr,
      \n\taddrlen_t sourcemask, addrlen_t scope, void *elem, time_t ttl, \n\ttime_t
      now, int only_match_scope_zero)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/edns-subnet/addrtree.c:486,1
    - Dst: log_assert
      Src: /src/unbound/edns-subnet/addrtree.c:489,1
    - Dst: log_assert
      Src: /src/unbound/edns-subnet/addrtree.c:494,1
    - Dst: lru_update
      Src: /src/unbound/edns-subnet/addrtree.c:501,1
    - Dst: getbit
      Src: /src/unbound/edns-subnet/addrtree.c:509,1
    - Dst: issub
      Src: /src/unbound/edns-subnet/addrtree.c:514,1
    - Dst: log_assert
      Src: /src/unbound/edns-subnet/addrtree.c:516,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 25
    argCount: 4
    argNames:
    - tree
    - addr
    - sourcemask
    - now
    argTypes:
    - struct addrtree*
    - addrkey_t*
    - addrlen_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 478
    functionDepth: 3
    functionLinenumber: 478
    functionLinenumberEnd: 520
    functionName: addrtree_find
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached:
    - issub
    - getbit
    - log_assert
    - lru_update
    linkageType: ''
    returnType: struct addrnode
    signature: "struct addrnode *\naddrtree_find(struct addrtree *tree, const addrkey_t
      *addr, \n\taddrlen_t sourcemask, time_t now)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: cmpbit
      Src: /src/unbound/edns-subnet/addrtree.c:525,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - key1
    - key2
    - n
    argTypes:
    - addrkey_t*
    - addrkey_t*
    - addrlen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 523
    functionDepth: 1
    functionLinenumber: 523
    functionLinenumberEnd: 526
    functionName: unittest_wrapper_addrtree_cmpbit
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached:
    - cmpbit
    linkageType: ''
    returnType: int
    signature: "int unittest_wrapper_addrtree_cmpbit(const addrkey_t *key1, \n\tconst
      addrkey_t *key2, addrlen_t n)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: bits_common
      Src: /src/unbound/edns-subnet/addrtree.c:529,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - s1
    - l1
    - s2
    - l2
    - skip
    argTypes:
    - addrkey_t*
    - addrlen_t
    - addrkey_t*
    - addrlen_t
    - addrlen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 527
    functionDepth: 2
    functionLinenumber: 527
    functionLinenumberEnd: 530
    functionName: unittest_wrapper_addrtree_bits_common
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached:
    - bits_common
    linkageType: ''
    returnType: addrlen_t
    signature: "addrlen_t unittest_wrapper_addrtree_bits_common(const addrkey_t *s1,
      \n\taddrlen_t l1, const addrkey_t *s2, addrlen_t l2, addrlen_t skip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: getbit
      Src: /src/unbound/edns-subnet/addrtree.c:533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - addr
    - addrlen
    - n
    argTypes:
    - addrkey_t*
    - addrlen_t
    - addrlen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 531
    functionDepth: 2
    functionLinenumber: 531
    functionLinenumberEnd: 534
    functionName: unittest_wrapper_addrtree_getbit
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached:
    - getbit
    linkageType: ''
    returnType: int
    signature: "int unittest_wrapper_addrtree_getbit(const addrkey_t *addr, \n\taddrlen_t
      addrlen, addrlen_t n)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: issub
      Src: /src/unbound/edns-subnet/addrtree.c:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - s1
    - l1
    - s2
    - l2
    - skip
    argTypes:
    - addrkey_t*
    - addrlen_t
    - addrkey_t*
    - addrlen_t
    - addrlen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 535
    functionDepth: 3
    functionLinenumber: 535
    functionLinenumberEnd: 538
    functionName: unittest_wrapper_addrtree_issub
    functionSourceFile: /src/unbound/edns-subnet/addrtree.c
    functionUses: 0
    functionsReached:
    - issub
    linkageType: ''
    returnType: int
    signature: "int unittest_wrapper_addrtree_issub(const addrkey_t *s1, addrlen_t
      l1, \n\tconst addrkey_t *s2, addrlen_t l2,  addrlen_t skip)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addrtree_delete
      Src: /src/unbound/edns-subnet/subnetmod.c:71,1
    - Dst: addrtree_delete
      Src: /src/unbound/edns-subnet/subnetmod.c:72,1
    - Dst: free
      Src: /src/unbound/edns-subnet/subnetmod.c:73,1
    - Dst: free
      Src: /src/unbound/edns-subnet/subnetmod.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - d
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 66
    functionDepth: 3
    functionLinenumber: 66
    functionLinenumberEnd: 75
    functionName: subnet_data_delete
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - free
    - addrtree_delete
    linkageType: ''
    returnType: void
    signature: void subnet_data_delete(void *d, void *ATTR_UNUSED(arg))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_get_mem
      Src: /src/unbound/edns-subnet/subnetmod.c:85,1
    - Dst: addrtree_size
      Src: /src/unbound/edns-subnet/subnetmod.c:86,1
    - Dst: addrtree_size
      Src: /src/unbound/edns-subnet/subnetmod.c:87,1
    - Dst: strlen
      Src: /src/unbound/edns-subnet/subnetmod.c:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - k
    - d
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 91
    functionName: msg_cache_sizefunc
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - lock_get_mem
    - addrtree_size
    - strlen
    linkageType: ''
    returnType: size_t
    signature: size_t msg_cache_sizefunc(void *k, void *d)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/edns-subnet/subnetmod.c:97,1
    - Dst: memset
      Src: /src/unbound/edns-subnet/subnetmod.c:102,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 106
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 106
    functionName: subnet_new_qstate
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - memset
    - regional_alloc
    linkageType: ''
    returnType: int
    signature: int subnet_new_qstate(struct module_qstate *qstate, int id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/edns-subnet/subnetmod.c:117,1
    - Dst: log_assert
      Src: /src/unbound/edns-subnet/subnetmod.c:119,1
    - Dst: log_assert
      Src: /src/unbound/edns-subnet/subnetmod.c:121,1
    - Dst: log_assert
      Src: /src/unbound/edns-subnet/subnetmod.c:128,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/edns-subnet/subnetmod.c:130,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/edns-subnet/subnetmod.c:131,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/edns-subnet/subnetmod.c:132,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/edns-subnet/subnetmod.c:133,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/edns-subnet/subnetmod.c:134,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/edns-subnet/subnetmod.c:136,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/edns-subnet/subnetmod.c:138,1
    - Dst: edns_opt_list_append
      Src: /src/unbound/edns-subnet/subnetmod.c:140,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/edns-subnet/subnetmod.c:143,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 4
    argNames:
    - ecs
    - list
    - qstate
    - region
    argTypes:
    - struct ecs_data*
    - struct edns_option**
    - struct module_qstate*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 109
    functionDepth: 5
    functionLinenumber: 109
    functionLinenumberEnd: 145
    functionName: subnet_ecs_opt_list_append
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - edns_opt_list_append
    - sldns_buffer_write
    - sldns_buffer_flip
    - sldns_buffer_clear
    - sldns_buffer_write_u16
    - log_assert
    - sldns_buffer_begin
    - sldns_buffer_write_u8
    linkageType: ''
    returnType: void
    signature: "void subnet_ecs_opt_list_append(struct ecs_data* ecs, struct edns_option**
      list,\n\tstruct module_qstate *qstate, struct regional *region)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: ecs_is_whitelisted
      Src: /src/unbound/edns-subnet/subnetmod.c:165,1
    - Dst: iter_stub_fwd_no_cache
      Src: /src/unbound/edns-subnet/subnetmod.c:169,1
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnetmod.c:170,1
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnetmod.c:172,1
    - Dst: iter_stub_fwd_no_cache
      Src: /src/unbound/edns-subnet/subnetmod.c:184,1
    - Dst: ecs_is_whitelisted
      Src: /src/unbound/edns-subnet/subnetmod.c:192,1
    - Dst: edns_opt_list_find
      Src: /src/unbound/edns-subnet/subnetmod.c:198,1
    - Dst: subnet_ecs_opt_list_append
      Src: /src/unbound/edns-subnet/subnetmod.c:211,1
    - Dst: edns_opt_list_find
      Src: /src/unbound/edns-subnet/subnetmod.c:222,1
    - Dst: edns_opt_list_remove
      Src: /src/unbound/edns-subnet/subnetmod.c:224,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 40
    argCount: 10
    argNames:
    - qinfo
    - ATTR_UNUSED
    - qstate
    - addr
    - addrlen
    - ATTR_UNUSED(zone)
    - ATTR_UNUSED
    - region
    - id
    - ATTR_UNUSED(cbargs)
    argTypes:
    - struct query_info*
    - uint16_t
    - struct module_qstate*
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - struct regional*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 147
    functionDepth: 6
    functionLinenumber: 147
    functionLinenumberEnd: 230
    functionName: ecs_whitelist_check
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - edns_opt_list_remove
    - iter_stub_fwd_no_cache
    - edns_opt_list_find
    - ecs_is_whitelisted
    - verbose
    - subnet_ecs_opt_list_append
    linkageType: ''
    returnType: int
    signature: "int ecs_whitelist_check(struct query_info* qinfo,\n\tuint16_t ATTR_UNUSED(flags),
      struct module_qstate* qstate,\n\tstruct sockaddr_storage* addr, socklen_t addrlen,\n\tuint8_t*
      ATTR_UNUSED(zone), size_t ATTR_UNUSED(zonelen),\n\tstruct regional *region,
      int id, void* ATTR_UNUSED(cbargs))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 239
    functionName: subnet_markdel
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void subnet_markdel(void* key)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/edns-subnet/subnetmod.c:244,1
    - Dst: log_err
      Src: /src/unbound/edns-subnet/subnetmod.c:247,1
    - Dst: alloc_init
      Src: /src/unbound/edns-subnet/subnetmod.c:250,1
    - Dst: log_warn
      Src: /src/unbound/edns-subnet/subnetmod.c:256,1
    - Dst: log_warn
      Src: /src/unbound/edns-subnet/subnetmod.c:260,1
    - Dst: slabhash_create
      Src: /src/unbound/edns-subnet/subnetmod.c:264,1
    - Dst: log_err
      Src: /src/unbound/edns-subnet/subnetmod.c:269,1
    - Dst: free
      Src: /src/unbound/edns-subnet/subnetmod.c:270,1
    - Dst: slabhash_setmarkdel
      Src: /src/unbound/edns-subnet/subnetmod.c:274,1
    - Dst: ecs_whitelist_create
      Src: /src/unbound/edns-subnet/subnetmod.c:276,1
    - Dst: ecs_whitelist_apply_cfg
      Src: /src/unbound/edns-subnet/subnetmod.c:278,1
    - Dst: log_err
      Src: /src/unbound/edns-subnet/subnetmod.c:279,1
    - Dst: slabhash_delete
      Src: /src/unbound/edns-subnet/subnetmod.c:280,1
    - Dst: free
      Src: /src/unbound/edns-subnet/subnetmod.c:281,1
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnetmod.c:286,1
    - Dst: edns_register_option
      Src: /src/unbound/edns-subnet/subnetmod.c:290,1
    - Dst: log_err
      Src: /src/unbound/edns-subnet/subnetmod.c:293,1
    - Dst: ecs_whitelist_delete
      Src: /src/unbound/edns-subnet/subnetmod.c:294,1
    - Dst: slabhash_delete
      Src: /src/unbound/edns-subnet/subnetmod.c:295,1
    - Dst: free
      Src: /src/unbound/edns-subnet/subnetmod.c:296,1
    - Dst: inplace_cb_register
      Src: /src/unbound/edns-subnet/subnetmod.c:300,1
    - Dst: inplace_cb_register
      Src: /src/unbound/edns-subnet/subnetmod.c:302,1
    - Dst: inplace_cb_register
      Src: /src/unbound/edns-subnet/subnetmod.c:304,1
    - Dst: lock_rw_init
      Src: /src/unbound/edns-subnet/subnetmod.c:306,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 42
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 241
    functionDepth: 5
    functionLinenumber: 241
    functionLinenumberEnd: 308
    functionName: subnetmod_init
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - log_err
    - inplace_cb_register
    - verbose
    - alloc_init
    - ecs_whitelist_delete
    - lock_rw_init
    - free
    - slabhash_setmarkdel
    - ecs_whitelist_create
    - calloc
    - log_warn
    - slabhash_create
    - ecs_whitelist_apply_cfg
    - slabhash_delete
    - edns_register_option
    linkageType: ''
    returnType: int
    signature: int subnetmod_init(struct module_env *env, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/edns-subnet/subnetmod.c:317,1
    - Dst: inplace_cb_delete
      Src: /src/unbound/edns-subnet/subnetmod.c:318,1
    - Dst: inplace_cb_delete
      Src: /src/unbound/edns-subnet/subnetmod.c:319,1
    - Dst: inplace_cb_delete
      Src: /src/unbound/edns-subnet/subnetmod.c:320,1
    - Dst: ecs_whitelist_delete
      Src: /src/unbound/edns-subnet/subnetmod.c:321,1
    - Dst: slabhash_delete
      Src: /src/unbound/edns-subnet/subnetmod.c:322,1
    - Dst: alloc_clear
      Src: /src/unbound/edns-subnet/subnetmod.c:323,1
    - Dst: free
      Src: /src/unbound/edns-subnet/subnetmod.c:324,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 310
    functionDepth: 2
    functionLinenumber: 310
    functionLinenumberEnd: 326
    functionName: subnetmod_deinit
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - alloc_clear
    - lock_rw_destroy
    - inplace_cb_delete
    - ecs_whitelist_delete
    - free
    - slabhash_delete
    linkageType: ''
    returnType: void
    signature: void subnetmod_deinit(struct module_env *env, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/edns-subnet/subnetmod.c:335,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - target
    - source
    argTypes:
    - struct ecs_data*
    - struct ecs_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 329
    functionDepth: 0
    functionLinenumber: 329
    functionLinenumberEnd: 337
    functionName: cp_edns_bad_response
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void cp_edns_bad_response(struct ecs_data *target, struct ecs_data
      *source)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reply_info_parsedelete
      Src: /src/unbound/edns-subnet/subnetmod.c:343,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - envptr
    - elemptr
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 339
    functionDepth: 1
    functionLinenumber: 339
    functionLinenumberEnd: 344
    functionName: delfunc
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 3
    functionsReached:
    - reply_info_parsedelete
    linkageType: ''
    returnType: void
    signature: void delfunc(void *envptr, void *elemptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_rrset_sizefunc
      Src: /src/unbound/edns-subnet/subnetmod.c:356,1
    - Dst: strlen
      Src: /src/unbound/edns-subnet/subnetmod.c:359,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - elemptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 346
    functionDepth: 1
    functionLinenumber: 346
    functionLinenumberEnd: 361
    functionName: sizefunc
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 4
    functionsReached:
    - ub_rrset_sizefunc
    - strlen
    linkageType: ''
    returnType: size_t
    signature: size_t sizefunc(void *elemptr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: addrtree_create
      Src: /src/unbound/edns-subnet/subnetmod.c:374,1
    - Dst: addrtree_create
      Src: /src/unbound/edns-subnet/subnetmod.c:380,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - data
    - edns
    - env
    - cfg
    argTypes:
    - struct subnet_msg_cache_data*
    - struct ecs_data*
    - struct subnet_env*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 367
    functionDepth: 3
    functionLinenumber: 367
    functionLinenumberEnd: 386
    functionName: get_tree
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - addrtree_create
    linkageType: ''
    returnType: struct addrtree
    signature: "struct addrtree * \nget_tree(struct subnet_msg_cache_data *data, struct
      ecs_data *edns, \n\tstruct subnet_env *env, struct config_file* cfg)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: query_info_hash
      Src: /src/unbound/edns-subnet/subnetmod.c:407,1
    - Dst: slabhash_lookup
      Src: /src/unbound/edns-subnet/subnetmod.c:409,1
    - Dst: calloc
      Src: /src/unbound/edns-subnet/subnetmod.c:413,1
    - Dst: log_err
      Src: /src/unbound/edns-subnet/subnetmod.c:416,1
    - Dst: memdup
      Src: /src/unbound/edns-subnet/subnetmod.c:420,1
    - Dst: free
      Src: /src/unbound/edns-subnet/subnetmod.c:423,1
    - Dst: log_err
      Src: /src/unbound/edns-subnet/subnetmod.c:424,1
    - Dst: query_info_entrysetup
      Src: /src/unbound/edns-subnet/subnetmod.c:427,1
    - Dst: free
      Src: /src/unbound/edns-subnet/subnetmod.c:428,1
    - Dst: free
      Src: /src/unbound/edns-subnet/subnetmod.c:430,1
    - Dst: log_err
      Src: /src/unbound/edns-subnet/subnetmod.c:431,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/edns-subnet/subnetmod.c:435,1
    - Dst: errinf_to_reason_bogus
      Src: /src/unbound/edns-subnet/subnetmod.c:443,1
    - Dst: strlen
      Src: /src/unbound/edns-subnet/subnetmod.c:444,1
    - Dst: errinf_to_str_misc
      Src: /src/unbound/edns-subnet/subnetmod.c:446,1
    - Dst: free
      Src: /src/unbound/edns-subnet/subnetmod.c:447,1
    - Dst: strdup
      Src: /src/unbound/edns-subnet/subnetmod.c:450,1
    - Dst: strlen
      Src: /src/unbound/edns-subnet/subnetmod.c:452,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/edns-subnet/subnetmod.c:454,1
    - Dst: slabhash_insert
      Src: /src/unbound/edns-subnet/subnetmod.c:456,1
    - Dst: slabhash_update_space_used
      Src: /src/unbound/edns-subnet/subnetmod.c:459,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/edns-subnet/subnetmod.c:465,1
    - Dst: get_tree
      Src: /src/unbound/edns-subnet/subnetmod.c:469,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/edns-subnet/subnetmod.c:470,1
    - Dst: log_err
      Src: /src/unbound/edns-subnet/subnetmod.c:471,1
    - Dst: lock_quick_lock
      Src: /src/unbound/edns-subnet/subnetmod.c:474,1
    - Dst: reply_info_copy
      Src: /src/unbound/edns-subnet/subnetmod.c:475,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/edns-subnet/subnetmod.c:476,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/edns-subnet/subnetmod.c:478,1
    - Dst: log_err
      Src: /src/unbound/edns-subnet/subnetmod.c:479,1
    - Dst: reply_info_set_ttls
      Src: /src/unbound/edns-subnet/subnetmod.c:488,1
    - Dst: reply_info_sortref
      Src: /src/unbound/edns-subnet/subnetmod.c:489,1
    - Dst: addrtree_insert
      Src: /src/unbound/edns-subnet/subnetmod.c:496,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/edns-subnet/subnetmod.c:501,1
    - Dst: slabhash_insert
      Src: /src/unbound/edns-subnet/subnetmod.c:503,1
    - Dst: slabhash_update_space_used
      Src: /src/unbound/edns-subnet/subnetmod.c:506,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 79
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 388
    functionDepth: 5
    functionLinenumber: 388
    functionLinenumberEnd: 509
    functionName: update_cache
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - slabhash_insert
    - errinf_to_reason_bogus
    - lock_rw_wrlock
    - reply_info_sortref
    - lock_quick_lock
    - log_err
    - calloc
    - slabhash_update_space_used
    - query_info_hash
    - strlen
    - reply_info_set_ttls
    - addrtree_insert
    - errinf_to_str_misc
    - lock_rw_unlock
    - free
    - lock_quick_unlock
    - strdup
    - query_info_entrysetup
    - get_tree
    - slabhash_lookup
    - memdup
    - reply_info_copy
    linkageType: ''
    returnType: void
    signature: void update_cache(struct module_qstate *qstate, int id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/edns-subnet/subnetmod.c:519,1
    - Dst: errinf_ede
      Src: /src/unbound/edns-subnet/subnetmod.c:522,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - qstate
    - data
    argTypes:
    - struct module_qstate*
    - struct subnet_msg_cache_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 512
    functionDepth: 1
    functionLinenumber: 512
    functionLinenumberEnd: 524
    functionName: lookup_check_servfail
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - TTL_IS_EXPIRED
    - errinf_ede
    linkageType: ''
    returnType: int
    signature: "int lookup_check_servfail(struct module_qstate *qstate,\n\tstruct
      subnet_msg_cache_data *data)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: query_info_hash
      Src: /src/unbound/edns-subnet/subnetmod.c:533,1
    - Dst: memset
      Src: /src/unbound/edns-subnet/subnetmod.c:542,1
    - Dst: slabhash_lookup
      Src: /src/unbound/edns-subnet/subnetmod.c:548,1
    - Dst: lookup_check_servfail
      Src: /src/unbound/edns-subnet/subnetmod.c:554,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/edns-subnet/subnetmod.c:555,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/edns-subnet/subnetmod.c:558,1
    - Dst: addrtree_find
      Src: /src/unbound/edns-subnet/subnetmod.c:561,1
    - Dst: lookup_check_servfail
      Src: /src/unbound/edns-subnet/subnetmod.c:564,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/edns-subnet/subnetmod.c:565,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/edns-subnet/subnetmod.c:568,1
    - Dst: tomsg
      Src: /src/unbound/edns-subnet/subnetmod.c:572,1
    - Dst: lookup_check_servfail
      Src: /src/unbound/edns-subnet/subnetmod.c:578,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/edns-subnet/subnetmod.c:579,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/edns-subnet/subnetmod.c:582,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/edns-subnet/subnetmod.c:585,1
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnetmod.c:589,1
    - Dst: memcpy
      Src: /src/unbound/edns-subnet/subnetmod.c:598,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 54
    argCount: 4
    argNames:
    - qstate
    - id
    - sq
    - prefetch
    argTypes:
    - struct module_qstate*
    - int
    - struct subnet_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 527
    functionDepth: 4
    functionLinenumber: 527
    functionLinenumberEnd: 607
    functionName: lookup_and_reply
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - memcpy
    - lookup_check_servfail
    - verbose
    - lock_rw_unlock
    - query_info_hash
    - memset
    - slabhash_lookup
    - tomsg
    - addrtree_find
    linkageType: ''
    returnType: int
    signature: int lookup_and_reply(struct module_qstate *qstate, int id, struct subnet_qstate
      *sq, int prefetch)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/edns-subnet/subnetmod.c:621,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 3
    argNames:
    - a
    - b
    - net
    argTypes:
    - uint8_t*
    - uint8_t*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 617
    functionDepth: 1
    functionLinenumber: 617
    functionLinenumberEnd: 622
    functionName: common_prefix
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int common_prefix(uint8_t *a, uint8_t *b, uint8_t net)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/edns-subnet/subnetmod.c:654,1
    - Dst: fptr_whitelist_modenv_attach_sub
      Src: /src/unbound/edns-subnet/subnetmod.c:654,1
    - Dst: subnet_new_qstate
      Src: /src/unbound/edns-subnet/subnetmod.c:662,1
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnetmod.c:663,1
    - Dst: edns_opt_list_find
      Src: /src/unbound/edns-subnet/subnetmod.c:674,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 3
    argNames:
    - qstate
    - id
    - sq
    argTypes:
    - struct module_qstate*
    - int
    - struct subnet_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 681
      start: 631
    functionDepth: 1
    functionLinenumber: 631
    functionLinenumberEnd: 681
    functionName: generate_sub_request
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 12
    functionsReached:
    - edns_opt_list_find
    - verbose
    - fptr_whitelist_modenv_attach_sub
    - fptr_ok
    - subnet_new_qstate
    linkageType: ''
    returnType: int
    signature: int generate_sub_request(struct module_qstate *qstate, int id, struct
      subnet_qstate* sq)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnetmod.c:694,1
    - Dst: generate_sub_request
      Src: /src/unbound/edns-subnet/subnetmod.c:695,1
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnetmod.c:696,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - qstate
    - id
    - sq
    argTypes:
    - struct module_qstate*
    - int
    - struct subnet_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 690
    functionDepth: 1
    functionLinenumber: 690
    functionLinenumberEnd: 703
    functionName: generate_lookup_without_subnet
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - verbose
    - generate_sub_request
    linkageType: ''
    returnType: enum module_ext_state
    signature: "enum module_ext_state generate_lookup_without_subnet(struct module_qstate
      *qstate, int id,\n\tstruct subnet_qstate* sq)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/edns-subnet/subnetmod.c:715,1
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnetmod.c:722,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/edns-subnet/subnetmod.c:723,1
    - Dst: update_cache
      Src: /src/unbound/edns-subnet/subnetmod.c:724,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/edns-subnet/subnetmod.c:725,1
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnetmod.c:733,1
    - Dst: cp_edns_bad_response
      Src: /src/unbound/edns-subnet/subnetmod.c:735,1
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnetmod.c:745,1
    - Dst: generate_lookup_without_subnet
      Src: /src/unbound/edns-subnet/subnetmod.c:746,1
    - Dst: memset
      Src: /src/unbound/edns-subnet/subnetmod.c:757,1
    - Dst: common_prefix
      Src: /src/unbound/edns-subnet/subnetmod.c:768,1
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnetmod.c:772,1
    - Dst: edns_opt_list_remove
      Src: /src/unbound/edns-subnet/subnetmod.c:774,1
    - Dst: generate_lookup_without_subnet
      Src: /src/unbound/edns-subnet/subnetmod.c:778,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/edns-subnet/subnetmod.c:781,1
    - Dst: update_cache
      Src: /src/unbound/edns-subnet/subnetmod.c:783,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/edns-subnet/subnetmod.c:786,1
    - Dst: msg_cache_remove
      Src: /src/unbound/edns-subnet/subnetmod.c:793,1
    - Dst: cachedb_msg_remove
      Src: /src/unbound/edns-subnet/subnetmod.c:798,1
    - Dst: memcpy
      Src: /src/unbound/edns-subnet/subnetmod.c:807,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 64
    argCount: 3
    argNames:
    - qstate
    - id
    - sq
    argTypes:
    - struct module_qstate*
    - int
    - struct subnet_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 825
      start: 705
    functionDepth: 6
    functionLinenumber: 705
    functionLinenumberEnd: 825
    functionName: eval_response
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - edns_opt_list_remove
    - cachedb_msg_remove
    - memcpy
    - lock_rw_wrlock
    - lock_rw_unlock
    - verbose
    - cp_edns_bad_response
    - common_prefix
    - update_cache
    - msg_cache_remove
    - memset
    - generate_lookup_without_subnet
    linkageType: ''
    returnType: enum module_ext_state
    signature: enum module_ext_state eval_response(struct module_qstate *qstate, int
      id, struct subnet_qstate *sq)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/edns-subnet/subnetmod.c:831,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/edns-subnet/subnetmod.c:835,1
    - Dst: copy_clear
      Src: /src/unbound/edns-subnet/subnetmod.c:857,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 24
    argCount: 2
    argNames:
    - ecs_option
    - ecs
    argTypes:
    - struct edns_option*
    - struct ecs_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 828
    functionDepth: 1
    functionLinenumber: 828
    functionLinenumberEnd: 862
    functionName: parse_subnet_option
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - memset
    - sldns_read_uint16
    - copy_clear
    linkageType: ''
    returnType: int
    signature: int parse_subnet_option(struct edns_option* ecs_option, struct ecs_data*
      ecs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: copy_clear
      Src: /src/unbound/edns-subnet/subnetmod.c:875,1
    - Dst: copy_clear
      Src: /src/unbound/edns-subnet/subnetmod.c:886,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - ss
    - ecs
    - cfg
    argTypes:
    - struct sockaddr_storage*
    - struct ecs_data*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 864
    functionDepth: 1
    functionLinenumber: 864
    functionLinenumberEnd: 895
    functionName: subnet_option_from_ss
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - copy_clear
    linkageType: ''
    returnType: void
    signature: "void subnet_option_from_ss(struct sockaddr_storage *ss, struct ecs_data*
      ecs,\n\tstruct config_file* cfg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/edns-subnet/subnetmod.c:907,1
    - Dst: edns_opt_list_remove
      Src: /src/unbound/edns-subnet/subnetmod.c:909,1
    - Dst: memset
      Src: /src/unbound/edns-subnet/subnetmod.c:913,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/edns-subnet/subnetmod.c:915,1
    - Dst: ntohs
      Src: /src/unbound/edns-subnet/subnetmod.c:919,1
    - Dst: query_dname_compare
      Src: /src/unbound/edns-subnet/subnetmod.c:920,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 4
    argNames:
    - qstate
    - response
    - id
    - ATTR_UNUSED(cbargs)
    argTypes:
    - struct module_qstate*
    - struct dns_msg*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 929
      start: 897
    functionDepth: 1
    functionLinenumber: 897
    functionLinenumberEnd: 929
    functionName: ecs_query_response
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - FLAGS_GET_RCODE
    - edns_opt_list_remove
    - query_dname_compare
    - memset
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int ecs_query_response(struct module_qstate* qstate, struct dns_msg*
      response,\n\tint id, void* ATTR_UNUSED(cbargs))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnetmod.c:940,1
    - Dst: sldns_wire2str_edns_subnet_print
      Src: /src/unbound/edns-subnet/subnetmod.c:943,1
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnetmod.c:945,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - s
    - ecs_opt
    argTypes:
    - char*
    - struct edns_option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 947
      start: 932
    functionDepth: 5
    functionLinenumber: 932
    functionLinenumberEnd: 947
    functionName: subnet_log_print
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - verbose
    - sldns_wire2str_edns_subnet_print
    linkageType: ''
    returnType: void
    signature: void subnet_log_print(const char* s, struct edns_option* ecs_opt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: edns_opt_list_find
      Src: /src/unbound/edns-subnet/subnetmod.c:958,1
    - Dst: parse_subnet_option
      Src: /src/unbound/edns-subnet/subnetmod.c:961,1
    - Dst: subnet_log_print
      Src: /src/unbound/edns-subnet/subnetmod.c:963,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 16
    argCount: 3
    argNames:
    - qstate
    - id
    - ATTR_UNUSED(cbargs)
    argTypes:
    - struct module_qstate*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 949
    functionDepth: 6
    functionLinenumber: 949
    functionLinenumberEnd: 985
    functionName: ecs_edns_back_parsed
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - parse_subnet_option
    - subnet_log_print
    - edns_opt_list_find
    linkageType: ''
    returnType: int
    signature: "int ecs_edns_back_parsed(struct module_qstate* qstate, int id,\n\tvoid*
      ATTR_UNUSED(cbargs))"
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnetmod.c:994,1
    - Dst: strextstate
      Src: /src/unbound/edns-subnet/subnetmod.c:995,1
    - Dst: strmodulevent
      Src: /src/unbound/edns-subnet/subnetmod.c:996,1
    - Dst: log_query_info
      Src: /src/unbound/edns-subnet/subnetmod.c:997,1
    - Dst: edns_opt_list_find
      Src: /src/unbound/edns-subnet/subnetmod.c:1002,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/edns-subnet/subnetmod.c:1006,1
    - Dst: update_cache
      Src: /src/unbound/edns-subnet/subnetmod.c:1007,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/edns-subnet/subnetmod.c:1008,1
    - Dst: cp_edns_bad_response
      Src: /src/unbound/edns-subnet/subnetmod.c:1011,1
    - Dst: subnet_ecs_opt_list_append
      Src: /src/unbound/edns-subnet/subnetmod.c:1015,1
    - Dst: subnet_new_qstate
      Src: /src/unbound/edns-subnet/subnetmod.c:1029,1
    - Dst: edns_opt_list_find
      Src: /src/unbound/edns-subnet/subnetmod.c:1039,1
    - Dst: parse_subnet_option
      Src: /src/unbound/edns-subnet/subnetmod.c:1042,1
    - Dst: subnet_log_print
      Src: /src/unbound/edns-subnet/subnetmod.c:1049,1
    - Dst: subnet_option_from_ss
      Src: /src/unbound/edns-subnet/subnetmod.c:1053,1
    - Dst: subnet_option_from_ss
      Src: /src/unbound/edns-subnet/subnetmod.c:1058,1
    - Dst: edns_opt_list_find
      Src: /src/unbound/edns-subnet/subnetmod.c:1067,1
    - Dst: generate_lookup_without_subnet
      Src: /src/unbound/edns-subnet/subnetmod.c:1071,1
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnetmod.c:1075,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/edns-subnet/subnetmod.c:1092,1
    - Dst: lookup_and_reply
      Src: /src/unbound/edns-subnet/subnetmod.c:1094,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/edns-subnet/subnetmod.c:1097,1
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnetmod.c:1099,1
    - Dst: subnet_ecs_opt_list_append
      Src: /src/unbound/edns-subnet/subnetmod.c:1102,1
    - Dst: subnet_log_print
      Src: /src/unbound/edns-subnet/subnetmod.c:1106,1
    - Dst: edns_opt_list_find
      Src: /src/unbound/edns-subnet/subnetmod.c:1107,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/edns-subnet/subnetmod.c:1114,1
    - Dst: edns_opt_list_find
      Src: /src/unbound/edns-subnet/subnetmod.c:1117,1
    - Dst: generate_lookup_without_subnet
      Src: /src/unbound/edns-subnet/subnetmod.c:1120,1
    - Dst: memcpy
      Src: /src/unbound/edns-subnet/subnetmod.c:1143,1
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnetmod.c:1155,1
    - Dst: eval_response
      Src: /src/unbound/edns-subnet/subnetmod.c:1164,1
    - Dst: subnet_ecs_opt_list_append
      Src: /src/unbound/edns-subnet/subnetmod.c:1167,1
    - Dst: subnet_log_print
      Src: /src/unbound/edns-subnet/subnetmod.c:1172,1
    - Dst: edns_opt_list_find
      Src: /src/unbound/edns-subnet/subnetmod.c:1173,1
    - Dst: verbose
      Src: /src/unbound/edns-subnet/subnetmod.c:1189,1
    - Dst: log_err
      Src: /src/unbound/edns-subnet/subnetmod.c:1198,1
    - Dst: strmodulevent
      Src: /src/unbound/edns-subnet/subnetmod.c:1198,1
    CyclomaticComplexity: 50
    EdgeCount: 50
    ICount: 125
    argCount: 4
    argNames:
    - qstate
    - event
    - id
    - outbound
    argTypes:
    - struct module_qstate*
    - enum module_ev
    - int
    - struct outbound_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1201
      start: 987
    functionDepth: 7
    functionLinenumber: 987
    functionLinenumberEnd: 1201
    functionName: subnetmod_operate
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - eval_response
    - lock_rw_wrlock
    - update_cache
    - strmodulevent
    - subnet_ecs_opt_list_append
    - lookup_and_reply
    - log_err
    - strextstate
    - cp_edns_bad_response
    - subnet_option_from_ss
    - generate_lookup_without_subnet
    - parse_subnet_option
    - memcpy
    - edns_opt_list_find
    - verbose
    - lock_rw_unlock
    - subnet_log_print
    - log_query_info
    - subnet_new_qstate
    linkageType: ''
    returnType: void
    signature: "void subnetmod_operate(struct module_qstate *qstate, enum module_ev
      event, \n\tint id, struct outbound_entry* outbound)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 2
    argNames:
    - ATTR_UNUSED(qstate)
    - ATTR_UNUSED
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1203
    functionDepth: 0
    functionLinenumber: 1203
    functionLinenumberEnd: 1208
    functionName: subnetmod_clear
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void subnetmod_clear(struct module_qstate *ATTR_UNUSED(qstate),\n\tint
      ATTR_UNUSED(id))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_query_info
      Src: /src/unbound/edns-subnet/subnetmod.c:1216,1
    - Dst: dns_copy_msg
      Src: /src/unbound/edns-subnet/subnetmod.c:1227,1
    - Dst: log_err
      Src: /src/unbound/edns-subnet/subnetmod.c:1229,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - qstate
    - id
    - super
    argTypes:
    - struct module_qstate*
    - int
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1232
      start: 1210
    functionDepth: 2
    functionLinenumber: 1210
    functionLinenumberEnd: 1232
    functionName: subnetmod_inform_super
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - log_err
    - log_query_info
    - dns_copy_msg
    linkageType: ''
    returnType: void
    signature: "void subnetmod_inform_super(struct module_qstate *qstate, int id,\n\tstruct
      module_qstate *super)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: slabhash_get_mem
      Src: /src/unbound/edns-subnet/subnetmod.c:1240,1
    - Dst: ecs_whitelist_get_mem
      Src: /src/unbound/edns-subnet/subnetmod.c:1241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1242
      start: 1234
    functionDepth: 2
    functionLinenumber: 1234
    functionLinenumberEnd: 1242
    functionName: subnetmod_get_mem
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - slabhash_get_mem
    - ecs_whitelist_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t subnetmod_get_mem(struct module_env *env, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1257
      start: 1253
    functionDepth: 0
    functionLinenumber: 1253
    functionLinenumberEnd: 1257
    functionName: subnetmod_get_funcblock
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct module_func_block
    signature: 'struct module_func_block *

      subnetmod_get_funcblock(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sizefunc
      Src: /src/unbound/edns-subnet/subnetmod.c:1263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - elemptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1264
      start: 1260
    functionDepth: 2
    functionLinenumber: 1260
    functionLinenumberEnd: 1264
    functionName: unittest_wrapper_subnetmod_sizefunc
    functionSourceFile: /src/unbound/edns-subnet/subnetmod.c
    functionUses: 0
    functionsReached:
    - sizefunc
    linkageType: ''
    returnType: size_t
    signature: size_t unittest_wrapper_subnetmod_sizefunc(void *elemptr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/edns-subnet/edns-subnet.c:56,1
    - Dst: memset
      Src: /src/unbound/edns-subnet/edns-subnet.c:61,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 5
    argNames:
    - dst
    - dstlen
    - src
    - srclen
    - n
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 63
    functionName: copy_clear
    functionSourceFile: /src/unbound/edns-subnet/edns-subnet.c
    functionUses: 2
    functionsReached:
    - memset
    - memcpy
    linkageType: ''
    returnType: int
    signature: int copy_clear(uint8_t* dst, size_t dstlen, uint8_t* src, size_t srclen,
      size_t n)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/respip/respip.c:60,1
    - Dst: regional_create
      Src: /src/unbound/respip/respip.c:63,1
    - Dst: free
      Src: /src/unbound/respip/respip.c:65,1
    - Dst: addr_tree_init
      Src: /src/unbound/respip/respip.c:68,1
    - Dst: lock_rw_init
      Src: /src/unbound/respip/respip.c:69,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 57
    functionDepth: 1
    functionLinenumber: 57
    functionLinenumberEnd: 71
    functionName: respip_set_create
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 4
    functionsReached:
    - regional_create
    - lock_rw_init
    - addr_tree_init
    - free
    - calloc
    linkageType: ''
    returnType: struct respip_set
    signature: 'struct respip_set *

      respip_set_create(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/respip/respip.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - n
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 82
    functionName: resp_addr_del
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached:
    - lock_rw_destroy
    linkageType: ''
    returnType: void
    signature: void resp_addr_del(rbnode_type* n, void* ATTR_UNUSED(arg))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/respip/respip.c:89,1
    - Dst: traverse_postorder
      Src: /src/unbound/respip/respip.c:90,1
    - Dst: regional_destroy
      Src: /src/unbound/respip/respip.c:91,1
    - Dst: free
      Src: /src/unbound/respip/respip.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct respip_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 84
    functionDepth: 1
    functionLinenumber: 84
    functionLinenumberEnd: 93
    functionName: respip_set_delete
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 6
    functionsReached:
    - free
    - traverse_postorder
    - lock_rw_destroy
    - regional_destroy
    linkageType: ''
    returnType: void
    signature: void respip_set_delete(struct respip_set* set)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct respip_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 95
    functionDepth: 0
    functionLinenumber: 95
    functionLinenumberEnd: 101
    functionName: respip_set_get_tree
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct rbtree_type
    signature: 'struct rbtree_type *

      respip_set_get_tree(struct respip_set* set)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/respip/respip.c:108,1
    - Dst: addr_tree_find
      Src: /src/unbound/respip/respip.c:109,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/respip/respip.c:111,1
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:113,1
    - Dst: lock_rw_init
      Src: /src/unbound/respip/respip.c:116,1
    - Dst: addr_tree_insert
      Src: /src/unbound/respip/respip.c:118,1
    - Dst: log_warn
      Src: /src/unbound/respip/respip.c:122,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 6
    argNames:
    - set
    - addr
    - addrlen
    - net
    - create
    - ipstr
    argTypes:
    - struct respip_set*
    - struct sockaddr_storage*
    - socklen_t
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 126
    functionName: respip_sockaddr_find_or_create
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 1
    functionsReached:
    - regional_alloc_zero
    - log_err
    - addr_tree_find
    - lock_rw_init
    - log_assert
    - addr_tree_insert
    - log_warn
    linkageType: ''
    returnType: struct resp_addr
    signature: "struct resp_addr *\nrespip_sockaddr_find_or_create(struct respip_set*
      set, struct sockaddr_storage* addr,\n\t\tsocklen_t addrlen, int net, int create,
      const char* ipstr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/respip/respip.c:132,1
    - Dst: rbtree_previous
      Src: /src/unbound/respip/respip.c:133,1
    - Dst: lock_rw_destroy
      Src: /src/unbound/respip/respip.c:134,1
    - Dst: rbtree_delete
      Src: /src/unbound/respip/respip.c:135,1
    - Dst: addr_tree_init_parents
      Src: /src/unbound/respip/respip.c:138,1
    - Dst: addr_tree_init_parents_node
      Src: /src/unbound/respip/respip.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - set
    - node
    argTypes:
    - struct respip_set*
    - struct resp_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 128
    functionDepth: 1
    functionLinenumber: 128
    functionLinenumberEnd: 141
    functionName: respip_sockaddr_delete
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 1
    functionsReached:
    - addr_tree_init_parents_node
    - rbtree_delete
    - addr_tree_init_parents
    - lock_rw_destroy
    - log_assert
    - rbtree_previous
    linkageType: ''
    returnType: void
    signature: void respip_sockaddr_delete(struct respip_set* set, struct resp_addr*
      node)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/respip/respip.c:151,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/respip/respip.c:153,1
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:154,1
    - Dst: respip_sockaddr_find_or_create
      Src: /src/unbound/respip/respip.c:157,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - set
    - ipstr
    - create
    argTypes:
    - struct respip_set*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 159
    functionName: respip_find_or_create
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached:
    - respip_sockaddr_find_or_create
    - netblockstrtoaddr
    - log_assert
    - log_err
    linkageType: ''
    returnType: struct resp_addr
    signature: 'struct resp_addr *

      respip_find_or_create(struct respip_set* set, const char* ipstr, int create)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/respip/respip.c:166,1
    - Dst: respip_find_or_create
      Src: /src/unbound/respip/respip.c:168,1
    - Dst: log_warn
      Src: /src/unbound/respip/respip.c:171,1
    - Dst: regional_alloc_init
      Src: /src/unbound/respip/respip.c:174,1
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:176,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 4
    argNames:
    - set
    - ipstr
    - taglist
    - taglen
    argTypes:
    - struct respip_set*
    - char*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 181
      start: 161
    functionDepth: 3
    functionLinenumber: 161
    functionLinenumberEnd: 181
    functionName: respip_tag_cfg
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached:
    - log_err
    - respip_find_or_create
    - log_assert
    - log_warn
    - regional_alloc_init
    linkageType: ''
    returnType: int
    signature: "int respip_tag_cfg(struct respip_set* set, const char* ipstr,\n\tconst
      uint8_t* taglist, size_t taglen)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/respip/respip.c:190,1
    - Dst: respip_find_or_create
      Src: /src/unbound/respip/respip.c:192,1
    - Dst: verbose
      Src: /src/unbound/respip/respip.c:195,1
    - Dst: strcmp
      Src: /src/unbound/respip/respip.c:198,1
    - Dst: strcmp
      Src: /src/unbound/respip/respip.c:200,1
    - Dst: strcmp
      Src: /src/unbound/respip/respip.c:202,1
    - Dst: strcmp
      Src: /src/unbound/respip/respip.c:204,1
    - Dst: strcmp
      Src: /src/unbound/respip/respip.c:206,1
    - Dst: strcmp
      Src: /src/unbound/respip/respip.c:208,1
    - Dst: strcmp
      Src: /src/unbound/respip/respip.c:210,1
    - Dst: strcmp
      Src: /src/unbound/respip/respip.c:212,1
    - Dst: strcmp
      Src: /src/unbound/respip/respip.c:214,1
    - Dst: strcmp
      Src: /src/unbound/respip/respip.c:216,1
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:219,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 32
    argCount: 3
    argNames:
    - set
    - ipstr
    - actnstr
    argTypes:
    - struct respip_set*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 184
    functionDepth: 3
    functionLinenumber: 184
    functionLinenumberEnd: 224
    functionName: respip_action_cfg
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached:
    - log_err
    - strcmp
    - respip_find_or_create
    - verbose
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int respip_action_cfg(struct respip_set* set, const char* ipstr,\n\tconst
      char* actnstr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_zero
      Src: /src/unbound/respip/respip.c:232,1
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:235,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/respip/respip.c:239,1
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:241,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/respip/respip.c:247,1
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:249,1
    - Dst: htons
      Src: /src/unbound/respip/respip.c:253,1
    - Dst: htons
      Src: /src/unbound/respip/respip.c:254,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 3
    argNames:
    - region
    - rrtype
    - rrclass
    argTypes:
    - struct regional*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 228
    functionDepth: 1
    functionLinenumber: 228
    functionLinenumberEnd: 256
    functionName: new_rrset
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 1
    functionsReached:
    - regional_alloc_zero
    - log_err
    - htons
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: 'struct ub_packed_rrset_key *

      new_rrset(struct regional* region, uint16_t rrtype, uint16_t rrclass)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:269,1
    - Dst: htons
      Src: /src/unbound/respip/respip.c:273,1
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:274,1
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:280,1
    - Dst: new_rrset
      Src: /src/unbound/respip/respip.c:286,1
    - Dst: rrset_insert_rr
      Src: /src/unbound/respip/respip.c:291,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 21
    argCount: 9
    argNames:
    - region
    - raddr
    - rrtype
    - rrclass
    - ttl
    - rdata
    - rdata_len
    - rrstr
    - netblockstr
    argTypes:
    - struct regional*
    - struct resp_addr*
    - uint16_t
    - uint16_t
    - time_t
    - uint8_t*
    - size_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 260
    functionDepth: 2
    functionLinenumber: 260
    functionLinenumberEnd: 292
    functionName: respip_enter_rr
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 1
    functionsReached:
    - htons
    - log_err
    - rrset_insert_rr
    - new_rrset
    linkageType: ''
    returnType: int
    signature: "int respip_enter_rr(struct regional* region, struct resp_addr* raddr,\n\tuint16_t
      rrtype, uint16_t rrclass, time_t ttl, uint8_t* rdata,\n\tsize_t rdata_len, const
      char* rrstr, const char* netblockstr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:309,1
    - Dst: snprintf
      Src: /src/unbound/respip/respip.c:313,1
    - Dst: strlcpy
      Src: /src/unbound/respip/respip.c:315,1
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:316,1
    - Dst: rrstr_get_rr_content
      Src: /src/unbound/respip/respip.c:319,1
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:321,1
    - Dst: free
      Src: /src/unbound/respip/respip.c:324,1
    - Dst: respip_enter_rr
      Src: /src/unbound/respip/respip.c:325,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 4
    argNames:
    - region
    - raddr
    - rrstr
    - netblock
    argTypes:
    - struct regional*
    - struct resp_addr*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 294
    functionDepth: 8
    functionLinenumber: 294
    functionLinenumberEnd: 327
    functionName: respip_enter_rrstr
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - log_err
    - snprintf
    - respip_enter_rr
    - free
    - rrstr_get_rr_content
    linkageType: ''
    returnType: int
    signature: "int respip_enter_rrstr(struct regional* region, struct resp_addr*
      raddr,\n\t\tconst char* rrstr, const char* netblock)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/respip/respip.c:333,1
    - Dst: respip_find_or_create
      Src: /src/unbound/respip/respip.c:335,1
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:337,1
    - Dst: respip_enter_rrstr
      Src: /src/unbound/respip/respip.c:341,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - set
    - ipstr
    - rrstr
    argTypes:
    - struct respip_set*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 329
    functionDepth: 9
    functionLinenumber: 329
    functionLinenumberEnd: 342
    functionName: respip_data_cfg
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached:
    - respip_enter_rrstr
    - log_err
    - log_assert
    - respip_find_or_create
    linkageType: ''
    returnType: int
    signature: int respip_data_cfg(struct respip_set* set, const char* ipstr, const
      char* rrstr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/respip/respip.c:353,1
    - Dst: log_assert
      Src: /src/unbound/respip/respip.c:362,1
    - Dst: respip_tag_cfg
      Src: /src/unbound/respip/respip.c:363,1
    - Dst: config_del_strbytelist
      Src: /src/unbound/respip/respip.c:364,1
    - Dst: free
      Src: /src/unbound/respip/respip.c:367,1
    - Dst: free
      Src: /src/unbound/respip/respip.c:368,1
    - Dst: free
      Src: /src/unbound/respip/respip.c:369,1
    - Dst: log_assert
      Src: /src/unbound/respip/respip.c:376,1
    - Dst: respip_action_cfg
      Src: /src/unbound/respip/respip.c:377,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/respip/respip.c:378,1
    - Dst: free
      Src: /src/unbound/respip/respip.c:381,1
    - Dst: free
      Src: /src/unbound/respip/respip.c:382,1
    - Dst: free
      Src: /src/unbound/respip/respip.c:383,1
    - Dst: log_assert
      Src: /src/unbound/respip/respip.c:390,1
    - Dst: respip_data_cfg
      Src: /src/unbound/respip/respip.c:391,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/respip/respip.c:392,1
    - Dst: free
      Src: /src/unbound/respip/respip.c:395,1
    - Dst: free
      Src: /src/unbound/respip/respip.c:396,1
    - Dst: free
      Src: /src/unbound/respip/respip.c:397,1
    - Dst: addr_tree_init_parents
      Src: /src/unbound/respip/respip.c:400,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 42
    argCount: 6
    argNames:
    - set
    - tagname
    - num_tags
    - respip_tags
    - respip_actions
    - respip_data
    argTypes:
    - struct respip_set*
    - char**
    - int
    - struct config_strbytelist*
    - struct config_str2list*
    - struct config_str2list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 344
    functionDepth: 10
    functionLinenumber: 344
    functionLinenumberEnd: 403
    functionName: respip_set_apply_cfg
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached:
    - respip_tag_cfg
    - respip_action_cfg
    - addr_tree_init_parents
    - config_del_strbytelist
    - respip_data_cfg
    - free
    - log_assert
    - config_deldblstrlist
    linkageType: ''
    returnType: int
    signature: "int respip_set_apply_cfg(struct respip_set* set, char* const* tagname,
      int num_tags,\n\tstruct config_strbytelist* respip_tags,\n\tstruct config_str2list*
      respip_actions,\n\tstruct config_str2list* respip_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: respip_set_apply_cfg
      Src: /src/unbound/respip/respip.c:408,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - set
    - cfg
    argTypes:
    - struct respip_set*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 405
    functionDepth: 11
    functionLinenumber: 405
    functionLinenumberEnd: 414
    functionName: respip_global_apply_cfg
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 2
    functionsReached:
    - respip_set_apply_cfg
    linkageType: ''
    returnType: int
    signature: int respip_global_apply_cfg(struct respip_set* set, struct config_file*
      cfg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: views_find_view
      Src: /src/unbound/respip/respip.c:442,1
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:443,1
    - Dst: respip_set_create
      Src: /src/unbound/respip/respip.c:447,1
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:449,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/respip/respip.c:450,1
    - Dst: respip_set_apply_cfg
      Src: /src/unbound/respip/respip.c:454,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/respip/respip.c:456,1
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:458,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 27
    argCount: 3
    argNames:
    - vs
    - cfg
    - have_view_respip_cfg
    argTypes:
    - struct views*
    - struct config_file*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 424
    functionDepth: 11
    functionLinenumber: 424
    functionLinenumberEnd: 468
    functionName: respip_views_apply_cfg
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 2
    functionsReached:
    - log_err
    - respip_set_create
    - lock_rw_unlock
    - views_find_view
    - respip_set_apply_cfg
    linkageType: ''
    returnType: int
    signature: "int respip_views_apply_cfg(struct views* vs, struct config_file* cfg,\n\tint*
      have_view_respip_cfg)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/respip/respip.c:497,1
    - Dst: memset
      Src: /src/unbound/respip/respip.c:509,1
    - Dst: regional_alloc_init
      Src: /src/unbound/respip/respip.c:514,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/respip/respip.c:534,1
    - Dst: memcpy
      Src: /src/unbound/respip/respip.c:550,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 43
    argCount: 2
    argNames:
    - key
    - region
    argTypes:
    - struct ub_packed_rrset_key*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 494
    functionDepth: 1
    functionLinenumber: 494
    functionLinenumberEnd: 555
    functionName: respip_copy_rrset
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 5
    functionsReached:
    - regional_alloc_zero
    - memcpy
    - regional_alloc
    - regional_alloc_init
    - memset
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: 'struct ub_packed_rrset_key *

      respip_copy_rrset(const struct ub_packed_rrset_key* key, struct regional* region)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 563
    functionName: respip_init
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int respip_init(struct module_env* env, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 565
    functionDepth: 0
    functionLinenumber: 565
    functionLinenumberEnd: 570
    functionName: respip_deinit
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void respip_deinit(struct module_env* env, int id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/respip/respip.c:582,1
    - Dst: memcpy
      Src: /src/unbound/respip/respip.c:584,1
    - Dst: memset
      Src: /src/unbound/respip/respip.c:591,1
    - Dst: memcpy
      Src: /src/unbound/respip/respip.c:593,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 5
    argNames:
    - rd
    - rtype
    - i
    - ss
    - addrlenp
    argTypes:
    - struct packed_rrset_data*
    - uint16_t
    - size_t
    - struct sockaddr_storage*
    - socklen_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 599
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 599
    functionName: rdata2sockaddr
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached:
    - memset
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int rdata2sockaddr(const struct packed_rrset_data* rd, uint16_t rtype,
      size_t i,\n\tstruct sockaddr_storage* ss, socklen_t* addrlenp)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/respip/respip.c:619,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/respip/respip.c:621,1
    - Dst: ntohs
      Src: /src/unbound/respip/respip.c:625,1
    - Dst: rdata2sockaddr
      Src: /src/unbound/respip/respip.c:631,1
    - Dst: addr_tree_lookup
      Src: /src/unbound/respip/respip.c:633,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/respip/respip.c:638,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/respip/respip.c:639,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/respip/respip.c:644,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 4
    argNames:
    - rep
    - rs
    - rrset_id
    - rr_id
    argTypes:
    - struct reply_info*
    - struct respip_set*
    - size_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 611
    functionDepth: 1
    functionLinenumber: 611
    functionLinenumberEnd: 646
    functionName: respip_addr_lookup
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached:
    - ntohs
    - rdata2sockaddr
    - lock_rw_unlock
    - log_assert
    - lock_rw_rdlock
    - addr_tree_lookup
    linkageType: ''
    returnType: struct resp_addr
    signature: "struct resp_addr *\nrespip_addr_lookup(const struct reply_info *rep,
      struct respip_set* rs,\n\tsize_t* rrset_id, size_t* rr_id)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/respip/respip.c:693,1
    - Dst: ntohs
      Src: /src/unbound/respip/respip.c:696,1
    - Dst: ntohs
      Src: /src/unbound/respip/respip.c:697,1
    - Dst: memset
      Src: /src/unbound/respip/respip.c:699,1
    - Dst: local_data_find_tag_datas
      Src: /src/unbound/respip/respip.c:700,1
    - Dst: verbose
      Src: /src/unbound/respip/respip.c:702,1
    - Dst: respip_copy_rrset
      Src: /src/unbound/respip/respip.c:706,1
    - Dst: respip_copy_rrset
      Src: /src/unbound/respip/respip.c:719,1
    - Dst: make_new_reply_info
      Src: /src/unbound/respip/respip.c:733,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 13
    argNames:
    - action
    - data
    - qtype
    - rep
    - rrset_id
    - new_repp
    - tag
    - tag_datas
    - tag_datas_size
    - tagname
    - num_tags
    - redirect_rrsetp
    - region
    argTypes:
    - enum respip_action
    - struct ub_packed_rrset_key*
    - uint16_t
    - struct reply_info*
    - size_t
    - struct reply_info**
    - int
    - struct config_strlist**
    - size_t
    - char**
    - int
    - struct ub_packed_rrset_key**
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 742
      start: 671
    functionDepth: 8
    functionLinenumber: 671
    functionLinenumberEnd: 742
    functionName: respip_data_answer
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached:
    - verbose
    - respip_copy_rrset
    - memset
    - local_data_find_tag_datas
    - make_new_reply_info
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int respip_data_answer(enum respip_action action,\n\tstruct ub_packed_rrset_key*
      data,\n\tuint16_t qtype, const struct reply_info* rep,\n\tsize_t rrset_id, struct
      reply_info** new_repp, int tag,\n\tstruct config_strlist** tag_datas, size_t
      tag_datas_size,\n\tchar* const* tagname, int num_tags,\n\tstruct ub_packed_rrset_key**
      redirect_rrsetp, struct regional* region)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: make_new_reply_info
      Src: /src/unbound/respip/respip.c:768,1
    - Dst: FLAGS_SET_RCODE
      Src: /src/unbound/respip/respip.c:771,1
    - Dst: make_new_reply_info
      Src: /src/unbound/respip/respip.c:788,1
    - Dst: FLAGS_SET_RCODE
      Src: /src/unbound/respip/respip.c:791,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 6
    argNames:
    - qtype
    - action
    - rep
    - rrset_id
    - new_repp
    - region
    argTypes:
    - uint16_t
    - enum respip_action
    - struct reply_info*
    - size_t
    - struct reply_info**
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 760
    functionDepth: 1
    functionLinenumber: 760
    functionLinenumberEnd: 797
    functionName: respip_nodata_answer
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached:
    - make_new_reply_info
    - FLAGS_SET_RCODE
    linkageType: ''
    returnType: int
    signature: "int respip_nodata_answer(uint16_t qtype, enum respip_action action,\n\tconst
      struct reply_info *rep, size_t rrset_id,\n\tstruct reply_info** new_repp, struct
      regional* region)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_zero
      Src: /src/unbound/respip/respip.c:826,1
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:828,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 12
    argNames:
    - actinfo
    - action
    - raddr
    - ATTR_UNUSED(rrset)
    - ATTR_UNUSED
    - ATTR_UNUSED(ipset)
    - ATTR_UNUSED
    - region
    - rpz_used
    - rpz_log
    - log_name
    - rpz_cname_override
    argTypes:
    - struct respip_action_info*
    - enum respip_action
    - struct resp_addr*
    - struct ub_packed_rrset_key*
    - int
    - struct respip_set*
    - int
    - struct regional*
    - int
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 804
    functionDepth: 1
    functionLinenumber: 804
    functionLinenumberEnd: 838
    functionName: populate_action_info
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - log_err
    linkageType: ''
    returnType: int
    signature: "int populate_action_info(struct respip_action_info* actinfo,\n\tenum
      respip_action action, const struct resp_addr* raddr,\n\tconst struct ub_packed_rrset_key*
      ATTR_UNUSED(rrset),\n\tint ATTR_UNUSED(tag), const struct respip_set* ATTR_UNUSED(ipset),\n\tint
      ATTR_UNUSED(action_only), struct regional* region, int rpz_used,\n\tint rpz_log,
      char* log_name, int rpz_cname_override)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: rpz_action_to_respip_action
      Src: /src/unbound/respip/respip.c:856,1
    - Dst: regional_strdup
      Src: /src/unbound/respip/respip.c:867,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 10
    argNames:
    - raddr
    - r
    - action
    - data
    - rpz_log
    - log_name
    - rpz_cname_override
    - region
    - is_rpz
    - rpz_passthru
    argTypes:
    - struct resp_addr*
    - struct rpz*
    - enum respip_action*
    - struct ub_packed_rrset_key**
    - int*
    - char**
    - int*
    - struct regional*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 871
      start: 840
    functionDepth: 1
    functionLinenumber: 840
    functionLinenumberEnd: 871
    functionName: respip_use_rpz
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached:
    - regional_strdup
    - rpz_action_to_respip_action
    linkageType: ''
    returnType: int
    signature: "int respip_use_rpz(struct resp_addr* raddr, struct rpz* r,\n\tenum
      respip_action* action,\n\tstruct ub_packed_rrset_key** data, int* rpz_log, char**
      log_name,\n\tint* rpz_cname_override, struct regional* region, int* is_rpz,\n\tint*
      rpz_passthru)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/respip/respip.c:918,1
    - Dst: views_find_view
      Src: /src/unbound/respip/respip.c:920,1
    - Dst: verbose
      Src: /src/unbound/respip/respip.c:924,1
    - Dst: log_assert
      Src: /src/unbound/respip/respip.c:932,1
    - Dst: respip_addr_lookup
      Src: /src/unbound/respip/respip.c:946,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/respip/respip.c:956,1
    - Dst: respip_addr_lookup
      Src: /src/unbound/respip/respip.c:960,1
    - Dst: local_data_find_tag_action
      Src: /src/unbound/respip/respip.c:962,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/respip/respip.c:968,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/respip/respip.c:970,1
    - Dst: taglist_intersect
      Src: /src/unbound/respip/respip.c:972,1
    - Dst: respip_addr_lookup
      Src: /src/unbound/respip/respip.c:974,1
    - Dst: respip_use_rpz
      Src: /src/unbound/respip/respip.c:976,1
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:979,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/respip/respip.c:980,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/respip/respip.c:981,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/respip/respip.c:982,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/respip/respip.c:984,1
    - Dst: rdata2sockaddr
      Src: /src/unbound/respip/respip.c:994,1
    - Dst: ntohs
      Src: /src/unbound/respip/respip.c:994,1
    - Dst: snprintf
      Src: /src/unbound/respip/respip.c:995,1
    - Dst: addr_to_str
      Src: /src/unbound/respip/respip.c:997,1
    - Dst: dname_str
      Src: /src/unbound/respip/respip.c:998,1
    - Dst: addr_to_str
      Src: /src/unbound/respip/respip.c:999,1
    - Dst: verbose
      Src: /src/unbound/respip/respip.c:1002,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/respip/respip.c:1002,1
    - Dst: respip_action_to_rpz_action
      Src: /src/unbound/respip/respip.c:1002,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/respip/respip.c:1008,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/respip/respip.c:1013,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/respip/respip.c:1015,1
    - Dst: respip_data_answer
      Src: /src/unbound/respip/respip.c:1026,1
    - Dst: respip_nodata_answer
      Src: /src/unbound/respip/respip.c:1037,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/respip/respip.c:1045,1
    - Dst: ntohs
      Src: /src/unbound/respip/respip.c:1056,1
    - Dst: populate_action_info
      Src: /src/unbound/respip/respip.c:1060,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/respip/respip.c:1065,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/respip/respip.c:1068,1
    CyclomaticComplexity: 46
    EdgeCount: 46
    ICount: 109
    argCount: 12
    argNames:
    - qinfo
    - cinfo
    - rep
    - new_repp
    - actinfo
    - alias_rrset
    - search_only
    - region
    - az
    - rpz_passthru
    - views
    - ipset
    argTypes:
    - struct query_info*
    - struct respip_client_info*
    - struct reply_info*
    - struct reply_info**
    - struct respip_action_info*
    - struct ub_packed_rrset_key**
    - int
    - struct regional*
    - struct auth_zones*
    - int*
    - struct views*
    - struct respip_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1071
      start: 873
    functionDepth: 9
    functionLinenumber: 873
    functionLinenumberEnd: 1071
    functionName: respip_rewrite_reply
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 2
    functionsReached:
    - snprintf
    - local_data_find_tag_action
    - respip_nodata_answer
    - respip_data_answer
    - taglist_intersect
    - respip_use_rpz
    - log_err
    - rdata2sockaddr
    - rpz_action_to_string
    - populate_action_info
    - respip_action_to_rpz_action
    - verbose
    - lock_rw_unlock
    - views_find_view
    - log_assert
    - lock_rw_rdlock
    - addr_to_str
    - dname_str
    - respip_addr_lookup
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int respip_rewrite_reply(const struct query_info* qinfo,\n\tconst
      struct respip_client_info* cinfo, const struct reply_info* rep,\n\tstruct reply_info**
      new_repp, struct respip_action_info* actinfo,\n\tstruct ub_packed_rrset_key**
      alias_rrset, int search_only,\n\tstruct regional* region, struct auth_zones*
      az, int* rpz_passthru,\n\tstruct views* views, struct respip_set* ipset)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/respip/respip.c:1080,1
    - Dst: get_cname_target
      Src: /src/unbound/respip/respip.c:1081,1
    - Dst: fptr_ok
      Src: /src/unbound/respip/respip.c:1086,1
    - Dst: fptr_whitelist_modenv_attach_sub
      Src: /src/unbound/respip/respip.c:1086,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - qstate
    - alias_rrset
    argTypes:
    - struct module_qstate*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1073
    functionDepth: 1
    functionLinenumber: 1073
    functionLinenumberEnd: 1089
    functionName: generate_cname_request
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached:
    - get_cname_target
    - memset
    - fptr_whitelist_modenv_attach_sub
    - fptr_ok
    linkageType: ''
    returnType: int
    signature: "int generate_cname_request(struct module_qstate* qstate,\n\tstruct
      ub_packed_rrset_key* alias_rrset)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: log_query_info
      Src: /src/unbound/respip/respip.c:1097,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/respip/respip.c:1102,1
    - Dst: verbose
      Src: /src/unbound/respip/respip.c:1112,1
    - Dst: respip_rewrite_reply
      Src: /src/unbound/respip/respip.c:1136,1
    - Dst: regional_alloc_init
      Src: /src/unbound/respip/respip.c:1148,1
    - Dst: log_err
      Src: /src/unbound/respip/respip.c:1151,1
    - Dst: generate_cname_request
      Src: /src/unbound/respip/respip.c:1167,1
    - Dst: errinf
      Src: /src/unbound/respip/respip.c:1168,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 57
    argCount: 4
    argNames:
    - qstate
    - event
    - id
    - outbound
    argTypes:
    - struct module_qstate*
    - enum module_ev
    - int
    - struct outbound_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1091
    functionDepth: 10
    functionLinenumber: 1091
    functionLinenumberEnd: 1185
    functionName: respip_operate
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - log_err
    - verbose
    - log_query_info
    - respip_rewrite_reply
    - regional_alloc_init
    - errinf
    - generate_cname_request
    linkageType: ''
    returnType: void
    signature: "void respip_operate(struct module_qstate* qstate, enum module_ev event,
      int id,\n\tstruct outbound_entry* outbound)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/respip/respip.c:1210,1
    - Dst: respip_rewrite_reply
      Src: /src/unbound/respip/respip.c:1219,1
    - Dst: log_info
      Src: /src/unbound/respip/respip.c:1223,1
    - Dst: make_new_reply_info
      Src: /src/unbound/respip/respip.c:1233,1
    - Dst: respip_copy_rrset
      Src: /src/unbound/respip/respip.c:1239,1
    - Dst: FLAGS_SET_RCODE
      Src: /src/unbound/respip/respip.c:1244,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 10
    argNames:
    - base_rep
    - qinfo
    - tgt_rep
    - cinfo
    - must_validate
    - new_repp
    - region
    - az
    - views
    - respip_set
    argTypes:
    - struct reply_info*
    - struct query_info*
    - struct reply_info*
    - struct respip_client_info*
    - int
    - struct reply_info**
    - struct regional*
    - struct auth_zones*
    - struct views*
    - struct respip_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1247
      start: 1187
    functionDepth: 10
    functionLinenumber: 1187
    functionLinenumberEnd: 1247
    functionName: respip_merge_cname
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 2
    functionsReached:
    - FLAGS_GET_RCODE
    - log_info
    - respip_copy_rrset
    - respip_rewrite_reply
    - make_new_reply_info
    - FLAGS_SET_RCODE
    linkageType: ''
    returnType: int
    signature: "int respip_merge_cname(struct reply_info* base_rep,\n\tconst struct
      query_info* qinfo, const struct reply_info* tgt_rep,\n\tconst struct respip_client_info*
      cinfo, int must_validate,\n\tstruct reply_info** new_repp, struct regional*
      region,\n\tstruct auth_zones* az, struct views* views,\n\tstruct respip_set*
      respip_set)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/respip/respip.c:1261,1
    - Dst: respip_merge_cname
      Src: /src/unbound/respip/respip.c:1271,1
    - Dst: errinf
      Src: /src/unbound/respip/respip.c:1281,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 3
    argNames:
    - qstate
    - id
    - super
    argTypes:
    - struct module_qstate*
    - int
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1249
    functionDepth: 11
    functionLinenumber: 1249
    functionLinenumberEnd: 1285
    functionName: respip_inform_super
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached:
    - respip_merge_cname
    - log_assert
    - errinf
    linkageType: ''
    returnType: void
    signature: "void respip_inform_super(struct module_qstate* qstate, int id,\n\tstruct
      module_qstate* super)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1291
      start: 1287
    functionDepth: 0
    functionLinenumber: 1287
    functionLinenumberEnd: 1291
    functionName: respip_clear
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void respip_clear(struct module_qstate* qstate, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1299
      start: 1293
    functionDepth: 0
    functionLinenumber: 1293
    functionLinenumberEnd: 1299
    functionName: respip_get_mem
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t respip_get_mem(struct module_env* env, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1310
    functionDepth: 0
    functionLinenumber: 1310
    functionLinenumberEnd: 1314
    functionName: respip_get_funcblock
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct module_func_block
    signature: 'struct module_func_block *

      respip_get_funcblock(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct resp_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1320
      start: 1316
    functionDepth: 0
    functionLinenumber: 1316
    functionLinenumberEnd: 1320
    functionName: resp_addr_get_action
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum respip_action
    signature: enum respip_action resp_addr_get_action(const struct resp_addr* addr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct resp_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1326
      start: 1322
    functionDepth: 0
    functionLinenumber: 1322
    functionLinenumberEnd: 1326
    functionName: resp_addr_get_rrset
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: 'struct ub_packed_rrset_key *

      resp_addr_get_rrset(struct resp_addr* addr)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct respip_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1328
    functionDepth: 0
    functionLinenumber: 1328
    functionLinenumberEnd: 1332
    functionName: respip_set_is_empty
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int respip_set_is_empty(const struct respip_set* set)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/respip/respip.c:1348,1
    - Dst: ntohs
      Src: /src/unbound/respip/respip.c:1349,1
    - Dst: addr_to_str
      Src: /src/unbound/respip/respip.c:1350,1
    - Dst: addr_to_str
      Src: /src/unbound/respip/respip.c:1351,1
    - Dst: snprintf
      Src: /src/unbound/respip/respip.c:1354,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/respip/respip.c:1357,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/respip/respip.c:1360,1
    - Dst: respip_action_to_rpz_action
      Src: /src/unbound/respip/respip.c:1361,1
    - Dst: snprintf
      Src: /src/unbound/respip/respip.c:1365,1
    - Dst: snprintf
      Src: /src/unbound/respip/respip.c:1368,1
    - Dst: log_nametypeclass
      Src: /src/unbound/respip/respip.c:1371,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 7
    argNames:
    - respip_actinfo
    - qname
    - qtype
    - qclass
    - local_alias
    - addr
    - addrlen
    argTypes:
    - struct respip_action_info*
    - uint8_t*
    - uint16_t
    - uint16_t
    - struct local_rrset*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1372
      start: 1334
    functionDepth: 2
    functionLinenumber: 1334
    functionLinenumberEnd: 1372
    functionName: respip_inform_print
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 3
    functionsReached:
    - addr_to_str
    - log_nametypeclass
    - respip_action_to_rpz_action
    - snprintf
    - rpz_action_to_string
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void respip_inform_print(struct respip_action_info* respip_actinfo,
      uint8_t* qname,\n\tuint16_t qtype, uint16_t qclass, struct local_rrset* local_alias,\n\tstruct
      sockaddr_storage* addr, socklen_t addrlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/respip/respip.c:1379,1
    - Dst: regional_get_mem
      Src: /src/unbound/respip/respip.c:1380,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/respip/respip.c:1381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - set
    argTypes:
    - struct respip_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1383
      start: 1374
    functionDepth: 1
    functionLinenumber: 1374
    functionLinenumberEnd: 1383
    functionName: respip_set_get_mem
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 3
    functionsReached:
    - regional_get_mem
    - lock_rw_unlock
    - lock_rw_rdlock
    linkageType: ''
    returnType: size_t
    signature: size_t respip_set_get_mem(struct respip_set* set)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - respip_set
    - data
    argTypes:
    - struct respip_set*
    - struct respip_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1404
      start: 1385
    functionDepth: 0
    functionLinenumber: 1385
    functionLinenumberEnd: 1404
    functionName: respip_set_swap_tree
    functionSourceFile: /src/unbound/respip/respip.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void respip_set_swap_tree(struct respip_set* respip_set,\n\tstruct
      respip_set* data)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/testcode/replay.c:78,1
    - Dst: strncmp
      Src: /src/unbound/testcode/replay.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - line
    - keyword
    argTypes:
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 84
    functionName: parse_keyword
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - strncmp
    - strlen
    linkageType: ''
    returnType: int
    signature: int parse_keyword(char** line, const char* keyword)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: delete_entry
      Src: /src/unbound/testcode/replay.c:93,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:95,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:96,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:97,1
    - Dst: config_delstrlist
      Src: /src/unbound/testcode/replay.c:98,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:99,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - mom
    argTypes:
    - struct replay_moment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 100
    functionName: replay_moment_delete
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - free
    - config_delstrlist
    - delete_entry
    linkageType: ''
    returnType: void
    signature: void replay_moment_delete(struct replay_moment* mom)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: delete_entry
      Src: /src/unbound/testcode/replay.c:108,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:109,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rng
    argTypes:
    - struct replay_range*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 110
    functionName: replay_range_delete
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - free
    - delete_entry
    linkageType: ''
    returnType: void
    signature: void replay_range_delete(struct replay_range* rng)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/testcode/replay.c:116,1
    - Dst: isspace
      Src: /src/unbound/testcode/replay.c:117,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 121
    functionName: strip_end_white
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - isspace
    - strlen
    linkageType: ''
    returnType: void
    signature: void strip_end_white(char* p)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/testcode/replay.c:138,1
    - Dst: memset
      Src: /src/unbound/testcode/replay.c:145,1
    - Dst: sscanf
      Src: /src/unbound/testcode/replay.c:147,1
    - Dst: log_err
      Src: /src/unbound/testcode/replay.c:148,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:149,1
    - Dst: ftello
      Src: /src/unbound/testcode/replay.c:153,1
    - Dst: fgets
      Src: /src/unbound/testcode/replay.c:154,1
    - Dst: isspace
      Src: /src/unbound/testcode/replay.c:157,1
    - Dst: ftello
      Src: /src/unbound/testcode/replay.c:160,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:163,1
    - Dst: isspace
      Src: /src/unbound/testcode/replay.c:164,1
    - Dst: strip_end_white
      Src: /src/unbound/testcode/replay.c:166,1
    - Dst: extstrtoaddr
      Src: /src/unbound/testcode/replay.c:167,1
    - Dst: log_err
      Src: /src/unbound/testcode/replay.c:169,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:171,1
    - Dst: ftello
      Src: /src/unbound/testcode/replay.c:174,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:177,1
    - Dst: fseeko
      Src: /src/unbound/testcode/replay.c:182,1
    - Dst: read_entry
      Src: /src/unbound/testcode/replay.c:183,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:185,1
    - Dst: ftello
      Src: /src/unbound/testcode/replay.c:192,1
    - Dst: replay_range_delete
      Src: /src/unbound/testcode/replay.c:194,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 48
    argCount: 5
    argNames:
    - remain
    - in
    - name
    - pstate
    - line
    argTypes:
    - char*
    - FILE*
    - char*
    - struct sldns_file_parse_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 134
    functionDepth: 2
    functionLinenumber: 134
    functionLinenumberEnd: 196
    functionName: replay_range_read
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - log_err
    - read_entry
    - isspace
    - fgets
    - fseeko
    - extstrtoaddr
    - fatal_exit
    - malloc
    - free
    - strip_end_white
    - replay_range_delete
    - memset
    - sscanf
    - ftello
    - parse_keyword
    linkageType: ''
    returnType: struct replay_range
    signature: "struct replay_range *\nreplay_range_read(char* remain, FILE* in, const
      char* name,\n\tstruct sldns_file_parse_state* pstate, char* line)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fgets
      Src: /src/unbound/testcode/replay.c:206,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:207,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:208,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:209,1
    - Dst: fgets
      Src: /src/unbound/testcode/replay.c:210,1
    - Dst: strncmp
      Src: /src/unbound/testcode/replay.c:212,1
    - Dst: strip_end_white
      Src: /src/unbound/testcode/replay.c:215,1
    - Dst: cfg_strlist_insert
      Src: /src/unbound/testcode/replay.c:216,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:216,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:217,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:220,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 3
    argNames:
    - in
    - lineno
    - mom
    argTypes:
    - FILE*
    - int*
    - struct replay_moment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 221
    functionName: read_file_content
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - strncmp
    - cfg_strlist_insert
    - fatal_exit
    - strip_end_white
    - fgets
    - strdup
    - parse_keyword
    linkageType: ''
    returnType: void
    signature: void read_file_content(FILE* in, int* lineno, struct replay_moment*
      mom)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/unbound/testcode/replay.c:231,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:232,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:233,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:235,1
    - Dst: strip_end_white
      Src: /src/unbound/testcode/replay.c:237,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:238,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:240,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - remain
    - mom
    argTypes:
    - char*
    - struct replay_moment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 224
    functionDepth: 1
    functionLinenumber: 224
    functionLinenumberEnd: 241
    functionName: read_assign_step
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - strip_end_white
    - sscanf
    - strdup
    - fatal_exit
    linkageType: ''
    returnType: void
    signature: void read_assign_step(char* remain, struct replay_moment* mom)
  - BBCount: 37
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/testcode/replay.c:256,1
    - Dst: memset
      Src: /src/unbound/testcode/replay.c:262,1
    - Dst: sscanf
      Src: /src/unbound/testcode/replay.c:263,1
    - Dst: log_err
      Src: /src/unbound/testcode/replay.c:264,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:265,1
    - Dst: isspace
      Src: /src/unbound/testcode/replay.c:269,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:271,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:273,1
    - Dst: extstrtoaddr
      Src: /src/unbound/testcode/replay.c:276,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:278,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:279,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:282,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:285,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:288,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:290,1
    - Dst: isspace
      Src: /src/unbound/testcode/replay.c:292,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:294,1
    - Dst: isspace
      Src: /src/unbound/testcode/replay.c:295,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:297,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:298,1
    - Dst: strlen
      Src: /src/unbound/testcode/replay.c:299,1
    - Dst: strlen
      Src: /src/unbound/testcode/replay.c:300,1
    - Dst: strlen
      Src: /src/unbound/testcode/replay.c:301,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:303,1
    - Dst: isspace
      Src: /src/unbound/testcode/replay.c:305,1
    - Dst: strip_end_white
      Src: /src/unbound/testcode/replay.c:307,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:308,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:309,1
    - Dst: read_file_content
      Src: /src/unbound/testcode/replay.c:310,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:311,1
    - Dst: isspace
      Src: /src/unbound/testcode/replay.c:313,1
    - Dst: strip_end_white
      Src: /src/unbound/testcode/replay.c:315,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:316,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:317,1
    - Dst: read_file_content
      Src: /src/unbound/testcode/replay.c:318,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:319,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:321,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:323,1
    - Dst: read_assign_step
      Src: /src/unbound/testcode/replay.c:325,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:326,1
    - Dst: isspace
      Src: /src/unbound/testcode/replay.c:329,1
    - Dst: strchr
      Src: /src/unbound/testcode/replay.c:332,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:333,1
    - Dst: isspace
      Src: /src/unbound/testcode/replay.c:336,1
    - Dst: strchr
      Src: /src/unbound/testcode/replay.c:338,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:339,1
    - Dst: isspace
      Src: /src/unbound/testcode/replay.c:342,1
    - Dst: extstrtoaddr
      Src: /src/unbound/testcode/replay.c:344,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:345,1
    - Dst: strip_end_white
      Src: /src/unbound/testcode/replay.c:346,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:347,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:348,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:349,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:350,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:351,1
    - Dst: isspace
      Src: /src/unbound/testcode/replay.c:353,1
    - Dst: strip_end_white
      Src: /src/unbound/testcode/replay.c:355,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:356,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:357,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:358,1
    - Dst: isspace
      Src: /src/unbound/testcode/replay.c:360,1
    - Dst: strip_end_white
      Src: /src/unbound/testcode/replay.c:362,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:363,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:364,1
    - Dst: log_err
      Src: /src/unbound/testcode/replay.c:366,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:367,1
    - Dst: isspace
      Src: /src/unbound/testcode/replay.c:370,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:372,1
    - Dst: isspace
      Src: /src/unbound/testcode/replay.c:373,1
    - Dst: strip_end_white
      Src: /src/unbound/testcode/replay.c:375,1
    - Dst: extstrtoaddr
      Src: /src/unbound/testcode/replay.c:376,1
    - Dst: log_err
      Src: /src/unbound/testcode/replay.c:378,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:380,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:384,1
    - Dst: strtod
      Src: /src/unbound/testcode/replay.c:387,1
    - Dst: log_err
      Src: /src/unbound/testcode/replay.c:389,1
    - Dst: strerror
      Src: /src/unbound/testcode/replay.c:390,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:391,1
    - Dst: read_entry
      Src: /src/unbound/testcode/replay.c:402,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:404,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 163
    argCount: 4
    argNames:
    - remain
    - in
    - name
    - pstate
    argTypes:
    - char*
    - FILE*
    - char*
    - struct sldns_file_parse_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 410
    functionName: replay_moment_read
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - log_err
    - read_entry
    - isspace
    - extstrtoaddr
    - fatal_exit
    - malloc
    - free
    - strip_end_white
    - strtod
    - strerror
    - strlen
    - read_assign_step
    - strchr
    - memset
    - sscanf
    - read_file_content
    - strdup
    - parse_keyword
    linkageType: ''
    returnType: struct replay_moment
    signature: "struct replay_moment *\nreplay_moment_read(char* remain, FILE* in,
      const char* name,\n\tstruct sldns_file_parse_state* pstate)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/testcode/replay.c:417,1
    - Dst: log_err
      Src: /src/unbound/testcode/replay.c:420,1
    - Dst: malloc
      Src: /src/unbound/testcode/replay.c:423,1
    - Dst: memset
      Src: /src/unbound/testcode/replay.c:426,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:427,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:429,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 1
    argNames:
    - line
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 433
    functionName: make_scenario
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - log_err
    - isspace
    - malloc
    - free
    - memset
    - strdup
    linkageType: ''
    returnType: struct replay_scenario
    signature: 'struct replay_scenario *

      make_scenario(char* line)'
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/replay.c:443,1
    - Dst: fgets
      Src: /src/unbound/testcode/replay.c:447,1
    - Dst: isspace
      Src: /src/unbound/testcode/replay.c:451,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:455,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:457,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:459,1
    - Dst: make_scenario
      Src: /src/unbound/testcode/replay.c:460,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:462,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:466,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:467,1
    - Dst: replay_range_read
      Src: /src/unbound/testcode/replay.c:468,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:471,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:475,1
    - Dst: replay_moment_read
      Src: /src/unbound/testcode/replay.c:476,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:479,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:483,1
    - Dst: parse_keyword
      Src: /src/unbound/testcode/replay.c:488,1
    - Dst: log_info
      Src: /src/unbound/testcode/replay.c:495,1
    - Dst: log_err
      Src: /src/unbound/testcode/replay.c:499,1
    - Dst: replay_scenario_delete
      Src: /src/unbound/testcode/replay.c:500,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 55
    argCount: 3
    argNames:
    - in
    - name
    - lineno
    argTypes:
    - FILE*
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 502
      start: 435
    functionDepth: 3
    functionLinenumber: 435
    functionLinenumberEnd: 502
    functionName: replay_scenario_read
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - replay_moment_read
    - log_err
    - isspace
    - replay_scenario_delete
    - fgets
    - make_scenario
    - log_info
    - fatal_exit
    - memset
    - replay_range_read
    - parse_keyword
    linkageType: ''
    returnType: struct replay_scenario
    signature: 'struct replay_scenario *

      replay_scenario_read(FILE* in, const char* name, int* lineno)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/testcode/replay.c:511,1
    - Dst: replay_moment_delete
      Src: /src/unbound/testcode/replay.c:515,1
    - Dst: replay_range_delete
      Src: /src/unbound/testcode/replay.c:521,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:524,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - scen
    argTypes:
    - struct replay_scenario*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 504
    functionDepth: 2
    functionLinenumber: 504
    functionLinenumberEnd: 525
    functionName: replay_scenario_delete
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 1
    functionsReached:
    - free
    - replay_moment_delete
    - replay_range_delete
    linkageType: ''
    returnType: void
    signature: void replay_scenario_delete(struct replay_scenario* scen)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: timeval_smaller
      Src: /src/unbound/testcode/replay.c:537,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - runtime
    argTypes:
    - struct replay_runtime*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 541
    functionName: first_timer
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - timeval_smaller
    linkageType: ''
    returnType: struct fake_timer
    signature: 'struct fake_timer *

      first_timer(struct replay_runtime* runtime)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: first_timer
      Src: /src/unbound/testcode/replay.c:546,1
    - Dst: timeval_smaller
      Src: /src/unbound/testcode/replay.c:547,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - runtime
    argTypes:
    - struct replay_runtime*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 543
    functionDepth: 2
    functionLinenumber: 543
    functionLinenumberEnd: 550
    functionName: replay_get_oldest_timer
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - first_timer
    - timeval_smaller
    linkageType: ''
    returnType: struct fake_timer
    signature: 'struct fake_timer *

      replay_get_oldest_timer(struct replay_runtime* runtime)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:557,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 558
    functionName: replay_var_compare
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int replay_var_compare(const void* a, const void* b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_create
      Src: /src/unbound/testcode/replay.c:563,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 560
    functionDepth: 1
    functionLinenumber: 560
    functionLinenumberEnd: 564
    functionName: macro_store_create
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - rbtree_create
    linkageType: ''
    returnType: rbtree_type
    signature: 'rbtree_type *

      macro_store_create(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/testcode/replay.c:571,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:572,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - x
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 567
    functionDepth: 1
    functionLinenumber: 567
    functionLinenumberEnd: 574
    functionName: del_macro
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void del_macro(rbnode_type* x, void* ATTR_UNUSED(arg))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: traverse_postorder
      Src: /src/unbound/testcode/replay.c:581,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:582,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - store
    argTypes:
    - rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 576
    functionDepth: 1
    functionLinenumber: 576
    functionLinenumberEnd: 583
    functionName: macro_store_delete
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - free
    - traverse_postorder
    linkageType: ''
    returnType: void
    signature: void macro_store_delete(rbtree_type* store)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - text
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 586
    functionDepth: 0
    functionLinenumber: 586
    functionLinenumberEnd: 604
    functionName: macro_length
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t macro_length(char* text)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:610,1
    - Dst: strlen
      Src: /src/unbound/testcode/replay.c:613,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:614,1
    - Dst: strlcpy
      Src: /src/unbound/testcode/replay.c:617,1
    - Dst: strlcpy
      Src: /src/unbound/testcode/replay.c:620,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:621,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - buf
    - remain
    - after
    - inserted
    argTypes:
    - char*
    - size_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 623
      start: 607
    functionDepth: 1
    functionLinenumber: 607
    functionLinenumberEnd: 623
    functionName: do_buf_insert
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - free
    - strlcpy
    - strdup
    - strlen
    linkageType: ''
    returnType: int
    signature: int do_buf_insert(char* buf, size_t remain, char* after, char* inserted)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: macro_expand
      Src: /src/unbound/testcode/replay.c:631,1
    - Dst: do_buf_insert
      Src: /src/unbound/testcode/replay.c:634,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:635,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:638,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - store
    - runtime
    - at
    - remain
    argTypes:
    - rbtree_type*
    - struct replay_runtime*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 640
      start: 626
    functionDepth: 2
    functionLinenumber: 626
    functionLinenumberEnd: 640
    functionName: do_macro_recursion
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - free
    - macro_expand
    - do_buf_insert
    linkageType: ''
    returnType: char
    signature: "char *\ndo_macro_recursion(rbtree_type* store, struct replay_runtime*
      runtime,\n\tchar* at, size_t remain)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_search
      Src: /src/unbound/testcode/replay.c:649,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - store
    - name
    argTypes:
    - rbtree_type*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 650
      start: 643
    functionDepth: 1
    functionLinenumber: 643
    functionLinenumberEnd: 650
    functionName: macro_getvar
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - rbtree_search
    linkageType: ''
    returnType: struct replay_var
    signature: 'struct replay_var *

      macro_getvar(rbtree_type* store, char* name)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isalnum
      Src: /src/unbound/testcode/replay.c:662,1
    - Dst: macro_getvar
      Src: /src/unbound/testcode/replay.c:668,1
    - Dst: log_err
      Src: /src/unbound/testcode/replay.c:672,1
    - Dst: do_buf_insert
      Src: /src/unbound/testcode/replay.c:677,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - store
    - buf
    - remain
    argTypes:
    - rbtree_type*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 653
    functionDepth: 2
    functionLinenumber: 653
    functionLinenumberEnd: 680
    functionName: do_macro_variable
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - isalnum
    - macro_getvar
    - do_buf_insert
    - log_err
    linkageType: ''
    returnType: char
    signature: 'char *

      do_macro_variable(rbtree_type* store, char* buf, size_t remain)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/unbound/testcode/replay.c:687,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:688,1
    - Dst: log_err
      Src: /src/unbound/testcode/replay.c:689,1
    - Dst: ctime_r
      Src: /src/unbound/testcode/replay.c:692,1
    - Dst: strlen
      Src: /src/unbound/testcode/replay.c:694,1
    - Dst: strip_end_white
      Src: /src/unbound/testcode/replay.c:697,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:698,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 1
    argNames:
    - arg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 683
    functionDepth: 1
    functionLinenumber: 683
    functionLinenumberEnd: 699
    functionName: do_macro_ctime
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - log_err
    - strcmp
    - ctime_r
    - atoi
    - strip_end_white
    - strlen
    - strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      do_macro_ctime(char* arg)'
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 19
    argCount: 4
    argNames:
    - x
    - op
    - y
    - res
    argTypes:
    - double
    - char
    - double
    - double*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 724
      start: 702
    functionDepth: 0
    functionLinenumber: 702
    functionLinenumberEnd: 724
    functionName: perform_arith
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: double
    signature: double perform_arith(double x, char op, double y, double* res)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/unbound/testcode/replay.c:740,1
    - Dst: sscanf
      Src: /src/unbound/testcode/replay.c:749,1
    - Dst: do_macro_arith
      Src: /src/unbound/testcode/replay.c:751,1
    - Dst: isdigit
      Src: /src/unbound/testcode/replay.c:753,1
    - Dst: perform_arith
      Src: /src/unbound/testcode/replay.c:759,1
    - Dst: log_err
      Src: /src/unbound/testcode/replay.c:760,1
    - Dst: snprintf
      Src: /src/unbound/testcode/replay.c:765,1
    - Dst: do_buf_insert
      Src: /src/unbound/testcode/replay.c:766,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 3
    argNames:
    - orig
    - remain
    - arithstart
    argTypes:
    - char*
    - size_t
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 727
    functionDepth: 2
    functionLinenumber: 727
    functionLinenumberEnd: 772
    functionName: do_macro_arith
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 1
    functionsReached:
    - log_err
    - snprintf
    - isdigit
    - do_buf_insert
    - perform_arith
    - sscanf
    - do_macro_arith
    linkageType: ''
    returnType: char
    signature: 'char *

      do_macro_arith(char* orig, size_t remain, char** arithstart)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/unbound/testcode/replay.c:779,1
    - Dst: log_err
      Src: /src/unbound/testcode/replay.c:780,1
    - Dst: snprintf
      Src: /src/unbound/testcode/replay.c:785,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:786,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/replay.c:788,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - buf
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 775
    functionDepth: 2
    functionLinenumber: 775
    functionLinenumberEnd: 790
    functionName: do_macro_range
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - log_err
    - snprintf
    - fatal_exit
    - sscanf
    - strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      do_macro_range(char* buf)'
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: macro_length
      Src: /src/unbound/testcode/replay.c:797,1
    - Dst: strlcpy
      Src: /src/unbound/testcode/replay.c:803,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:807,1
    - Dst: snprintf
      Src: /src/unbound/testcode/replay.c:809,1
    - Dst: snprintf
      Src: /src/unbound/testcode/replay.c:811,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:813,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:814,1
    - Dst: first_timer
      Src: /src/unbound/testcode/replay.c:817,1
    - Dst: snprintf
      Src: /src/unbound/testcode/replay.c:821,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:823,1
    - Dst: strncmp
      Src: /src/unbound/testcode/replay.c:824,1
    - Dst: strncmp
      Src: /src/unbound/testcode/replay.c:825,1
    - Dst: strncmp
      Src: /src/unbound/testcode/replay.c:828,1
    - Dst: strncmp
      Src: /src/unbound/testcode/replay.c:829,1
    - Dst: strlen
      Src: /src/unbound/testcode/replay.c:836,1
    - Dst: strncmp
      Src: /src/unbound/testcode/replay.c:839,1
    - Dst: do_macro_recursion
      Src: /src/unbound/testcode/replay.c:840,1
    - Dst: do_macro_variable
      Src: /src/unbound/testcode/replay.c:842,1
    - Dst: isdigit
      Src: /src/unbound/testcode/replay.c:843,1
    - Dst: do_macro_arith
      Src: /src/unbound/testcode/replay.c:844,1
    - Dst: isalnum
      Src: /src/unbound/testcode/replay.c:847,1
    - Dst: isalnum
      Src: /src/unbound/testcode/replay.c:849,1
    - Dst: strncmp
      Src: /src/unbound/testcode/replay.c:858,1
    - Dst: do_macro_ctime
      Src: /src/unbound/testcode/replay.c:859,1
    - Dst: strncmp
      Src: /src/unbound/testcode/replay.c:860,1
    - Dst: do_macro_range
      Src: /src/unbound/testcode/replay.c:861,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:864,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 62
    argCount: 3
    argNames:
    - store
    - runtime
    - text
    argTypes:
    - rbtree_type*
    - struct replay_runtime*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 865
      start: 792
    functionDepth: 3
    functionLinenumber: 792
    functionLinenumberEnd: 865
    functionName: macro_expand
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - macro_length
    - strcmp
    - strncmp
    - do_macro_range
    - snprintf
    - first_timer
    - do_macro_recursion
    - do_macro_variable
    - isdigit
    - isalnum
    - strlen
    - do_macro_ctime
    - strdup
    - do_macro_arith
    linkageType: ''
    returnType: char
    signature: 'char *

      macro_expand(rbtree_type* store, struct replay_runtime* runtime, char** text)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/unbound/testcode/replay.c:873,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:874,1
    - Dst: strstr
      Src: /src/unbound/testcode/replay.c:877,1
    - Dst: strlen
      Src: /src/unbound/testcode/replay.c:879,1
    - Dst: strlcpy
      Src: /src/unbound/testcode/replay.c:881,1
    - Dst: strlen
      Src: /src/unbound/testcode/replay.c:881,1
    - Dst: macro_expand
      Src: /src/unbound/testcode/replay.c:884,1
    - Dst: strlcpy
      Src: /src/unbound/testcode/replay.c:886,1
    - Dst: strlen
      Src: /src/unbound/testcode/replay.c:886,1
    - Dst: strlen
      Src: /src/unbound/testcode/replay.c:886,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:887,1
    - Dst: strlcpy
      Src: /src/unbound/testcode/replay.c:891,1
    - Dst: strlen
      Src: /src/unbound/testcode/replay.c:891,1
    - Dst: strlen
      Src: /src/unbound/testcode/replay.c:891,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:892,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - store
    - runtime
    - text
    argTypes:
    - rbtree_type*
    - struct replay_runtime*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 893
      start: 867
    functionDepth: 4
    functionLinenumber: 867
    functionLinenumberEnd: 893
    functionName: macro_process
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - strdup
    - macro_expand
    - free
    - strlen
    - strstr
    linkageType: ''
    returnType: char
    signature: 'char *

      macro_process(rbtree_type* store, struct replay_runtime* runtime, char* text)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: macro_getvar
      Src: /src/unbound/testcode/replay.c:898,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:899,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:900,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - store
    - name
    argTypes:
    - rbtree_type*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 901
      start: 895
    functionDepth: 2
    functionLinenumber: 895
    functionLinenumberEnd: 901
    functionName: macro_lookup
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - macro_getvar
    - strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      macro_lookup(rbtree_type* store, char* name)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/testcode/replay.c:907,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - store
    argTypes:
    - rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 909
      start: 903
    functionDepth: 1
    functionLinenumber: 903
    functionLinenumberEnd: 909
    functionName: macro_print_debug
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - log_info
    linkageType: ''
    returnType: void
    signature: void macro_print_debug(rbtree_type* store)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/testcode/replay.c:907,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 908
      start: 906
    functionDepth: 1
    functionLinenumber: 906
    functionLinenumberEnd: 908
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - log_info
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(x, struct replay_var*, store)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: macro_getvar
      Src: /src/unbound/testcode/replay.c:914,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:916,1
    - Dst: malloc
      Src: /src/unbound/testcode/replay.c:918,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:921,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:923,1
    - Dst: rbtree_insert
      Src: /src/unbound/testcode/replay.c:926,1
    - Dst: strdup
      Src: /src/unbound/testcode/replay.c:928,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - store
    - name
    - value
    argTypes:
    - rbtree_type*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 911
    functionDepth: 2
    functionLinenumber: 911
    functionLinenumberEnd: 930
    functionName: macro_assign
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - macro_getvar
    - malloc
    - free
    - rbtree_insert
    - strdup
    linkageType: ''
    returnType: int
    signature: int macro_assign(rbtree_type* store, char* name, char* value)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 938
      start: 933
    functionDepth: 0
    functionLinenumber: 933
    functionLinenumberEnd: 938
    functionName: tb_assert
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: tb_assert(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: macro_store_create
      Src: /src/unbound/testcode/replay.c:942,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:946,1
    - Dst: macro_lookup
      Src: /src/unbound/testcode/replay.c:948,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:949,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:949,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:950,1
    - Dst: macro_lookup
      Src: /src/unbound/testcode/replay.c:952,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:953,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:953,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:954,1
    - Dst: macro_assign
      Src: /src/unbound/testcode/replay.c:956,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:957,1
    - Dst: macro_lookup
      Src: /src/unbound/testcode/replay.c:959,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:960,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:960,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:961,1
    - Dst: macro_lookup
      Src: /src/unbound/testcode/replay.c:963,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:964,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:964,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:965,1
    - Dst: macro_assign
      Src: /src/unbound/testcode/replay.c:967,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:968,1
    - Dst: macro_lookup
      Src: /src/unbound/testcode/replay.c:970,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:971,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:971,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:972,1
    - Dst: macro_lookup
      Src: /src/unbound/testcode/replay.c:974,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:975,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:975,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:976,1
    - Dst: macro_assign
      Src: /src/unbound/testcode/replay.c:978,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:979,1
    - Dst: macro_lookup
      Src: /src/unbound/testcode/replay.c:981,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:982,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:982,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:983,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:985,1
    - Dst: macro_length
      Src: /src/unbound/testcode/replay.c:985,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:986,1
    - Dst: macro_length
      Src: /src/unbound/testcode/replay.c:986,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:987,1
    - Dst: macro_length
      Src: /src/unbound/testcode/replay.c:987,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:988,1
    - Dst: macro_length
      Src: /src/unbound/testcode/replay.c:988,1
    - Dst: macro_process
      Src: /src/unbound/testcode/replay.c:990,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:991,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:991,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:992,1
    - Dst: macro_process
      Src: /src/unbound/testcode/replay.c:994,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:995,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:995,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:996,1
    - Dst: macro_process
      Src: /src/unbound/testcode/replay.c:998,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:999,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:999,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:1000,1
    - Dst: macro_process
      Src: /src/unbound/testcode/replay.c:1002,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:1003,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:1003,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:1004,1
    - Dst: macro_process
      Src: /src/unbound/testcode/replay.c:1006,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:1007,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:1007,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:1008,1
    - Dst: macro_assign
      Src: /src/unbound/testcode/replay.c:1010,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:1011,1
    - Dst: macro_process
      Src: /src/unbound/testcode/replay.c:1012,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:1013,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:1013,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:1014,1
    - Dst: macro_process
      Src: /src/unbound/testcode/replay.c:1016,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:1017,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:1017,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:1018,1
    - Dst: macro_assign
      Src: /src/unbound/testcode/replay.c:1020,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:1021,1
    - Dst: macro_assign
      Src: /src/unbound/testcode/replay.c:1022,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:1023,1
    - Dst: macro_process
      Src: /src/unbound/testcode/replay.c:1024,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:1025,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:1025,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:1026,1
    - Dst: macro_process
      Src: /src/unbound/testcode/replay.c:1027,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:1028,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:1028,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:1029,1
    - Dst: macro_process
      Src: /src/unbound/testcode/replay.c:1030,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:1031,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:1031,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:1032,1
    - Dst: macro_process
      Src: /src/unbound/testcode/replay.c:1033,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:1034,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:1034,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:1035,1
    - Dst: macro_process
      Src: /src/unbound/testcode/replay.c:1037,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:1038,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:1038,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:1039,1
    - Dst: macro_process
      Src: /src/unbound/testcode/replay.c:1041,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:1042,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:1042,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:1043,1
    - Dst: macro_process
      Src: /src/unbound/testcode/replay.c:1045,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:1046,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:1046,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:1047,1
    - Dst: macro_process
      Src: /src/unbound/testcode/replay.c:1049,1
    - Dst: tb_assert
      Src: /src/unbound/testcode/replay.c:1050,1
    - Dst: strcmp
      Src: /src/unbound/testcode/replay.c:1050,1
    - Dst: free
      Src: /src/unbound/testcode/replay.c:1051,1
    - Dst: macro_store_delete
      Src: /src/unbound/testcode/replay.c:1053,1
    - Dst: printf
      Src: /src/unbound/testcode/replay.c:1054,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 86
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1055
      start: 939
    functionDepth: 5
    functionLinenumber: 939
    functionLinenumberEnd: 1055
    functionName: testbound_selftest
    functionSourceFile: /src/unbound/testcode/replay.c
    functionUses: 0
    functionsReached:
    - macro_length
    - strcmp
    - macro_lookup
    - printf
    - free
    - macro_store_delete
    - macro_store_create
    - macro_assign
    - tb_assert
    - macro_process
    linkageType: ''
    returnType: void
    signature: void testbound_selftest(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: unittest_wrapper_addrtree_issub
      Src: /src/unbound/testcode/unitecs.c:110,1
    - Dst: addrtree_inconsistent_subtree
      Src: /src/unbound/testcode/unitecs.c:113,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    argCount: 3
    argNames:
    - tree
    - parent_edge
    - depth
    argTypes:
    - struct addrtree*
    - struct addredge*
    - addrlen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 94
    functionDepth: 4
    functionLinenumber: 94
    functionLinenumberEnd: 117
    functionName: addrtree_inconsistent_subtree
    functionSourceFile: /src/unbound/testcode/unitecs.c
    functionUses: 1
    functionsReached:
    - unittest_wrapper_addrtree_issub
    - addrtree_inconsistent_subtree
    linkageType: ''
    returnType: int
    signature: "int addrtree_inconsistent_subtree(struct addrtree* tree, \n\tstruct
      addredge* parent_edge, addrlen_t depth)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: addrtree_inconsistent_subtree
      Src: /src/unbound/testcode/unitecs.c:132,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - tree
    argTypes:
    - struct addrtree*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 119
    functionDepth: 5
    functionLinenumber: 119
    functionLinenumberEnd: 136
    functionName: addrtree_inconsistent
    functionSourceFile: /src/unbound/testcode/unitecs.c
    functionUses: 0
    functionsReached:
    - addrtree_inconsistent_subtree
    linkageType: ''
    returnType: int
    signature: int addrtree_inconsistent(struct addrtree* tree)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rand
      Src: /src/unbound/testcode/unitecs.c:141,1
    - Dst: malloc
      Src: /src/unbound/testcode/unitecs.c:143,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitecs.c:144,1
    - Dst: rand
      Src: /src/unbound/testcode/unitecs.c:146,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - k
    - maxlen
    argTypes:
    - addrkey_t**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 149
    functionName: randomkey
    functionSourceFile: /src/unbound/testcode/unitecs.c
    functionUses: 0
    functionsReached:
    - malloc
    - rand
    - fatal_exit
    linkageType: ''
    returnType: addrlen_t
    signature: addrlen_t randomkey(addrkey_t **k, int maxlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/testcode/unitecs.c:155,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - envptr
    - elemptr
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 156
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 156
    functionName: elemfree
    functionSourceFile: /src/unbound/testcode/unitecs.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void elemfree(void *envptr, void *elemptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitecs.c:168,1
    - Dst: srand
      Src: /src/unbound/testcode/unitecs.c:169,1
    - Dst: addrtree_create
      Src: /src/unbound/testcode/unitecs.c:171,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:173,1
    - Dst: randomkey
      Src: /src/unbound/testcode/unitecs.c:175,1
    - Dst: calloc
      Src: /src/unbound/testcode/unitecs.c:176,1
    - Dst: addrtree_insert
      Src: /src/unbound/testcode/unitecs.c:177,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:180,1
    - Dst: free
      Src: /src/unbound/testcode/unitecs.c:182,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:183,1
    - Dst: addrtree_inconsistent
      Src: /src/unbound/testcode/unitecs.c:183,1
    - Dst: addrtree_delete
      Src: /src/unbound/testcode/unitecs.c:185,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitecs.c:187,1
    - Dst: addrtree_create
      Src: /src/unbound/testcode/unitecs.c:188,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:189,1
    - Dst: randomkey
      Src: /src/unbound/testcode/unitecs.c:191,1
    - Dst: calloc
      Src: /src/unbound/testcode/unitecs.c:192,1
    - Dst: addrtree_insert
      Src: /src/unbound/testcode/unitecs.c:193,1
    - Dst: free
      Src: /src/unbound/testcode/unitecs.c:194,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:195,1
    - Dst: addrtree_inconsistent
      Src: /src/unbound/testcode/unitecs.c:195,1
    - Dst: addrtree_delete
      Src: /src/unbound/testcode/unitecs.c:197,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitecs.c:199,1
    - Dst: addrtree_create
      Src: /src/unbound/testcode/unitecs.c:200,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:201,1
    - Dst: randomkey
      Src: /src/unbound/testcode/unitecs.c:203,1
    - Dst: calloc
      Src: /src/unbound/testcode/unitecs.c:204,1
    - Dst: addrtree_insert
      Src: /src/unbound/testcode/unitecs.c:205,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:206,1
    - Dst: free
      Src: /src/unbound/testcode/unitecs.c:207,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:208,1
    - Dst: addrtree_inconsistent
      Src: /src/unbound/testcode/unitecs.c:208,1
    - Dst: addrtree_delete
      Src: /src/unbound/testcode/unitecs.c:210,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 158
    functionDepth: 6
    functionLinenumber: 158
    functionLinenumberEnd: 211
    functionName: consistency_test
    functionSourceFile: /src/unbound/testcode/unitecs.c
    functionUses: 0
    functionsReached:
    - randomkey
    - addrtree_inconsistent
    - addrtree_create
    - addrtree_insert
    - addrtree_delete
    - srand
    - unit_show_func
    - free
    - calloc
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void consistency_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitecs.c:217,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:218,1
    - Dst: unittest_wrapper_addrtree_issub
      Src: /src/unbound/testcode/unitecs.c:218,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:219,1
    - Dst: unittest_wrapper_addrtree_issub
      Src: /src/unbound/testcode/unitecs.c:219,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:220,1
    - Dst: unittest_wrapper_addrtree_issub
      Src: /src/unbound/testcode/unitecs.c:220,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:221,1
    - Dst: unittest_wrapper_addrtree_issub
      Src: /src/unbound/testcode/unitecs.c:221,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:222,1
    - Dst: unittest_wrapper_addrtree_issub
      Src: /src/unbound/testcode/unitecs.c:222,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:223,1
    - Dst: unittest_wrapper_addrtree_issub
      Src: /src/unbound/testcode/unitecs.c:223,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:224,1
    - Dst: unittest_wrapper_addrtree_issub
      Src: /src/unbound/testcode/unitecs.c:224,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:225,1
    - Dst: unittest_wrapper_addrtree_issub
      Src: /src/unbound/testcode/unitecs.c:225,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:226,1
    - Dst: unittest_wrapper_addrtree_issub
      Src: /src/unbound/testcode/unitecs.c:226,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 213
    functionDepth: 4
    functionLinenumber: 213
    functionLinenumberEnd: 227
    functionName: issub_test
    functionSourceFile: /src/unbound/testcode/unitecs.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - unittest_wrapper_addrtree_issub
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void issub_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitecs.c:233,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:235,1
    - Dst: unittest_wrapper_addrtree_getbit
      Src: /src/unbound/testcode/unitecs.c:235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 229
    functionDepth: 3
    functionLinenumber: 229
    functionLinenumberEnd: 237
    functionName: getbit_test
    functionSourceFile: /src/unbound/testcode/unitecs.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - unittest_wrapper_addrtree_getbit
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void getbit_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitecs.c:245,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:247,1
    - Dst: unittest_wrapper_addrtree_bits_common
      Src: /src/unbound/testcode/unitecs.c:247,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:252,1
    - Dst: unittest_wrapper_addrtree_bits_common
      Src: /src/unbound/testcode/unitecs.c:252,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:253,1
    - Dst: unittest_wrapper_addrtree_bits_common
      Src: /src/unbound/testcode/unitecs.c:253,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:254,1
    - Dst: unittest_wrapper_addrtree_bits_common
      Src: /src/unbound/testcode/unitecs.c:254,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:255,1
    - Dst: unittest_wrapper_addrtree_bits_common
      Src: /src/unbound/testcode/unitecs.c:255,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:256,1
    - Dst: unittest_wrapper_addrtree_bits_common
      Src: /src/unbound/testcode/unitecs.c:256,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:257,1
    - Dst: unittest_wrapper_addrtree_bits_common
      Src: /src/unbound/testcode/unitecs.c:257,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:258,1
    - Dst: unittest_wrapper_addrtree_bits_common
      Src: /src/unbound/testcode/unitecs.c:258,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:259,1
    - Dst: unittest_wrapper_addrtree_bits_common
      Src: /src/unbound/testcode/unitecs.c:259,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 239
    functionDepth: 3
    functionLinenumber: 239
    functionLinenumberEnd: 260
    functionName: bits_common_test
    functionSourceFile: /src/unbound/testcode/unitecs.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - unit_assert
    - unittest_wrapper_addrtree_bits_common
    linkageType: ''
    returnType: void
    signature: void bits_common_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitecs.c:268,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:270,1
    - Dst: unittest_wrapper_addrtree_cmpbit
      Src: /src/unbound/testcode/unitecs.c:270,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitecs.c:271,1
    - Dst: unittest_wrapper_addrtree_cmpbit
      Src: /src/unbound/testcode/unitecs.c:271,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 262
    functionDepth: 2
    functionLinenumber: 262
    functionLinenumberEnd: 273
    functionName: cmpbit_test
    functionSourceFile: /src/unbound/testcode/unitecs.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - unittest_wrapper_addrtree_cmpbit
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void cmpbit_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitecs.c:277,1
    - Dst: cmpbit_test
      Src: /src/unbound/testcode/unitecs.c:278,1
    - Dst: bits_common_test
      Src: /src/unbound/testcode/unitecs.c:279,1
    - Dst: getbit_test
      Src: /src/unbound/testcode/unitecs.c:280,1
    - Dst: issub_test
      Src: /src/unbound/testcode/unitecs.c:281,1
    - Dst: consistency_test
      Src: /src/unbound/testcode/unitecs.c:282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 275
    functionDepth: 7
    functionLinenumber: 275
    functionLinenumberEnd: 283
    functionName: ecs_test
    functionSourceFile: /src/unbound/testcode/unitecs.c
    functionUses: 0
    functionsReached:
    - consistency_test
    - getbit_test
    - unit_show_feature
    - bits_common_test
    - cmpbit_test
    - issub_test
    linkageType: ''
    returnType: void
    signature: void ecs_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reuse_tcp_select_id
      Src: /src/unbound/testcode/unittcpreuse.c:57,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:58,1
    - Dst: reuse_tcp_by_id_find
      Src: /src/unbound/testcode/unittcpreuse.c:58,1
    - Dst: calloc
      Src: /src/unbound/testcode/unittcpreuse.c:59,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:60,1
    - Dst: reuse_tree_by_id_insert
      Src: /src/unbound/testcode/unittcpreuse.c:64,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - reuse
    - outnet
    - addnum
    argTypes:
    - struct reuse_tcp*
    - struct outside_network*
    - unsigned int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 51
    functionDepth: 3
    functionLinenumber: 51
    functionLinenumberEnd: 66
    functionName: tcpid_addmore
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - reuse_tcp_select_id
    - reuse_tcp_by_id_find
    - calloc
    - reuse_tree_by_id_insert
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void tcpid_addmore(struct reuse_tcp* reuse,\n\tstruct outside_network*
      outnet, unsigned int addnum)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_init
      Src: /src/unbound/testcode/unittcpreuse.c:74,1
    - Dst: tcpid_addmore
      Src: /src/unbound/testcode/unittcpreuse.c:75,1
    - Dst: reuse_del_readwait
      Src: /src/unbound/testcode/unittcpreuse.c:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - reuse
    - outnet
    argTypes:
    - struct reuse_tcp*
    - struct outside_network*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 69
    functionDepth: 4
    functionLinenumber: 69
    functionLinenumberEnd: 78
    functionName: tcpid_fillup
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - rbtree_init
    - reuse_del_readwait
    - tcpid_addmore
    linkageType: ''
    returnType: void
    signature: "void tcpid_fillup(struct reuse_tcp* reuse,\n\tstruct outside_network*
      outnet)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unittcpreuse.c:85,1
    - Dst: memset
      Src: /src/unbound/testcode/unittcpreuse.c:86,1
    - Dst: memset
      Src: /src/unbound/testcode/unittcpreuse.c:88,1
    - Dst: ub_initstate
      Src: /src/unbound/testcode/unittcpreuse.c:89,1
    - Dst: rbtree_init
      Src: /src/unbound/testcode/unittcpreuse.c:90,1
    - Dst: tcpid_fillup
      Src: /src/unbound/testcode/unittcpreuse.c:91,1
    - Dst: ub_randfree
      Src: /src/unbound/testcode/unittcpreuse.c:92,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 81
    functionDepth: 5
    functionLinenumber: 81
    functionLinenumberEnd: 93
    functionName: tcpid_test
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - ub_randfree
    - tcpid_fillup
    - ub_initstate
    - unit_show_func
    - rbtree_init
    - memset
    linkageType: ''
    returnType: void
    signature: void tcpid_test(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:101,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:103,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:104,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:107,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:108,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:111,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:112,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:113,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:115,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:118,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:119,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:120,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 2
    argNames:
    - outnet
    - present
    argTypes:
    - struct outside_network*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 97
    functionDepth: 1
    functionLinenumber: 97
    functionLinenumberEnd: 121
    functionName: check_tree_and_list
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void check_tree_and_list(struct outside_network* outnet, int present)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/unittcpreuse.c:130,1
    - Dst: calloc
      Src: /src/unbound/testcode/unittcpreuse.c:134,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - outnet
    argTypes:
    - struct outside_network*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 125
    functionDepth: 1
    functionLinenumber: 125
    functionLinenumberEnd: 141
    functionName: create_pending_tcp
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 1
    functionsReached:
    - calloc
    linkageType: ''
    returnType: int
    signature: int create_pending_tcp(struct outside_network* outnet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reuse_tcp_remove_tree_list
      Src: /src/unbound/testcode/unittcpreuse.c:151,1
    - Dst: check_tree_and_list
      Src: /src/unbound/testcode/unittcpreuse.c:152,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - outnet
    argTypes:
    - struct outside_network*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 144
    functionDepth: 2
    functionLinenumber: 144
    functionLinenumberEnd: 155
    functionName: empty_tree
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - check_tree_and_list
    - reuse_tcp_remove_tree_list
    linkageType: ''
    returnType: void
    signature: void empty_tree(struct outside_network* outnet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty_tree
      Src: /src/unbound/testcode/unittcpreuse.c:162,1
    - Dst: reuse_tcp_insert
      Src: /src/unbound/testcode/unittcpreuse.c:164,1
    - Dst: check_tree_and_list
      Src: /src/unbound/testcode/unittcpreuse.c:166,1
    - Dst: reuse_tcp_remove_tree_list
      Src: /src/unbound/testcode/unittcpreuse.c:169,1
    - Dst: check_tree_and_list
      Src: /src/unbound/testcode/unittcpreuse.c:170,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - outnet
    - position
    - total
    argTypes:
    - struct outside_network*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 158
    functionDepth: 3
    functionLinenumber: 158
    functionLinenumberEnd: 171
    functionName: check_removal
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - reuse_tcp_insert
    - check_tree_and_list
    - empty_tree
    - reuse_tcp_remove_tree_list
    linkageType: ''
    returnType: void
    signature: void check_removal(struct outside_network* outnet, int position, int
      total)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: empty_tree
      Src: /src/unbound/testcode/unittcpreuse.c:178,1
    - Dst: reuse_tcp_insert
      Src: /src/unbound/testcode/unittcpreuse.c:180,1
    - Dst: check_tree_and_list
      Src: /src/unbound/testcode/unittcpreuse.c:182,1
    - Dst: reuse_tcp_lru_snip
      Src: /src/unbound/testcode/unittcpreuse.c:183,1
    - Dst: reuse_tcp_remove_tree_list
      Src: /src/unbound/testcode/unittcpreuse.c:185,1
    - Dst: check_tree_and_list
      Src: /src/unbound/testcode/unittcpreuse.c:186,1
    - Dst: reuse_tcp_lru_snip
      Src: /src/unbound/testcode/unittcpreuse.c:187,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:189,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:190,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:191,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - outnet
    - total
    argTypes:
    - struct outside_network*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 174
    functionDepth: 3
    functionLinenumber: 174
    functionLinenumberEnd: 192
    functionName: check_snip
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - reuse_tcp_insert
    - check_tree_and_list
    - empty_tree
    - reuse_tcp_lru_snip
    - reuse_tcp_remove_tree_list
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void check_snip(struct outside_network* outnet, int total)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/unittcpreuse.c:200,1
    - Dst: rbtree_init
      Src: /src/unbound/testcode/unittcpreuse.c:201,1
    - Dst: create_pending_tcp
      Src: /src/unbound/testcode/unittcpreuse.c:204,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unittcpreuse.c:204,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unittcpreuse.c:206,1
    - Dst: reuse_tcp_insert
      Src: /src/unbound/testcode/unittcpreuse.c:208,1
    - Dst: check_tree_and_list
      Src: /src/unbound/testcode/unittcpreuse.c:209,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unittcpreuse.c:212,1
    - Dst: reuse_tcp_lru_touch
      Src: /src/unbound/testcode/unittcpreuse.c:215,1
    - Dst: check_tree_and_list
      Src: /src/unbound/testcode/unittcpreuse.c:216,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unittcpreuse.c:219,1
    - Dst: check_removal
      Src: /src/unbound/testcode/unittcpreuse.c:220,1
    - Dst: check_removal
      Src: /src/unbound/testcode/unittcpreuse.c:221,1
    - Dst: check_removal
      Src: /src/unbound/testcode/unittcpreuse.c:222,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unittcpreuse.c:224,1
    - Dst: check_snip
      Src: /src/unbound/testcode/unittcpreuse.c:225,1
    - Dst: free
      Src: /src/unbound/testcode/unittcpreuse.c:229,1
    - Dst: free
      Src: /src/unbound/testcode/unittcpreuse.c:231,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 195
    functionDepth: 4
    functionLinenumber: 195
    functionLinenumberEnd: 232
    functionName: tcp_reuse_tree_list_test
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - reuse_tcp_insert
    - check_tree_and_list
    - fatal_exit
    - create_pending_tcp
    - rbtree_init
    - unit_show_func
    - free
    - reuse_tcp_lru_touch
    - check_snip
    - memset
    - check_removal
    linkageType: ''
    returnType: void
    signature: void tcp_reuse_tree_list_test(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:240,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:241,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:243,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:244,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:247,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:248,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 4
    argNames:
    - outnet
    - first
    - last
    - total
    argTypes:
    - struct outside_network*
    - struct waiting_tcp*
    - struct waiting_tcp*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 253
    functionName: check_waiting_tcp_list
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void check_waiting_tcp_list(struct outside_network* outnet,\n\tstruct
      waiting_tcp* first, struct waiting_tcp* last, size_t total)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:260,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:261,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - outnet
    argTypes:
    - struct outside_network*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 256
    functionDepth: 1
    functionLinenumber: 256
    functionLinenumberEnd: 270
    functionName: waiting_tcp_list_clear
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void waiting_tcp_list_clear(struct outside_network* outnet)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: waiting_tcp_list_clear
      Src: /src/unbound/testcode/unittcpreuse.c:280,1
    - Dst: outnet_waiting_tcp_list_add
      Src: /src/unbound/testcode/unittcpreuse.c:282,1
    - Dst: check_waiting_tcp_list
      Src: /src/unbound/testcode/unittcpreuse.c:284,1
    - Dst: outnet_waiting_tcp_list_pop
      Src: /src/unbound/testcode/unittcpreuse.c:287,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:288,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:292,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:295,1
    - Dst: outnet_waiting_tcp_list_remove
      Src: /src/unbound/testcode/unittcpreuse.c:296,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:298,1
    - Dst: check_waiting_tcp_list
      Src: /src/unbound/testcode/unittcpreuse.c:302,1
    - Dst: check_waiting_tcp_list
      Src: /src/unbound/testcode/unittcpreuse.c:305,1
    - Dst: check_waiting_tcp_list
      Src: /src/unbound/testcode/unittcpreuse.c:308,1
    - Dst: check_waiting_tcp_list
      Src: /src/unbound/testcode/unittcpreuse.c:311,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 5
    argNames:
    - is_pop
    - outnet
    - store
    - position
    - total
    argTypes:
    - int
    - struct outside_network*
    - struct waiting_tcp*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 274
    functionDepth: 2
    functionLinenumber: 274
    functionLinenumberEnd: 313
    functionName: check_waiting_tcp_removal
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - outnet_waiting_tcp_list_pop
    - outnet_waiting_tcp_list_add
    - outnet_waiting_tcp_list_remove
    - waiting_tcp_list_clear
    - check_waiting_tcp_list
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void check_waiting_tcp_removal(int is_pop,\n\tstruct outside_network*
      outnet, struct waiting_tcp* store,\n\tsize_t position, size_t total)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/unittcpreuse.c:321,1
    - Dst: memset
      Src: /src/unbound/testcode/unittcpreuse.c:322,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unittcpreuse.c:325,1
    - Dst: outnet_waiting_tcp_list_add_first
      Src: /src/unbound/testcode/unittcpreuse.c:327,1
    - Dst: check_waiting_tcp_list
      Src: /src/unbound/testcode/unittcpreuse.c:328,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unittcpreuse.c:331,1
    - Dst: outnet_waiting_tcp_list_add
      Src: /src/unbound/testcode/unittcpreuse.c:334,1
    - Dst: check_waiting_tcp_list
      Src: /src/unbound/testcode/unittcpreuse.c:336,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unittcpreuse.c:339,1
    - Dst: outnet_waiting_tcp_list_add_first
      Src: /src/unbound/testcode/unittcpreuse.c:342,1
    - Dst: check_waiting_tcp_list
      Src: /src/unbound/testcode/unittcpreuse.c:343,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unittcpreuse.c:346,1
    - Dst: check_waiting_tcp_removal
      Src: /src/unbound/testcode/unittcpreuse.c:347,1
    - Dst: check_waiting_tcp_removal
      Src: /src/unbound/testcode/unittcpreuse.c:348,1
    - Dst: check_waiting_tcp_removal
      Src: /src/unbound/testcode/unittcpreuse.c:349,1
    - Dst: check_waiting_tcp_removal
      Src: /src/unbound/testcode/unittcpreuse.c:350,1
    - Dst: check_waiting_tcp_removal
      Src: /src/unbound/testcode/unittcpreuse.c:351,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unittcpreuse.c:354,1
    - Dst: check_waiting_tcp_removal
      Src: /src/unbound/testcode/unittcpreuse.c:355,1
    - Dst: check_waiting_tcp_removal
      Src: /src/unbound/testcode/unittcpreuse.c:356,1
    - Dst: check_waiting_tcp_removal
      Src: /src/unbound/testcode/unittcpreuse.c:357,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 315
    functionDepth: 3
    functionLinenumber: 315
    functionLinenumberEnd: 358
    functionName: waiting_tcp_list_test
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - outnet_waiting_tcp_list_add_first
    - check_waiting_tcp_removal
    - outnet_waiting_tcp_list_add
    - unit_show_func
    - memset
    - check_waiting_tcp_list
    linkageType: ''
    returnType: void
    signature: void waiting_tcp_list_test(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:366,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:367,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:370,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:371,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:374,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:375,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:383,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:384,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:387,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:388,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 28
    argCount: 4
    argNames:
    - reuse
    - first
    - last
    - total
    argTypes:
    - struct reuse_tcp*
    - struct waiting_tcp*
    - struct waiting_tcp*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 360
    functionDepth: 1
    functionLinenumber: 360
    functionLinenumberEnd: 393
    functionName: check_reuse_write_wait
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void check_reuse_write_wait(struct reuse_tcp* reuse,\n\tstruct waiting_tcp*
      first, struct waiting_tcp* last, size_t total)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:400,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:401,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - reuse
    argTypes:
    - struct reuse_tcp*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 411
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 411
    functionName: reuse_write_wait_clear
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void reuse_write_wait_clear(struct reuse_tcp* reuse)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: reuse_write_wait_clear
      Src: /src/unbound/testcode/unittcpreuse.c:421,1
    - Dst: reuse_write_wait_push_back
      Src: /src/unbound/testcode/unittcpreuse.c:423,1
    - Dst: check_reuse_write_wait
      Src: /src/unbound/testcode/unittcpreuse.c:425,1
    - Dst: reuse_write_wait_pop
      Src: /src/unbound/testcode/unittcpreuse.c:428,1
    - Dst: reuse_write_wait_remove
      Src: /src/unbound/testcode/unittcpreuse.c:432,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:434,1
    - Dst: check_reuse_write_wait
      Src: /src/unbound/testcode/unittcpreuse.c:438,1
    - Dst: check_reuse_write_wait
      Src: /src/unbound/testcode/unittcpreuse.c:441,1
    - Dst: check_reuse_write_wait
      Src: /src/unbound/testcode/unittcpreuse.c:444,1
    - Dst: check_reuse_write_wait
      Src: /src/unbound/testcode/unittcpreuse.c:447,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 5
    argNames:
    - is_pop
    - reuse
    - store
    - position
    - total
    argTypes:
    - int
    - struct reuse_tcp*
    - struct waiting_tcp*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 415
    functionDepth: 2
    functionLinenumber: 415
    functionLinenumberEnd: 449
    functionName: check_reuse_write_wait_removal
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - reuse_write_wait_push_back
    - reuse_write_wait_pop
    - reuse_write_wait_remove
    - reuse_write_wait_clear
    - check_reuse_write_wait
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void check_reuse_write_wait_removal(int is_pop,\n\tstruct reuse_tcp*
      reuse, struct waiting_tcp* store,\n\tsize_t position, size_t total)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/unittcpreuse.c:457,1
    - Dst: memset
      Src: /src/unbound/testcode/unittcpreuse.c:458,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unittcpreuse.c:461,1
    - Dst: reuse_write_wait_push_back
      Src: /src/unbound/testcode/unittcpreuse.c:464,1
    - Dst: check_reuse_write_wait
      Src: /src/unbound/testcode/unittcpreuse.c:466,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unittcpreuse.c:469,1
    - Dst: check_reuse_write_wait_removal
      Src: /src/unbound/testcode/unittcpreuse.c:470,1
    - Dst: check_reuse_write_wait_removal
      Src: /src/unbound/testcode/unittcpreuse.c:471,1
    - Dst: check_reuse_write_wait_removal
      Src: /src/unbound/testcode/unittcpreuse.c:472,1
    - Dst: check_reuse_write_wait_removal
      Src: /src/unbound/testcode/unittcpreuse.c:473,1
    - Dst: check_reuse_write_wait_removal
      Src: /src/unbound/testcode/unittcpreuse.c:474,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unittcpreuse.c:477,1
    - Dst: check_reuse_write_wait_removal
      Src: /src/unbound/testcode/unittcpreuse.c:478,1
    - Dst: check_reuse_write_wait_removal
      Src: /src/unbound/testcode/unittcpreuse.c:479,1
    - Dst: check_reuse_write_wait_removal
      Src: /src/unbound/testcode/unittcpreuse.c:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 451
    functionDepth: 3
    functionLinenumber: 451
    functionLinenumberEnd: 481
    functionName: reuse_write_wait_test
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - reuse_write_wait_push_back
    - check_reuse_write_wait
    - unit_show_func
    - check_reuse_write_wait_removal
    - memset
    linkageType: ''
    returnType: void
    signature: void reuse_write_wait_test(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: shared_ports_create
      Src: /src/unbound/testcode/unittcpreuse.c:492,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:493,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unittcpreuse.c:495,1
    - Dst: log_err
      Src: /src/unbound/testcode/unittcpreuse.c:496,1
    - Dst: shared_ports_find_if
      Src: /src/unbound/testcode/unittcpreuse.c:497,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:498,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unittcpreuse.c:500,1
    - Dst: log_err
      Src: /src/unbound/testcode/unittcpreuse.c:501,1
    - Dst: shared_ports_find_if
      Src: /src/unbound/testcode/unittcpreuse.c:502,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:503,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unittcpreuse.c:505,1
    - Dst: log_err
      Src: /src/unbound/testcode/unittcpreuse.c:506,1
    - Dst: shared_ports_find_if
      Src: /src/unbound/testcode/unittcpreuse.c:507,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:508,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unittcpreuse.c:510,1
    - Dst: log_err
      Src: /src/unbound/testcode/unittcpreuse.c:511,1
    - Dst: shared_ports_find_if
      Src: /src/unbound/testcode/unittcpreuse.c:512,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:513,1
    - Dst: shared_ports_delete
      Src: /src/unbound/testcode/unittcpreuse.c:515,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 516
      start: 483
    functionDepth: 2
    functionLinenumber: 483
    functionLinenumberEnd: 516
    functionName: shared_port_test_ifs
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - log_err
    - shared_ports_create
    - shared_ports_find_if
    - ipstrtoaddr
    - shared_ports_delete
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void shared_port_test_ifs(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:523,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - shpif
    - item
    argTypes:
    - struct shared_ports_if*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 519
    functionDepth: 1
    functionLinenumber: 519
    functionLinenumberEnd: 529
    functionName: pif_list_contains
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - unit_assert
    linkageType: ''
    returnType: int
    signature: int pif_list_contains(struct shared_ports_if* shpif, int item)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:536,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:538,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:540,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:542,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 10
    argCount: 5
    argNames:
    - shpif
    - item1
    - item2
    - item3
    - item4
    argTypes:
    - struct shared_ports_if*
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 532
    functionDepth: 2
    functionLinenumber: 532
    functionLinenumberEnd: 545
    functionName: pif_list_contains_items
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - pif_list_contains
    linkageType: ''
    returnType: int
    signature: "int pif_list_contains_items(struct shared_ports_if* shpif, int item1,\n\tint
      item2, int item3, int item4)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: ub_initstate
      Src: /src/unbound/testcode/unittcpreuse.c:558,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:559,1
    - Dst: shared_ports_create
      Src: /src/unbound/testcode/unittcpreuse.c:561,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:562,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unittcpreuse.c:564,1
    - Dst: log_err
      Src: /src/unbound/testcode/unittcpreuse.c:565,1
    - Dst: shared_ports_find_if
      Src: /src/unbound/testcode/unittcpreuse.c:566,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:567,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:569,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:570,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:571,1
    - Dst: pif_list_contains_items
      Src: /src/unbound/testcode/unittcpreuse.c:571,1
    - Dst: shared_ports_fetch_random
      Src: /src/unbound/testcode/unittcpreuse.c:573,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:575,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:577,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:578,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:579,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:579,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:580,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:580,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:581,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:581,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:582,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:582,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:583,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:583,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:584,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:585,1
    - Dst: shared_ports_return_port
      Src: /src/unbound/testcode/unittcpreuse.c:587,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:588,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:589,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:590,1
    - Dst: pif_list_contains_items
      Src: /src/unbound/testcode/unittcpreuse.c:590,1
    - Dst: shared_ports_fetch_random
      Src: /src/unbound/testcode/unittcpreuse.c:593,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:595,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:597,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:598,1
    - Dst: shared_ports_fetch_random
      Src: /src/unbound/testcode/unittcpreuse.c:599,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:601,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:603,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:604,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:605,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:605,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:606,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:606,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:607,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:607,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:608,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:608,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:609,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:609,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:610,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:610,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:611,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:612,1
    - Dst: shared_ports_return_port
      Src: /src/unbound/testcode/unittcpreuse.c:614,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:615,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:615,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:616,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:617,1
    - Dst: shared_ports_return_port
      Src: /src/unbound/testcode/unittcpreuse.c:619,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:620,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:620,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:621,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:622,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:623,1
    - Dst: pif_list_contains_items
      Src: /src/unbound/testcode/unittcpreuse.c:623,1
    - Dst: shared_ports_fetch_random
      Src: /src/unbound/testcode/unittcpreuse.c:626,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:628,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:630,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:631,1
    - Dst: shared_ports_fetch_random
      Src: /src/unbound/testcode/unittcpreuse.c:632,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:634,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:636,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:637,1
    - Dst: shared_ports_fetch_random
      Src: /src/unbound/testcode/unittcpreuse.c:638,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:640,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:642,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:643,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:644,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:644,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:645,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:645,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:646,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:646,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:648,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:648,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:650,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:650,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:652,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:652,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:654,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:654,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:655,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:656,1
    - Dst: shared_ports_return_port
      Src: /src/unbound/testcode/unittcpreuse.c:658,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:659,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:659,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:660,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:661,1
    - Dst: shared_ports_return_port
      Src: /src/unbound/testcode/unittcpreuse.c:663,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:664,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:664,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:665,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:666,1
    - Dst: shared_ports_return_port
      Src: /src/unbound/testcode/unittcpreuse.c:668,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:669,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:669,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:670,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:671,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:672,1
    - Dst: pif_list_contains_items
      Src: /src/unbound/testcode/unittcpreuse.c:672,1
    - Dst: shared_ports_fetch_random
      Src: /src/unbound/testcode/unittcpreuse.c:675,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:677,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:679,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:680,1
    - Dst: shared_ports_fetch_random
      Src: /src/unbound/testcode/unittcpreuse.c:682,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:684,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:686,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:687,1
    - Dst: shared_ports_fetch_random
      Src: /src/unbound/testcode/unittcpreuse.c:689,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:691,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:693,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:694,1
    - Dst: shared_ports_fetch_random
      Src: /src/unbound/testcode/unittcpreuse.c:696,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:698,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:700,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:701,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:702,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:702,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:703,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:703,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:704,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:704,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:705,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:705,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:706,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:707,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:710,1
    - Dst: shared_ports_fetch_random
      Src: /src/unbound/testcode/unittcpreuse.c:710,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:712,1
    - Dst: shared_ports_fetch_random
      Src: /src/unbound/testcode/unittcpreuse.c:712,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:714,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:715,1
    - Dst: shared_ports_fetch_random
      Src: /src/unbound/testcode/unittcpreuse.c:718,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:720,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:722,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:723,1
    - Dst: shared_ports_fetch_random
      Src: /src/unbound/testcode/unittcpreuse.c:725,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:727,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:729,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:730,1
    - Dst: shared_ports_return_port
      Src: /src/unbound/testcode/unittcpreuse.c:733,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:734,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:734,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:735,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:736,1
    - Dst: shared_ports_return_port
      Src: /src/unbound/testcode/unittcpreuse.c:737,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:738,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:738,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:739,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:740,1
    - Dst: shared_ports_return_port
      Src: /src/unbound/testcode/unittcpreuse.c:741,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:742,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:742,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:743,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:744,1
    - Dst: shared_ports_return_port
      Src: /src/unbound/testcode/unittcpreuse.c:745,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:746,1
    - Dst: pif_list_contains
      Src: /src/unbound/testcode/unittcpreuse.c:746,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:747,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:748,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unittcpreuse.c:749,1
    - Dst: pif_list_contains_items
      Src: /src/unbound/testcode/unittcpreuse.c:749,1
    - Dst: shared_ports_delete
      Src: /src/unbound/testcode/unittcpreuse.c:751,1
    - Dst: ub_randfree
      Src: /src/unbound/testcode/unittcpreuse.c:752,1
    CyclomaticComplexity: 39
    EdgeCount: 39
    ICount: 163
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 547
    functionDepth: 3
    functionLinenumber: 547
    functionLinenumberEnd: 753
    functionName: shared_port_test_port
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - log_err
    - shared_ports_create
    - ub_randfree
    - shared_ports_fetch_random
    - ub_initstate
    - ipstrtoaddr
    - shared_ports_find_if
    - shared_ports_delete
    - pif_list_contains_items
    - shared_ports_return_port
    - unit_assert
    - pif_list_contains
    linkageType: ''
    returnType: void
    signature: void shared_port_test_port(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unittcpreuse.c:757,1
    - Dst: tcpid_test
      Src: /src/unbound/testcode/unittcpreuse.c:758,1
    - Dst: tcp_reuse_tree_list_test
      Src: /src/unbound/testcode/unittcpreuse.c:759,1
    - Dst: waiting_tcp_list_test
      Src: /src/unbound/testcode/unittcpreuse.c:760,1
    - Dst: reuse_write_wait_test
      Src: /src/unbound/testcode/unittcpreuse.c:761,1
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unittcpreuse.c:762,1
    - Dst: shared_port_test_ifs
      Src: /src/unbound/testcode/unittcpreuse.c:763,1
    - Dst: shared_port_test_port
      Src: /src/unbound/testcode/unittcpreuse.c:764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 755
    functionDepth: 6
    functionLinenumber: 755
    functionLinenumberEnd: 765
    functionName: tcpreuse_test
    functionSourceFile: /src/unbound/testcode/unittcpreuse.c
    functionUses: 0
    functionsReached:
    - tcpid_test
    - tcp_reuse_tree_list_test
    - reuse_write_wait_test
    - shared_port_test_ifs
    - unit_show_feature
    - waiting_tcp_list_test
    - shared_port_test_port
    linkageType: ''
    returnType: void
    signature: void tcpreuse_test(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:59,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:60,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:61,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:62,1
    - Dst: dname_str
      Src: /src/unbound/testcode/unitneg.c:64,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:65,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:66,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:71,1
    - Dst: dname_print
      Src: /src/unbound/testcode/unitneg.c:72,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:73,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:74,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:78,1
    - Dst: dname_print
      Src: /src/unbound/testcode/unitneg.c:79,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:80,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:82,1
    - Dst: dname_str
      Src: /src/unbound/testcode/unitneg.c:86,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:87,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 25
    argCount: 1
    argNames:
    - neg
    argTypes:
    - struct val_neg_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 92
    functionName: print_neg_cache
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - dname_print
    - printf
    - dname_str
    linkageType: ''
    returnType: void
    signature: void print_neg_cache(struct val_neg_cache* neg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_str
      Src: /src/unbound/testcode/unitneg.c:64,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:65,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:66,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - tree
    argTypes:
    - neg
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 69
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - printf
    - dname_str
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct val_neg_zone*, &neg->tree)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:71,1
    - Dst: dname_print
      Src: /src/unbound/testcode/unitneg.c:72,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:73,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:74,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:78,1
    - Dst: dname_print
      Src: /src/unbound/testcode/unitneg.c:79,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:80,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:82,1
    - Dst: dname_str
      Src: /src/unbound/testcode/unitneg.c:86,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:87,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - tree
    argTypes:
    - neg
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 70
    functionDepth: 1
    functionLinenumber: 70
    functionLinenumberEnd: 91
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - dname_print
    - printf
    - dname_str
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct val_neg_zone*, &neg->tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_str
      Src: /src/unbound/testcode/unitneg.c:86,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:87,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:88,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - tree
    argTypes:
    - z
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 90
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - printf
    - dname_str
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(d, struct val_neg_data*, &z->tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:98,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:104,1
    - Dst: snprintf
      Src: /src/unbound/testcode/unitneg.c:105,1
    - Dst: snprintf
      Src: /src/unbound/testcode/unitneg.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 95
    functionDepth: 2
    functionLinenumber: 95
    functionLinenumberEnd: 110
    functionName: get_random_zone
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - random
    - snprintf
    linkageType: ''
    returnType: char
    signature: char * get_random_zone(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/unitneg.c:121,1
    - Dst: memset
      Src: /src/unbound/testcode/unitneg.c:122,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:126,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:130,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:131,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:133,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:137,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:142,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:144,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:149,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:151,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:155,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:156,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:157,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:159,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:162,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:163,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:165,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:167,1
    - Dst: snprintf
      Src: /src/unbound/testcode/unitneg.c:173,1
    - Dst: snprintf
      Src: /src/unbound/testcode/unitneg.c:176,1
    - Dst: snprintf
      Src: /src/unbound/testcode/unitneg.c:181,1
    - Dst: snprintf
      Src: /src/unbound/testcode/unitneg.c:184,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitneg.c:185,1
    - Dst: log_nametypeclass
      Src: /src/unbound/testcode/unitneg.c:189,1
    - Dst: log_nametypeclass
      Src: /src/unbound/testcode/unitneg.c:190,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 62
    argCount: 3
    argNames:
    - fromp
    - top
    - zname
    argTypes:
    - char**
    - char**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 113
    functionDepth: 2
    functionLinenumber: 113
    functionLinenumberEnd: 192
    functionName: get_random_data
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - log_nametypeclass
    - snprintf
    - random
    - strlen
    - memset
    linkageType: ''
    returnType: void
    signature: void get_random_data(char** fromp, char** top, char* zname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_random_zone
      Src: /src/unbound/testcode/unitneg.c:203,1
    - Dst: lock_basic_lock
      Src: /src/unbound/testcode/unitneg.c:206,1
    - Dst: log_nametypeclass
      Src: /src/unbound/testcode/unitneg.c:208,1
    - Dst: neg_find_zone
      Src: /src/unbound/testcode/unitneg.c:209,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitneg.c:209,1
    - Dst: neg_create_zone
      Src: /src/unbound/testcode/unitneg.c:212,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitneg.c:212,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:215,1
    - Dst: val_neg_zone_take_inuse
      Src: /src/unbound/testcode/unitneg.c:216,1
    - Dst: get_random_data
      Src: /src/unbound/testcode/unitneg.c:219,1
    - Dst: memset
      Src: /src/unbound/testcode/unitneg.c:222,1
    - Dst: memset
      Src: /src/unbound/testcode/unitneg.c:223,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitneg.c:225,1
    - Dst: htons
      Src: /src/unbound/testcode/unitneg.c:226,1
    - Dst: htons
      Src: /src/unbound/testcode/unitneg.c:227,1
    - Dst: neg_insert_data
      Src: /src/unbound/testcode/unitneg.c:238,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/testcode/unitneg.c:239,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 1
    argNames:
    - neg
    argTypes:
    - struct val_neg_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 195
    functionDepth: 5
    functionLinenumber: 195
    functionLinenumberEnd: 240
    functionName: add_item
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - log_nametypeclass
    - lock_basic_unlock
    - neg_find_zone
    - get_random_zone
    - neg_insert_data
    - htons
    - lock_basic_lock
    - strlen
    - get_random_data
    - val_neg_zone_take_inuse
    - memset
    - neg_create_zone
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void add_item(struct val_neg_cache* neg)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/testcode/unitneg.c:250,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/testcode/unitneg.c:252,1
    - Dst: rbtree_first
      Src: /src/unbound/testcode/unitneg.c:257,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:259,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:261,1
    - Dst: rbtree_first
      Src: /src/unbound/testcode/unitneg.c:263,1
    - Dst: rbtree_next
      Src: /src/unbound/testcode/unitneg.c:266,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/testcode/unitneg.c:272,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/testcode/unitneg.c:276,1
    - Dst: log_nametypeclass
      Src: /src/unbound/testcode/unitneg.c:280,1
    - Dst: rbtree_first
      Src: /src/unbound/testcode/unitneg.c:283,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:285,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:287,1
    - Dst: rbtree_first
      Src: /src/unbound/testcode/unitneg.c:289,1
    - Dst: rbtree_next
      Src: /src/unbound/testcode/unitneg.c:292,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/testcode/unitneg.c:298,1
    - Dst: log_nametypeclass
      Src: /src/unbound/testcode/unitneg.c:303,1
    - Dst: neg_delete_data
      Src: /src/unbound/testcode/unitneg.c:304,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/testcode/unitneg.c:306,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 54
    argCount: 1
    argNames:
    - neg
    argTypes:
    - struct val_neg_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 243
    functionDepth: 3
    functionLinenumber: 243
    functionLinenumberEnd: 307
    functionName: remove_item
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - log_nametypeclass
    - lock_basic_unlock
    - printf
    - random
    - rbtree_next
    - lock_basic_lock
    - rbtree_first
    - neg_delete_data
    linkageType: ''
    returnType: void
    signature: void remove_item(struct val_neg_cache* neg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - neg
    argTypes:
    - struct val_neg_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 318
    functionName: sumtrees_all
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t sumtrees_all(struct val_neg_cache* neg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tree
    argTypes:
    - neg
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 314
    functionDepth: 0
    functionLinenumber: 314
    functionLinenumberEnd: 316
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct val_neg_zone*, &neg->tree)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_first
      Src: /src/unbound/testcode/unitneg.c:328,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - neg
    argTypes:
    - struct val_neg_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 321
    functionDepth: 1
    functionLinenumber: 321
    functionLinenumberEnd: 333
    functionName: sumtrees_inuse
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - rbtree_first
    linkageType: ''
    returnType: size_t
    signature: size_t sumtrees_inuse(struct val_neg_cache* neg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_first
      Src: /src/unbound/testcode/unitneg.c:328,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - tree
    argTypes:
    - neg
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 331
      start: 326
    functionDepth: 1
    functionLinenumber: 326
    functionLinenumberEnd: 331
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - rbtree_first
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct val_neg_zone*, &neg->tree)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:344,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:348,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:350,1
    - Dst: sumtrees_inuse
      Src: /src/unbound/testcode/unitneg.c:355,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:357,1
    - Dst: sumtrees_inuse
      Src: /src/unbound/testcode/unitneg.c:358,1
    - Dst: sumtrees_all
      Src: /src/unbound/testcode/unitneg.c:359,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:360,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:361,1
    - Dst: sumtrees_all
      Src: /src/unbound/testcode/unitneg.c:361,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - neg
    argTypes:
    - struct val_neg_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 336
    functionDepth: 2
    functionLinenumber: 336
    functionLinenumberEnd: 362
    functionName: check_lru
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - sumtrees_all
    - sumtrees_inuse
    - printf
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void check_lru(struct val_neg_cache* neg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_subdomain_c
      Src: /src/unbound/testcode/unitneg.c:371,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - zone
    - data
    argTypes:
    - struct val_neg_zone*
    - struct val_neg_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 365
    functionDepth: 1
    functionLinenumber: 365
    functionLinenumberEnd: 377
    functionName: sum_subtree_inuse
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    linkageType: ''
    returnType: int
    signature: "int sum_subtree_inuse(struct val_neg_zone* zone, \n\tstruct val_neg_data*
      data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_subdomain_c
      Src: /src/unbound/testcode/unitneg.c:371,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - tree
    argTypes:
    - zone
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 375
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(d, struct val_neg_data*, &zone->tree)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_subdomain_c
      Src: /src/unbound/testcode/unitneg.c:386,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - neg
    - zone
    argTypes:
    - struct val_neg_cache*
    - struct val_neg_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 380
    functionDepth: 1
    functionLinenumber: 380
    functionLinenumberEnd: 392
    functionName: sum_zone_subtree_inuse
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    linkageType: ''
    returnType: int
    signature: "int sum_zone_subtree_inuse(struct val_neg_cache* neg,\n\tstruct val_neg_zone*
      zone)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_subdomain_c
      Src: /src/unbound/testcode/unitneg.c:386,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - tree
    argTypes:
    - neg
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 385
    functionDepth: 1
    functionLinenumber: 385
    functionLinenumberEnd: 390
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - dname_subdomain_c
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct val_neg_zone*, &neg->tree)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:397,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:399,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:401,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:403,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:405,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:406,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitneg.c:406,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:410,1
    - Dst: dname_is_root
      Src: /src/unbound/testcode/unitneg.c:410,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:413,1
    - Dst: sum_subtree_inuse
      Src: /src/unbound/testcode/unitneg.c:413,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - zone
    - data
    argTypes:
    - struct val_neg_zone*
    - struct val_neg_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 395
    functionDepth: 2
    functionLinenumber: 395
    functionLinenumberEnd: 414
    functionName: check_data
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 1
    functionsReached:
    - sum_subtree_inuse
    - dname_is_root
    - query_dname_compare
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void check_data(struct val_neg_zone* zone, struct val_neg_data* data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_data
      Src: /src/unbound/testcode/unitneg.c:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - zone
    argTypes:
    - struct val_neg_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 417
    functionDepth: 0
    functionLinenumber: 417
    functionLinenumberEnd: 425
    functionName: checkzonetree
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - check_data
    linkageType: ''
    returnType: void
    signature: void checkzonetree(struct val_neg_zone* zone)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_data
      Src: /src/unbound/testcode/unitneg.c:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tree
    argTypes:
    - zone
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 424
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - check_data
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(d, struct val_neg_data*, &zone->tree)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:431,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:432,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:433,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:436,1
    - Dst: log_nametypeclass
      Src: /src/unbound/testcode/unitneg.c:440,1
    - Dst: log_err
      Src: /src/unbound/testcode/unitneg.c:441,1
    - Dst: print_neg_cache
      Src: /src/unbound/testcode/unitneg.c:445,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:447,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:451,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:453,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:455,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:457,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:458,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitneg.c:458,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:462,1
    - Dst: dname_is_root
      Src: /src/unbound/testcode/unitneg.c:462,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:465,1
    - Dst: sum_zone_subtree_inuse
      Src: /src/unbound/testcode/unitneg.c:465,1
    - Dst: checkzonetree
      Src: /src/unbound/testcode/unitneg.c:468,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 27
    argCount: 2
    argNames:
    - neg
    - zone
    argTypes:
    - struct val_neg_cache*
    - struct val_neg_zone*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 469
      start: 428
    functionDepth: 2
    functionLinenumber: 428
    functionLinenumberEnd: 469
    functionName: check_zone_invariants
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - log_err
    - dname_is_root
    - log_nametypeclass
    - checkzonetree
    - print_neg_cache
    - query_dname_compare
    - sum_zone_subtree_inuse
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void check_zone_invariants(struct val_neg_cache* neg, \n\tstruct val_neg_zone*
      zone)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/testcode/unitneg.c:476,1
    - Dst: check_lru
      Src: /src/unbound/testcode/unitneg.c:477,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:478,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:479,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:480,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:484,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:485,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:486,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:487,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/testcode/unitneg.c:488,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:492,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:493,1
    - Dst: check_zone_invariants
      Src: /src/unbound/testcode/unitneg.c:496,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/testcode/unitneg.c:498,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 1
    argNames:
    - neg
    argTypes:
    - struct val_neg_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 472
    functionDepth: 3
    functionLinenumber: 472
    functionLinenumberEnd: 499
    functionName: check_neg_invariants
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    - check_zone_invariants
    - check_lru
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void check_neg_invariants(struct val_neg_cache* neg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_zone_invariants
      Src: /src/unbound/testcode/unitneg.c:496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tree
    argTypes:
    - neg
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 495
    functionDepth: 3
    functionLinenumber: 495
    functionLinenumberEnd: 497
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - check_zone_invariants
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(z, struct val_neg_zone*, &neg->tree)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:506,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:508,1
    - Dst: add_item
      Src: /src/unbound/testcode/unitneg.c:509,1
    - Dst: remove_item
      Src: /src/unbound/testcode/unitneg.c:510,1
    - Dst: check_neg_invariants
      Src: /src/unbound/testcode/unitneg.c:511,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:515,1
    - Dst: remove_item
      Src: /src/unbound/testcode/unitneg.c:517,1
    - Dst: check_neg_invariants
      Src: /src/unbound/testcode/unitneg.c:518,1
    - Dst: printf
      Src: /src/unbound/testcode/unitneg.c:521,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:522,1
    - Dst: random
      Src: /src/unbound/testcode/unitneg.c:525,1
    - Dst: add_item
      Src: /src/unbound/testcode/unitneg.c:526,1
    - Dst: remove_item
      Src: /src/unbound/testcode/unitneg.c:527,1
    - Dst: check_neg_invariants
      Src: /src/unbound/testcode/unitneg.c:528,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - neg
    argTypes:
    - struct val_neg_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 530
      start: 502
    functionDepth: 6
    functionLinenumber: 502
    functionLinenumberEnd: 530
    functionName: stress_test
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - remove_item
    - printf
    - random
    - add_item
    - check_neg_invariants
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void stress_test(struct val_neg_cache* neg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: srandom
      Src: /src/unbound/testcode/unitneg.c:535,1
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitneg.c:536,1
    - Dst: val_neg_create
      Src: /src/unbound/testcode/unitneg.c:539,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitneg.c:540,1
    - Dst: stress_test
      Src: /src/unbound/testcode/unitneg.c:542,1
    - Dst: neg_cache_delete
      Src: /src/unbound/testcode/unitneg.c:544,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 532
    functionDepth: 7
    functionLinenumber: 532
    functionLinenumberEnd: 545
    functionName: neg_test
    functionSourceFile: /src/unbound/testcode/unitneg.c
    functionUses: 0
    functionsReached:
    - srandom
    - stress_test
    - unit_show_feature
    - neg_cache_delete
    - val_neg_create
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void neg_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/testcode/unitlruhash.c:54,1
    - Dst: free
      Src: /src/unbound/testcode/unitlruhash.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - k
    argTypes:
    - struct slabhash_testkey*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 54
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 54
    functionName: delkey
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 0
    functionsReached:
    - free
    - lock_rw_destroy
    linkageType: ''
    returnType: void
    signature: void delkey(struct slabhash_testkey* k)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/testcode/unitlruhash.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - d
    argTypes:
    - struct slabhash_testdata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 56
    functionDepth: 1
    functionLinenumber: 56
    functionLinenumberEnd: 56
    functionName: deldata
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void deldata(struct slabhash_testdata* d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - id
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 59
    functionName: myhash
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: hashvalue_type
    signature: hashvalue_type myhash(int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/unitlruhash.c:62,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitlruhash.c:63,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitlruhash.c:65,1
    - Dst: lock_rw_init
      Src: /src/unbound/testcode/unitlruhash.c:67,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - id
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 69
    functionName: newkey
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 1
    functionsReached:
    - lock_rw_init
    - myhash
    - calloc
    - fatal_exit
    linkageType: ''
    returnType: testkey_type
    signature: testkey_type * newkey(int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/unitlruhash.c:72,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitlruhash.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - val
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 77
    functionName: newdata
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 0
    functionsReached:
    - calloc
    - fatal_exit
    linkageType: ''
    returnType: testdata_type
    signature: testdata_type * newdata(int val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: newkey
      Src: /src/unbound/testcode/unitlruhash.c:83,1
    - Dst: newdata
      Src: /src/unbound/testcode/unitlruhash.c:84,1
    - Dst: newkey
      Src: /src/unbound/testcode/unitlruhash.c:85,1
    - Dst: newkey
      Src: /src/unbound/testcode/unitlruhash.c:86,1
    - Dst: newkey
      Src: /src/unbound/testcode/unitlruhash.c:87,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitlruhash.c:88,1
    - Dst: memset
      Src: /src/unbound/testcode/unitlruhash.c:90,1
    - Dst: bin_init
      Src: /src/unbound/testcode/unitlruhash.c:91,1
    - Dst: bin_overflow_remove
      Src: /src/unbound/testcode/unitlruhash.c:94,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:97,1
    - Dst: bin_find_entry
      Src: /src/unbound/testcode/unitlruhash.c:97,1
    - Dst: lock_quick_lock
      Src: /src/unbound/testcode/unitlruhash.c:100,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/testcode/unitlruhash.c:102,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:105,1
    - Dst: bin_find_entry
      Src: /src/unbound/testcode/unitlruhash.c:105,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitlruhash.c:105,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:108,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:109,1
    - Dst: bin_find_entry
      Src: /src/unbound/testcode/unitlruhash.c:109,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:112,1
    - Dst: bin_find_entry
      Src: /src/unbound/testcode/unitlruhash.c:112,1
    - Dst: lock_quick_lock
      Src: /src/unbound/testcode/unitlruhash.c:115,1
    - Dst: bin_overflow_remove
      Src: /src/unbound/testcode/unitlruhash.c:116,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/testcode/unitlruhash.c:117,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:118,1
    - Dst: bin_find_entry
      Src: /src/unbound/testcode/unitlruhash.c:118,1
    - Dst: lock_quick_lock
      Src: /src/unbound/testcode/unitlruhash.c:122,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:123,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/testcode/unitlruhash.c:127,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:130,1
    - Dst: bin_find_entry
      Src: /src/unbound/testcode/unitlruhash.c:130,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitlruhash.c:130,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:133,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:134,1
    - Dst: bin_find_entry
      Src: /src/unbound/testcode/unitlruhash.c:134,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:137,1
    - Dst: bin_find_entry
      Src: /src/unbound/testcode/unitlruhash.c:137,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:140,1
    - Dst: bin_find_entry
      Src: /src/unbound/testcode/unitlruhash.c:140,1
    - Dst: lock_quick_lock
      Src: /src/unbound/testcode/unitlruhash.c:142,1
    - Dst: bin_overflow_remove
      Src: /src/unbound/testcode/unitlruhash.c:143,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/testcode/unitlruhash.c:144,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:145,1
    - Dst: bin_find_entry
      Src: /src/unbound/testcode/unitlruhash.c:145,1
    - Dst: lock_quick_lock
      Src: /src/unbound/testcode/unitlruhash.c:148,1
    - Dst: bin_overflow_remove
      Src: /src/unbound/testcode/unitlruhash.c:149,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/testcode/unitlruhash.c:150,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:151,1
    - Dst: bin_find_entry
      Src: /src/unbound/testcode/unitlruhash.c:151,1
    - Dst: lock_quick_destroy
      Src: /src/unbound/testcode/unitlruhash.c:153,1
    - Dst: delkey
      Src: /src/unbound/testcode/unitlruhash.c:154,1
    - Dst: delkey
      Src: /src/unbound/testcode/unitlruhash.c:155,1
    - Dst: delkey
      Src: /src/unbound/testcode/unitlruhash.c:156,1
    - Dst: delkey
      Src: /src/unbound/testcode/unitlruhash.c:157,1
    - Dst: deldata
      Src: /src/unbound/testcode/unitlruhash.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 41
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct lruhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 159
    functionName: test_bin_find_entry
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 0
    functionsReached:
    - bin_init
    - delkey
    - bin_find_entry
    - lock_quick_destroy
    - newdata
    - bin_overflow_remove
    - lock_quick_unlock
    - lock_quick_lock
    - deldata
    - memset
    - myhash
    - unit_assert
    - newkey
    linkageType: ''
    returnType: void
    signature: void test_bin_find_entry(struct lruhash* table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: newkey
      Src: /src/unbound/testcode/unitlruhash.c:164,1
    - Dst: newkey
      Src: /src/unbound/testcode/unitlruhash.c:165,1
    - Dst: lock_quick_lock
      Src: /src/unbound/testcode/unitlruhash.c:166,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:168,1
    - Dst: lru_remove
      Src: /src/unbound/testcode/unitlruhash.c:169,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:170,1
    - Dst: lru_front
      Src: /src/unbound/testcode/unitlruhash.c:173,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:174,1
    - Dst: lru_remove
      Src: /src/unbound/testcode/unitlruhash.c:177,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:178,1
    - Dst: lru_front
      Src: /src/unbound/testcode/unitlruhash.c:181,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:182,1
    - Dst: lru_front
      Src: /src/unbound/testcode/unitlruhash.c:184,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:185,1
    - Dst: lru_remove
      Src: /src/unbound/testcode/unitlruhash.c:188,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:189,1
    - Dst: lru_front
      Src: /src/unbound/testcode/unitlruhash.c:191,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:192,1
    - Dst: lru_remove
      Src: /src/unbound/testcode/unitlruhash.c:195,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:196,1
    - Dst: lru_remove
      Src: /src/unbound/testcode/unitlruhash.c:200,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:201,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/testcode/unitlruhash.c:202,1
    - Dst: delkey
      Src: /src/unbound/testcode/unitlruhash.c:203,1
    - Dst: delkey
      Src: /src/unbound/testcode/unitlruhash.c:204,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct lruhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 205
    functionName: test_lru
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 0
    functionsReached:
    - delkey
    - lru_remove
    - lru_front
    - lock_quick_unlock
    - lock_quick_lock
    - unit_assert
    - newkey
    linkageType: ''
    returnType: void
    signature: void test_lru(struct lruhash* table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: newkey
      Src: /src/unbound/testcode/unitlruhash.c:211,1
    - Dst: newkey
      Src: /src/unbound/testcode/unitlruhash.c:212,1
    - Dst: newdata
      Src: /src/unbound/testcode/unitlruhash.c:213,1
    - Dst: newdata
      Src: /src/unbound/testcode/unitlruhash.c:214,1
    - Dst: lruhash_insert
      Src: /src/unbound/testcode/unitlruhash.c:219,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitlruhash.c:219,1
    - Dst: lruhash_insert
      Src: /src/unbound/testcode/unitlruhash.c:220,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitlruhash.c:220,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:222,1
    - Dst: lruhash_lookup
      Src: /src/unbound/testcode/unitlruhash.c:222,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitlruhash.c:222,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitlruhash.c:223,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:224,1
    - Dst: lruhash_lookup
      Src: /src/unbound/testcode/unitlruhash.c:224,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitlruhash.c:224,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitlruhash.c:225,1
    - Dst: lruhash_remove
      Src: /src/unbound/testcode/unitlruhash.c:226,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitlruhash.c:226,1
    - Dst: lruhash_remove
      Src: /src/unbound/testcode/unitlruhash.c:227,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitlruhash.c:227,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct lruhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 228
    functionName: test_short_table
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 0
    functionsReached:
    - lock_rw_unlock
    - lruhash_remove
    - newdata
    - lruhash_insert
    - myhash
    - lruhash_lookup
    - unit_assert
    - newkey
    linkageType: ''
    returnType: void
    signature: void test_short_table(struct lruhash* table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: random
      Src: /src/unbound/testcode/unitlruhash.c:237,1
    - Dst: newdata
      Src: /src/unbound/testcode/unitlruhash.c:238,1
    - Dst: newkey
      Src: /src/unbound/testcode/unitlruhash.c:239,1
    - Dst: lruhash_insert
      Src: /src/unbound/testcode/unitlruhash.c:241,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitlruhash.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - table
    - ref
    argTypes:
    - struct lruhash*
    - testdata_type*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 234
    functionDepth: 1
    functionLinenumber: 234
    functionLinenumberEnd: 243
    functionName: testadd
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 0
    functionsReached:
    - newdata
    - random
    - lruhash_insert
    - myhash
    - newkey
    linkageType: ''
    returnType: void
    signature: void testadd(struct lruhash* table, testdata_type* ref[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: random
      Src: /src/unbound/testcode/unitlruhash.c:249,1
    - Dst: newkey
      Src: /src/unbound/testcode/unitlruhash.c:250,1
    - Dst: lruhash_remove
      Src: /src/unbound/testcode/unitlruhash.c:251,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitlruhash.c:251,1
    - Dst: delkey
      Src: /src/unbound/testcode/unitlruhash.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - table
    - ref
    argTypes:
    - struct lruhash*
    - testdata_type*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 246
    functionDepth: 1
    functionLinenumber: 246
    functionLinenumberEnd: 254
    functionName: testremove
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 0
    functionsReached:
    - delkey
    - lruhash_remove
    - random
    - myhash
    - newkey
    linkageType: ''
    returnType: void
    signature: void testremove(struct lruhash* table, testdata_type* ref[])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: random
      Src: /src/unbound/testcode/unitlruhash.c:260,1
    - Dst: newkey
      Src: /src/unbound/testcode/unitlruhash.c:261,1
    - Dst: lruhash_lookup
      Src: /src/unbound/testcode/unitlruhash.c:262,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitlruhash.c:262,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:265,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:266,1
    - Dst: log_info
      Src: /src/unbound/testcode/unitlruhash.c:268,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:270,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitlruhash.c:271,1
    - Dst: delkey
      Src: /src/unbound/testcode/unitlruhash.c:272,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - table
    - ref
    argTypes:
    - struct lruhash*
    - testdata_type*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 257
    functionDepth: 1
    functionLinenumber: 257
    functionLinenumberEnd: 273
    functionName: testlookup
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 0
    functionsReached:
    - delkey
    - lock_rw_unlock
    - log_info
    - random
    - myhash
    - lruhash_lookup
    - unit_assert
    - newkey
    linkageType: ''
    returnType: void
    signature: void testlookup(struct lruhash* table, testdata_type* ref[])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_lock
      Src: /src/unbound/testcode/unitlruhash.c:281,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:282,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:283,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:284,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:286,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:289,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:291,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:295,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:298,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:303,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:306,1
    - Dst: test_slabhash_sizefunc
      Src: /src/unbound/testcode/unitlruhash.c:307,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/testcode/unitlruhash.c:308,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct lruhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 309
    functionName: check_table
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 0
    functionsReached:
    - test_slabhash_sizefunc
    - lock_quick_unlock
    - lock_quick_lock
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void check_table(struct lruhash* table)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: random
      Src: /src/unbound/testcode/unitlruhash.c:315,1
    - Dst: newdata
      Src: /src/unbound/testcode/unitlruhash.c:316,1
    - Dst: newkey
      Src: /src/unbound/testcode/unitlruhash.c:317,1
    - Dst: lruhash_insert
      Src: /src/unbound/testcode/unitlruhash.c:319,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitlruhash.c:319,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - table
    - ref
    argTypes:
    - struct lruhash*
    - testdata_type**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 312
    functionDepth: 1
    functionLinenumber: 312
    functionLinenumberEnd: 322
    functionName: testadd_unlim
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 0
    functionsReached:
    - newdata
    - random
    - lruhash_insert
    - myhash
    - newkey
    linkageType: ''
    returnType: void
    signature: void testadd_unlim(struct lruhash* table, testdata_type** ref)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: random
      Src: /src/unbound/testcode/unitlruhash.c:328,1
    - Dst: newkey
      Src: /src/unbound/testcode/unitlruhash.c:329,1
    - Dst: lruhash_remove
      Src: /src/unbound/testcode/unitlruhash.c:330,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitlruhash.c:330,1
    - Dst: delkey
      Src: /src/unbound/testcode/unitlruhash.c:333,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - table
    - ref
    argTypes:
    - struct lruhash*
    - testdata_type**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 334
    functionName: testremove_unlim
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 0
    functionsReached:
    - delkey
    - lruhash_remove
    - random
    - myhash
    - newkey
    linkageType: ''
    returnType: void
    signature: void testremove_unlim(struct lruhash* table, testdata_type** ref)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: random
      Src: /src/unbound/testcode/unitlruhash.c:340,1
    - Dst: newkey
      Src: /src/unbound/testcode/unitlruhash.c:341,1
    - Dst: lruhash_lookup
      Src: /src/unbound/testcode/unitlruhash.c:342,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitlruhash.c:342,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:345,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:346,1
    - Dst: log_info
      Src: /src/unbound/testcode/unitlruhash.c:348,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:352,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitlruhash.c:354,1
    - Dst: delkey
      Src: /src/unbound/testcode/unitlruhash.c:355,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - table
    - ref
    argTypes:
    - struct lruhash*
    - testdata_type**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 356
    functionName: testlookup_unlim
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 0
    functionsReached:
    - delkey
    - lock_rw_unlock
    - log_info
    - random
    - myhash
    - lruhash_lookup
    - unit_assert
    - newkey
    linkageType: ''
    returnType: void
    signature: void testlookup_unlim(struct lruhash* table, testdata_type** ref)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/unitlruhash.c:365,1
    - Dst: log_info
      Src: /src/unbound/testcode/unitlruhash.c:367,1
    - Dst: test_slabhash_sizefunc
      Src: /src/unbound/testcode/unitlruhash.c:367,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:369,1
    - Dst: test_slabhash_sizefunc
      Src: /src/unbound/testcode/unitlruhash.c:369,1
    - Dst: lruhash_status
      Src: /src/unbound/testcode/unitlruhash.c:370,1
    - Dst: srandom
      Src: /src/unbound/testcode/unitlruhash.c:371,1
    - Dst: lruhash_clear
      Src: /src/unbound/testcode/unitlruhash.c:375,1
    - Dst: memset
      Src: /src/unbound/testcode/unitlruhash.c:376,1
    - Dst: random
      Src: /src/unbound/testcode/unitlruhash.c:379,1
    - Dst: testadd
      Src: /src/unbound/testcode/unitlruhash.c:382,1
    - Dst: testremove
      Src: /src/unbound/testcode/unitlruhash.c:385,1
    - Dst: testlookup
      Src: /src/unbound/testcode/unitlruhash.c:388,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:391,1
    - Dst: lruhash_status
      Src: /src/unbound/testcode/unitlruhash.c:393,1
    - Dst: check_table
      Src: /src/unbound/testcode/unitlruhash.c:394,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:395,1
    - Dst: random
      Src: /src/unbound/testcode/unitlruhash.c:401,1
    - Dst: testadd_unlim
      Src: /src/unbound/testcode/unitlruhash.c:404,1
    - Dst: testremove_unlim
      Src: /src/unbound/testcode/unitlruhash.c:407,1
    - Dst: testlookup_unlim
      Src: /src/unbound/testcode/unitlruhash.c:410,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:413,1
    - Dst: lruhash_status
      Src: /src/unbound/testcode/unitlruhash.c:415,1
    - Dst: check_table
      Src: /src/unbound/testcode/unitlruhash.c:416,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 52
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct lruhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 418
    functionName: test_long_table
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 0
    functionsReached:
    - testadd
    - testlookup_unlim
    - srandom
    - lruhash_status
    - testlookup
    - testremove_unlim
    - log_info
    - random
    - check_table
    - testadd_unlim
    - test_slabhash_sizefunc
    - memset
    - testremove
    - unit_assert
    - lruhash_clear
    linkageType: ''
    returnType: void
    signature: void test_long_table(struct lruhash* table)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_thread_set
      Src: /src/unbound/testcode/unitlruhash.c:436,1
    - Dst: random
      Src: /src/unbound/testcode/unitlruhash.c:438,1
    - Dst: testadd_unlim
      Src: /src/unbound/testcode/unitlruhash.c:441,1
    - Dst: testremove_unlim
      Src: /src/unbound/testcode/unitlruhash.c:444,1
    - Dst: testlookup_unlim
      Src: /src/unbound/testcode/unitlruhash.c:447,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitlruhash.c:450,1
    - Dst: lruhash_status
      Src: /src/unbound/testcode/unitlruhash.c:452,1
    - Dst: check_table
      Src: /src/unbound/testcode/unitlruhash.c:454,1
    - Dst: check_table
      Src: /src/unbound/testcode/unitlruhash.c:456,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 458
    functionName: test_thr_main
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 0
    functionsReached:
    - testremove_unlim
    - lruhash_status
    - random
    - log_thread_set
    - testadd_unlim
    - check_table
    - unit_assert
    - testlookup_unlim
    linkageType: ''
    returnType: void
    signature: 'void *

      test_thr_main(void* arg)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_thread_create
      Src: /src/unbound/testcode/unitlruhash.c:471,1
    - Dst: ub_thread_join
      Src: /src/unbound/testcode/unitlruhash.c:475,1
    - Dst: lruhash_status
      Src: /src/unbound/testcode/unitlruhash.c:477,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct lruhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 461
    functionDepth: 1
    functionLinenumber: 461
    functionLinenumberEnd: 478
    functionName: test_threaded_table
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 0
    functionsReached:
    - ub_thread_join
    - ub_thread_create
    - lruhash_status
    linkageType: ''
    returnType: void
    signature: void test_threaded_table(struct lruhash* table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitlruhash.c:485,1
    - Dst: lruhash_create
      Src: /src/unbound/testcode/unitlruhash.c:486,1
    - Dst: test_bin_find_entry
      Src: /src/unbound/testcode/unitlruhash.c:489,1
    - Dst: test_lru
      Src: /src/unbound/testcode/unitlruhash.c:490,1
    - Dst: test_short_table
      Src: /src/unbound/testcode/unitlruhash.c:491,1
    - Dst: test_long_table
      Src: /src/unbound/testcode/unitlruhash.c:492,1
    - Dst: lruhash_delete
      Src: /src/unbound/testcode/unitlruhash.c:493,1
    - Dst: lruhash_create
      Src: /src/unbound/testcode/unitlruhash.c:494,1
    - Dst: test_threaded_table
      Src: /src/unbound/testcode/unitlruhash.c:497,1
    - Dst: lruhash_delete
      Src: /src/unbound/testcode/unitlruhash.c:498,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 480
    functionDepth: 2
    functionLinenumber: 480
    functionLinenumberEnd: 499
    functionName: lruhash_test
    functionSourceFile: /src/unbound/testcode/unitlruhash.c
    functionUses: 0
    functionsReached:
    - test_lru
    - test_bin_find_entry
    - test_long_table
    - unit_show_feature
    - test_short_table
    - test_threaded_table
    - lruhash_delete
    - lruhash_create
    linkageType: ''
    returnType: void
    signature: void lruhash_test(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: infra_lookup_nottl
      Src: /src/unbound/testcode/unitinfra.c:54,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitinfra.c:59,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 8
    argNames:
    - infra
    - addr
    - addrlen
    - zone
    - zonelen
    - wr
    - now
    - k
    argTypes:
    - struct infra_cache*
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - int
    - time_t
    - struct infra_key**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 49
    functionDepth: 4
    functionLinenumber: 49
    functionLinenumberEnd: 64
    functionName: infra_lookup_host
    functionSourceFile: /src/unbound/testcode/unitinfra.c
    functionUses: 0
    functionsReached:
    - lock_rw_unlock
    - infra_lookup_nottl
    linkageType: ''
    returnType: struct infra_data
    signature: "struct infra_data * infra_lookup_host(struct infra_cache* infra,\n\tstruct
      sockaddr_storage* addr, socklen_t addrlen, uint8_t* zone,\n\tsize_t zonelen,
      int wr, time_t now, struct infra_key** k)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_apply_max_rtt
      Src: /src/unbound/testcode/unitinfra.c:78,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:83,1
    - Dst: infra_host
      Src: /src/unbound/testcode/unitinfra.c:83,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:88,1
    - Dst: infra_rtt_update
      Src: /src/unbound/testcode/unitinfra.c:88,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:90,1
    - Dst: infra_host
      Src: /src/unbound/testcode/unitinfra.c:90,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:92,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:94,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:97,1
    - Dst: infra_lookup_host
      Src: /src/unbound/testcode/unitinfra.c:97,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:98,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:99,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitinfra.c:101,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:108,1
    - Dst: infra_get_lame_rtt
      Src: /src/unbound/testcode/unitinfra.c:108,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:110,1
    - Dst: still_useful_timeout
      Src: /src/unbound/testcode/unitinfra.c:111,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 9
    argNames:
    - slab
    - cfg
    - one
    - onelen
    - zone
    - zonelen
    - now
    - keep_probing
    - rtt_max_timeout
    argTypes:
    - struct infra_cache*
    - struct config_file*
    - struct sockaddr_storage
    - socklen_t
    - uint8_t*
    - size_t
    - time_t*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 66
    functionDepth: 5
    functionLinenumber: 66
    functionLinenumberEnd: 112
    functionName: test_keep_probing
    functionSourceFile: /src/unbound/testcode/unitinfra.c
    functionUses: 0
    functionsReached:
    - infra_rtt_update
    - lock_rw_unlock
    - still_useful_timeout
    - config_apply_max_rtt
    - infra_host
    - infra_lookup_host
    - infra_get_lame_rtt
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void test_keep_probing(struct infra_cache* slab,\n\tstruct config_file*
      cfg, struct sockaddr_storage one, socklen_t onelen,\n\tuint8_t* zone, size_t
      zonelen, time_t *now, int keep_probing,\n\tint rtt_max_timeout)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_create
      Src: /src/unbound/testcode/unitinfra.c:122,1
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitinfra.c:131,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:132,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitinfra.c:132,1
    - Dst: config_auto_slab_values
      Src: /src/unbound/testcode/unitinfra.c:134,1
    - Dst: infra_create
      Src: /src/unbound/testcode/unitinfra.c:135,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:137,1
    - Dst: infra_host
      Src: /src/unbound/testcode/unitinfra.c:137,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:139,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:142,1
    - Dst: infra_rtt_update
      Src: /src/unbound/testcode/unitinfra.c:142,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:143,1
    - Dst: infra_host
      Src: /src/unbound/testcode/unitinfra.c:143,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:145,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:148,1
    - Dst: infra_edns_update
      Src: /src/unbound/testcode/unitinfra.c:148,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:149,1
    - Dst: infra_host
      Src: /src/unbound/testcode/unitinfra.c:149,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:151,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:155,1
    - Dst: infra_host
      Src: /src/unbound/testcode/unitinfra.c:155,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:157,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:160,1
    - Dst: infra_set_lame
      Src: /src/unbound/testcode/unitinfra.c:160,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:162,1
    - Dst: infra_lookup_host
      Src: /src/unbound/testcode/unitinfra.c:162,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:163,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:164,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:165,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitinfra.c:167,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:170,1
    - Dst: infra_set_lame
      Src: /src/unbound/testcode/unitinfra.c:170,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:172,1
    - Dst: infra_lookup_host
      Src: /src/unbound/testcode/unitinfra.c:172,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:173,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitinfra.c:175,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:179,1
    - Dst: infra_host
      Src: /src/unbound/testcode/unitinfra.c:179,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:181,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:183,1
    - Dst: infra_edns_update
      Src: /src/unbound/testcode/unitinfra.c:183,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:184,1
    - Dst: infra_host
      Src: /src/unbound/testcode/unitinfra.c:184,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:186,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:188,1
    - Dst: infra_edns_update
      Src: /src/unbound/testcode/unitinfra.c:188,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:189,1
    - Dst: infra_host
      Src: /src/unbound/testcode/unitinfra.c:189,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitinfra.c:191,1
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitinfra.c:193,1
    - Dst: test_keep_probing
      Src: /src/unbound/testcode/unitinfra.c:194,1
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitinfra.c:196,1
    - Dst: test_keep_probing
      Src: /src/unbound/testcode/unitinfra.c:197,1
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitinfra.c:199,1
    - Dst: test_keep_probing
      Src: /src/unbound/testcode/unitinfra.c:200,1
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitinfra.c:202,1
    - Dst: test_keep_probing
      Src: /src/unbound/testcode/unitinfra.c:203,1
    - Dst: config_apply_max_rtt
      Src: /src/unbound/testcode/unitinfra.c:206,1
    - Dst: infra_delete
      Src: /src/unbound/testcode/unitinfra.c:208,1
    - Dst: config_delete
      Src: /src/unbound/testcode/unitinfra.c:209,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 46
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 115
    functionDepth: 8
    functionLinenumber: 115
    functionLinenumberEnd: 210
    functionName: infra_test
    functionSourceFile: /src/unbound/testcode/unitinfra.c
    functionUses: 0
    functionsReached:
    - infra_create
    - infra_rtt_update
    - infra_set_lame
    - config_create
    - lock_rw_unlock
    - config_delete
    - ipstrtoaddr
    - infra_edns_update
    - unit_show_feature
    - config_auto_slab_values
    - test_keep_probing
    - config_apply_max_rtt
    - infra_host
    - infra_lookup_host
    - unit_assert
    - infra_delete
    linkageType: ''
    returnType: void
    signature: void infra_test(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/testcode/checklocks.c:98,1
    - Dst: log_err
      Src: /src/unbound/testcode/checklocks.c:99,1
    - Dst: log_err
      Src: /src/unbound/testcode/checklocks.c:102,1
    - Dst: log_err
      Src: /src/unbound/testcode/checklocks.c:104,1
    - Dst: log_err
      Src: /src/unbound/testcode/checklocks.c:105,1
    - Dst: log_err
      Src: /src/unbound/testcode/checklocks.c:109,1
    - Dst: total_debug_info
      Src: /src/unbound/testcode/checklocks.c:110,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/checklocks.c:111,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 5
    argNames:
    - lock
    - func
    - file
    - line
    - err
    argTypes:
    - struct checked_lock*
    - char*
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 95
    functionDepth: 1
    functionLinenumber: 95
    functionLinenumberEnd: 112
    functionName: lock_error
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - log_err
    - fatal_exit
    - total_debug_info
    linkageType: ''
    returnType: void
    signature: "void lock_error(struct checked_lock* lock, \n\tconst char* func, const
      char* file, int line, const char* err)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_trylock
      Src: /src/unbound/testcode/checklocks.c:130,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/checklocks.c:133,1
    - Dst: strerror
      Src: /src/unbound/testcode/checklocks.c:133,1
    - Dst: time
      Src: /src/unbound/testcode/checklocks.c:137,1
    - Dst: pthread_mutex_timedlock
      Src: /src/unbound/testcode/checklocks.c:139,1
    - Dst: log_err
      Src: /src/unbound/testcode/checklocks.c:141,1
    - Dst: strerror
      Src: /src/unbound/testcode/checklocks.c:141,1
    - Dst: lock_error
      Src: /src/unbound/testcode/checklocks.c:142,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - lock
    - func
    - file
    - line
    argTypes:
    - struct checked_lock*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 122
    functionDepth: 2
    functionLinenumber: 122
    functionLinenumberEnd: 146
    functionName: acquire_locklock
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - log_err
    - pthread_mutex_trylock
    - time
    - fatal_exit
    - lock_error
    - strerror
    - pthread_mutex_timedlock
    linkageType: ''
    returnType: void
    signature: "void acquire_locklock(struct checked_lock* lock, \n\tconst char* func,
      const char* file, int line)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/testcode/checklocks.c:154,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/checklocks.c:157,1
    - Dst: malloc
      Src: /src/unbound/testcode/checklocks.c:164,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/checklocks.c:166,1
    - Dst: memcpy
      Src: /src/unbound/testcode/checklocks.c:167,1
    - Dst: acquire_locklock
      Src: /src/unbound/testcode/checklocks.c:169,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:172,1
    - Dst: pthread_mutex_unlock
      Src: /src/unbound/testcode/checklocks.c:172,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 7
    argNames:
    - p
    - area
    - size
    - def_func
    - def_file
    - def_line
    - def_area
    argTypes:
    - void*
    - void*
    - size_t
    - char*
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 149
    functionDepth: 3
    functionLinenumber: 149
    functionLinenumberEnd: 173
    functionName: lock_protect_place
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - memcpy
    - pthread_mutex_unlock
    - fatal_exit
    - malloc
    - acquire_locklock
    - LOCKRET
    linkageType: ''
    returnType: void
    signature: "void lock_protect_place(void* p, void* area, size_t size, const char*
      def_func,\n\tconst char* def_file, int def_line, const char* def_area)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: acquire_locklock
      Src: /src/unbound/testcode/checklocks.c:183,1
    - Dst: free
      Src: /src/unbound/testcode/checklocks.c:189,1
    - Dst: free
      Src: /src/unbound/testcode/checklocks.c:190,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:191,1
    - Dst: pthread_mutex_unlock
      Src: /src/unbound/testcode/checklocks.c:191,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:197,1
    - Dst: pthread_mutex_unlock
      Src: /src/unbound/testcode/checklocks.c:197,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - mangled
    - area
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 176
    functionDepth: 3
    functionLinenumber: 176
    functionLinenumberEnd: 198
    functionName: lock_unprotect
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 4
    functionsReached:
    - free
    - acquire_locklock
    - LOCKRET
    - pthread_mutex_unlock
    linkageType: ''
    returnType: void
    signature: void lock_unprotect(void* mangled, void* area)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/testcode/checklocks.c:213,1
    - Dst: log_hex
      Src: /src/unbound/testcode/checklocks.c:214,1
    - Dst: log_hex
      Src: /src/unbound/testcode/checklocks.c:215,1
    - Dst: log_err
      Src: /src/unbound/testcode/checklocks.c:216,1
    - Dst: lock_error
      Src: /src/unbound/testcode/checklocks.c:219,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - lock
    - func
    - file
    - line
    argTypes:
    - struct checked_lock*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 207
    functionDepth: 2
    functionLinenumber: 207
    functionLinenumberEnd: 224
    functionName: prot_check
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - lock_error
    - log_err
    - log_hex
    - memcmp
    linkageType: ''
    returnType: void
    signature: "void prot_check(struct checked_lock* lock,\n\tconst char* func, const
      char* file, int line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/testcode/checklocks.c:232,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - lock
    argTypes:
    - struct checked_lock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 235
    functionName: prot_store
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void prot_store(struct checked_lock* lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: acquire_locklock
      Src: /src/unbound/testcode/checklocks.c:245,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:250,1
    - Dst: pthread_mutex_unlock
      Src: /src/unbound/testcode/checklocks.c:250,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - pp
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 238
    functionDepth: 3
    functionLinenumber: 238
    functionLinenumberEnd: 252
    functionName: lock_get_mem
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 5
    functionsReached:
    - acquire_locklock
    - LOCKRET
    - pthread_mutex_unlock
    linkageType: ''
    returnType: size_t
    signature: size_t lock_get_mem(void* pp)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fwrite
      Src: /src/unbound/testcode/checklocks.c:266,1
    - Dst: fwrite
      Src: /src/unbound/testcode/checklocks.c:267,1
    - Dst: strlen
      Src: /src/unbound/testcode/checklocks.c:267,1
    - Dst: fwrite
      Src: /src/unbound/testcode/checklocks.c:269,1
    - Dst: log_err
      Src: /src/unbound/testcode/checklocks.c:271,1
    - Dst: strerror
      Src: /src/unbound/testcode/checklocks.c:271,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - thr
    - lock
    argTypes:
    - struct thr_check*
    - struct checked_lock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 255
    functionDepth: 1
    functionLinenumber: 255
    functionLinenumberEnd: 272
    functionName: ordercheck_locklock
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - log_err
    - strerror
    - fwrite
    - strlen
    linkageType: ''
    returnType: void
    signature: void ordercheck_locklock(struct thr_check* thr, struct checked_lock*
      lock)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fwrite
      Src: /src/unbound/testcode/checklocks.c:282,1
    - Dst: fwrite
      Src: /src/unbound/testcode/checklocks.c:283,1
    - Dst: fwrite
      Src: /src/unbound/testcode/checklocks.c:285,1
    - Dst: fwrite
      Src: /src/unbound/testcode/checklocks.c:287,1
    - Dst: strlen
      Src: /src/unbound/testcode/checklocks.c:287,1
    - Dst: fwrite
      Src: /src/unbound/testcode/checklocks.c:289,1
    - Dst: log_err
      Src: /src/unbound/testcode/checklocks.c:291,1
    - Dst: strerror
      Src: /src/unbound/testcode/checklocks.c:291,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 5
    argCount: 2
    argNames:
    - thr
    - lock
    argTypes:
    - struct thr_check*
    - struct checked_lock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 292
    functionName: ordercheck_lockcreate
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - log_err
    - strerror
    - fwrite
    - strlen
    linkageType: ''
    returnType: void
    signature: void ordercheck_lockcreate(struct thr_check* thr, struct checked_lock*
      lock)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/checklocks.c:299,1
    - Dst: pthread_getspecific
      Src: /src/unbound/testcode/checklocks.c:301,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/checklocks.c:304,1
    - Dst: checklock_start
      Src: /src/unbound/testcode/checklocks.c:311,1
    - Dst: pthread_getspecific
      Src: /src/unbound/testcode/checklocks.c:312,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/checklocks.c:315,1
    - Dst: ordercheck_lockcreate
      Src: /src/unbound/testcode/checklocks.c:324,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:325,1
    - Dst: pthread_mutex_init
      Src: /src/unbound/testcode/checklocks.c:325,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:328,1
    - Dst: pthread_mutex_init
      Src: /src/unbound/testcode/checklocks.c:328,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:331,1
    - Dst: pthread_spin_init
      Src: /src/unbound/testcode/checklocks.c:331,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:334,1
    - Dst: pthread_rwlock_init
      Src: /src/unbound/testcode/checklocks.c:334,1
    - Dst: log_assert
      Src: /src/unbound/testcode/checklocks.c:337,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 31
    argCount: 5
    argNames:
    - type
    - lock
    - func
    - file
    - line
    argTypes:
    - enum check_lock_type
    - struct checked_lock**
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 295
    functionDepth: 2
    functionLinenumber: 295
    functionLinenumberEnd: 339
    functionName: checklock_init
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - ordercheck_lockcreate
    - fatal_exit
    - pthread_getspecific
    - pthread_mutex_init
    - calloc
    - log_assert
    - pthread_rwlock_init
    - pthread_spin_init
    - LOCKRET
    - checklock_start
    linkageType: ''
    returnType: void
    signature: "void checklock_init(enum check_lock_type type, struct checked_lock**
      lock,\n        const char* func, const char* file, int line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/testcode/checklocks.c:348,1
    - Dst: free
      Src: /src/unbound/testcode/checklocks.c:349,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - lock
    argTypes:
    - struct checked_lock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 352
    functionName: prot_clear
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void prot_clear(struct checked_lock* lock)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fatal_exit
      Src: /src/unbound/testcode/checklocks.c:360,1
    - Dst: lock_error
      Src: /src/unbound/testcode/checklocks.c:363,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 5
    argNames:
    - type
    - lock
    - func
    - file
    - line
    argTypes:
    - enum check_lock_type
    - struct checked_lock*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 355
    functionDepth: 2
    functionLinenumber: 355
    functionLinenumberEnd: 365
    functionName: checktype
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - lock_error
    - fatal_exit
    linkageType: ''
    returnType: void
    signature: "void checktype(enum check_lock_type type, struct checked_lock* lock,\n
      \       const char* func, const char* file, int line)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: checktype
      Src: /src/unbound/testcode/checklocks.c:379,1
    - Dst: acquire_locklock
      Src: /src/unbound/testcode/checklocks.c:382,1
    - Dst: lock_error
      Src: /src/unbound/testcode/checklocks.c:384,1
    - Dst: lock_error
      Src: /src/unbound/testcode/checklocks.c:386,1
    - Dst: prot_check
      Src: /src/unbound/testcode/checklocks.c:387,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:389,1
    - Dst: pthread_mutex_unlock
      Src: /src/unbound/testcode/checklocks.c:389,1
    - Dst: log_info
      Src: /src/unbound/testcode/checklocks.c:394,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:402,1
    - Dst: pthread_mutex_destroy
      Src: /src/unbound/testcode/checklocks.c:402,1
    - Dst: prot_clear
      Src: /src/unbound/testcode/checklocks.c:403,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:408,1
    - Dst: pthread_mutex_destroy
      Src: /src/unbound/testcode/checklocks.c:408,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:411,1
    - Dst: pthread_spin_destroy
      Src: /src/unbound/testcode/checklocks.c:411,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:414,1
    - Dst: pthread_rwlock_destroy
      Src: /src/unbound/testcode/checklocks.c:414,1
    - Dst: log_assert
      Src: /src/unbound/testcode/checklocks.c:417,1
    - Dst: memset
      Src: /src/unbound/testcode/checklocks.c:419,1
    - Dst: free
      Src: /src/unbound/testcode/checklocks.c:420,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 35
    argCount: 5
    argNames:
    - type
    - lock
    - func
    - file
    - line
    argTypes:
    - enum check_lock_type
    - struct checked_lock**
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 368
    functionDepth: 3
    functionLinenumber: 368
    functionLinenumberEnd: 421
    functionName: checklock_destroy
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_destroy
    - pthread_mutex_unlock
    - prot_check
    - log_info
    - prot_clear
    - free
    - lock_error
    - acquire_locklock
    - pthread_rwlock_destroy
    - log_assert
    - memset
    - checktype
    - LOCKRET
    - pthread_spin_destroy
    linkageType: ''
    returnType: void
    signature: "void checklock_destroy(enum check_lock_type type, struct checked_lock**
      lock,\n        const char* func, const char* file, int line)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ordercheck_locklock
      Src: /src/unbound/testcode/checklocks.c:435,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 5
    argNames:
    - thr
    - lock
    - func
    - file
    - line
    argTypes:
    - struct thr_check*
    - struct checked_lock*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 447
      start: 424
    functionDepth: 2
    functionLinenumber: 424
    functionLinenumberEnd: 447
    functionName: finish_acquire_lock
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - ordercheck_locklock
    linkageType: ''
    returnType: void
    signature: "void finish_acquire_lock(struct thr_check* thr, struct checked_lock*
      lock,\n        const char* func, const char* file, int line)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: pthread_getspecific
      Src: /src/unbound/testcode/checklocks.c:471,1
    - Dst: checktype
      Src: /src/unbound/testcode/checklocks.c:473,1
    - Dst: lock_error
      Src: /src/unbound/testcode/checklocks.c:474,1
    - Dst: acquire_locklock
      Src: /src/unbound/testcode/checklocks.c:476,1
    - Dst: lock_error
      Src: /src/unbound/testcode/checklocks.c:480,1
    - Dst: lock_error
      Src: /src/unbound/testcode/checklocks.c:482,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:483,1
    - Dst: pthread_mutex_unlock
      Src: /src/unbound/testcode/checklocks.c:483,1
    - Dst: tryfunc
      Src: /src/unbound/testcode/checklocks.c:486,1
    - Dst: log_err
      Src: /src/unbound/testcode/checklocks.c:488,1
    - Dst: strerror
      Src: /src/unbound/testcode/checklocks.c:488,1
    - Dst: time
      Src: /src/unbound/testcode/checklocks.c:489,1
    - Dst: timedfunc
      Src: /src/unbound/testcode/checklocks.c:491,1
    - Dst: lock_error
      Src: /src/unbound/testcode/checklocks.c:493,1
    - Dst: log_err
      Src: /src/unbound/testcode/checklocks.c:495,1
    - Dst: strerror
      Src: /src/unbound/testcode/checklocks.c:495,1
    - Dst: acquire_locklock
      Src: /src/unbound/testcode/checklocks.c:501,1
    - Dst: lock_error
      Src: /src/unbound/testcode/checklocks.c:505,1
    - Dst: lock_error
      Src: /src/unbound/testcode/checklocks.c:507,1
    - Dst: prot_check
      Src: /src/unbound/testcode/checklocks.c:515,1
    - Dst: finish_acquire_lock
      Src: /src/unbound/testcode/checklocks.c:516,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:517,1
    - Dst: pthread_mutex_unlock
      Src: /src/unbound/testcode/checklocks.c:517,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 37
    argCount: 8
    argNames:
    - type
    - lock
    - func
    - file
    - line
    - arg
    - exclusive
    - getwr
    argTypes:
    - enum check_lock_type
    - struct checked_lock*
    - char*
    - char*
    - int
    - void*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 463
    functionDepth: 3
    functionLinenumber: 463
    functionLinenumberEnd: 518
    functionName: checklock_lockit
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - timedfunc
    - log_err
    - pthread_mutex_unlock
    - prot_check
    - time
    - finish_acquire_lock
    - lock_error
    - pthread_getspecific
    - acquire_locklock
    - strerror
    - tryfunc
    - checktype
    - LOCKRET
    linkageType: ''
    returnType: void
    signature: "void checklock_lockit(enum check_lock_type type, struct checked_lock*
      lock,\n        const char* func, const char* file, int line,\n\tint (*tryfunc)(void*),
      int (*timedfunc)(void*, struct timespec*),\n\tvoid* arg, int exclusive, int
      getwr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_rwlock_tryrdlock
      Src: /src/unbound/testcode/checklocks.c:522,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 521
    functionDepth: 0
    functionLinenumber: 521
    functionLinenumberEnd: 522
    functionName: try_rd
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - pthread_rwlock_tryrdlock
    linkageType: ''
    returnType: int
    signature: int try_rd(void* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_rwlock_timedrdlock
      Src: /src/unbound/testcode/checklocks.c:525,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg
    - to
    argTypes:
    - void*
    - struct timespec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 524
    functionDepth: 0
    functionLinenumber: 524
    functionLinenumberEnd: 525
    functionName: timed_rd
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - pthread_rwlock_timedrdlock
    linkageType: ''
    returnType: int
    signature: int timed_rd(void* arg, struct timespec* to)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/unbound/testcode/checklocks.c:537,1
    - Dst: log_assert
      Src: /src/unbound/testcode/checklocks.c:538,1
    - Dst: checklock_lockit
      Src: /src/unbound/testcode/checklocks.c:539,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 5
    argNames:
    - type
    - lock
    - func
    - file
    - line
    argTypes:
    - enum check_lock_type
    - struct checked_lock*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 541
      start: 528
    functionDepth: 4
    functionLinenumber: 528
    functionLinenumberEnd: 541
    functionName: checklock_rdlock
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - fprintf
    - log_assert
    - checklock_lockit
    linkageType: ''
    returnType: void
    signature: "void checklock_rdlock(enum check_lock_type type, struct checked_lock*
      lock,\n        const char* func, const char* file, int line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_rwlock_trywrlock
      Src: /src/unbound/testcode/checklocks.c:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 545
      start: 544
    functionDepth: 0
    functionLinenumber: 544
    functionLinenumberEnd: 545
    functionName: try_wr
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - pthread_rwlock_trywrlock
    linkageType: ''
    returnType: int
    signature: int try_wr(void* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_rwlock_timedwrlock
      Src: /src/unbound/testcode/checklocks.c:548,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg
    - to
    argTypes:
    - void*
    - struct timespec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 547
    functionDepth: 0
    functionLinenumber: 547
    functionLinenumberEnd: 548
    functionName: timed_wr
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - pthread_rwlock_timedwrlock
    linkageType: ''
    returnType: int
    signature: int timed_wr(void* arg, struct timespec* to)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/checklocks.c:557,1
    - Dst: fprintf
      Src: /src/unbound/testcode/checklocks.c:560,1
    - Dst: checklock_lockit
      Src: /src/unbound/testcode/checklocks.c:561,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 5
    argNames:
    - type
    - lock
    - func
    - file
    - line
    argTypes:
    - enum check_lock_type
    - struct checked_lock*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 551
    functionDepth: 4
    functionLinenumber: 551
    functionLinenumberEnd: 563
    functionName: checklock_wrlock
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - fprintf
    - log_assert
    - checklock_lockit
    linkageType: ''
    returnType: void
    signature: "void checklock_wrlock(enum check_lock_type type, struct checked_lock*
      lock,\n        const char* func, const char* file, int line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_trylock
      Src: /src/unbound/testcode/checklocks.c:567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 567
      start: 566
    functionDepth: 0
    functionLinenumber: 566
    functionLinenumberEnd: 567
    functionName: try_mutex
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_trylock
    linkageType: ''
    returnType: int
    signature: int try_mutex(void* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_mutex_timedlock
      Src: /src/unbound/testcode/checklocks.c:570,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - arg
    - to
    argTypes:
    - void*
    - struct timespec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 569
    functionDepth: 0
    functionLinenumber: 569
    functionLinenumberEnd: 570
    functionName: timed_mutex
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - pthread_mutex_timedlock
    linkageType: ''
    returnType: int
    signature: int timed_mutex(void* arg, struct timespec* to)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pthread_spin_trylock
      Src: /src/unbound/testcode/checklocks.c:574,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 573
    functionDepth: 0
    functionLinenumber: 573
    functionLinenumberEnd: 574
    functionName: try_spinlock
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - pthread_spin_trylock
    linkageType: ''
    returnType: int
    signature: int try_spinlock(void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: try_spinlock
      Src: /src/unbound/testcode/checklocks.c:580,1
    - Dst: time
      Src: /src/unbound/testcode/checklocks.c:582,1
    - Dst: usleep
      Src: /src/unbound/testcode/checklocks.c:584,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - arg
    - to
    argTypes:
    - void*
    - struct timespec*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 576
    functionDepth: 1
    functionLinenumber: 576
    functionLinenumberEnd: 588
    functionName: timed_spinlock
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - usleep
    - try_spinlock
    - time
    linkageType: ''
    returnType: int
    signature: int timed_spinlock(void* arg, struct timespec* to)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/checklocks.c:597,1
    - Dst: fprintf
      Src: /src/unbound/testcode/checklocks.c:600,1
    - Dst: checklock_lockit
      Src: /src/unbound/testcode/checklocks.c:603,1
    - Dst: checklock_lockit
      Src: /src/unbound/testcode/checklocks.c:608,1
    - Dst: log_assert
      Src: /src/unbound/testcode/checklocks.c:613,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 5
    argNames:
    - type
    - lock
    - func
    - file
    - line
    argTypes:
    - enum check_lock_type
    - struct checked_lock*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 591
    functionDepth: 4
    functionLinenumber: 591
    functionLinenumberEnd: 615
    functionName: checklock_lock
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - fprintf
    - log_assert
    - checklock_lockit
    linkageType: ''
    returnType: void
    signature: "void checklock_lock(enum check_lock_type type, struct checked_lock*
      lock,\n        const char* func, const char* file, int line)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: pthread_getspecific
      Src: /src/unbound/testcode/checklocks.c:625,1
    - Dst: checktype
      Src: /src/unbound/testcode/checklocks.c:626,1
    - Dst: lock_error
      Src: /src/unbound/testcode/checklocks.c:627,1
    - Dst: acquire_locklock
      Src: /src/unbound/testcode/checklocks.c:629,1
    - Dst: lock_error
      Src: /src/unbound/testcode/checklocks.c:633,1
    - Dst: lock_error
      Src: /src/unbound/testcode/checklocks.c:636,1
    - Dst: fprintf
      Src: /src/unbound/testcode/checklocks.c:640,1
    - Dst: prot_store
      Src: /src/unbound/testcode/checklocks.c:668,1
    - Dst: prot_store
      Src: /src/unbound/testcode/checklocks.c:671,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:673,1
    - Dst: pthread_mutex_unlock
      Src: /src/unbound/testcode/checklocks.c:673,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:678,1
    - Dst: pthread_mutex_unlock
      Src: /src/unbound/testcode/checklocks.c:678,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:681,1
    - Dst: pthread_spin_unlock
      Src: /src/unbound/testcode/checklocks.c:681,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:684,1
    - Dst: pthread_rwlock_unlock
      Src: /src/unbound/testcode/checklocks.c:684,1
    - Dst: log_assert
      Src: /src/unbound/testcode/checklocks.c:687,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 51
    argCount: 5
    argNames:
    - type
    - lock
    - func
    - file
    - line
    argTypes:
    - enum check_lock_type
    - struct checked_lock*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 618
    functionDepth: 3
    functionLinenumber: 618
    functionLinenumberEnd: 689
    functionName: checklock_unlock
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - prot_store
    - pthread_rwlock_unlock
    - pthread_mutex_unlock
    - pthread_spin_unlock
    - lock_error
    - pthread_getspecific
    - acquire_locklock
    - log_assert
    - fprintf
    - checktype
    - LOCKRET
    linkageType: ''
    returnType: void
    signature: "void checklock_unlock(enum check_lock_type type, struct checked_lock*
      lock,\n        const char* func, const char* file, int line)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 691
    functionDepth: 0
    functionLinenumber: 691
    functionLinenumberEnd: 695
    functionName: checklock_set_output_name
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void checklock_set_output_name(const char* name)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/testcode/checklocks.c:703,1
    - Dst: fopen
      Src: /src/unbound/testcode/checklocks.c:706,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/checklocks.c:708,1
    - Dst: strerror
      Src: /src/unbound/testcode/checklocks.c:708,1
    - Dst: fopen
      Src: /src/unbound/testcode/checklocks.c:712,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/checklocks.c:714,1
    - Dst: strerror
      Src: /src/unbound/testcode/checklocks.c:714,1
    - Dst: time
      Src: /src/unbound/testcode/checklocks.c:718,1
    - Dst: fwrite
      Src: /src/unbound/testcode/checklocks.c:720,1
    - Dst: fwrite
      Src: /src/unbound/testcode/checklocks.c:721,1
    - Dst: fwrite
      Src: /src/unbound/testcode/checklocks.c:722,1
    - Dst: log_err
      Src: /src/unbound/testcode/checklocks.c:724,1
    - Dst: strerror
      Src: /src/unbound/testcode/checklocks.c:724,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - thr
    argTypes:
    - struct thr_check*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 725
      start: 698
    functionDepth: 2
    functionLinenumber: 698
    functionLinenumberEnd: 725
    functionName: open_lockorder
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - log_err
    - fwrite
    - snprintf
    - time
    - fatal_exit
    - fopen
    - strerror
    linkageType: ''
    returnType: void
    signature: void open_lockorder(struct thr_check* thr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: pthread_self
      Src: /src/unbound/testcode/checklocks.c:732,1
    - Dst: log_assert
      Src: /src/unbound/testcode/checklocks.c:735,1
    - Dst: log_warn
      Src: /src/unbound/testcode/checklocks.c:738,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:740,1
    - Dst: pthread_setspecific
      Src: /src/unbound/testcode/checklocks.c:740,1
    - Dst: open_lockorder
      Src: /src/unbound/testcode/checklocks.c:742,1
    - Dst: struct thr_check*::func
      Src: /src/unbound/testcode/checklocks.c:743,1
    - Dst: fclose
      Src: /src/unbound/testcode/checklocks.c:747,1
    - Dst: free
      Src: /src/unbound/testcode/checklocks.c:748,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 750
      start: 728
    functionDepth: 3
    functionLinenumber: 728
    functionLinenumberEnd: 750
    functionName: checklock_main
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - fclose
    - struct thr_check*::func
    - free
    - log_assert
    - pthread_setspecific
    - log_warn
    - pthread_self
    - LOCKRET
    - open_lockorder
    linkageType: ''
    returnType: void
    signature: void * checklock_main(void* arg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/checklocks.c:758,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/checklocks.c:761,1
    - Dst: getpid
      Src: /src/unbound/testcode/checklocks.c:763,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:764,1
    - Dst: pthread_key_create
      Src: /src/unbound/testcode/checklocks.c:764,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:765,1
    - Dst: pthread_setspecific
      Src: /src/unbound/testcode/checklocks.c:765,1
    - Dst: open_lockorder
      Src: /src/unbound/testcode/checklocks.c:768,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 753
    functionDepth: 3
    functionLinenumber: 753
    functionLinenumberEnd: 770
    functionName: checklock_start
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 4
    functionsReached:
    - pthread_key_create
    - fatal_exit
    - calloc
    - getpid
    - pthread_setspecific
    - LOCKRET
    - open_lockorder
    linkageType: ''
    returnType: void
    signature: void checklock_start(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fclose
      Src: /src/unbound/testcode/checklocks.c:779,1
    - Dst: free
      Src: /src/unbound/testcode/checklocks.c:780,1
    - Dst: log_assert
      Src: /src/unbound/testcode/checklocks.c:783,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:785,1
    - Dst: pthread_key_delete
      Src: /src/unbound/testcode/checklocks.c:785,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 773
    functionDepth: 1
    functionLinenumber: 773
    functionLinenumberEnd: 788
    functionName: checklock_stop
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 3
    functionsReached:
    - pthread_key_delete
    - fclose
    - free
    - log_assert
    - LOCKRET
    linkageType: ''
    returnType: void
    signature: void checklock_stop(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/checklocks.c:794,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/checklocks.c:797,1
    - Dst: checklock_start
      Src: /src/unbound/testcode/checklocks.c:799,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:803,1
    - Dst: pthread_create
      Src: /src/unbound/testcode/checklocks.c:803,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - id
    - (*func)(void*)
    - arg
    argTypes:
    - pthread_t*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 791
    functionDepth: 4
    functionLinenumber: 791
    functionLinenumberEnd: 804
    functionName: checklock_thrcreate
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - pthread_create
    - fatal_exit
    - calloc
    - LOCKRET
    - checklock_start
    linkageType: ''
    returnType: void
    signature: void checklock_thrcreate(pthread_t* id, void* (*func)(void*), void*
      arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 807
    functionDepth: 0
    functionLinenumber: 807
    functionLinenumberEnd: 816
    functionName: count_thread_infos
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int count_thread_infos(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/testcode/checklocks.c:823,1
    - Dst: log_info
      Src: /src/unbound/testcode/checklocks.c:827,1
    - Dst: log_info
      Src: /src/unbound/testcode/checklocks.c:831,1
    - Dst: log_info
      Src: /src/unbound/testcode/checklocks.c:834,1
    - Dst: log_info
      Src: /src/unbound/testcode/checklocks.c:836,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - lock
    argTypes:
    - struct checked_lock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 839
      start: 819
    functionDepth: 1
    functionLinenumber: 819
    functionLinenumberEnd: 839
    functionName: lock_debug_info
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - log_info
    linkageType: ''
    returnType: void
    signature: void lock_debug_info(struct checked_lock* lock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_debug_info
      Src: /src/unbound/testcode/checklocks.c:846,1
    - Dst: held_debug_info
      Src: /src/unbound/testcode/checklocks.c:847,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - thr
    - lock
    argTypes:
    - struct thr_check*
    - struct checked_lock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 842
    functionDepth: 2
    functionLinenumber: 842
    functionLinenumberEnd: 848
    functionName: held_debug_info
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 1
    functionsReached:
    - held_debug_info
    - lock_debug_info
    linkageType: ''
    returnType: void
    signature: void held_debug_info(struct thr_check* thr, struct checked_lock* lock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/testcode/checklocks.c:858,1
    - Dst: log_info
      Src: /src/unbound/testcode/checklocks.c:859,1
    - Dst: log_info
      Src: /src/unbound/testcode/checklocks.c:860,1
    - Dst: log_info
      Src: /src/unbound/testcode/checklocks.c:863,1
    - Dst: log_info
      Src: /src/unbound/testcode/checklocks.c:864,1
    - Dst: log_info
      Src: /src/unbound/testcode/checklocks.c:865,1
    - Dst: fflush
      Src: /src/unbound/testcode/checklocks.c:867,1
    - Dst: log_info
      Src: /src/unbound/testcode/checklocks.c:871,1
    - Dst: lock_debug_info
      Src: /src/unbound/testcode/checklocks.c:873,1
    - Dst: log_info
      Src: /src/unbound/testcode/checklocks.c:874,1
    - Dst: held_debug_info
      Src: /src/unbound/testcode/checklocks.c:876,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 1
    argNames:
    - thr
    argTypes:
    - struct thr_check*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 851
    functionDepth: 3
    functionLinenumber: 851
    functionLinenumberEnd: 877
    functionName: thread_debug_info
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - held_debug_info
    - log_info
    - fflush
    - lock_debug_info
    linkageType: ''
    returnType: void
    signature: void thread_debug_info(struct thr_check* thr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/testcode/checklocks.c:883,1
    - Dst: count_thread_infos
      Src: /src/unbound/testcode/checklocks.c:884,1
    - Dst: log_info
      Src: /src/unbound/testcode/checklocks.c:886,1
    - Dst: log_info
      Src: /src/unbound/testcode/checklocks.c:890,1
    - Dst: thread_debug_info
      Src: /src/unbound/testcode/checklocks.c:891,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 879
    functionDepth: 4
    functionLinenumber: 879
    functionLinenumberEnd: 894
    functionName: total_debug_info
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 1
    functionsReached:
    - thread_debug_info
    - log_info
    - count_thread_infos
    linkageType: ''
    returnType: void
    signature: void total_debug_info(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/testcode/checklocks.c:899,1
    - Dst: total_debug_info
      Src: /src/unbound/testcode/checklocks.c:900,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/checklocks.c:901,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 902
      start: 897
    functionDepth: 5
    functionLinenumber: 897
    functionLinenumberEnd: 902
    functionName: joinalarm
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - log_err
    - fatal_exit
    - total_debug_info
    linkageType: ''
    returnType: RETSIGTYPE
    signature: RETSIGTYPE joinalarm(int ATTR_UNUSED(sig))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/unbound/testcode/checklocks.c:909,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/checklocks.c:910,1
    - Dst: strerror
      Src: /src/unbound/testcode/checklocks.c:910,1
    - Dst: alarm
      Src: /src/unbound/testcode/checklocks.c:911,1
    - Dst: LOCKRET
      Src: /src/unbound/testcode/checklocks.c:912,1
    - Dst: pthread_join
      Src: /src/unbound/testcode/checklocks.c:912,1
    - Dst: alarm
      Src: /src/unbound/testcode/checklocks.c:913,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - thread
    argTypes:
    - pthread_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 914
      start: 905
    functionDepth: 0
    functionLinenumber: 905
    functionLinenumberEnd: 914
    functionName: checklock_thrjoin
    functionSourceFile: /src/unbound/testcode/checklocks.c
    functionUses: 0
    functionsReached:
    - pthread_join
    - alarm
    - fatal_exit
    - strerror
    - LOCKRET
    - signal
    linkageType: ''
    returnType: void
    signature: void checklock_thrjoin(pthread_t thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 50
      start: 49
    functionDepth: 0
    functionLinenumber: 49
    functionLinenumberEnd: 50
    functionName: unit_assert
    functionSourceFile: /src/unbound/testcode/unitmain.h
    functionUses: 34
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: unit_assert(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: unit_assert
    functionSourceFile: /src/unbound/testcode/unitmain.h
    functionUses: 34
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: unit_assert(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/testcode/unitslabhash.c:53,1
    - Dst: free
      Src: /src/unbound/testcode/unitslabhash.c:53,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - k
    argTypes:
    - struct slabhash_testkey*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 1
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: delkey
    functionSourceFile: /src/unbound/testcode/unitslabhash.c
    functionUses: 6
    functionsReached:
    - free
    - lock_rw_destroy
    linkageType: ''
    returnType: void
    signature: void delkey(struct slabhash_testkey* k)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - id
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 56
    functionDepth: 0
    functionLinenumber: 56
    functionLinenumberEnd: 60
    functionName: myhash
    functionSourceFile: /src/unbound/testcode/unitslabhash.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: hashvalue_type
    signature: hashvalue_type myhash(int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/unitslabhash.c:64,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitslabhash.c:65,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitslabhash.c:67,1
    - Dst: lock_rw_init
      Src: /src/unbound/testcode/unitslabhash.c:69,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - id
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 63
    functionDepth: 1
    functionLinenumber: 63
    functionLinenumberEnd: 71
    functionName: newkey
    functionSourceFile: /src/unbound/testcode/unitslabhash.c
    functionUses: 10
    functionsReached:
    - lock_rw_init
    - myhash
    - calloc
    - fatal_exit
    linkageType: ''
    returnType: testkey_type
    signature: testkey_type * newkey(int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/unitslabhash.c:74,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitslabhash.c:76,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - val
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 79
      start: 73
    functionDepth: 1
    functionLinenumber: 73
    functionLinenumberEnd: 79
    functionName: newdata
    functionSourceFile: /src/unbound/testcode/unitslabhash.c
    functionUses: 4
    functionsReached:
    - calloc
    - fatal_exit
    linkageType: ''
    returnType: testdata_type
    signature: testdata_type * newdata(int val)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: newkey
      Src: /src/unbound/testcode/unitslabhash.c:85,1
    - Dst: newkey
      Src: /src/unbound/testcode/unitslabhash.c:86,1
    - Dst: newdata
      Src: /src/unbound/testcode/unitslabhash.c:87,1
    - Dst: newdata
      Src: /src/unbound/testcode/unitslabhash.c:88,1
    - Dst: slabhash_insert
      Src: /src/unbound/testcode/unitslabhash.c:93,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitslabhash.c:93,1
    - Dst: slabhash_insert
      Src: /src/unbound/testcode/unitslabhash.c:94,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitslabhash.c:94,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:96,1
    - Dst: slabhash_lookup
      Src: /src/unbound/testcode/unitslabhash.c:96,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitslabhash.c:96,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitslabhash.c:97,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:98,1
    - Dst: slabhash_lookup
      Src: /src/unbound/testcode/unitslabhash.c:98,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitslabhash.c:98,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitslabhash.c:99,1
    - Dst: slabhash_remove
      Src: /src/unbound/testcode/unitslabhash.c:100,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitslabhash.c:100,1
    - Dst: slabhash_remove
      Src: /src/unbound/testcode/unitslabhash.c:101,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitslabhash.c:101,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct slabhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 102
    functionName: test_short_table
    functionSourceFile: /src/unbound/testcode/unitslabhash.c
    functionUses: 1
    functionsReached:
    - slabhash_insert
    - slabhash_remove
    - lock_rw_unlock
    - newdata
    - slabhash_lookup
    - myhash
    - unit_assert
    - newkey
    linkageType: ''
    returnType: void
    signature: void test_short_table(struct slabhash* table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: random
      Src: /src/unbound/testcode/unitslabhash.c:111,1
    - Dst: newdata
      Src: /src/unbound/testcode/unitslabhash.c:112,1
    - Dst: newkey
      Src: /src/unbound/testcode/unitslabhash.c:113,1
    - Dst: slabhash_insert
      Src: /src/unbound/testcode/unitslabhash.c:115,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitslabhash.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - table
    - ref
    argTypes:
    - struct slabhash*
    - testdata_type*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 108
    functionDepth: 1
    functionLinenumber: 108
    functionLinenumberEnd: 117
    functionName: testadd
    functionSourceFile: /src/unbound/testcode/unitslabhash.c
    functionUses: 1
    functionsReached:
    - slabhash_insert
    - newdata
    - random
    - myhash
    - newkey
    linkageType: ''
    returnType: void
    signature: void testadd(struct slabhash* table, testdata_type* ref[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: random
      Src: /src/unbound/testcode/unitslabhash.c:123,1
    - Dst: newkey
      Src: /src/unbound/testcode/unitslabhash.c:124,1
    - Dst: slabhash_remove
      Src: /src/unbound/testcode/unitslabhash.c:125,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitslabhash.c:125,1
    - Dst: delkey
      Src: /src/unbound/testcode/unitslabhash.c:127,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - table
    - ref
    argTypes:
    - struct slabhash*
    - testdata_type*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 120
    functionDepth: 1
    functionLinenumber: 120
    functionLinenumberEnd: 128
    functionName: testremove
    functionSourceFile: /src/unbound/testcode/unitslabhash.c
    functionUses: 1
    functionsReached:
    - slabhash_remove
    - delkey
    - random
    - myhash
    - newkey
    linkageType: ''
    returnType: void
    signature: void testremove(struct slabhash* table, testdata_type* ref[])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: random
      Src: /src/unbound/testcode/unitslabhash.c:134,1
    - Dst: newkey
      Src: /src/unbound/testcode/unitslabhash.c:135,1
    - Dst: slabhash_lookup
      Src: /src/unbound/testcode/unitslabhash.c:136,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitslabhash.c:136,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:139,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:140,1
    - Dst: log_info
      Src: /src/unbound/testcode/unitslabhash.c:142,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:144,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitslabhash.c:145,1
    - Dst: delkey
      Src: /src/unbound/testcode/unitslabhash.c:146,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - table
    - ref
    argTypes:
    - struct slabhash*
    - testdata_type*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 131
    functionDepth: 1
    functionLinenumber: 131
    functionLinenumberEnd: 147
    functionName: testlookup
    functionSourceFile: /src/unbound/testcode/unitslabhash.c
    functionUses: 1
    functionsReached:
    - delkey
    - lock_rw_unlock
    - log_info
    - random
    - myhash
    - slabhash_lookup
    - unit_assert
    - newkey
    linkageType: ''
    returnType: void
    signature: void testlookup(struct slabhash* table, testdata_type* ref[])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_lock
      Src: /src/unbound/testcode/unitslabhash.c:155,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:156,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:157,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:158,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:160,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:163,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:165,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:169,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:172,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:177,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:180,1
    - Dst: test_slabhash_sizefunc
      Src: /src/unbound/testcode/unitslabhash.c:181,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/testcode/unitslabhash.c:182,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct lruhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 150
    functionDepth: 1
    functionLinenumber: 150
    functionLinenumberEnd: 183
    functionName: check_lru_table
    functionSourceFile: /src/unbound/testcode/unitslabhash.c
    functionUses: 0
    functionsReached:
    - test_slabhash_sizefunc
    - lock_quick_unlock
    - lock_quick_lock
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void check_lru_table(struct lruhash* table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_lru_table
      Src: /src/unbound/testcode/unitslabhash.c:191,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct slabhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 186
    functionDepth: 2
    functionLinenumber: 186
    functionLinenumberEnd: 192
    functionName: check_table
    functionSourceFile: /src/unbound/testcode/unitslabhash.c
    functionUses: 2
    functionsReached:
    - check_lru_table
    linkageType: ''
    returnType: void
    signature: void check_table(struct slabhash* table)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: random
      Src: /src/unbound/testcode/unitslabhash.c:198,1
    - Dst: newdata
      Src: /src/unbound/testcode/unitslabhash.c:199,1
    - Dst: newkey
      Src: /src/unbound/testcode/unitslabhash.c:200,1
    - Dst: slabhash_insert
      Src: /src/unbound/testcode/unitslabhash.c:202,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitslabhash.c:202,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - table
    - ref
    argTypes:
    - struct slabhash*
    - testdata_type**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 205
    functionName: testadd_unlim
    functionSourceFile: /src/unbound/testcode/unitslabhash.c
    functionUses: 2
    functionsReached:
    - slabhash_insert
    - newdata
    - random
    - myhash
    - newkey
    linkageType: ''
    returnType: void
    signature: void testadd_unlim(struct slabhash* table, testdata_type** ref)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: random
      Src: /src/unbound/testcode/unitslabhash.c:211,1
    - Dst: newkey
      Src: /src/unbound/testcode/unitslabhash.c:212,1
    - Dst: slabhash_remove
      Src: /src/unbound/testcode/unitslabhash.c:213,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitslabhash.c:213,1
    - Dst: delkey
      Src: /src/unbound/testcode/unitslabhash.c:216,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - table
    - ref
    argTypes:
    - struct slabhash*
    - testdata_type**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 217
    functionName: testremove_unlim
    functionSourceFile: /src/unbound/testcode/unitslabhash.c
    functionUses: 2
    functionsReached:
    - slabhash_remove
    - delkey
    - random
    - myhash
    - newkey
    linkageType: ''
    returnType: void
    signature: void testremove_unlim(struct slabhash* table, testdata_type** ref)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: random
      Src: /src/unbound/testcode/unitslabhash.c:223,1
    - Dst: newkey
      Src: /src/unbound/testcode/unitslabhash.c:224,1
    - Dst: slabhash_lookup
      Src: /src/unbound/testcode/unitslabhash.c:225,1
    - Dst: myhash
      Src: /src/unbound/testcode/unitslabhash.c:225,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:228,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:229,1
    - Dst: log_info
      Src: /src/unbound/testcode/unitslabhash.c:231,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:235,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitslabhash.c:237,1
    - Dst: delkey
      Src: /src/unbound/testcode/unitslabhash.c:238,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - table
    - ref
    argTypes:
    - struct slabhash*
    - testdata_type**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 220
    functionDepth: 1
    functionLinenumber: 220
    functionLinenumberEnd: 239
    functionName: testlookup_unlim
    functionSourceFile: /src/unbound/testcode/unitslabhash.c
    functionUses: 2
    functionsReached:
    - delkey
    - lock_rw_unlock
    - log_info
    - random
    - myhash
    - slabhash_lookup
    - unit_assert
    - newkey
    linkageType: ''
    returnType: void
    signature: void testlookup_unlim(struct slabhash* table, testdata_type** ref)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/unitslabhash.c:248,1
    - Dst: slabhash_status
      Src: /src/unbound/testcode/unitslabhash.c:250,1
    - Dst: srandom
      Src: /src/unbound/testcode/unitslabhash.c:251,1
    - Dst: slabhash_clear
      Src: /src/unbound/testcode/unitslabhash.c:255,1
    - Dst: memset
      Src: /src/unbound/testcode/unitslabhash.c:256,1
    - Dst: random
      Src: /src/unbound/testcode/unitslabhash.c:259,1
    - Dst: testadd
      Src: /src/unbound/testcode/unitslabhash.c:262,1
    - Dst: testremove
      Src: /src/unbound/testcode/unitslabhash.c:265,1
    - Dst: testlookup
      Src: /src/unbound/testcode/unitslabhash.c:268,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:271,1
    - Dst: slabhash_status
      Src: /src/unbound/testcode/unitslabhash.c:273,1
    - Dst: check_table
      Src: /src/unbound/testcode/unitslabhash.c:274,1
    - Dst: random
      Src: /src/unbound/testcode/unitslabhash.c:280,1
    - Dst: testadd_unlim
      Src: /src/unbound/testcode/unitslabhash.c:283,1
    - Dst: testremove_unlim
      Src: /src/unbound/testcode/unitslabhash.c:286,1
    - Dst: testlookup_unlim
      Src: /src/unbound/testcode/unitslabhash.c:289,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:292,1
    - Dst: slabhash_status
      Src: /src/unbound/testcode/unitslabhash.c:294,1
    - Dst: check_table
      Src: /src/unbound/testcode/unitslabhash.c:295,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct slabhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 242
    functionDepth: 1
    functionLinenumber: 242
    functionLinenumberEnd: 297
    functionName: test_long_table
    functionSourceFile: /src/unbound/testcode/unitslabhash.c
    functionUses: 1
    functionsReached:
    - testadd
    - srandom
    - testlookup
    - testremove_unlim
    - random
    - slabhash_clear
    - testadd_unlim
    - check_table
    - memset
    - slabhash_status
    - testremove
    - unit_assert
    - testlookup_unlim
    linkageType: ''
    returnType: void
    signature: void test_long_table(struct slabhash* table)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_thread_set
      Src: /src/unbound/testcode/unitslabhash.c:315,1
    - Dst: random
      Src: /src/unbound/testcode/unitslabhash.c:317,1
    - Dst: testadd_unlim
      Src: /src/unbound/testcode/unitslabhash.c:320,1
    - Dst: testremove_unlim
      Src: /src/unbound/testcode/unitslabhash.c:323,1
    - Dst: testlookup_unlim
      Src: /src/unbound/testcode/unitslabhash.c:326,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitslabhash.c:329,1
    - Dst: slabhash_status
      Src: /src/unbound/testcode/unitslabhash.c:331,1
    - Dst: check_table
      Src: /src/unbound/testcode/unitslabhash.c:333,1
    - Dst: check_table
      Src: /src/unbound/testcode/unitslabhash.c:335,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 337
    functionName: test_thr_main
    functionSourceFile: /src/unbound/testcode/unitslabhash.c
    functionUses: 0
    functionsReached:
    - testremove_unlim
    - random
    - log_thread_set
    - testadd_unlim
    - check_table
    - slabhash_status
    - unit_assert
    - testlookup_unlim
    linkageType: ''
    returnType: void
    signature: 'void *

      test_thr_main(void* arg)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_thread_create
      Src: /src/unbound/testcode/unitslabhash.c:350,1
    - Dst: ub_thread_join
      Src: /src/unbound/testcode/unitslabhash.c:354,1
    - Dst: slabhash_status
      Src: /src/unbound/testcode/unitslabhash.c:356,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct slabhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 340
    functionDepth: 1
    functionLinenumber: 340
    functionLinenumberEnd: 357
    functionName: test_threaded_table
    functionSourceFile: /src/unbound/testcode/unitslabhash.c
    functionUses: 1
    functionsReached:
    - ub_thread_join
    - slabhash_status
    - ub_thread_create
    linkageType: ''
    returnType: void
    signature: void test_threaded_table(struct slabhash* table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitslabhash.c:364,1
    - Dst: slabhash_create
      Src: /src/unbound/testcode/unitslabhash.c:365,1
    - Dst: test_short_table
      Src: /src/unbound/testcode/unitslabhash.c:368,1
    - Dst: test_long_table
      Src: /src/unbound/testcode/unitslabhash.c:369,1
    - Dst: slabhash_delete
      Src: /src/unbound/testcode/unitslabhash.c:370,1
    - Dst: slabhash_create
      Src: /src/unbound/testcode/unitslabhash.c:371,1
    - Dst: test_threaded_table
      Src: /src/unbound/testcode/unitslabhash.c:374,1
    - Dst: slabhash_delete
      Src: /src/unbound/testcode/unitslabhash.c:375,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 359
    functionDepth: 1
    functionLinenumber: 359
    functionLinenumberEnd: 376
    functionName: slabhash_test
    functionSourceFile: /src/unbound/testcode/unitslabhash.c
    functionUses: 0
    functionsReached:
    - test_long_table
    - unit_show_feature
    - test_short_table
    - slabhash_create
    - test_threaded_table
    - slabhash_delete
    linkageType: ''
    returnType: void
    signature: void slabhash_test(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/testcode/unitdname.c:55,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:56,1
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/testcode/unitdname.c:57,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitdname.c:57,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitdname.c:59,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/testcode/unitdname.c:60,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/testcode/unitdname.c:61,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:62,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - b
    - str
    argTypes:
    - sldns_buffer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 51
    functionDepth: 3
    functionLinenumber: 51
    functionLinenumberEnd: 64
    functionName: dname_to_buf
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - sldns_buffer_flip
    - fatal_exit
    - sldns_buffer_clear
    - sldns_buffer_set_position
    - sldns_get_errorstr_parse
    - sldns_str2wire_dname_buf
    - sldns_buffer_begin
    linkageType: ''
    returnType: sldns_buffer
    signature: 'sldns_buffer *

      dname_to_buf(sldns_buffer* b, const char* str)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:70,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:71,1
    - Dst: query_dname_len
      Src: /src/unbound/testcode/unitdname.c:71,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:72,1
    - Dst: query_dname_len
      Src: /src/unbound/testcode/unitdname.c:72,1
    - Dst: dname_to_buf
      Src: /src/unbound/testcode/unitdname.c:72,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:73,1
    - Dst: query_dname_len
      Src: /src/unbound/testcode/unitdname.c:73,1
    - Dst: dname_to_buf
      Src: /src/unbound/testcode/unitdname.c:73,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:74,1
    - Dst: query_dname_len
      Src: /src/unbound/testcode/unitdname.c:74,1
    - Dst: dname_to_buf
      Src: /src/unbound/testcode/unitdname.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - buff
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 67
    functionDepth: 4
    functionLinenumber: 67
    functionLinenumberEnd: 76
    functionName: dname_test_qdl
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - query_dname_len
    - dname_to_buf
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void dname_test_qdl(sldns_buffer* buff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:82,1
    - Dst: sldns_buffer_write_at
      Src: /src/unbound/testcode/unitdname.c:83,1
    - Dst: query_dname_tolower
      Src: /src/unbound/testcode/unitdname.c:84,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitdname.c:84,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:85,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitdname.c:85,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitdname.c:85,1
    - Dst: sldns_buffer_write_at
      Src: /src/unbound/testcode/unitdname.c:88,1
    - Dst: query_dname_tolower
      Src: /src/unbound/testcode/unitdname.c:89,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitdname.c:89,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:90,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitdname.c:90,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitdname.c:90,1
    - Dst: sldns_buffer_write_at
      Src: /src/unbound/testcode/unitdname.c:93,1
    - Dst: query_dname_tolower
      Src: /src/unbound/testcode/unitdname.c:94,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitdname.c:94,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:95,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitdname.c:95,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitdname.c:95,1
    - Dst: sldns_buffer_write_at
      Src: /src/unbound/testcode/unitdname.c:97,1
    - Dst: query_dname_tolower
      Src: /src/unbound/testcode/unitdname.c:98,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitdname.c:98,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:99,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitdname.c:99,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitdname.c:99,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - buff
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 79
    functionDepth: 4
    functionLinenumber: 79
    functionLinenumberEnd: 100
    functionName: dname_test_qdtl
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_write_at
    - unit_show_func
    - memcmp
    - query_dname_tolower
    - sldns_buffer_begin
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void dname_test_qdtl(sldns_buffer* buff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:106,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:107,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitdname.c:107,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:108,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitdname.c:108,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:110,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitdname.c:110,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:112,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitdname.c:112,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:114,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitdname.c:114,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:116,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitdname.c:116,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:118,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitdname.c:118,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:120,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitdname.c:120,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:122,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitdname.c:122,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:124,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitdname.c:124,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:126,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitdname.c:126,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:128,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitdname.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 130
    functionName: dname_test_query_dname_compare
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - query_dname_compare
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void dname_test_query_dname_compare(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:136,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:137,1
    - Dst: dname_count_labels
      Src: /src/unbound/testcode/unitdname.c:137,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:138,1
    - Dst: dname_count_labels
      Src: /src/unbound/testcode/unitdname.c:138,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:139,1
    - Dst: dname_count_labels
      Src: /src/unbound/testcode/unitdname.c:139,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:140,1
    - Dst: dname_count_labels
      Src: /src/unbound/testcode/unitdname.c:140,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:141,1
    - Dst: dname_count_labels
      Src: /src/unbound/testcode/unitdname.c:141,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 133
    functionDepth: 1
    functionLinenumber: 133
    functionLinenumberEnd: 143
    functionName: dname_test_count_labels
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - dname_count_labels
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void dname_test_count_labels(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:150,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:151,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/testcode/unitdname.c:151,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:152,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:153,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/testcode/unitdname.c:153,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:154,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:155,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/testcode/unitdname.c:155,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:156,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:157,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/testcode/unitdname.c:157,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:159,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:160,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/testcode/unitdname.c:160,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:162,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 163
    functionName: dname_test_count_size_labels
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - dname_count_size_labels
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void dname_test_count_size_labels(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:170,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:171,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitdname.c:172,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:173,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:174,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:174,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:175,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/testcode/unitdname.c:175,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:177,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitdname.c:178,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:179,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:180,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:180,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:181,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/testcode/unitdname.c:181,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:183,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitdname.c:184,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:185,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:186,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:186,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:187,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/testcode/unitdname.c:187,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:190,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitdname.c:191,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:192,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:193,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:193,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:196,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitdname.c:197,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:198,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/testcode/unitdname.c:199,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:200,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:200,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:201,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/testcode/unitdname.c:201,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:204,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitdname.c:205,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:206,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:207,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:207,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:210,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitdname.c:211,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:212,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:213,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:213,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:216,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitdname.c:217,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:218,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:219,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:219,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:222,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitdname.c:223,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:241,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:242,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:242,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:243,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/testcode/unitdname.c:243,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:246,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitdname.c:247,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:268,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:269,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 48
    argCount: 1
    argNames:
    - buff
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 167
    functionDepth: 5
    functionLinenumber: 167
    functionLinenumberEnd: 270
    functionName: dname_test_pkt_dname_len
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_write
    - sldns_buffer_flip
    - sldns_buffer_clear
    - unit_show_func
    - sldns_buffer_set_position
    - unit_assert
    - pkt_dname_len
    linkageType: ''
    returnType: void
    signature: void dname_test_pkt_dname_len(sldns_buffer* buff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:277,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:280,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitdname.c:280,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:281,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:282,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitdname.c:282,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:286,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:287,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitdname.c:287,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:291,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:292,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitdname.c:292,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:296,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:299,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitdname.c:299,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:303,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:304,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitdname.c:304,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:308,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:309,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitdname.c:309,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:313,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:314,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitdname.c:314,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:318,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:321,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitdname.c:321,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:325,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:326,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitdname.c:326,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:330,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:333,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitdname.c:333,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:337,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:338,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitdname.c:338,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:342,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:345,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitdname.c:345,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:349,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:350,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitdname.c:350,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:354,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:355,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitdname.c:355,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:359,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:360,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitdname.c:360,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:364,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:367,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitdname.c:367,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:371,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 36
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 273
    functionDepth: 1
    functionLinenumber: 273
    functionLinenumberEnd: 372
    functionName: dname_test_dname_lab_cmp
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - unit_assert
    - dname_lab_cmp
    linkageType: ''
    returnType: void
    signature: void dname_test_dname_lab_cmp(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:378,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:379,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/testcode/unitdname.c:379,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:382,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/testcode/unitdname.c:382,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:385,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/testcode/unitdname.c:385,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:388,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/testcode/unitdname.c:388,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:391,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/testcode/unitdname.c:391,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:394,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/testcode/unitdname.c:394,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:397,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/testcode/unitdname.c:397,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:400,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/testcode/unitdname.c:400,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:403,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/testcode/unitdname.c:403,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:406,1
    - Dst: dname_subdomain_c
      Src: /src/unbound/testcode/unitdname.c:406,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 409
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 409
    functionName: dname_test_subdomain
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - dname_subdomain_c
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void dname_test_subdomain(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:415,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:416,1
    - Dst: dname_strict_subdomain
      Src: /src/unbound/testcode/unitdname.c:416,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:419,1
    - Dst: dname_strict_subdomain
      Src: /src/unbound/testcode/unitdname.c:419,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:422,1
    - Dst: dname_strict_subdomain
      Src: /src/unbound/testcode/unitdname.c:422,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:425,1
    - Dst: dname_strict_subdomain
      Src: /src/unbound/testcode/unitdname.c:425,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:428,1
    - Dst: dname_strict_subdomain
      Src: /src/unbound/testcode/unitdname.c:428,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:431,1
    - Dst: dname_strict_subdomain
      Src: /src/unbound/testcode/unitdname.c:431,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:434,1
    - Dst: dname_strict_subdomain
      Src: /src/unbound/testcode/unitdname.c:434,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:437,1
    - Dst: dname_strict_subdomain
      Src: /src/unbound/testcode/unitdname.c:437,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:440,1
    - Dst: dname_strict_subdomain
      Src: /src/unbound/testcode/unitdname.c:440,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:443,1
    - Dst: dname_strict_subdomain
      Src: /src/unbound/testcode/unitdname.c:443,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 412
    functionDepth: 1
    functionLinenumber: 412
    functionLinenumberEnd: 446
    functionName: dname_test_strict_subdomain
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - dname_strict_subdomain
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void dname_test_strict_subdomain(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:452,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:453,1
    - Dst: dname_is_root
      Src: /src/unbound/testcode/unitdname.c:453,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:454,1
    - Dst: dname_is_root
      Src: /src/unbound/testcode/unitdname.c:454,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:455,1
    - Dst: dname_is_root
      Src: /src/unbound/testcode/unitdname.c:455,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:457,1
    - Dst: dname_is_root
      Src: /src/unbound/testcode/unitdname.c:457,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:458,1
    - Dst: dname_is_root
      Src: /src/unbound/testcode/unitdname.c:458,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 459
      start: 449
    functionDepth: 1
    functionLinenumber: 449
    functionLinenumberEnd: 459
    functionName: dname_test_isroot
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - dname_is_root
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void dname_test_isroot(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:468,1
    - Dst: dname_remove_label
      Src: /src/unbound/testcode/unitdname.c:469,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:470,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:471,1
    - Dst: dname_remove_label
      Src: /src/unbound/testcode/unitdname.c:472,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:473,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:474,1
    - Dst: dname_remove_label
      Src: /src/unbound/testcode/unitdname.c:475,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:476,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:477,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 462
    functionDepth: 1
    functionLinenumber: 462
    functionLinenumberEnd: 478
    functionName: dname_test_removelabel
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - dname_remove_label
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void dname_test_removelabel(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:488,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:489,1
    - Dst: dname_remove_label_limit_len
      Src: /src/unbound/testcode/unitdname.c:489,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:490,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:491,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:492,1
    - Dst: dname_remove_label_limit_len
      Src: /src/unbound/testcode/unitdname.c:492,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:493,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:494,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 495
      start: 481
    functionDepth: 1
    functionLinenumber: 481
    functionLinenumberEnd: 495
    functionName: dname_test_removelabellimitlen
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - dname_remove_label_limit_len
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void dname_test_removelabellimitlen(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:501,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:502,1
    - Dst: dname_signame_label_count
      Src: /src/unbound/testcode/unitdname.c:502,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:503,1
    - Dst: dname_signame_label_count
      Src: /src/unbound/testcode/unitdname.c:503,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:504,1
    - Dst: dname_signame_label_count
      Src: /src/unbound/testcode/unitdname.c:504,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:505,1
    - Dst: dname_signame_label_count
      Src: /src/unbound/testcode/unitdname.c:505,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:507,1
    - Dst: dname_signame_label_count
      Src: /src/unbound/testcode/unitdname.c:507,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:509,1
    - Dst: dname_signame_label_count
      Src: /src/unbound/testcode/unitdname.c:509,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:511,1
    - Dst: dname_signame_label_count
      Src: /src/unbound/testcode/unitdname.c:511,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:513,1
    - Dst: dname_signame_label_count
      Src: /src/unbound/testcode/unitdname.c:513,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 498
    functionDepth: 1
    functionLinenumber: 498
    functionLinenumberEnd: 515
    functionName: dname_test_sigcount
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - dname_signame_label_count
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void dname_test_sigcount(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:521,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:522,1
    - Dst: dname_is_wild
      Src: /src/unbound/testcode/unitdname.c:522,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:523,1
    - Dst: dname_is_wild
      Src: /src/unbound/testcode/unitdname.c:523,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:524,1
    - Dst: dname_is_wild
      Src: /src/unbound/testcode/unitdname.c:524,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:525,1
    - Dst: dname_is_wild
      Src: /src/unbound/testcode/unitdname.c:525,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 518
    functionDepth: 1
    functionLinenumber: 518
    functionLinenumberEnd: 526
    functionName: dname_test_iswild
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - dname_is_wild
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void dname_test_iswild(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:532,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:534,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:534,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:538,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:538,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:542,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:542,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:546,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:546,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:552,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:552,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:556,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:556,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:560,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:560,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:564,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:564,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:568,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:568,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:572,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:572,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:578,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:578,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:582,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:582,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:586,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:586,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:590,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:590,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:594,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:594,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:600,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:600,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:604,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:604,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:610,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:610,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:614,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:614,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:618,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:618,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:622,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:622,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:628,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:628,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:636,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:636,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:640,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:640,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:644,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:644,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:648,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:648,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:652,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:652,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:656,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:656,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:660,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:660,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:664,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:664,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:668,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:668,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:673,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:673,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:677,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:677,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:681,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:681,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:685,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:685,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:689,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:689,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:693,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:693,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:697,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:697,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:701,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:701,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:705,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:705,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:710,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:710,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:714,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:714,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:718,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:718,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:722,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:722,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:726,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:726,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:730,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:730,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:734,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:734,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:738,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:738,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:742,1
    - Dst: dname_canonical_compare
      Src: /src/unbound/testcode/unitdname.c:742,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 51
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 529
    functionDepth: 1
    functionLinenumber: 529
    functionLinenumberEnd: 746
    functionName: dname_test_canoncmp
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - dname_canonical_compare
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void dname_test_canoncmp(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:752,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:753,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitdname.c:753,1
    - Dst: dname_get_shared_topdomain
      Src: /src/unbound/testcode/unitdname.c:754,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:758,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitdname.c:758,1
    - Dst: dname_get_shared_topdomain
      Src: /src/unbound/testcode/unitdname.c:759,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:763,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitdname.c:763,1
    - Dst: dname_get_shared_topdomain
      Src: /src/unbound/testcode/unitdname.c:764,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 749
    functionDepth: 1
    functionLinenumber: 749
    functionLinenumberEnd: 768
    functionName: dname_test_topdomain
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - dname_get_shared_topdomain
    - query_dname_compare
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void dname_test_topdomain(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:774,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:775,1
    - Dst: dname_valid
      Src: /src/unbound/testcode/unitdname.c:775,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:777,1
    - Dst: dname_valid
      Src: /src/unbound/testcode/unitdname.c:777,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:778,1
    - Dst: dname_valid
      Src: /src/unbound/testcode/unitdname.c:778,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:796,1
    - Dst: dname_valid
      Src: /src/unbound/testcode/unitdname.c:796,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 771
    functionDepth: 1
    functionLinenumber: 771
    functionLinenumberEnd: 814
    functionName: dname_test_valid
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - dname_valid
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void dname_test_valid(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:820,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:822,1
    - Dst: dname_has_label
      Src: /src/unbound/testcode/unitdname.c:822,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:824,1
    - Dst: dname_has_label
      Src: /src/unbound/testcode/unitdname.c:824,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:826,1
    - Dst: dname_has_label
      Src: /src/unbound/testcode/unitdname.c:826,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:827,1
    - Dst: dname_has_label
      Src: /src/unbound/testcode/unitdname.c:827,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:828,1
    - Dst: dname_has_label
      Src: /src/unbound/testcode/unitdname.c:828,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:829,1
    - Dst: dname_has_label
      Src: /src/unbound/testcode/unitdname.c:829,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:830,1
    - Dst: dname_has_label
      Src: /src/unbound/testcode/unitdname.c:830,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:833,1
    - Dst: dname_has_label
      Src: /src/unbound/testcode/unitdname.c:833,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:834,1
    - Dst: dname_has_label
      Src: /src/unbound/testcode/unitdname.c:834,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:835,1
    - Dst: dname_has_label
      Src: /src/unbound/testcode/unitdname.c:835,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:836,1
    - Dst: dname_has_label
      Src: /src/unbound/testcode/unitdname.c:836,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:837,1
    - Dst: dname_has_label
      Src: /src/unbound/testcode/unitdname.c:837,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:838,1
    - Dst: dname_has_label
      Src: /src/unbound/testcode/unitdname.c:838,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:839,1
    - Dst: dname_has_label
      Src: /src/unbound/testcode/unitdname.c:839,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:840,1
    - Dst: dname_has_label
      Src: /src/unbound/testcode/unitdname.c:840,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:841,1
    - Dst: dname_has_label
      Src: /src/unbound/testcode/unitdname.c:841,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 842
      start: 817
    functionDepth: 1
    functionLinenumber: 817
    functionLinenumberEnd: 842
    functionName: dname_test_has_label
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - dname_has_label
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void dname_test_has_label(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:848,1
    - Dst: pkt_dname_tolower
      Src: /src/unbound/testcode/unitdname.c:849,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/testcode/unitdname.c:849,1
    - Dst: pkt_dname_tolower
      Src: /src/unbound/testcode/unitdname.c:850,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/testcode/unitdname.c:850,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - loopbuf
    - boundbuf
    argTypes:
    - sldns_buffer*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 851
      start: 845
    functionDepth: 1
    functionLinenumber: 845
    functionLinenumberEnd: 851
    functionName: dname_test_pdtl
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - sldns_buffer_at
    - pkt_dname_tolower
    linkageType: ''
    returnType: void
    signature: void dname_test_pdtl(sldns_buffer* loopbuf, sldns_buffer* boundbuf)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/unitdname.c:857,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/unitdname.c:858,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/unitdname.c:859,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/unitdname.c:860,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/unitdname.c:861,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/unitdname.c:862,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/testcode/unitdname.c:863,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/testcode/unitdname.c:864,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:865,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/unitdname.c:867,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/unitdname.c:868,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/unitdname.c:869,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/unitdname.c:870,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/unitdname.c:871,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/unitdname.c:872,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/testcode/unitdname.c:873,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/testcode/unitdname.c:874,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/testcode/unitdname.c:875,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/testcode/unitdname.c:876,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:877,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 21
    argCount: 2
    argNames:
    - loopbuf
    - boundbuf
    argTypes:
    - sldns_buffer*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 878
      start: 854
    functionDepth: 5
    functionLinenumber: 854
    functionLinenumberEnd: 878
    functionName: dname_setup_bufs
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_write_u8
    - sldns_buffer_flip
    - sldns_buffer_write_u16
    linkageType: ''
    returnType: void
    signature: void dname_setup_bufs(sldns_buffer* loopbuf, sldns_buffer* boundbuf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/unitdname.c:1105,1
    - Dst: memset
      Src: /src/unbound/testcode/unitdname.c:1107,1
    - Dst: dname_str
      Src: /src/unbound/testcode/unitdname.c:1108,1
    - Dst: printf
      Src: /src/unbound/testcode/unitdname.c:1114,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1116,1
    - Dst: memset
      Src: /src/unbound/testcode/unitdname.c:1118,1
    - Dst: sldns_wire2str_dname_buf
      Src: /src/unbound/testcode/unitdname.c:1119,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitdname.c:1120,1
    - Dst: printf
      Src: /src/unbound/testcode/unitdname.c:1128,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1130,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1084
    functionDepth: 2
    functionLinenumber: 1084
    functionLinenumberEnd: 1134
    functionName: test_long_names
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_dname_buf
    - printf
    - dname_str
    - strlen
    - memset
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void test_long_names(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitdname.c:1141,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:1144,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitdname.c:1145,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:1146,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1147,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitdname.c:1147,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1148,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:1148,1
    - Dst: dname_str
      Src: /src/unbound/testcode/unitdname.c:1149,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitdname.c:1149,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1150,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitdname.c:1150,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:1153,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitdname.c:1154,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:1161,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1162,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitdname.c:1162,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1163,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:1163,1
    - Dst: dname_str
      Src: /src/unbound/testcode/unitdname.c:1164,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitdname.c:1164,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1165,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitdname.c:1165,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:1173,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitdname.c:1174,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:1181,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1182,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitdname.c:1182,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1183,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:1183,1
    - Dst: dname_str
      Src: /src/unbound/testcode/unitdname.c:1184,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitdname.c:1184,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1185,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitdname.c:1185,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:1193,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitdname.c:1194,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:1201,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1202,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitdname.c:1202,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1203,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:1203,1
    - Dst: dname_str
      Src: /src/unbound/testcode/unitdname.c:1204,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitdname.c:1204,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1205,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitdname.c:1205,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:1212,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitdname.c:1213,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:1218,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1219,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitdname.c:1219,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1220,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:1220,1
    - Dst: dname_str
      Src: /src/unbound/testcode/unitdname.c:1221,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitdname.c:1221,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1222,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitdname.c:1222,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:1227,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitdname.c:1229,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/testcode/unitdname.c:1230,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:1231,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1232,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitdname.c:1232,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1233,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:1233,1
    - Dst: dname_str
      Src: /src/unbound/testcode/unitdname.c:1234,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitdname.c:1234,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1241,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitdname.c:1241,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:1244,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitdname.c:1246,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitdname.c:1247,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/testcode/unitdname.c:1248,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:1249,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1250,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitdname.c:1250,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1251,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:1251,1
    - Dst: dname_str
      Src: /src/unbound/testcode/unitdname.c:1252,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitdname.c:1252,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1260,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitdname.c:1260,1
    - Dst: isalnum
      Src: /src/unbound/testcode/unitdname.c:1264,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitdname.c:1266,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/testcode/unitdname.c:1267,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/testcode/unitdname.c:1268,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/testcode/unitdname.c:1269,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:1270,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1271,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitdname.c:1271,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1272,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:1272,1
    - Dst: dname_str
      Src: /src/unbound/testcode/unitdname.c:1273,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitdname.c:1273,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitdname.c:1274,1
    - Dst: log_err
      Src: /src/unbound/testcode/unitdname.c:1275,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1276,1
    - Dst: test_long_names
      Src: /src/unbound/testcode/unitdname.c:1280,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 86
    argCount: 1
    argNames:
    - buff
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1281
      start: 1136
    functionDepth: 5
    functionLinenumber: 1136
    functionLinenumberEnd: 1281
    functionName: dname_test_str
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - log_err
    - test_long_names
    - strcmp
    - sldns_buffer_write
    - sldns_buffer_flip
    - sldns_buffer_limit
    - sldns_buffer_clear
    - dname_str
    - unit_show_func
    - isalnum
    - sldns_buffer_begin
    - sldns_buffer_write_u8
    - unit_assert
    - pkt_dname_len
    linkageType: ''
    returnType: void
    signature: void dname_test_str(sldns_buffer* buff)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/unitdname.c:1285,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/unitdname.c:1286,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/unitdname.c:1287,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitdname.c:1288,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitdname.c:1289,1
    - Dst: dname_setup_bufs
      Src: /src/unbound/testcode/unitdname.c:1290,1
    - Dst: dname_test_qdl
      Src: /src/unbound/testcode/unitdname.c:1291,1
    - Dst: dname_test_qdtl
      Src: /src/unbound/testcode/unitdname.c:1292,1
    - Dst: dname_test_pdtl
      Src: /src/unbound/testcode/unitdname.c:1293,1
    - Dst: dname_test_query_dname_compare
      Src: /src/unbound/testcode/unitdname.c:1294,1
    - Dst: dname_test_count_labels
      Src: /src/unbound/testcode/unitdname.c:1295,1
    - Dst: dname_test_count_size_labels
      Src: /src/unbound/testcode/unitdname.c:1296,1
    - Dst: dname_test_dname_lab_cmp
      Src: /src/unbound/testcode/unitdname.c:1297,1
    - Dst: dname_test_pkt_dname_len
      Src: /src/unbound/testcode/unitdname.c:1298,1
    - Dst: dname_test_strict_subdomain
      Src: /src/unbound/testcode/unitdname.c:1299,1
    - Dst: dname_test_subdomain
      Src: /src/unbound/testcode/unitdname.c:1300,1
    - Dst: dname_test_isroot
      Src: /src/unbound/testcode/unitdname.c:1301,1
    - Dst: dname_test_removelabel
      Src: /src/unbound/testcode/unitdname.c:1302,1
    - Dst: dname_test_removelabellimitlen
      Src: /src/unbound/testcode/unitdname.c:1303,1
    - Dst: dname_test_sigcount
      Src: /src/unbound/testcode/unitdname.c:1304,1
    - Dst: dname_test_iswild
      Src: /src/unbound/testcode/unitdname.c:1305,1
    - Dst: dname_test_canoncmp
      Src: /src/unbound/testcode/unitdname.c:1306,1
    - Dst: dname_test_topdomain
      Src: /src/unbound/testcode/unitdname.c:1307,1
    - Dst: dname_test_valid
      Src: /src/unbound/testcode/unitdname.c:1308,1
    - Dst: dname_test_has_label
      Src: /src/unbound/testcode/unitdname.c:1309,1
    - Dst: dname_test_str
      Src: /src/unbound/testcode/unitdname.c:1310,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/unitdname.c:1311,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/unitdname.c:1312,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/unitdname.c:1313,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1283
    functionDepth: 6
    functionLinenumber: 1283
    functionLinenumberEnd: 1314
    functionName: dname_test
    functionSourceFile: /src/unbound/testcode/unitdname.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_new
    - dname_test_isroot
    - dname_test_dname_lab_cmp
    - dname_test_iswild
    - dname_test_topdomain
    - dname_test_valid
    - dname_test_qdl
    - sldns_buffer_free
    - dname_test_subdomain
    - dname_test_canoncmp
    - dname_test_qdtl
    - dname_test_query_dname_compare
    - dname_test_pkt_dname_len
    - dname_test_removelabel
    - dname_test_removelabellimitlen
    - dname_test_str
    - dname_test_count_size_labels
    - unit_assert
    - dname_test_sigcount
    - dname_test_has_label
    - sldns_buffer_flip
    - dname_test_count_labels
    - dname_setup_bufs
    - dname_test_pdtl
    - dname_test_strict_subdomain
    linkageType: ''
    returnType: void
    signature: void dname_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:145,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:146,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:147,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:148,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:149,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:150,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:151,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:152,1
    - Dst: exit
      Src: /src/unbound/testcode/delayer.c:153,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 1
    argNames:
    - argv
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 143
    functionDepth: 0
    functionLinenumber: 143
    functionLinenumberEnd: 154
    functionName: usage
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 5
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(char* argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - t1
    - t2
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 168
    functionName: dl_tv_smaller
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dl_tv_smaller(struct timeval* t1, const struct timeval* t2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - t1
    - t2
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 182
    functionName: dl_tv_add
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dl_tv_add(struct timeval* t1, const struct timeval* t2)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - t1
    - t2
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 197
    functionName: dl_tv_subtract
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dl_tv_subtract(struct timeval* t1, const struct timeval* t2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/delayer.c:204,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:205,1
    - Dst: malloc
      Src: /src/unbound/testcode/delayer.c:206,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:207,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - sz
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 201
    functionDepth: 1
    functionLinenumber: 201
    functionLinenumberEnd: 212
    functionName: ring_create
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 0
    functionsReached:
    - malloc
    - calloc
    - fatal_exit
    linkageType: ''
    returnType: struct ringbuf
    signature: 'struct ringbuf *

      ring_create(size_t sz)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/testcode/delayer.c:219,1
    - Dst: free
      Src: /src/unbound/testcode/delayer.c:220,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct ringbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 215
    functionDepth: 1
    functionLinenumber: 215
    functionLinenumberEnd: 221
    functionName: ring_delete
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void ring_delete(struct ringbuf* r)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/delayer.c:229,1
    - Dst: log_assert
      Src: /src/unbound/testcode/delayer.c:233,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/delayer.c:233,1
    - Dst: memset
      Src: /src/unbound/testcode/delayer.c:248,1
    - Dst: log_warn
      Src: /src/unbound/testcode/delayer.c:255,1
    - Dst: log_warn
      Src: /src/unbound/testcode/delayer.c:270,1
    - Dst: dl_tv_add
      Src: /src/unbound/testcode/delayer.c:275,1
    - Dst: log_assert
      Src: /src/unbound/testcode/delayer.c:277,1
    - Dst: memmove
      Src: /src/unbound/testcode/delayer.c:278,1
    - Dst: memmove
      Src: /src/unbound/testcode/delayer.c:279,1
    - Dst: memmove
      Src: /src/unbound/testcode/delayer.c:280,1
    - Dst: memmove
      Src: /src/unbound/testcode/delayer.c:281,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/delayer.c:282,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 39
    argCount: 5
    argNames:
    - r
    - pkt
    - now
    - delay
    - p
    argTypes:
    - struct ringbuf*
    - sldns_buffer*
    - struct timeval*
    - struct timeval*
    - struct proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 224
    functionDepth: 2
    functionLinenumber: 224
    functionLinenumberEnd: 283
    functionName: ring_add
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 0
    functionsReached:
    - memmove
    - sldns_buffer_limit
    - log_assert
    - log_warn
    - sldns_buffer_begin
    - memset
    - dl_tv_add
    linkageType: ''
    returnType: void
    signature: "void ring_add(struct ringbuf* r, sldns_buffer* pkt, struct timeval*
      now, \n\tstruct timeval* delay, struct proxy* p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct ringbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 290
    functionName: ring_empty
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ring_empty(struct ringbuf* r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ring_empty
      Src: /src/unbound/testcode/delayer.c:296,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct ringbuf*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 299
      start: 293
    functionDepth: 1
    functionLinenumber: 293
    functionLinenumberEnd: 299
    functionName: ring_peek_time
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 0
    functionsReached:
    - ring_empty
    linkageType: ''
    returnType: struct timeval
    signature: 'struct timeval *

      ring_peek_time(struct ringbuf* r)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/testcode/delayer.c:313,1
    - Dst: memmove
      Src: /src/unbound/testcode/delayer.c:314,1
    - Dst: memmove
      Src: /src/unbound/testcode/delayer.c:315,1
    - Dst: memmove
      Src: /src/unbound/testcode/delayer.c:316,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/delayer.c:316,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/testcode/delayer.c:318,1
    - Dst: log_assert
      Src: /src/unbound/testcode/delayer.c:323,1
    - Dst: log_assert
      Src: /src/unbound/testcode/delayer.c:327,1
    - Dst: memmove
      Src: /src/unbound/testcode/delayer.c:332,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 4
    argNames:
    - r
    - pkt
    - tv
    - p
    argTypes:
    - struct ringbuf*
    - sldns_buffer*
    - struct timeval*
    - struct proxy**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 302
    functionDepth: 2
    functionLinenumber: 302
    functionLinenumberEnd: 342
    functionName: ring_pop
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 0
    functionsReached:
    - log_assert
    - sldns_buffer_set_limit
    - sldns_buffer_begin
    - memmove
    linkageType: ''
    returnType: int
    signature: "int ring_pop(struct ringbuf* r, sldns_buffer* pkt, struct timeval*
      tv, \n\tstruct proxy** p)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/unbound/testcode/delayer.c:354,1
    - Dst: strlen
      Src: /src/unbound/testcode/delayer.c:354,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - sig
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 356
    functionName: delayer_sigh
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 0
    functionsReached:
    - write
    - strlen
    linkageType: ''
    returnType: RETSIGTYPE
    signature: RETSIGTYPE delayer_sigh(int sig)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ring_empty
      Src: /src/unbound/testcode/delayer.c:366,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:367,1
    - Dst: ring_peek_time
      Src: /src/unbound/testcode/delayer.c:367,1
    - Dst: ring_pop
      Src: /src/unbound/testcode/delayer.c:369,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:370,1
    - Dst: verbose
      Src: /src/unbound/testcode/delayer.c:371,1
    - Dst: log_addr
      Src: /src/unbound/testcode/delayer.c:373,1
    - Dst: sendto
      Src: /src/unbound/testcode/delayer.c:375,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/delayer.c:375,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/delayer.c:376,1
    - Dst: log_err
      Src: /src/unbound/testcode/delayer.c:379,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:379,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/delayer.c:380,1
    - Dst: log_err
      Src: /src/unbound/testcode/delayer.c:381,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 5
    argNames:
    - ring
    - now
    - pkt
    - srv_addr
    - srv_len
    argTypes:
    - struct ringbuf*
    - struct timeval*
    - sldns_buffer*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 359
    functionDepth: 3
    functionLinenumber: 359
    functionLinenumberEnd: 386
    functionName: service_send
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 0
    functionsReached:
    - log_err
    - verbose
    - sldns_buffer_limit
    - ring_peek_time
    - fatal_exit
    - ring_pop
    - sock_strerror
    - sldns_buffer_begin
    - log_addr
    - sendto
    - ring_empty
    - dl_tv_smaller
    linkageType: ''
    returnType: void
    signature: "void service_send(struct ringbuf* ring, struct timeval* now, sldns_buffer*
      pkt,\n\tstruct sockaddr_storage* srv_addr, socklen_t srv_len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/unbound/testcode/delayer.c:395,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/delayer.c:395,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/testcode/delayer.c:396,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/delayer.c:402,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/delayer.c:403,1
    - Dst: log_err
      Src: /src/unbound/testcode/delayer.c:406,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:406,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/testcode/delayer.c:409,1
    - Dst: log_addr
      Src: /src/unbound/testcode/delayer.c:410,1
    - Dst: sendto
      Src: /src/unbound/testcode/delayer.c:413,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/delayer.c:413,1
    - Dst: log_err
      Src: /src/unbound/testcode/delayer.c:416,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:416,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - p
    - retsock
    - pkt
    argTypes:
    - struct proxy*
    - int
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 389
    functionDepth: 2
    functionLinenumber: 389
    functionLinenumberEnd: 419
    functionName: do_proxy
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - log_err
    - WSAGetLastError
    - sock_strerror
    - sldns_buffer_set_limit
    - sldns_buffer_begin
    - log_addr
    - recv
    - sendto
    linkageType: ''
    returnType: void
    signature: void do_proxy(struct proxy* p, int retsock, sldns_buffer* pkt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FD_ISSET
      Src: /src/unbound/testcode/delayer.c:428,1
    - Dst: do_proxy
      Src: /src/unbound/testcode/delayer.c:430,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 5
    argNames:
    - rset
    - retsock
    - proxies
    - pkt
    - now
    argTypes:
    - fd_set*
    - int
    - struct proxy*
    - sldns_buffer*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 422
    functionDepth: 3
    functionLinenumber: 422
    functionLinenumberEnd: 433
    functionName: service_proxy
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 0
    functionsReached:
    - do_proxy
    - FD_ISSET
    linkageType: ''
    returnType: void
    signature: "void service_proxy(fd_set* rset, int retsock, struct proxy* proxies,
      \n\tsldns_buffer* pkt, struct timeval* now)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sockaddr_cmp
      Src: /src/unbound/testcode/delayer.c:444,1
    - Dst: dl_tv_subtract
      Src: /src/unbound/testcode/delayer.c:452,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:453,1
    - Dst: verbose
      Src: /src/unbound/testcode/delayer.c:456,1
    - Dst: memmove
      Src: /src/unbound/testcode/delayer.c:457,1
    - Dst: calloc
      Src: /src/unbound/testcode/delayer.c:463,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:464,1
    - Dst: socket
      Src: /src/unbound/testcode/delayer.c:465,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:467,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:467,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/testcode/delayer.c:469,1
    - Dst: memmove
      Src: /src/unbound/testcode/delayer.c:470,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 8
    argNames:
    - from
    - from_len
    - rorig
    - max
    - proxies
    - serv_ip6
    - now
    - reuse_timeout
    argTypes:
    - struct sockaddr_storage*
    - socklen_t
    - fd_set*
    - int*
    - struct proxy**
    - int
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 478
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 478
    functionName: find_create_proxy
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 0
    functionsReached:
    - dl_tv_subtract
    - memmove
    - socket
    - verbose
    - fatal_exit
    - fd_set_nonblock
    - calloc
    - sock_strerror
    - sockaddr_cmp
    - dl_tv_smaller
    linkageType: ''
    returnType: struct proxy
    signature: "struct proxy *\nfind_create_proxy(struct sockaddr_storage* from, socklen_t
      from_len,\n\tfd_set* rorig, int* max, struct proxy** proxies, int serv_ip6,\n\tstruct
      timeval* now, struct timeval* reuse_timeout)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: recvfrom
      Src: /src/unbound/testcode/delayer.c:494,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/delayer.c:494,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/testcode/delayer.c:495,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/delayer.c:502,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/delayer.c:503,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:506,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:506,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/testcode/delayer.c:508,1
    - Dst: find_create_proxy
      Src: /src/unbound/testcode/delayer.c:510,1
    - Dst: addr_is_ip6
      Src: /src/unbound/testcode/delayer.c:511,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:512,1
    - Dst: ring_add
      Src: /src/unbound/testcode/delayer.c:514,1
    - Dst: log_addr
      Src: /src/unbound/testcode/delayer.c:516,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 11
    argNames:
    - s
    - ring
    - pkt
    - rorig
    - max
    - proxies
    - srv_addr
    - srv_len
    - now
    - delay
    - reuse
    argTypes:
    - int
    - struct ringbuf*
    - sldns_buffer*
    - fd_set*
    - int*
    - struct proxy**
    - struct sockaddr_storage*
    - socklen_t
    - struct timeval*
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 481
    functionDepth: 3
    functionLinenumber: 481
    functionLinenumberEnd: 518
    functionName: service_recv
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - recvfrom
    - WSAGetLastError
    - fatal_exit
    - sock_strerror
    - sldns_buffer_set_limit
    - sldns_buffer_begin
    - addr_is_ip6
    - log_addr
    - find_create_proxy
    - ring_add
    linkageType: ''
    returnType: void
    signature: "void service_recv(int s, struct ringbuf* ring, sldns_buffer* pkt,
      \n\tfd_set* rorig, int* max, struct proxy** proxies,\n\tstruct sockaddr_storage*
      srv_addr, socklen_t srv_len, \n\tstruct timeval* now, struct timeval* delay,
      struct timeval* reuse)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_addr
      Src: /src/unbound/testcode/delayer.c:527,1
    - Dst: free
      Src: /src/unbound/testcode/delayer.c:531,1
    - Dst: free
      Src: /src/unbound/testcode/delayer.c:532,1
    - Dst: free
      Src: /src/unbound/testcode/delayer.c:538,1
    - Dst: free
      Src: /src/unbound/testcode/delayer.c:539,1
    - Dst: sock_close
      Src: /src/unbound/testcode/delayer.c:542,1
    - Dst: sock_close
      Src: /src/unbound/testcode/delayer.c:544,1
    - Dst: free
      Src: /src/unbound/testcode/delayer.c:545,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 22
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct tcp_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 521
    functionDepth: 1
    functionLinenumber: 521
    functionLinenumberEnd: 546
    functionName: tcp_proxy_delete
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 0
    functionsReached:
    - log_addr
    - sock_close
    - free
    linkageType: ''
    returnType: void
    signature: void tcp_proxy_delete(struct tcp_proxy* p)
  - BBCount: 84
    BranchProfiles: []
    Callsites:
    - Dst: accept
      Src: /src/unbound/testcode/delayer.c:558,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/delayer.c:564,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/delayer.c:565,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/delayer.c:566,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:569,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:569,1
    - Dst: calloc
      Src: /src/unbound/testcode/delayer.c:571,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:572,1
    - Dst: memmove
      Src: /src/unbound/testcode/delayer.c:573,1
    - Dst: log_addr
      Src: /src/unbound/testcode/delayer.c:575,1
    - Dst: socket
      Src: /src/unbound/testcode/delayer.c:577,1
    - Dst: addr_is_ip6
      Src: /src/unbound/testcode/delayer.c:577,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:580,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:580,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/testcode/delayer.c:582,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/testcode/delayer.c:583,1
    - Dst: connect
      Src: /src/unbound/testcode/delayer.c:584,1
    - Dst: log_err
      Src: /src/unbound/testcode/delayer.c:587,1
    - Dst: strerror
      Src: /src/unbound/testcode/delayer.c:587,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/delayer.c:589,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/delayer.c:590,1
    - Dst: log_err
      Src: /src/unbound/testcode/delayer.c:591,1
    - Dst: wsa_strerror
      Src: /src/unbound/testcode/delayer.c:592,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/delayer.c:592,1
    - Dst: sock_close
      Src: /src/unbound/testcode/delayer.c:594,1
    - Dst: sock_close
      Src: /src/unbound/testcode/delayer.c:595,1
    - Dst: free
      Src: /src/unbound/testcode/delayer.c:596,1
    - Dst: dl_tv_add
      Src: /src/unbound/testcode/delayer.c:601,1
    - Dst: recv
      Src: /src/unbound/testcode/delayer.c:623,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/delayer.c:623,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/testcode/delayer.c:624,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/delayer.c:630,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/delayer.c:631,1
    - Dst: log_err
      Src: /src/unbound/testcode/delayer.c:634,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:634,1
    - Dst: malloc
      Src: /src/unbound/testcode/delayer.c:640,1
    - Dst: log_err
      Src: /src/unbound/testcode/delayer.c:642,1
    - Dst: verbose
      Src: /src/unbound/testcode/delayer.c:645,1
    - Dst: memdup
      Src: /src/unbound/testcode/delayer.c:647,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/delayer.c:647,1
    - Dst: free
      Src: /src/unbound/testcode/delayer.c:649,1
    - Dst: log_err
      Src: /src/unbound/testcode/delayer.c:650,1
    - Dst: dl_tv_add
      Src: /src/unbound/testcode/delayer.c:655,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:678,1
    - Dst: send
      Src: /src/unbound/testcode/delayer.c:681,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/delayer.c:687,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/delayer.c:688,1
    - Dst: log_err
      Src: /src/unbound/testcode/delayer.c:691,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:691,1
    - Dst: verbose
      Src: /src/unbound/testcode/delayer.c:699,1
    - Dst: free
      Src: /src/unbound/testcode/delayer.c:701,1
    - Dst: free
      Src: /src/unbound/testcode/delayer.c:705,1
    - Dst: dl_tv_add
      Src: /src/unbound/testcode/delayer.c:726,1
    - Dst: FD_ISSET
      Src: /src/unbound/testcode/delayer.c:731,1
    - Dst: log_addr
      Src: /src/unbound/testcode/delayer.c:733,1
    - Dst: tcp_relay_read
      Src: /src/unbound/testcode/delayer.c:734,1
    - Dst: FD_ISSET
      Src: /src/unbound/testcode/delayer.c:740,1
    - Dst: log_addr
      Src: /src/unbound/testcode/delayer.c:742,1
    - Dst: tcp_relay_read
      Src: /src/unbound/testcode/delayer.c:743,1
    - Dst: sock_close
      Src: /src/unbound/testcode/delayer.c:745,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:754,1
    - Dst: log_addr
      Src: /src/unbound/testcode/delayer.c:755,1
    - Dst: tcp_relay_write
      Src: /src/unbound/testcode/delayer.c:757,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:761,1
    - Dst: FD_SET
      Src: /src/unbound/testcode/delayer.c:762,1
    - Dst: FD_CLR
      Src: /src/unbound/testcode/delayer.c:763,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:769,1
    - Dst: log_addr
      Src: /src/unbound/testcode/delayer.c:770,1
    - Dst: tcp_relay_write
      Src: /src/unbound/testcode/delayer.c:772,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:775,1
    - Dst: FD_SET
      Src: /src/unbound/testcode/delayer.c:777,1
    - Dst: FD_CLR
      Src: /src/unbound/testcode/delayer.c:778,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:784,1
    - Dst: tcp_proxy_delete
      Src: /src/unbound/testcode/delayer.c:796,1
    - Dst: ring_peek_time
      Src: /src/unbound/testcode/delayer.c:812,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:822,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:824,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:826,1
    - Dst: memmove
      Src: /src/unbound/testcode/delayer.c:832,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:835,1
    - Dst: dl_tv_subtract
      Src: /src/unbound/testcode/delayer.c:841,1
    - Dst: ntohs
      Src: /src/unbound/testcode/delayer.c:857,1
    - Dst: addr_is_ip6
      Src: /src/unbound/testcode/delayer.c:858,1
    - Dst: inet_ntop
      Src: /src/unbound/testcode/delayer.c:859,1
    - Dst: strlcpy
      Src: /src/unbound/testcode/delayer.c:862,1
    - Dst: inet_ntop
      Src: /src/unbound/testcode/delayer.c:864,1
    - Dst: strlcpy
      Src: /src/unbound/testcode/delayer.c:867,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:869,1
    - Dst: sock_close
      Src: /src/unbound/testcode/delayer.c:873,1
    - Dst: free
      Src: /src/unbound/testcode/delayer.c:874,1
    - Dst: tcp_proxy_delete
      Src: /src/unbound/testcode/delayer.c:886,1
    - Dst: FD_ZERO
      Src: /src/unbound/testcode/delayer.c:908,1
    - Dst: FD_ZERO
      Src: /src/unbound/testcode/delayer.c:909,1
    - Dst: verbose
      Src: /src/unbound/testcode/delayer.c:920,1
    - Dst: verbose
      Src: /src/unbound/testcode/delayer.c:922,1
    - Dst: select
      Src: /src/unbound/testcode/delayer.c:923,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:926,1
    - Dst: strerror
      Src: /src/unbound/testcode/delayer.c:926,1
    - Dst: gettimeofday
      Src: /src/unbound/testcode/delayer.c:929,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:932,1
    - Dst: strerror
      Src: /src/unbound/testcode/delayer.c:932,1
    - Dst: verbose
      Src: /src/unbound/testcode/delayer.c:934,1
    - Dst: service_send
      Src: /src/unbound/testcode/delayer.c:937,1
    - Dst: service_proxy
      Src: /src/unbound/testcode/delayer.c:939,1
    - Dst: service_recv
      Src: /src/unbound/testcode/delayer.c:941,1
    - Dst: service_tcp_listen
      Src: /src/unbound/testcode/delayer.c:944,1
    - Dst: service_tcp_relay
      Src: /src/unbound/testcode/delayer.c:947,1
    - Dst: service_findwait
      Src: /src/unbound/testcode/delayer.c:950,1
    - Dst: proxy_list_clear
      Src: /src/unbound/testcode/delayer.c:952,1
    - Dst: tcp_proxy_list_clear
      Src: /src/unbound/testcode/delayer.c:953,1
    - Dst: ring_create
      Src: /src/unbound/testcode/delayer.c:963,1
    - Dst: dl_tv_add
      Src: /src/unbound/testcode/delayer.c:972,1
    - Dst: dl_tv_add
      Src: /src/unbound/testcode/delayer.c:973,1
    - Dst: dl_tv_add
      Src: /src/unbound/testcode/delayer.c:974,1
    - Dst: extstrtoaddr
      Src: /src/unbound/testcode/delayer.c:977,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:978,1
    - Dst: exit
      Src: /src/unbound/testcode/delayer.c:979,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/delayer.c:981,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:983,1
    - Dst: signal
      Src: /src/unbound/testcode/delayer.c:984,1
    - Dst: signal
      Src: /src/unbound/testcode/delayer.c:986,1
    - Dst: signal
      Src: /src/unbound/testcode/delayer.c:989,1
    - Dst: signal
      Src: /src/unbound/testcode/delayer.c:992,1
    - Dst: signal
      Src: /src/unbound/testcode/delayer.c:995,1
    - Dst: signal
      Src: /src/unbound/testcode/delayer.c:997,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:998,1
    - Dst: socket
      Src: /src/unbound/testcode/delayer.c:1000,1
    - Dst: str_is_ip6
      Src: /src/unbound/testcode/delayer.c:1000,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:1002,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:1002,1
    - Dst: arc4random
      Src: /src/unbound/testcode/delayer.c:1006,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/delayer.c:1010,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:1011,1
    - Dst: exit
      Src: /src/unbound/testcode/delayer.c:1012,1
    - Dst: bind
      Src: /src/unbound/testcode/delayer.c:1014,1
    - Dst: log_err
      Src: /src/unbound/testcode/delayer.c:1015,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:1015,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:1017,1
    - Dst: arc4random
      Src: /src/unbound/testcode/delayer.c:1018,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/testcode/delayer.c:1021,1
    - Dst: socket
      Src: /src/unbound/testcode/delayer.c:1023,1
    - Dst: str_is_ip6
      Src: /src/unbound/testcode/delayer.c:1023,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:1025,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:1025,1
    - Dst: setsockopt
      Src: /src/unbound/testcode/delayer.c:1030,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:1032,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:1033,1
    - Dst: bind
      Src: /src/unbound/testcode/delayer.c:1036,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:1037,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:1037,1
    - Dst: listen
      Src: /src/unbound/testcode/delayer.c:1039,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:1040,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:1040,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/testcode/delayer.c:1042,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:1043,1
    - Dst: service_loop
      Src: /src/unbound/testcode/delayer.c:1047,1
    - Dst: verbose
      Src: /src/unbound/testcode/delayer.c:1051,1
    - Dst: sock_close
      Src: /src/unbound/testcode/delayer.c:1052,1
    - Dst: sock_close
      Src: /src/unbound/testcode/delayer.c:1053,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/delayer.c:1054,1
    - Dst: ring_delete
      Src: /src/unbound/testcode/delayer.c:1055,1
    - Dst: log_init
      Src: /src/unbound/testcode/delayer.c:1074,1
    - Dst: log_ident_set
      Src: /src/unbound/testcode/delayer.c:1075,1
    - Dst: usage
      Src: /src/unbound/testcode/delayer.c:1076,1
    - Dst: getopt
      Src: /src/unbound/testcode/delayer.c:1077,1
    - Dst: atoi
      Src: /src/unbound/testcode/delayer.c:1083,1
    - Dst: strcmp
      Src: /src/unbound/testcode/delayer.c:1083,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:1084,1
    - Dst: atoi
      Src: /src/unbound/testcode/delayer.c:1087,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/delayer.c:1093,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:1094,1
    - Dst: atoi
      Src: /src/unbound/testcode/delayer.c:1099,1
    - Dst: strcmp
      Src: /src/unbound/testcode/delayer.c:1099,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:1100,1
    - Dst: atoi
      Src: /src/unbound/testcode/delayer.c:1103,1
    - Dst: usage
      Src: /src/unbound/testcode/delayer.c:1108,1
    - Dst: usage
      Src: /src/unbound/testcode/delayer.c:1114,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:1116,1
    - Dst: service
      Src: /src/unbound/testcode/delayer.c:1118,1
    CyclomaticComplexity: 121
    EdgeCount: 121
    ICount: 365
    argCount: 8
    argNames:
    - s
    - rorig
    - max
    - proxies
    - srv_addr
    - srv_len
    - now
    - tcp_timeout
    argTypes:
    - int
    - fd_set*
    - int*
    - struct tcp_proxy**
    - struct sockaddr_storage*
    - socklen_t
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 549
    functionDepth: 7
    functionLinenumber: 549
    functionLinenumberEnd: 1120
    functionName: service_tcp_listen
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 1
    functionsReached:
    - getopt
    - sldns_buffer_new
    - strcmp
    - service
    - arc4random
    - ring_peek_time
    - FD_SET
    - service_proxy
    - service_recv
    - service_findwait
    - service_send
    - sldns_buffer_free
    - addr_is_ip6
    - log_init
    - atoi
    - recv
    - log_err
    - inet_ntop
    - bind
    - select
    - socket
    - tcp_proxy_delete
    - printf
    - FD_ZERO
    - setsockopt
    - calloc
    - sock_strerror
    - signal
    - sldns_buffer_begin
    - proxy_list_clear
    - log_ident_set
    - tcp_relay_read
    - send
    - tcp_relay_write
    - dl_tv_subtract
    - accept
    - wsa_strerror
    - memdup
    - strlcpy
    - cfg_parse_memsize
    - verbose
    - tcp_proxy_list_clear
    - FD_ISSET
    - free
    - malloc
    - strerror
    - gettimeofday
    - service_tcp_relay
    - str_is_ip6
    - ring_delete
    - ring_create
    - sldns_buffer_capacity
    - exit
    - ntohs
    - FD_CLR
    - sock_close
    - memmove
    - service_tcp_listen
    - extstrtoaddr
    - WSAGetLastError
    - fatal_exit
    - ipstrtoaddr
    - fd_set_nonblock
    - service_loop
    - listen
    - log_addr
    - usage
    - dl_tv_add
    - connect
    - dl_tv_smaller
    linkageType: ''
    returnType: void
    signature: "void service_tcp_listen(int s, fd_set* rorig, int* max, struct tcp_proxy**
      proxies,\n\tstruct sockaddr_storage* srv_addr, socklen_t srv_len, \n\tstruct
      timeval* now, struct timeval* tcp_timeout)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/unbound/testcode/delayer.c:623,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/delayer.c:623,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/testcode/delayer.c:624,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/delayer.c:630,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/delayer.c:631,1
    - Dst: log_err
      Src: /src/unbound/testcode/delayer.c:634,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:634,1
    - Dst: malloc
      Src: /src/unbound/testcode/delayer.c:640,1
    - Dst: log_err
      Src: /src/unbound/testcode/delayer.c:642,1
    - Dst: verbose
      Src: /src/unbound/testcode/delayer.c:645,1
    - Dst: memdup
      Src: /src/unbound/testcode/delayer.c:647,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/delayer.c:647,1
    - Dst: free
      Src: /src/unbound/testcode/delayer.c:649,1
    - Dst: log_err
      Src: /src/unbound/testcode/delayer.c:650,1
    - Dst: dl_tv_add
      Src: /src/unbound/testcode/delayer.c:655,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 6
    argNames:
    - s
    - first
    - last
    - now
    - delay
    - pkt
    argTypes:
    - int
    - struct tcp_send_list**
    - struct tcp_send_list**
    - struct timeval*
    - struct timeval*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 617
    functionDepth: 2
    functionLinenumber: 617
    functionLinenumberEnd: 666
    functionName: tcp_relay_read
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 1
    functionsReached:
    - sldns_buffer_capacity
    - log_err
    - dl_tv_add
    - verbose
    - WSAGetLastError
    - malloc
    - free
    - sock_strerror
    - sldns_buffer_begin
    - memdup
    - recv
    linkageType: ''
    returnType: int
    signature: "int tcp_relay_read(int s, struct tcp_send_list** first, \n\tstruct
      tcp_send_list** last, struct timeval* now, \n\tstruct timeval* delay, sldns_buffer*
      pkt)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:678,1
    - Dst: send
      Src: /src/unbound/testcode/delayer.c:681,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/delayer.c:687,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/delayer.c:688,1
    - Dst: log_err
      Src: /src/unbound/testcode/delayer.c:691,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:691,1
    - Dst: verbose
      Src: /src/unbound/testcode/delayer.c:699,1
    - Dst: free
      Src: /src/unbound/testcode/delayer.c:701,1
    - Dst: free
      Src: /src/unbound/testcode/delayer.c:705,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 4
    argNames:
    - s
    - first
    - last
    - now
    argTypes:
    - int
    - struct tcp_send_list**
    - struct tcp_send_list**
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 669
    functionDepth: 1
    functionLinenumber: 669
    functionLinenumberEnd: 712
    functionName: tcp_relay_write
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 1
    functionsReached:
    - log_err
    - verbose
    - WSAGetLastError
    - free
    - sock_strerror
    - send
    - dl_tv_smaller
    linkageType: ''
    returnType: int
    signature: "int tcp_relay_write(int s, struct tcp_send_list** first, \n\tstruct
      tcp_send_list** last, struct timeval* now)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: dl_tv_add
      Src: /src/unbound/testcode/delayer.c:726,1
    - Dst: FD_ISSET
      Src: /src/unbound/testcode/delayer.c:731,1
    - Dst: log_addr
      Src: /src/unbound/testcode/delayer.c:733,1
    - Dst: tcp_relay_read
      Src: /src/unbound/testcode/delayer.c:734,1
    - Dst: FD_ISSET
      Src: /src/unbound/testcode/delayer.c:740,1
    - Dst: log_addr
      Src: /src/unbound/testcode/delayer.c:742,1
    - Dst: tcp_relay_read
      Src: /src/unbound/testcode/delayer.c:743,1
    - Dst: sock_close
      Src: /src/unbound/testcode/delayer.c:745,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:754,1
    - Dst: log_addr
      Src: /src/unbound/testcode/delayer.c:755,1
    - Dst: tcp_relay_write
      Src: /src/unbound/testcode/delayer.c:757,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:761,1
    - Dst: FD_SET
      Src: /src/unbound/testcode/delayer.c:762,1
    - Dst: FD_CLR
      Src: /src/unbound/testcode/delayer.c:763,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:769,1
    - Dst: log_addr
      Src: /src/unbound/testcode/delayer.c:770,1
    - Dst: tcp_relay_write
      Src: /src/unbound/testcode/delayer.c:772,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:775,1
    - Dst: FD_SET
      Src: /src/unbound/testcode/delayer.c:777,1
    - Dst: FD_CLR
      Src: /src/unbound/testcode/delayer.c:778,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:784,1
    - Dst: tcp_proxy_delete
      Src: /src/unbound/testcode/delayer.c:796,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 63
    argCount: 8
    argNames:
    - tcp_proxies
    - now
    - delay
    - tcp_timeout
    - pkt
    - rset
    - rorig
    - worig
    argTypes:
    - struct tcp_proxy**
    - struct timeval*
    - struct timeval*
    - struct timeval*
    - sldns_buffer*
    - fd_set*
    - fd_set*
    - fd_set*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 804
      start: 715
    functionDepth: 3
    functionLinenumber: 715
    functionLinenumberEnd: 804
    functionName: service_tcp_relay
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 1
    functionsReached:
    - FD_CLR
    - sock_close
    - tcp_proxy_delete
    - FD_ISSET
    - FD_SET
    - log_addr
    - dl_tv_add
    - tcp_relay_read
    - tcp_relay_write
    - dl_tv_smaller
    linkageType: ''
    returnType: void
    signature: "void service_tcp_relay(struct tcp_proxy** tcp_proxies, struct timeval*
      now,\n\tstruct timeval* delay, struct timeval* tcp_timeout, sldns_buffer* pkt,\n\tfd_set*
      rset, fd_set* rorig, fd_set* worig)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ring_peek_time
      Src: /src/unbound/testcode/delayer.c:812,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:822,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:824,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:826,1
    - Dst: memmove
      Src: /src/unbound/testcode/delayer.c:832,1
    - Dst: dl_tv_smaller
      Src: /src/unbound/testcode/delayer.c:835,1
    - Dst: dl_tv_subtract
      Src: /src/unbound/testcode/delayer.c:841,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 26
    argCount: 4
    argNames:
    - now
    - wait
    - ring
    - tcplist
    argTypes:
    - struct timeval*
    - struct timeval*
    - struct ringbuf*
    - struct tcp_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 846
      start: 807
    functionDepth: 2
    functionLinenumber: 807
    functionLinenumberEnd: 846
    functionName: service_findwait
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 1
    functionsReached:
    - dl_tv_subtract
    - memmove
    - ring_peek_time
    - dl_tv_smaller
    linkageType: ''
    returnType: int
    signature: "int service_findwait(struct timeval* now, struct timeval* wait, \n\tstruct
      ringbuf* ring, struct tcp_proxy* tcplist)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/testcode/delayer.c:857,1
    - Dst: addr_is_ip6
      Src: /src/unbound/testcode/delayer.c:858,1
    - Dst: inet_ntop
      Src: /src/unbound/testcode/delayer.c:859,1
    - Dst: strlcpy
      Src: /src/unbound/testcode/delayer.c:862,1
    - Dst: inet_ntop
      Src: /src/unbound/testcode/delayer.c:864,1
    - Dst: strlcpy
      Src: /src/unbound/testcode/delayer.c:867,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:869,1
    - Dst: sock_close
      Src: /src/unbound/testcode/delayer.c:873,1
    - Dst: free
      Src: /src/unbound/testcode/delayer.c:874,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 877
      start: 849
    functionDepth: 2
    functionLinenumber: 849
    functionLinenumberEnd: 877
    functionName: proxy_list_clear
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - inet_ntop
    - sock_close
    - printf
    - free
    - addr_is_ip6
    - ntohs
    linkageType: ''
    returnType: void
    signature: void proxy_list_clear(struct proxy* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tcp_proxy_delete
      Src: /src/unbound/testcode/delayer.c:886,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct tcp_proxy*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 880
    functionDepth: 2
    functionLinenumber: 880
    functionLinenumberEnd: 889
    functionName: tcp_proxy_list_clear
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 1
    functionsReached:
    - tcp_proxy_delete
    linkageType: ''
    returnType: void
    signature: void tcp_proxy_list_clear(struct tcp_proxy* p)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: FD_ZERO
      Src: /src/unbound/testcode/delayer.c:908,1
    - Dst: FD_ZERO
      Src: /src/unbound/testcode/delayer.c:909,1
    - Dst: verbose
      Src: /src/unbound/testcode/delayer.c:920,1
    - Dst: verbose
      Src: /src/unbound/testcode/delayer.c:922,1
    - Dst: select
      Src: /src/unbound/testcode/delayer.c:923,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:926,1
    - Dst: strerror
      Src: /src/unbound/testcode/delayer.c:926,1
    - Dst: gettimeofday
      Src: /src/unbound/testcode/delayer.c:929,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:932,1
    - Dst: strerror
      Src: /src/unbound/testcode/delayer.c:932,1
    - Dst: verbose
      Src: /src/unbound/testcode/delayer.c:934,1
    - Dst: service_send
      Src: /src/unbound/testcode/delayer.c:937,1
    - Dst: service_proxy
      Src: /src/unbound/testcode/delayer.c:939,1
    - Dst: service_recv
      Src: /src/unbound/testcode/delayer.c:941,1
    - Dst: service_tcp_listen
      Src: /src/unbound/testcode/delayer.c:944,1
    - Dst: service_tcp_relay
      Src: /src/unbound/testcode/delayer.c:947,1
    - Dst: service_findwait
      Src: /src/unbound/testcode/delayer.c:950,1
    - Dst: proxy_list_clear
      Src: /src/unbound/testcode/delayer.c:952,1
    - Dst: tcp_proxy_list_clear
      Src: /src/unbound/testcode/delayer.c:953,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 36
    argCount: 8
    argNames:
    - udp_s
    - listen_s
    - ring
    - delay
    - reuse
    - srv_addr
    - srv_len
    - pkt
    argTypes:
    - int
    - int
    - struct ringbuf*
    - struct timeval*
    - struct timeval*
    - struct sockaddr_storage*
    - socklen_t
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 954
      start: 892
    functionDepth: 8
    functionLinenumber: 892
    functionLinenumberEnd: 954
    functionName: service_loop
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 1
    functionsReached:
    - select
    - verbose
    - service_tcp_listen
    - tcp_proxy_list_clear
    - fatal_exit
    - FD_ZERO
    - service_proxy
    - service_recv
    - service_findwait
    - service_send
    - proxy_list_clear
    - strerror
    - gettimeofday
    - service_tcp_relay
    linkageType: ''
    returnType: void
    signature: "void service_loop(int udp_s, int listen_s, struct ringbuf* ring, \n\tstruct
      timeval* delay, struct timeval* reuse,\n\tstruct sockaddr_storage* srv_addr,
      socklen_t srv_len, \n\tsldns_buffer* pkt)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: ring_create
      Src: /src/unbound/testcode/delayer.c:963,1
    - Dst: dl_tv_add
      Src: /src/unbound/testcode/delayer.c:972,1
    - Dst: dl_tv_add
      Src: /src/unbound/testcode/delayer.c:973,1
    - Dst: dl_tv_add
      Src: /src/unbound/testcode/delayer.c:974,1
    - Dst: extstrtoaddr
      Src: /src/unbound/testcode/delayer.c:977,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:978,1
    - Dst: exit
      Src: /src/unbound/testcode/delayer.c:979,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/delayer.c:981,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:983,1
    - Dst: signal
      Src: /src/unbound/testcode/delayer.c:984,1
    - Dst: signal
      Src: /src/unbound/testcode/delayer.c:986,1
    - Dst: signal
      Src: /src/unbound/testcode/delayer.c:989,1
    - Dst: signal
      Src: /src/unbound/testcode/delayer.c:992,1
    - Dst: signal
      Src: /src/unbound/testcode/delayer.c:995,1
    - Dst: signal
      Src: /src/unbound/testcode/delayer.c:997,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:998,1
    - Dst: socket
      Src: /src/unbound/testcode/delayer.c:1000,1
    - Dst: str_is_ip6
      Src: /src/unbound/testcode/delayer.c:1000,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:1002,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:1002,1
    - Dst: arc4random
      Src: /src/unbound/testcode/delayer.c:1006,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/delayer.c:1010,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:1011,1
    - Dst: exit
      Src: /src/unbound/testcode/delayer.c:1012,1
    - Dst: bind
      Src: /src/unbound/testcode/delayer.c:1014,1
    - Dst: log_err
      Src: /src/unbound/testcode/delayer.c:1015,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:1015,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:1017,1
    - Dst: arc4random
      Src: /src/unbound/testcode/delayer.c:1018,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/testcode/delayer.c:1021,1
    - Dst: socket
      Src: /src/unbound/testcode/delayer.c:1023,1
    - Dst: str_is_ip6
      Src: /src/unbound/testcode/delayer.c:1023,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:1025,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:1025,1
    - Dst: setsockopt
      Src: /src/unbound/testcode/delayer.c:1030,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:1032,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:1033,1
    - Dst: bind
      Src: /src/unbound/testcode/delayer.c:1036,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:1037,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:1037,1
    - Dst: listen
      Src: /src/unbound/testcode/delayer.c:1039,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/delayer.c:1040,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/delayer.c:1040,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/testcode/delayer.c:1042,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:1043,1
    - Dst: service_loop
      Src: /src/unbound/testcode/delayer.c:1047,1
    - Dst: verbose
      Src: /src/unbound/testcode/delayer.c:1051,1
    - Dst: sock_close
      Src: /src/unbound/testcode/delayer.c:1052,1
    - Dst: sock_close
      Src: /src/unbound/testcode/delayer.c:1053,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/delayer.c:1054,1
    - Dst: ring_delete
      Src: /src/unbound/testcode/delayer.c:1055,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 61
    argCount: 5
    argNames:
    - bind_str
    - bindport
    - serv_str
    - memsize
    - delay_msec
    argTypes:
    - char*
    - int
    - char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1056
      start: 957
    functionDepth: 9
    functionLinenumber: 957
    functionLinenumberEnd: 1056
    functionName: service
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 1
    functionsReached:
    - sldns_buffer_new
    - arc4random
    - sldns_buffer_free
    - log_err
    - bind
    - socket
    - printf
    - setsockopt
    - sock_strerror
    - verbose
    - str_is_ip6
    - ring_delete
    - ring_create
    - exit
    - sock_close
    - extstrtoaddr
    - ipstrtoaddr
    - fatal_exit
    - fd_set_nonblock
    - service_loop
    - listen
    - dl_tv_add
    - signal
    linkageType: ''
    returnType: void
    signature: "void service(const char* bind_str, int bindport, const char* serv_str,
      \n\tsize_t memsize, int delay_msec)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: log_init
      Src: /src/unbound/testcode/delayer.c:1074,1
    - Dst: log_ident_set
      Src: /src/unbound/testcode/delayer.c:1075,1
    - Dst: usage
      Src: /src/unbound/testcode/delayer.c:1076,1
    - Dst: getopt
      Src: /src/unbound/testcode/delayer.c:1077,1
    - Dst: atoi
      Src: /src/unbound/testcode/delayer.c:1083,1
    - Dst: strcmp
      Src: /src/unbound/testcode/delayer.c:1083,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:1084,1
    - Dst: atoi
      Src: /src/unbound/testcode/delayer.c:1087,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/delayer.c:1093,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:1094,1
    - Dst: atoi
      Src: /src/unbound/testcode/delayer.c:1099,1
    - Dst: strcmp
      Src: /src/unbound/testcode/delayer.c:1099,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:1100,1
    - Dst: atoi
      Src: /src/unbound/testcode/delayer.c:1103,1
    - Dst: usage
      Src: /src/unbound/testcode/delayer.c:1108,1
    - Dst: usage
      Src: /src/unbound/testcode/delayer.c:1114,1
    - Dst: printf
      Src: /src/unbound/testcode/delayer.c:1116,1
    - Dst: service
      Src: /src/unbound/testcode/delayer.c:1118,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1120
      start: 1064
    functionDepth: 10
    functionLinenumber: 1064
    functionLinenumberEnd: 1120
    functionName: main
    functionSourceFile: /src/unbound/testcode/delayer.c
    functionUses: 31
    functionsReached:
    - getopt
    - strcmp
    - cfg_parse_memsize
    - printf
    - log_init
    - atoi
    - usage
    - service
    - log_ident_set
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:54,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:55,1
    - Dst: exit
      Src: /src/unbound/testcode/pktview.c:56,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - argv
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 57
    functionName: usage
    functionSourceFile: /src/unbound/testcode/pktview.c
    functionUses: 7
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(char* argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fgets
      Src: /src/unbound/testcode/pktview.c:65,1
    - Dst: strlen
      Src: /src/unbound/testcode/pktview.c:68,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/pktview.c:70,1
    - Dst: hex_to_buf
      Src: /src/unbound/testcode/pktview.c:73,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 2
    argNames:
    - pkt
    - in
    argTypes:
    - sldns_buffer*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 60
    functionDepth: 1
    functionLinenumber: 60
    functionLinenumberEnd: 74
    functionName: read_input
    functionSourceFile: /src/unbound/testcode/pktview.c
    functionUses: 0
    functionsReached:
    - fatal_exit
    - fgets
    - hex_to_buf
    - strlen
    linkageType: ''
    returnType: void
    signature: void read_input(sldns_buffer* pkt, FILE* in)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_position
      Src: /src/unbound/testcode/pktview.c:79,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:81,1
    - Dst: dname_print
      Src: /src/unbound/testcode/pktview.c:82,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/testcode/pktview.c:82,1
    - Dst: pkt_dname_len
      Src: /src/unbound/testcode/pktview.c:83,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:84,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/testcode/pktview.c:85,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:86,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/testcode/pktview.c:87,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:88,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - pkt
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 77
    functionDepth: 2
    functionLinenumber: 77
    functionLinenumberEnd: 89
    functionName: analyze_dname
    functionSourceFile: /src/unbound/testcode/pktview.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - dname_print
    - printf
    - sldns_buffer_current
    - pkt_dname_len
    linkageType: ''
    returnType: void
    signature: void analyze_dname(sldns_buffer* pkt)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_position
      Src: /src/unbound/testcode/pktview.c:101,1
    - Dst: analyze_dname
      Src: /src/unbound/testcode/pktview.c:102,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/testcode/pktview.c:103,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/testcode/pktview.c:108,1
    - Dst: get_rdf_size
      Src: /src/unbound/testcode/pktview.c:111,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:114,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/testcode/pktview.c:115,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:122,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:124,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/testcode/pktview.c:124,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:125,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:127,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/testcode/pktview.c:128,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 3
    argNames:
    - pkt
    - desc
    - rdlen
    argTypes:
    - sldns_buffer*
    - sldns_rr_descriptor*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 92
    functionDepth: 3
    functionLinenumber: 92
    functionLinenumberEnd: 129
    functionName: analyze_rdata
    functionSourceFile: /src/unbound/testcode/pktview.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - get_rdf_size
    - analyze_dname
    - sldns_buffer_skip
    - printf
    - sldns_buffer_current
    linkageType: ''
    returnType: void
    signature: "void analyze_rdata(sldns_buffer*pkt, const sldns_rr_descriptor* desc,
      \n\tuint16_t rdlen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: analyze_dname
      Src: /src/unbound/testcode/pktview.c:136,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/testcode/pktview.c:137,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/testcode/pktview.c:138,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:139,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/testcode/pktview.c:139,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/testcode/pktview.c:140,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:141,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/testcode/pktview.c:141,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/testcode/pktview.c:142,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:145,1
    - Dst: sldns_buffer_read_u32
      Src: /src/unbound/testcode/pktview.c:147,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:148,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/testcode/pktview.c:149,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:150,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/testcode/pktview.c:151,1
    - Dst: analyze_rdata
      Src: /src/unbound/testcode/pktview.c:152,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/testcode/pktview.c:152,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/testcode/pktview.c:153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 2
    argNames:
    - pkt
    - q
    argTypes:
    - sldns_buffer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 132
    functionDepth: 5
    functionLinenumber: 132
    functionLinenumberEnd: 155
    functionName: analyze_rr
    functionSourceFile: /src/unbound/testcode/pktview.c
    functionUses: 0
    functionsReached:
    - analyze_rdata
    - sldns_rr_descript
    - analyze_dname
    - sldns_buffer_skip
    - sldns_buffer_read_u32
    - printf
    - sldns_buffer_read_u16
    - sldns_lookup_by_id
    linkageType: ''
    returnType: void
    signature: void analyze_rr(sldns_buffer* pkt, int q)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:162,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/pktview.c:162,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/pktview.c:163,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/testcode/pktview.c:165,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:166,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/testcode/pktview.c:167,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:168,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/testcode/pktview.c:169,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:170,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/testcode/pktview.c:171,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:172,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/testcode/pktview.c:173,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:174,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/testcode/pktview.c:175,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:176,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:178,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/testcode/pktview.c:179,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:181,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:183,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:185,1
    - Dst: printf
      Src: /src/unbound/testcode/pktview.c:186,1
    - Dst: analyze_rr
      Src: /src/unbound/testcode/pktview.c:187,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 1
    argNames:
    - pkt
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 158
    functionDepth: 6
    functionLinenumber: 158
    functionLinenumberEnd: 190
    functionName: analyze
    functionSourceFile: /src/unbound/testcode/pktview.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - analyze_rr
    - printf
    - sldns_buffer_limit
    - sldns_buffer_read_u16
    linkageType: ''
    returnType: void
    signature: void analyze(sldns_buffer* pkt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_init
      Src: /src/unbound/testcode/pktview.c:197,1
    - Dst: log_ident_set
      Src: /src/unbound/testcode/pktview.c:198,1
    - Dst: usage
      Src: /src/unbound/testcode/pktview.c:201,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/pktview.c:204,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/pktview.c:205,1
    - Dst: read_input
      Src: /src/unbound/testcode/pktview.c:207,1
    - Dst: analyze
      Src: /src/unbound/testcode/pktview.c:208,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/pktview.c:210,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 193
    functionDepth: 7
    functionLinenumber: 193
    functionLinenumberEnd: 212
    functionName: main
    functionSourceFile: /src/unbound/testcode/pktview.c
    functionUses: 31
    functionsReached:
    - read_input
    - sldns_buffer_new
    - fatal_exit
    - log_init
    - sldns_buffer_free
    - analyze
    - usage
    - log_ident_set
    linkageType: ''
    returnType: int
    signature: int main(int argc, char* argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/testcode/testpkts.c:54,1
    - Dst: fprintf
      Src: /src/unbound/testcode/testpkts.c:55,1
    - Dst: vfprintf
      Src: /src/unbound/testcode/testpkts.c:56,1
    - Dst: fprintf
      Src: /src/unbound/testcode/testpkts.c:57,1
    - Dst: fflush
      Src: /src/unbound/testcode/testpkts.c:58,1
    - Dst: va_end
      Src: /src/unbound/testcode/testpkts.c:59,1
    - Dst: exit
      Src: /src/unbound/testcode/testpkts.c:60,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - msg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 61
    functionName: error
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 163
    functionsReached:
    - exit
    - va_start
    - va_end
    - fprintf
    - fflush
    - vfprintf
    linkageType: ''
    returnType: void
    signature: void error(const char* msg, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 4
    argCount: 1
    argNames:
    - c
    argTypes:
    - char
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 70
      start: 64
    functionDepth: 0
    functionLinenumber: 64
    functionLinenumberEnd: 70
    functionName: isendline
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int isendline(char c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/testcode/testpkts.c:79,1
    - Dst: assert
      Src: /src/unbound/testcode/testpkts.c:80,1
    - Dst: strncmp
      Src: /src/unbound/testcode/testpkts.c:81,1
    - Dst: isspace
      Src: /src/unbound/testcode/testpkts.c:84,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - str
    - keyword
    argTypes:
    - char**
    - char*
    assertStmts:
    - condition: (str && keyword)
      pos:
        line_end: 79
        line_start: 79
        source_file: /src/unbound/testcode/testpkts.c
    constantsTouched: []
    func_position:
      end: 87
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 87
    functionName: str_keyword
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - assert
    - strncmp
    - isspace
    - strlen
    linkageType: ''
    returnType: int
    signature: int str_keyword(char** str, const char* keyword)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/testcode/testpkts.c:93,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:96,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - entry
    argTypes:
    - struct entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 107
    functionName: entry_add_reply
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - malloc
    - error
    linkageType: ''
    returnType: struct reply_packet
    signature: 'struct reply_packet *

      entry_add_reply(struct entry* entry)'
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: isendline
      Src: /src/unbound/testcode/testpkts.c:114,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:116,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:118,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:120,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:122,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:124,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:126,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:128,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:130,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:132,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:134,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:136,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:138,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:140,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:142,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:144,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:146,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:148,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:150,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:152,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:155,1
    - Dst: strtol
      Src: /src/unbound/testcode/testpkts.c:157,1
    - Dst: isspace
      Src: /src/unbound/testcode/testpkts.c:158,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:160,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:163,1
    - Dst: isspace
      Src: /src/unbound/testcode/testpkts.c:165,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:167,1
    - Dst: strtol
      Src: /src/unbound/testcode/testpkts.c:170,1
    - Dst: isspace
      Src: /src/unbound/testcode/testpkts.c:173,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:176,1
    CyclomaticComplexity: 30
    EdgeCount: 30
    ICount: 85
    argCount: 2
    argNames:
    - line
    - e
    argTypes:
    - char*
    - struct entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 110
    functionDepth: 1
    functionLinenumber: 110
    functionLinenumberEnd: 179
    functionName: matchline
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - isspace
    - isendline
    - error
    - str_keyword
    - strtol
    linkageType: ''
    returnType: void
    signature: void matchline(char* line, struct entry* e)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:186,1
    - Dst: isendline
      Src: /src/unbound/testcode/testpkts.c:188,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:191,1
    - Dst: LDNS_OPCODE_SET
      Src: /src/unbound/testcode/testpkts.c:192,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:193,1
    - Dst: LDNS_OPCODE_SET
      Src: /src/unbound/testcode/testpkts.c:194,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:195,1
    - Dst: LDNS_OPCODE_SET
      Src: /src/unbound/testcode/testpkts.c:196,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:197,1
    - Dst: LDNS_OPCODE_SET
      Src: /src/unbound/testcode/testpkts.c:198,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:199,1
    - Dst: LDNS_OPCODE_SET
      Src: /src/unbound/testcode/testpkts.c:200,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:202,1
    - Dst: LDNS_RCODE_SET
      Src: /src/unbound/testcode/testpkts.c:203,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:204,1
    - Dst: LDNS_RCODE_SET
      Src: /src/unbound/testcode/testpkts.c:205,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:206,1
    - Dst: LDNS_RCODE_SET
      Src: /src/unbound/testcode/testpkts.c:207,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:208,1
    - Dst: LDNS_RCODE_SET
      Src: /src/unbound/testcode/testpkts.c:209,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:210,1
    - Dst: LDNS_RCODE_SET
      Src: /src/unbound/testcode/testpkts.c:211,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:212,1
    - Dst: LDNS_RCODE_SET
      Src: /src/unbound/testcode/testpkts.c:213,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:214,1
    - Dst: LDNS_RCODE_SET
      Src: /src/unbound/testcode/testpkts.c:215,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:216,1
    - Dst: LDNS_RCODE_SET
      Src: /src/unbound/testcode/testpkts.c:217,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:218,1
    - Dst: LDNS_RCODE_SET
      Src: /src/unbound/testcode/testpkts.c:219,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:220,1
    - Dst: LDNS_RCODE_SET
      Src: /src/unbound/testcode/testpkts.c:221,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:222,1
    - Dst: LDNS_RCODE_SET
      Src: /src/unbound/testcode/testpkts.c:223,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:225,1
    - Dst: LDNS_QR_SET
      Src: /src/unbound/testcode/testpkts.c:226,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:227,1
    - Dst: LDNS_AA_SET
      Src: /src/unbound/testcode/testpkts.c:228,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:229,1
    - Dst: LDNS_TC_SET
      Src: /src/unbound/testcode/testpkts.c:230,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:231,1
    - Dst: LDNS_RD_SET
      Src: /src/unbound/testcode/testpkts.c:232,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:233,1
    - Dst: LDNS_CD_SET
      Src: /src/unbound/testcode/testpkts.c:234,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:235,1
    - Dst: LDNS_RA_SET
      Src: /src/unbound/testcode/testpkts.c:236,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:237,1
    - Dst: LDNS_AD_SET
      Src: /src/unbound/testcode/testpkts.c:238,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:239,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:241,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:244,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 84
    argCount: 5
    argNames:
    - line
    - reply
    - reply_len
    - do_flag
    - co_flag
    argTypes:
    - char*
    - uint8_t*
    - size_t
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 182
    functionDepth: 1
    functionLinenumber: 182
    functionLinenumberEnd: 247
    functionName: replyline
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - LDNS_RA_SET
    - LDNS_CD_SET
    - LDNS_AD_SET
    - LDNS_AA_SET
    - LDNS_TC_SET
    - isendline
    - LDNS_RCODE_SET
    - LDNS_OPCODE_SET
    - error
    - str_keyword
    - LDNS_RD_SET
    - LDNS_QR_SET
    linkageType: ''
    returnType: void
    signature: "void replyline(char* line, uint8_t* reply, size_t reply_len,\n\tint*
      do_flag, int* co_flag)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: isendline
      Src: /src/unbound/testcode/testpkts.c:255,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:257,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:259,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:261,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:263,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:265,1
    - Dst: strtol
      Src: /src/unbound/testcode/testpkts.c:266,1
    - Dst: isspace
      Src: /src/unbound/testcode/testpkts.c:267,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:269,1
    - Dst: strtol
      Src: /src/unbound/testcode/testpkts.c:270,1
    - Dst: isspace
      Src: /src/unbound/testcode/testpkts.c:271,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:274,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 3
    argNames:
    - line
    - e
    - pkt
    argTypes:
    - char*
    - struct entry*
    - struct reply_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 250
    functionDepth: 1
    functionLinenumber: 250
    functionLinenumberEnd: 277
    functionName: adjustline
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - isspace
    - isendline
    - error
    - str_keyword
    - strtol
    linkageType: ''
    returnType: void
    signature: "void adjustline(char* line, struct entry* e, \n\tstruct reply_packet*
      pkt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/testcode/testpkts.c:282,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:283,1
    - Dst: memset
      Src: /src/unbound/testcode/testpkts.c:284,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 312
    functionName: new_entry
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 4
    functionsReached:
    - malloc
    - memset
    - error
    linkageType: ''
    returnType: struct entry
    signature: struct entry * new_entry(void)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/unbound/testcode/testpkts.c:361,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 5
    argNames:
    - hexstr
    - len
    - buf
    - offset
    - buf_len
    argTypes:
    - char*
    - int
    - uint8_t*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 323
    functionDepth: 0
    functionLinenumber: 323
    functionLinenumberEnd: 367
    functionName: hexstr2bin
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: size_t
    signature: size_t hexstr2bin(char *hexstr, int len, uint8_t *buf, size_t offset,
      size_t buf_len)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/testpkts.c:386,1
    - Dst: malloc
      Src: /src/unbound/testcode/testpkts.c:387,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:388,1
    - Dst: malloc
      Src: /src/unbound/testcode/testpkts.c:390,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:391,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/testcode/testpkts.c:392,1
    - Dst: isascii
      Src: /src/unbound/testcode/testpkts.c:395,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:406,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:407,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:426,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:427,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:443,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:444,1
    - Dst: hexstr2bin
      Src: /src/unbound/testcode/testpkts.c:452,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/testpkts.c:453,1
    - Dst: sldns_buffer_new_frm_data
      Src: /src/unbound/testcode/testpkts.c:454,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:456,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:458,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:459,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 65
    argCount: 1
    argNames:
    - data_buffer
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 370
    functionDepth: 2
    functionLinenumber: 370
    functionLinenumberEnd: 461
    functionName: hex_buffer2wire
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_new
    - hexstr2bin
    - malloc
    - free
    - error
    - sldns_buffer_begin
    - sldns_buffer_new_frm_data
    - isascii
    linkageType: ''
    returnType: sldns_buffer
    signature: 'sldns_buffer *

      hex_buffer2wire(sldns_buffer *data_buffer)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/testcode/testpkts.c:473,1
    - Dst: isendline
      Src: /src/unbound/testcode/testpkts.c:473,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:477,1
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/testcode/testpkts.c:479,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:483,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/testcode/testpkts.c:484,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - name
    - pstate
    - parse
    argTypes:
    - char*
    - struct sldns_file_parse_state*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 485
      start: 464
    functionDepth: 3
    functionLinenumber: 464
    functionLinenumberEnd: 485
    functionName: get_origin
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - isspace
    - verbose
    - isendline
    - error
    - sldns_get_errorstr_parse
    - sldns_str2wire_dname_buf
    linkageType: ''
    returnType: void
    signature: void get_origin(const char* name, struct sldns_file_parse_state* pstate,
      char* parse)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:499,1
    - Dst: sldns_str2wire_rr_question_buf
      Src: /src/unbound/testcode/testpkts.c:503,1
    - Dst: sldns_str2wire_rr_buf
      Src: /src/unbound/testcode/testpkts.c:506,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:510,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/testcode/testpkts.c:511,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/testcode/testpkts.c:512,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/testcode/testpkts.c:517,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/testpkts.c:517,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/testcode/testpkts.c:519,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/testcode/testpkts.c:519,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/testcode/testpkts.c:521,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/testcode/testpkts.c:521,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/testcode/testpkts.c:523,1
    - Dst: LDNS_ARCOUNT
      Src: /src/unbound/testcode/testpkts.c:523,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:524,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 18
    argCount: 7
    argNames:
    - rrstr
    - pktbuf
    - pktsize
    - pktlen
    - pstate
    - add_section
    - fname
    argTypes:
    - char*
    - uint8_t*
    - size_t
    - size_t*
    - struct sldns_file_parse_state*
    - sldns_pkt_section
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 525
      start: 488
    functionDepth: 7
    functionLinenumber: 488
    functionLinenumberEnd: 525
    functionName: add_rr
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 4
    functionsReached:
    - LDNS_ANCOUNT
    - sldns_str2wire_rr_buf
    - sldns_write_uint16
    - LDNS_QDCOUNT
    - LDNS_WIREPARSE_OFFSET
    - error
    - sldns_get_errorstr_parse
    - LDNS_NSCOUNT
    - sldns_str2wire_rr_question_buf
    - LDNS_ARCOUNT
    linkageType: ''
    returnType: void
    signature: "void add_rr(char* rrstr, uint8_t* pktbuf, size_t pktsize,\n\tsize_t*
      pktlen, struct sldns_file_parse_state* pstate,\n\tsldns_pkt_section add_section,
      const char* fname)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:546,1
    - Dst: memmove
      Src: /src/unbound/testcode/testpkts.c:547,1
    - Dst: memmove
      Src: /src/unbound/testcode/testpkts.c:549,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/testcode/testpkts.c:550,1
    - Dst: LDNS_ARCOUNT
      Src: /src/unbound/testcode/testpkts.c:550,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 7
    argNames:
    - pktbuf
    - pktsize
    - do_flag
    - co_flag
    - ednsdata
    - ednslen
    - pktlen
    argTypes:
    - uint8_t*
    - size_t
    - int
    - int
    - uint8_t*
    - uint16_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 528
    functionDepth: 1
    functionLinenumber: 528
    functionLinenumberEnd: 552
    functionName: add_edns
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - sldns_write_uint16
    - error
    - LDNS_ARCOUNT
    - memmove
    linkageType: ''
    returnType: void
    signature: "void add_edns(uint8_t* pktbuf, size_t pktsize, int do_flag, int co_flag,\n\tuint8_t
      *ednsdata, uint16_t ednslen, size_t* pktlen)"
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/testpkts.c:572,1
    - Dst: fgets
      Src: /src/unbound/testcode/testpkts.c:574,1
    - Dst: isspace
      Src: /src/unbound/testcode/testpkts.c:579,1
    - Dst: isendline
      Src: /src/unbound/testcode/testpkts.c:582,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:584,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:586,1
    - Dst: new_entry
      Src: /src/unbound/testcode/testpkts.c:589,1
    - Dst: entry_add_reply
      Src: /src/unbound/testcode/testpkts.c:591,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:593,1
    - Dst: get_origin
      Src: /src/unbound/testcode/testpkts.c:594,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:596,1
    - Dst: atoi
      Src: /src/unbound/testcode/testpkts.c:597,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:603,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:606,1
    - Dst: matchline
      Src: /src/unbound/testcode/testpkts.c:607,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:608,1
    - Dst: replyline
      Src: /src/unbound/testcode/testpkts.c:609,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:610,1
    - Dst: adjustline
      Src: /src/unbound/testcode/testpkts.c:611,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:612,1
    - Dst: memdup
      Src: /src/unbound/testcode/testpkts.c:614,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:617,1
    - Dst: entry_add_reply
      Src: /src/unbound/testcode/testpkts.c:618,1
    - Dst: memset
      Src: /src/unbound/testcode/testpkts.c:621,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:622,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:623,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:625,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:627,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:629,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:631,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:632,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/testpkts.c:633,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:635,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:637,1
    - Dst: hex_buffer2wire
      Src: /src/unbound/testcode/testpkts.c:640,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/testpkts.c:641,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/testpkts.c:644,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:645,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/testpkts.c:646,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:648,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:650,1
    - Dst: hex_buffer2wire
      Src: /src/unbound/testcode/testpkts.c:654,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/testpkts.c:655,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/testpkts.c:658,1
    - Dst: str_keyword
      Src: /src/unbound/testcode/testpkts.c:659,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/testpkts.c:661,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/testpkts.c:663,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/testpkts.c:668,1
    - Dst: add_edns
      Src: /src/unbound/testcode/testpkts.c:669,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/testpkts.c:670,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/testpkts.c:671,1
    - Dst: add_edns
      Src: /src/unbound/testcode/testpkts.c:674,1
    - Dst: memdup
      Src: /src/unbound/testcode/testpkts.c:677,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:680,1
    - Dst: add_rr
      Src: /src/unbound/testcode/testpkts.c:684,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:691,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:695,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:699,1
    CyclomaticComplexity: 43
    EdgeCount: 43
    ICount: 122
    argCount: 4
    argNames:
    - in
    - name
    - pstate
    - skip_whitespace
    argTypes:
    - FILE*
    - char*
    - struct sldns_file_parse_state*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 703
      start: 555
    functionDepth: 8
    functionLinenumber: 555
    functionLinenumberEnd: 703
    functionName: read_entry
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 2
    functionsReached:
    - sldns_buffer_new
    - atoi
    - error
    - sldns_buffer_free
    - replyline
    - fgets
    - memset
    - new_entry
    - str_keyword
    - sldns_buffer_begin
    - get_origin
    - add_edns
    - isendline
    - matchline
    - add_rr
    - adjustline
    - isspace
    - entry_add_reply
    - sldns_buffer_limit
    - hex_buffer2wire
    - sldns_buffer_printf
    - memdup
    linkageType: ''
    returnType: struct entry
    signature: "struct entry *\nread_entry(FILE* in, const char* name, struct sldns_file_parse_state*
      pstate,\n\tint skip_whitespace)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/testpkts.c:715,1
    - Dst: fopen
      Src: /src/unbound/testcode/testpkts.c:717,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:718,1
    - Dst: strerror
      Src: /src/unbound/testcode/testpkts.c:718,1
    - Dst: read_entry
      Src: /src/unbound/testcode/testpkts.c:721,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:729,1
    - Dst: fclose
      Src: /src/unbound/testcode/testpkts.c:731,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - name
    - skip_whitespace
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 706
    functionDepth: 9
    functionLinenumber: 706
    functionLinenumberEnd: 733
    functionName: read_datafile
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - read_entry
    - verbose
    - fclose
    - error
    - fopen
    - strerror
    - memset
    linkageType: ''
    returnType: struct entry
    signature: "struct entry * \nread_datafile(const char* name, int skip_whitespace)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/testpkts.c:744,1
    - Dst: sldns_wire2str_dname_scan
      Src: /src/unbound/testcode/testpkts.c:749,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/testcode/testpkts.c:752,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - pkt
    - pktlen
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 753
      start: 736
    functionDepth: 5
    functionLinenumber: 736
    functionLinenumberEnd: 753
    functionName: get_qtype
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - sldns_read_uint16
    - LDNS_QDCOUNT
    - sldns_wire2str_dname_scan
    linkageType: ''
    returnType: sldns_rr_type
    signature: sldns_rr_type get_qtype(uint8_t* pkt, size_t pktlen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/testpkts.c:764,1
    - Dst: sldns_wire2str_dname_scan
      Src: /src/unbound/testcode/testpkts.c:769,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - pkt
    - pktlen
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 756
    functionDepth: 5
    functionLinenumber: 756
    functionLinenumberEnd: 771
    functionName: get_qname_len
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - LDNS_QDCOUNT
    - sldns_wire2str_dname_scan
    linkageType: ''
    returnType: size_t
    signature: size_t get_qname_len(uint8_t* pkt, size_t pktlen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/testpkts.c:778,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - pkt
    - pktlen
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 781
      start: 774
    functionDepth: 1
    functionLinenumber: 774
    functionLinenumberEnd: 781
    functionName: get_qname
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - LDNS_QDCOUNT
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t * get_qname(uint8_t* pkt, size_t pktlen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_OPCODE_WIRE
      Src: /src/unbound/testcode/testpkts.c:788,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - pkt
    - pktlen
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 789
      start: 784
    functionDepth: 1
    functionLinenumber: 784
    functionLinenumberEnd: 789
    functionName: get_opcode
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - LDNS_OPCODE_WIRE
    linkageType: ''
    returnType: int
    signature: int get_opcode(uint8_t* pkt, size_t pktlen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/testcode/testpkts.c:796,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - pkt
    - pktlen
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 797
      start: 792
    functionDepth: 1
    functionLinenumber: 792
    functionLinenumberEnd: 797
    functionName: get_rcode
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - LDNS_RCODE_WIRE
    linkageType: ''
    returnType: int
    signature: int get_rcode(uint8_t* pkt, size_t pktlen)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/testpkts.c:814,1
    - Dst: sldns_wire2str_rrquestion_scan
      Src: /src/unbound/testcode/testpkts.c:815,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/testcode/testpkts.c:817,1
    - Dst: sldns_wire2str_rr_scan
      Src: /src/unbound/testcode/testpkts.c:818,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/testcode/testpkts.c:822,1
    - Dst: sldns_wire2str_dname_scan
      Src: /src/unbound/testcode/testpkts.c:826,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/testcode/testpkts.c:828,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/testcode/testpkts.c:832,1
    - Dst: sldns_wire2str_dname_scan
      Src: /src/unbound/testcode/testpkts.c:837,1
    - Dst: sldns_wire2str_dname_scan
      Src: /src/unbound/testcode/testpkts.c:839,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:843,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/testcode/testpkts.c:844,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/testcode/testpkts.c:845,1
    - Dst: sldns_wire2str_rr_scan
      Src: /src/unbound/testcode/testpkts.c:848,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 28
    argCount: 2
    argNames:
    - p
    - plen
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 852
      start: 800
    functionDepth: 7
    functionLinenumber: 800
    functionLinenumberEnd: 852
    functionName: get_serial
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 5
    functionsReached:
    - LDNS_ANCOUNT
    - sldns_wire2str_rr_scan
    - verbose
    - LDNS_QDCOUNT
    - LDNS_NSCOUNT
    - sldns_wire2str_rrquestion_scan
    - sldns_read_uint16
    - sldns_read_uint32
    - sldns_wire2str_dname_scan
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t get_serial(uint8_t* p, size_t plen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/testpkts.c:871,1
    - Dst: sldns_wire2str_rrquestion_scan
      Src: /src/unbound/testcode/testpkts.c:872,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/testcode/testpkts.c:874,1
    - Dst: sldns_wire2str_rr_scan
      Src: /src/unbound/testcode/testpkts.c:875,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/testcode/testpkts.c:876,1
    - Dst: sldns_wire2str_rr_scan
      Src: /src/unbound/testcode/testpkts.c:877,1
    - Dst: LDNS_ARCOUNT
      Src: /src/unbound/testcode/testpkts.c:880,1
    - Dst: sldns_wire2str_dname_scan
      Src: /src/unbound/testcode/testpkts.c:884,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/testcode/testpkts.c:886,1
    - Dst: sldns_wire2str_rr_scan
      Src: /src/unbound/testcode/testpkts.c:892,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 2
    argNames:
    - p
    - plen
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 895
      start: 855
    functionDepth: 7
    functionLinenumber: 855
    functionLinenumberEnd: 895
    functionName: pkt_find_edns_opt
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - LDNS_ANCOUNT
    - sldns_wire2str_rr_scan
    - LDNS_QDCOUNT
    - LDNS_NSCOUNT
    - sldns_wire2str_rrquestion_scan
    - sldns_read_uint16
    - sldns_wire2str_dname_scan
    - LDNS_ARCOUNT
    linkageType: ''
    returnType: int
    signature: int pkt_find_edns_opt(uint8_t** p, size_t* plen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pkt_find_edns_opt
      Src: /src/unbound/testcode/testpkts.c:902,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - pkt
    - len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 903
      start: 898
    functionDepth: 8
    functionLinenumber: 898
    functionLinenumberEnd: 903
    functionName: get_has_edns
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - pkt_find_edns_opt
    linkageType: ''
    returnType: int
    signature: int get_has_edns(uint8_t* pkt, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pkt_find_edns_opt
      Src: /src/unbound/testcode/testpkts.c:912,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/testcode/testpkts.c:917,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - pkt
    - len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 919
      start: 906
    functionDepth: 8
    functionLinenumber: 906
    functionLinenumberEnd: 919
    functionName: get_do_flag
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - sldns_read_uint16
    - pkt_find_edns_opt
    linkageType: ''
    returnType: int
    signature: int get_do_flag(uint8_t* pkt, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pkt_find_edns_opt
      Src: /src/unbound/testcode/testpkts.c:928,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/testcode/testpkts.c:933,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - pkt
    - len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 935
      start: 922
    functionDepth: 8
    functionLinenumber: 922
    functionLinenumberEnd: 935
    functionName: get_co_flag
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - sldns_read_uint16
    - pkt_find_edns_opt
    linkageType: ''
    returnType: int
    signature: int get_co_flag(uint8_t* pkt, size_t len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pkt_find_edns_opt
      Src: /src/unbound/testcode/testpkts.c:948,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/testcode/testpkts.c:950,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/testcode/testpkts.c:956,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/testcode/testpkts.c:959,1
    - Dst: memmove
      Src: /src/unbound/testcode/testpkts.c:961,1
    - Dst: memmove
      Src: /src/unbound/testcode/testpkts.c:963,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/testcode/testpkts.c:966,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/testcode/testpkts.c:967,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 4
    argNames:
    - pkt
    - len
    - code
    - buf
    argTypes:
    - uint8_t*
    - size_t
    - sldns_edns_option
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 974
      start: 941
    functionDepth: 8
    functionLinenumber: 941
    functionLinenumberEnd: 974
    functionName: pkt_snip_edns_option
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - sldns_write_uint16
    - sldns_read_uint16
    - pkt_find_edns_opt
    - memmove
    linkageType: ''
    returnType: int
    signature: "int pkt_snip_edns_option(uint8_t* pkt, size_t len, sldns_edns_option
      code,\n\tuint8_t* buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pkt_snip_edns_option
      Src: /src/unbound/testcode/testpkts.c:982,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/testcode/testpkts.c:984,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - pkt
    - len
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 985
      start: 978
    functionDepth: 9
    functionLinenumber: 978
    functionLinenumberEnd: 985
    functionName: extract_ede
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - pkt_snip_edns_option
    - sldns_read_uint16
    linkageType: ''
    returnType: int
    signature: int extract_ede(uint8_t* pkt, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pkt_snip_edns_option
      Src: /src/unbound/testcode/testpkts.c:994,1
    - Dst: memcpy
      Src: /src/unbound/testcode/testpkts.c:997,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - pkt
    - len
    - cookie
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 990
    functionDepth: 9
    functionLinenumber: 990
    functionLinenumberEnd: 999
    functionName: extract_cookie
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - pkt_snip_edns_option
    - memcpy
    linkageType: ''
    returnType: int
    signature: int extract_cookie(uint8_t* pkt, size_t len, uint8_t* cookie)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/testcode/testpkts.c:1009,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/testcode/testpkts.c:1009,1
    - Dst: LDNS_ARCOUNT
      Src: /src/unbound/testcode/testpkts.c:1009,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/testpkts.c:1015,1
    - Dst: sldns_wire2str_rrquestion_scan
      Src: /src/unbound/testcode/testpkts.c:1016,1
    - Dst: sldns_wire2str_dname_scan
      Src: /src/unbound/testcode/testpkts.c:1022,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/testcode/testpkts.c:1026,1
    - Dst: sldns_wire2str_rr_scan
      Src: /src/unbound/testcode/testpkts.c:1028,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - pkt
    - pktlen
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1031
      start: 1002
    functionDepth: 7
    functionLinenumber: 1002
    functionLinenumberEnd: 1031
    functionName: zerottls
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - LDNS_ANCOUNT
    - sldns_wire2str_rr_scan
    - LDNS_QDCOUNT
    - sldns_write_uint32
    - LDNS_NSCOUNT
    - sldns_wire2str_rrquestion_scan
    - sldns_wire2str_dname_scan
    - LDNS_ARCOUNT
    linkageType: ''
    returnType: void
    signature: void zerottls(uint8_t* pkt, size_t pktlen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/testcode/testpkts.c:1043,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - s
    - n
    argTypes:
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1050
      start: 1034
    functionDepth: 0
    functionLinenumber: 1034
    functionLinenumberEnd: 1050
    functionName: get_line
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 1
    functionsReached:
    - strchr
    linkageType: ''
    returnType: int
    signature: int get_line(char** s, char** n)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fatal_exit
      Src: /src/unbound/testcode/testpkts.c:1060,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1063,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1064,1
    - Dst: strcmp
      Src: /src/unbound/testcode/testpkts.c:1072,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1078,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 5
    argNames:
    - q
    - nq
    - p
    - np
    - num
    argTypes:
    - char**
    - char**
    - char**
    - char**
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1083
      start: 1053
    functionDepth: 1
    functionLinenumber: 1053
    functionLinenumberEnd: 1083
    functionName: match_noloc_section
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - verbose
    - strcmp
    - get_line
    - fatal_exit
    linkageType: ''
    returnType: int
    signature: int match_noloc_section(char** q, char** nq, char** p, char** np, uint16_t
      num)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/testcode/testpkts.c:1094,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/testpkts.c:1097,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/testpkts.c:1097,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/testcode/testpkts.c:1099,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/testcode/testpkts.c:1099,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/testcode/testpkts.c:1101,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/testcode/testpkts.c:1101,1
    - Dst: LDNS_ARCOUNT
      Src: /src/unbound/testcode/testpkts.c:1103,1
    - Dst: LDNS_ARCOUNT
      Src: /src/unbound/testcode/testpkts.c:1103,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1106,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1107,1
    - Dst: strcmp
      Src: /src/unbound/testcode/testpkts.c:1108,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1112,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1113,1
    - Dst: strcmp
      Src: /src/unbound/testcode/testpkts.c:1114,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1119,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1120,1
    - Dst: strcmp
      Src: /src/unbound/testcode/testpkts.c:1121,1
    - Dst: match_noloc_section
      Src: /src/unbound/testcode/testpkts.c:1122,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/testpkts.c:1122,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1126,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1127,1
    - Dst: strcmp
      Src: /src/unbound/testcode/testpkts.c:1128,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1129,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1130,1
    - Dst: strcmp
      Src: /src/unbound/testcode/testpkts.c:1131,1
    - Dst: match_noloc_section
      Src: /src/unbound/testcode/testpkts.c:1132,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/testcode/testpkts.c:1132,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1136,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1137,1
    - Dst: strcmp
      Src: /src/unbound/testcode/testpkts.c:1138,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1139,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1140,1
    - Dst: strcmp
      Src: /src/unbound/testcode/testpkts.c:1141,1
    - Dst: match_noloc_section
      Src: /src/unbound/testcode/testpkts.c:1142,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/testcode/testpkts.c:1142,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1146,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1147,1
    - Dst: strcmp
      Src: /src/unbound/testcode/testpkts.c:1148,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1149,1
    - Dst: get_line
      Src: /src/unbound/testcode/testpkts.c:1150,1
    - Dst: strcmp
      Src: /src/unbound/testcode/testpkts.c:1151,1
    - Dst: match_noloc_section
      Src: /src/unbound/testcode/testpkts.c:1152,1
    - Dst: LDNS_ARCOUNT
      Src: /src/unbound/testcode/testpkts.c:1152,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 61
    argCount: 6
    argNames:
    - q
    - p
    - q_pkt
    - q_pkt_len
    - p_pkt
    - p_pkt_len
    argTypes:
    - char*
    - char*
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1156
      start: 1086
    functionDepth: 2
    functionLinenumber: 1086
    functionLinenumberEnd: 1156
    functionName: match_noloc
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - strcmp
    - LDNS_ANCOUNT
    - LDNS_QDCOUNT
    - get_line
    - LDNS_NSCOUNT
    - match_noloc_section
    - memcmp
    - LDNS_ARCOUNT
    linkageType: ''
    returnType: int
    signature: "int match_noloc(char* q, char* p, uint8_t* q_pkt, size_t q_pkt_len,\n\tuint8_t*
      p_pkt, size_t p_pkt_len)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: tolower
      Src: /src/unbound/testcode/testpkts.c:1177,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - p
    - remain
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1186
      start: 1159
    functionDepth: 0
    functionLinenumber: 1159
    functionLinenumberEnd: 1186
    functionName: lowercase_dname
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - tolower
    linkageType: ''
    returnType: void
    signature: void lowercase_dname(uint8_t** p, size_t* remain)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: sldns_rr_descript
      Src: /src/unbound/testcode/testpkts.c:1192,1
    - Dst: sldns_rr_descriptor_field_type
      Src: /src/unbound/testcode/testpkts.c:1203,1
    - Dst: lowercase_dname
      Src: /src/unbound/testcode/testpkts.c:1205,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:1244,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 60
    argCount: 4
    argNames:
    - p
    - remain
    - rdatalen
    - t
    argTypes:
    - uint8_t**
    - size_t*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1259
      start: 1189
    functionDepth: 1
    functionLinenumber: 1189
    functionLinenumberEnd: 1259
    functionName: lowercase_rdata
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - error
    - sldns_rr_descriptor_field_type
    - sldns_rr_descript
    - lowercase_dname
    linkageType: ''
    returnType: void
    signature: "void lowercase_rdata(uint8_t** p, size_t* remain,\n\tuint16_t rdatalen,
      uint16_t t)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/testpkts.c:1272,1
    - Dst: lowercase_dname
      Src: /src/unbound/testcode/testpkts.c:1273,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/testcode/testpkts.c:1278,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/testcode/testpkts.c:1278,1
    - Dst: LDNS_ARCOUNT
      Src: /src/unbound/testcode/testpkts.c:1278,1
    - Dst: lowercase_dname
      Src: /src/unbound/testcode/testpkts.c:1279,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/testcode/testpkts.c:1281,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/testcode/testpkts.c:1282,1
    - Dst: lowercase_rdata
      Src: /src/unbound/testcode/testpkts.c:1286,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 24
    argCount: 2
    argNames:
    - pkt
    - pktlen
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1288
      start: 1262
    functionDepth: 2
    functionLinenumber: 1262
    functionLinenumberEnd: 1288
    functionName: lowercase_pkt
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - LDNS_ANCOUNT
    - lowercase_rdata
    - lowercase_dname
    - LDNS_QDCOUNT
    - LDNS_NSCOUNT
    - sldns_read_uint16
    - LDNS_ARCOUNT
    linkageType: ''
    returnType: void
    signature: void lowercase_pkt(uint8_t* pkt, size_t pktlen)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: memdup
      Src: /src/unbound/testcode/testpkts.c:1298,1
    - Dst: memdup
      Src: /src/unbound/testcode/testpkts.c:1299,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:1300,1
    - Dst: zerottls
      Src: /src/unbound/testcode/testpkts.c:1302,1
    - Dst: zerottls
      Src: /src/unbound/testcode/testpkts.c:1303,1
    - Dst: lowercase_pkt
      Src: /src/unbound/testcode/testpkts.c:1305,1
    - Dst: lowercase_pkt
      Src: /src/unbound/testcode/testpkts.c:1306,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/testpkts.c:1307,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/testpkts.c:1308,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:1309,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1312,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1314,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1317,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1318,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1319,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1320,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1324,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1325,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1326,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1327,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1332,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1333,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1334,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1335,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1337,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1338,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1339,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1340,1
    - Dst: strcmp
      Src: /src/unbound/testcode/testpkts.c:1343,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1346,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1350,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1351,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1352,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1353,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 60
    argCount: 5
    argNames:
    - q
    - qlen
    - p
    - plen
    - mttl
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1291
    functionDepth: 8
    functionLinenumber: 1291
    functionLinenumberEnd: 1355
    functionName: match_question
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - strcmp
    - verbose
    - sldns_wire2str_pkt
    - zerottls
    - free
    - error
    - memdup
    - strstr
    - lowercase_pkt
    linkageType: ''
    returnType: int
    signature: int match_question(uint8_t* q, size_t qlen, uint8_t* p, size_t plen,
      int mttl)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: memdup
      Src: /src/unbound/testcode/testpkts.c:1365,1
    - Dst: memdup
      Src: /src/unbound/testcode/testpkts.c:1366,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:1367,1
    - Dst: zerottls
      Src: /src/unbound/testcode/testpkts.c:1369,1
    - Dst: zerottls
      Src: /src/unbound/testcode/testpkts.c:1370,1
    - Dst: lowercase_pkt
      Src: /src/unbound/testcode/testpkts.c:1372,1
    - Dst: lowercase_pkt
      Src: /src/unbound/testcode/testpkts.c:1373,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/testpkts.c:1374,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/testpkts.c:1375,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:1376,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1379,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1381,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1384,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1385,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1386,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1387,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1391,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1392,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1393,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1394,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1399,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1400,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1401,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1403,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1404,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1405,1
    - Dst: strcmp
      Src: /src/unbound/testcode/testpkts.c:1408,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1411,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1415,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1416,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1417,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1418,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 56
    argCount: 5
    argNames:
    - q
    - qlen
    - p
    - plen
    - mttl
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1420
      start: 1358
    functionDepth: 8
    functionLinenumber: 1358
    functionLinenumberEnd: 1420
    functionName: match_answer
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - strcmp
    - verbose
    - sldns_wire2str_pkt
    - zerottls
    - free
    - error
    - memdup
    - strstr
    - lowercase_pkt
    linkageType: ''
    returnType: int
    signature: int match_answer(uint8_t* q, size_t qlen, uint8_t* p, size_t plen,
      int mttl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/testcode/testpkts.c:1427,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1428,1
    - Dst: strchr
      Src: /src/unbound/testcode/testpkts.c:1429,1
    - Dst: memmove
      Src: /src/unbound/testcode/testpkts.c:1435,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1438
      start: 1424
    functionDepth: 1
    functionLinenumber: 1424
    functionLinenumberEnd: 1438
    functionName: ignore_edns_lines
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - strchr
    - strstr
    - strlen
    - memmove
    linkageType: ''
    returnType: int
    signature: int ignore_edns_lines(char* str)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: memdup
      Src: /src/unbound/testcode/testpkts.c:1448,1
    - Dst: memdup
      Src: /src/unbound/testcode/testpkts.c:1449,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:1450,1
    - Dst: zerottls
      Src: /src/unbound/testcode/testpkts.c:1453,1
    - Dst: zerottls
      Src: /src/unbound/testcode/testpkts.c:1454,1
    - Dst: lowercase_pkt
      Src: /src/unbound/testcode/testpkts.c:1456,1
    - Dst: lowercase_pkt
      Src: /src/unbound/testcode/testpkts.c:1457,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/testpkts.c:1458,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/testpkts.c:1459,1
    - Dst: error
      Src: /src/unbound/testcode/testpkts.c:1460,1
    - Dst: ignore_edns_lines
      Src: /src/unbound/testcode/testpkts.c:1463,1
    - Dst: ignore_edns_lines
      Src: /src/unbound/testcode/testpkts.c:1464,1
    - Dst: strcmp
      Src: /src/unbound/testcode/testpkts.c:1466,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1469,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1471,1
    - Dst: strcmp
      Src: /src/unbound/testcode/testpkts.c:1473,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1476,1
    - Dst: strstr
      Src: /src/unbound/testcode/testpkts.c:1477,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1479,1
    - Dst: match_noloc
      Src: /src/unbound/testcode/testpkts.c:1485,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1488,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1490,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1491,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1492,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1493,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 44
    argCount: 7
    argNames:
    - q
    - qlen
    - p
    - plen
    - mttl
    - noloc
    - noedns
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1495
      start: 1441
    functionDepth: 8
    functionLinenumber: 1441
    functionLinenumberEnd: 1495
    functionName: match_all
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - strcmp
    - verbose
    - sldns_wire2str_pkt
    - ignore_edns_lines
    - zerottls
    - free
    - error
    - match_noloc
    - memdup
    - strstr
    - lowercase_pkt
    linkageType: ''
    returnType: int
    signature: "int match_all(uint8_t* q, size_t qlen, uint8_t* p, size_t plen, int
      mttl,\n\tint noloc, int noedns)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_qname
      Src: /src/unbound/testcode/testpkts.c:1500,1
    - Dst: get_qname
      Src: /src/unbound/testcode/testpkts.c:1501,1
    - Dst: sldns_wire2str_dname_scan
      Src: /src/unbound/testcode/testpkts.c:1508,1
    - Dst: sldns_wire2str_dname_scan
      Src: /src/unbound/testcode/testpkts.c:1509,1
    - Dst: strcmp
      Src: /src/unbound/testcode/testpkts.c:1510,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - q
    - qlen
    - p
    - plen
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1511
      start: 1498
    functionDepth: 5
    functionLinenumber: 1498
    functionLinenumberEnd: 1511
    functionName: equal_dname
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - get_qname
    - strcmp
    - sldns_wire2str_dname_scan
    linkageType: ''
    returnType: int
    signature: int equal_dname(uint8_t* q, size_t qlen, uint8_t* p, size_t plen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: get_qname
      Src: /src/unbound/testcode/testpkts.c:1518,1
    - Dst: get_qname
      Src: /src/unbound/testcode/testpkts.c:1519,1
    - Dst: sldns_wire2str_dname_scan
      Src: /src/unbound/testcode/testpkts.c:1527,1
    - Dst: sldns_wire2str_dname_scan
      Src: /src/unbound/testcode/testpkts.c:1528,1
    - Dst: strcmp
      Src: /src/unbound/testcode/testpkts.c:1530,1
    - Dst: strlen
      Src: /src/unbound/testcode/testpkts.c:1533,1
    - Dst: strlen
      Src: /src/unbound/testcode/testpkts.c:1534,1
    - Dst: strcmp
      Src: /src/unbound/testcode/testpkts.c:1535,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 19
    argCount: 4
    argNames:
    - q
    - qlen
    - p
    - plen
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1548
      start: 1514
    functionDepth: 5
    functionLinenumber: 1514
    functionLinenumberEnd: 1548
    functionName: subdomain_dname
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - get_qname
    - strcmp
    - strlen
    - sldns_wire2str_dname_scan
    linkageType: ''
    returnType: int
    signature: int subdomain_dname(uint8_t* q, size_t qlen, uint8_t* p, size_t plen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: pkt_find_edns_opt
      Src: /src/unbound/testcode/testpkts.c:1559,1
    - Dst: pkt_find_edns_opt
      Src: /src/unbound/testcode/testpkts.c:1561,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1566,1
    - Dst: memcmp
      Src: /src/unbound/testcode/testpkts.c:1572,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 4
    argNames:
    - q
    - qlen
    - p
    - plen
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1573
      start: 1551
    functionDepth: 8
    functionLinenumber: 1551
    functionLinenumberEnd: 1573
    functionName: match_ednsdata
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - verbose
    - pkt_find_edns_opt
    - memcmp
    linkageType: ''
    returnType: int
    signature: int match_ednsdata(uint8_t* q, size_t qlen, uint8_t* p, size_t plen)
  - BBCount: 28
    BranchProfiles: []
    Callsites:
    - Dst: memdup
      Src: /src/unbound/testcode/testpkts.c:1584,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1587,1
    - Dst: memcpy
      Src: /src/unbound/testcode/testpkts.c:1591,1
    - Dst: extract_ede
      Src: /src/unbound/testcode/testpkts.c:1594,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1596,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1600,1
    - Dst: extract_cookie
      Src: /src/unbound/testcode/testpkts.c:1609,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1612,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1617,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1622,1
    - Dst: get_opcode
      Src: /src/unbound/testcode/testpkts.c:1627,1
    - Dst: get_opcode
      Src: /src/unbound/testcode/testpkts.c:1628,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1629,1
    - Dst: get_qtype
      Src: /src/unbound/testcode/testpkts.c:1632,1
    - Dst: get_qtype
      Src: /src/unbound/testcode/testpkts.c:1633,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1634,1
    - Dst: get_qtype
      Src: /src/unbound/testcode/testpkts.c:1634,1
    - Dst: get_qtype
      Src: /src/unbound/testcode/testpkts.c:1634,1
    - Dst: equal_dname
      Src: /src/unbound/testcode/testpkts.c:1638,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1639,1
    - Dst: get_rcode
      Src: /src/unbound/testcode/testpkts.c:1644,1
    - Dst: get_rcode
      Src: /src/unbound/testcode/testpkts.c:1644,1
    - Dst: sldns_wire2str_rcode
      Src: /src/unbound/testcode/testpkts.c:1645,1
    - Dst: get_rcode
      Src: /src/unbound/testcode/testpkts.c:1645,1
    - Dst: sldns_wire2str_rcode
      Src: /src/unbound/testcode/testpkts.c:1646,1
    - Dst: get_rcode
      Src: /src/unbound/testcode/testpkts.c:1646,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1647,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1649,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1650,1
    - Dst: match_question
      Src: /src/unbound/testcode/testpkts.c:1655,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1657,1
    - Dst: match_answer
      Src: /src/unbound/testcode/testpkts.c:1662,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1664,1
    - Dst: subdomain_dname
      Src: /src/unbound/testcode/testpkts.c:1669,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1670,1
    - Dst: get_serial
      Src: /src/unbound/testcode/testpkts.c:1674,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1675,1
    - Dst: get_do_flag
      Src: /src/unbound/testcode/testpkts.c:1678,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1679,1
    - Dst: get_co_flag
      Src: /src/unbound/testcode/testpkts.c:1682,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1683,1
    - Dst: get_has_edns
      Src: /src/unbound/testcode/testpkts.c:1686,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1687,1
    - Dst: match_ednsdata
      Src: /src/unbound/testcode/testpkts.c:1691,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1692,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1696,1
    - Dst: match_all
      Src: /src/unbound/testcode/testpkts.c:1699,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1701,1
    - Dst: match_all
      Src: /src/unbound/testcode/testpkts.c:1704,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1706,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1709,1
    - Dst: memcpy
      Src: /src/unbound/testcode/testpkts.c:1711,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1712,1
    - Dst: memcpy
      Src: /src/unbound/testcode/testpkts.c:1716,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1717,1
    CyclomaticComplexity: 62
    EdgeCount: 62
    ICount: 112
    argCount: 4
    argNames:
    - entries
    - query_pkt
    - len
    - transport
    argTypes:
    - struct entry*
    - uint8_t*
    - size_t
    - enum transport_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1719
      start: 1576
    functionDepth: 10
    functionLinenumber: 1576
    functionLinenumberEnd: 1719
    functionName: find_match
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - match_ednsdata
    - get_co_flag
    - get_opcode
    - get_qtype
    - extract_ede
    - equal_dname
    - get_serial
    - get_has_edns
    - get_do_flag
    - sldns_wire2str_rcode
    - match_all
    - memcpy
    - verbose
    - free
    - match_question
    - match_answer
    - subdomain_dname
    - extract_cookie
    - get_rcode
    - memdup
    linkageType: ''
    returnType: struct entry
    signature: "struct entry * \nfind_match(struct entry* entries, uint8_t* query_pkt,
      size_t len,\n\tenum transport_type transport)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/testpkts.c:1732,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/testpkts.c:1733,1
    - Dst: get_qname_len
      Src: /src/unbound/testcode/testpkts.c:1735,1
    - Dst: malloc
      Src: /src/unbound/testcode/testpkts.c:1737,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1739,1
    - Dst: memcpy
      Src: /src/unbound/testcode/testpkts.c:1743,1
    - Dst: memmove
      Src: /src/unbound/testcode/testpkts.c:1744,1
    - Dst: memmove
      Src: /src/unbound/testcode/testpkts.c:1746,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/testcode/testpkts.c:1749,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/testpkts.c:1751,1
    - Dst: get_qname_len
      Src: /src/unbound/testcode/testpkts.c:1752,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1754,1
    - Dst: memdup
      Src: /src/unbound/testcode/testpkts.c:1755,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/testpkts.c:1758,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/testpkts.c:1759,1
    - Dst: get_qname_len
      Src: /src/unbound/testcode/testpkts.c:1762,1
    - Dst: get_qname_len
      Src: /src/unbound/testcode/testpkts.c:1763,1
    - Dst: malloc
      Src: /src/unbound/testcode/testpkts.c:1765,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1767,1
    - Dst: memcpy
      Src: /src/unbound/testcode/testpkts.c:1771,1
    - Dst: memmove
      Src: /src/unbound/testcode/testpkts.c:1772,1
    - Dst: memmove
      Src: /src/unbound/testcode/testpkts.c:1774,1
    - Dst: memdup
      Src: /src/unbound/testcode/testpkts.c:1781,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1785,1
    - Dst: pkt_find_edns_opt
      Src: /src/unbound/testcode/testpkts.c:1804,1
    - Dst: pkt_find_edns_opt
      Src: /src/unbound/testcode/testpkts.c:1807,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1821,1
    - Dst: sleep
      Src: /src/unbound/testcode/testpkts.c:1823,1
    - Dst: Sleep
      Src: /src/unbound/testcode/testpkts.c:1825,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 65
    argCount: 5
    argNames:
    - match
    - answer_pkt
    - answer_len
    - query_pkt
    - query_len
    argTypes:
    - struct entry*
    - uint8_t**
    - size_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1830
      start: 1721
    functionDepth: 8
    functionLinenumber: 1721
    functionLinenumberEnd: 1830
    functionName: adjust_packet
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - memcpy
    - pkt_find_edns_opt
    - memmove
    - verbose
    - sldns_write_uint16
    - LDNS_QDCOUNT
    - sleep
    - get_qname_len
    - malloc
    - Sleep
    - memdup
    linkageType: ''
    returnType: void
    signature: "void adjust_packet(struct entry* match, uint8_t** answer_pkt, size_t
      *answer_len,\n\tuint8_t* query_pkt, size_t query_len)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1846,1
    - Dst: LDNS_ID_WIRE
      Src: /src/unbound/testcode/testpkts.c:1847,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/testpkts.c:1850,1
    - Dst: printf
      Src: /src/unbound/testcode/testpkts.c:1851,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1852,1
    - Dst: find_match
      Src: /src/unbound/testcode/testpkts.c:1856,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1858,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1863,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/testpkts.c:1869,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/testpkts.c:1870,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1876,1
    - Dst: adjust_packet
      Src: /src/unbound/testcode/testpkts.c:1880,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1881,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/testpkts.c:1883,1
    - Dst: printf
      Src: /src/unbound/testcode/testpkts.c:1884,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1885,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1888,1
    - Dst: sleep
      Src: /src/unbound/testcode/testpkts.c:1891,1
    - Dst: Sleep
      Src: /src/unbound/testcode/testpkts.c:1893,1
    - Dst: verbose
      Src: /src/unbound/testcode/testpkts.c:1895,1
    - Dst: sendfunc
      Src: /src/unbound/testcode/testpkts.c:1898,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1899,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 41
    argCount: 7
    argNames:
    - inbuf
    - inlen
    - entries
    - count
    - transport
    - userdata
    - verbose_out
    argTypes:
    - uint8_t*
    - ssize_t
    - struct entry*
    - int*
    - enum transport_type
    - void*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1903
      start: 1836
    functionDepth: 11
    functionLinenumber: 1836
    functionLinenumberEnd: 1903
    functionName: handle_query
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 2
    functionsReached:
    - adjust_packet
    - verbose
    - sldns_wire2str_pkt
    - printf
    - sldns_buffer_limit
    - sleep
    - free
    - find_match
    - sldns_buffer_begin
    - Sleep
    - sendfunc
    - LDNS_ID_WIRE
    linkageType: ''
    returnType: void
    signature: "void handle_query(uint8_t* inbuf, ssize_t inlen, struct entry* entries,
      int* count,\n\tenum transport_type transport, void (*sendfunc)(uint8_t*, size_t,
      void*),\n\tvoid* userdata, FILE* verbose_out)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1911,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/testpkts.c:1912,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/testpkts.c:1913,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1914,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - replist
    argTypes:
    - struct reply_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1917
      start: 1906
    functionDepth: 2
    functionLinenumber: 1906
    functionLinenumberEnd: 1917
    functionName: delete_replylist
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 0
    functionsReached:
    - free
    - sldns_buffer_free
    linkageType: ''
    returnType: void
    signature: void delete_replylist(struct reply_packet* replist)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: delete_replylist
      Src: /src/unbound/testcode/testpkts.c:1924,1
    - Dst: free
      Src: /src/unbound/testcode/testpkts.c:1925,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1928
      start: 1919
    functionDepth: 3
    functionLinenumber: 1919
    functionLinenumberEnd: 1928
    functionName: delete_entry
    functionSourceFile: /src/unbound/testcode/testpkts.c
    functionUses: 2
    functionsReached:
    - free
    - delete_replylist
    linkageType: ''
    returnType: void
    signature: void delete_entry(struct entry* list)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/unitdoq.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 77
    functionName: doq_size_conn_check
    functionSourceFile: /src/unbound/testcode/unitdoq.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void doq_size_conn_check()
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitdoq.c:81,1
    - Dst: doq_size_conn_check
      Src: /src/unbound/testcode/unitdoq.c:82,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 83
    functionName: doq_test
    functionSourceFile: /src/unbound/testcode/unitdoq.c
    functionUses: 0
    functionsReached:
    - doq_size_conn_check
    - unit_show_feature
    linkageType: ''
    returnType: void
    signature: void doq_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:54,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:54,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:55,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:55,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:56,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:56,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:58,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:58,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:59,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:59,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:61,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:61,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 1
    argNames:
    - a
    argTypes:
    - struct val_anchors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 50
    functionDepth: 2
    functionLinenumber: 50
    functionLinenumberEnd: 63
    functionName: test_anchor_empty
    functionSourceFile: /src/unbound/testcode/unitanchor.c
    functionUses: 0
    functionsReached:
    - anchors_lookup
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void test_anchor_empty(struct val_anchors* a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:71,1
    - Dst: anchor_store_str
      Src: /src/unbound/testcode/unitanchor.c:71,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:73,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:73,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:74,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:74,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:75,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:75,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:78,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:78,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/testcode/unitanchor.c:80,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:82,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:82,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/testcode/unitanchor.c:84,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:86,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:86,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/testcode/unitanchor.c:88,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:90,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:90,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 2
    argNames:
    - buff
    - a
    argTypes:
    - sldns_buffer*
    - struct val_anchors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 66
    functionDepth: 8
    functionLinenumber: 66
    functionLinenumberEnd: 91
    functionName: test_anchor_one
    functionSourceFile: /src/unbound/testcode/unitanchor.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - anchors_lookup
    - anchor_store_str
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void test_anchor_one(sldns_buffer* buff, struct val_anchors* a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:99,1
    - Dst: anchor_store_str
      Src: /src/unbound/testcode/unitanchor.c:99,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:101,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:101,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:102,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:102,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:103,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:103,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:106,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:106,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:107,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitanchor.c:107,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/testcode/unitanchor.c:108,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:110,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:110,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:112,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitanchor.c:112,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/testcode/unitanchor.c:114,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:116,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:116,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:118,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitanchor.c:118,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/testcode/unitanchor.c:120,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:122,1
    - Dst: anchors_lookup
      Src: /src/unbound/testcode/unitanchor.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 2
    argNames:
    - buff
    - a
    argTypes:
    - sldns_buffer*
    - struct val_anchors*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 94
    functionDepth: 8
    functionLinenumber: 94
    functionLinenumberEnd: 123
    functionName: test_anchors
    functionSourceFile: /src/unbound/testcode/unitanchor.c
    functionUses: 0
    functionsReached:
    - anchors_lookup
    - lock_basic_unlock
    - anchor_store_str
    - query_dname_compare
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void test_anchors(sldns_buffer* buff, struct val_anchors* a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/unitanchor.c:127,1
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitanchor.c:129,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitanchor.c:130,1
    - Dst: anchors_create
      Src: /src/unbound/testcode/unitanchor.c:130,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitanchor.c:131,1
    - Dst: test_anchor_empty
      Src: /src/unbound/testcode/unitanchor.c:132,1
    - Dst: test_anchor_one
      Src: /src/unbound/testcode/unitanchor.c:133,1
    - Dst: test_anchors
      Src: /src/unbound/testcode/unitanchor.c:134,1
    - Dst: anchors_delete
      Src: /src/unbound/testcode/unitanchor.c:135,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/unitanchor.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 125
    functionDepth: 9
    functionLinenumber: 125
    functionLinenumberEnd: 137
    functionName: anchors_test
    functionSourceFile: /src/unbound/testcode/unitanchor.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_new
    - anchors_delete
    - sldns_buffer_flip
    - unit_show_feature
    - test_anchor_empty
    - sldns_buffer_free
    - test_anchor_one
    - test_anchors
    - anchors_create
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void anchors_test(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/testcode/readhex.c:52,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - p
    argTypes:
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 62
    functionName: skip_whites
    functionSourceFile: /src/unbound/testcode/readhex.c
    functionUses: 0
    functionsReached:
    - isspace
    linkageType: ''
    returnType: void
    signature: void skip_whites(const char** p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/readhex.c:69,1
    - Dst: skip_whites
      Src: /src/unbound/testcode/readhex.c:71,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/testcode/readhex.c:72,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/readhex.c:72,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/readhex.c:73,1
    - Dst: isalnum
      Src: /src/unbound/testcode/readhex.c:74,1
    - Dst: sldns_hexdigit_to_int
      Src: /src/unbound/testcode/readhex.c:76,1
    - Dst: skip_whites
      Src: /src/unbound/testcode/readhex.c:77,1
    - Dst: log_assert
      Src: /src/unbound/testcode/readhex.c:78,1
    - Dst: isalnum
      Src: /src/unbound/testcode/readhex.c:78,1
    - Dst: sldns_hexdigit_to_int
      Src: /src/unbound/testcode/readhex.c:79,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/testcode/readhex.c:80,1
    - Dst: skip_whites
      Src: /src/unbound/testcode/readhex.c:81,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/readhex.c:83,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - pkt
    - hex
    argTypes:
    - sldns_buffer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 84
      start: 65
    functionDepth: 5
    functionLinenumber: 65
    functionLinenumberEnd: 84
    functionName: hex_to_buf
    functionSourceFile: /src/unbound/testcode/readhex.c
    functionUses: 1
    functionsReached:
    - sldns_buffer_position
    - sldns_hexdigit_to_int
    - sldns_buffer_flip
    - sldns_buffer_limit
    - skip_whites
    - fatal_exit
    - sldns_buffer_clear
    - isalnum
    - log_assert
    - sldns_buffer_write_u8
    linkageType: ''
    returnType: void
    signature: void hex_to_buf(sldns_buffer* pkt, const char* hex)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - conn_ref
    argTypes:
    - ngtcp2_crypto_conn_ref*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 220
    functionName: conn_ref_get_conn
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: ngtcp2_conn
    signature: ngtcp2_conn * conn_ref_get_conn(ngtcp2_crypto_conn_ref* conn_ref)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSL_set_app_data
      Src: /src/unbound/testcode/doqclient.c:229,1
    - Dst: SSL_set_app_data
      Src: /src/unbound/testcode/doqclient.c:231,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ssl
    - data
    argTypes:
    - SSL*
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 233
    functionName: set_app_data
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 3
    functionsReached:
    - SSL_set_app_data
    linkageType: ''
    returnType: void
    signature: void set_app_data(SSL* ssl, struct doq_client_data* data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: SSL_get_app_data
      Src: /src/unbound/testcode/doqclient.c:241,1
    - Dst: SSL_get_app_data
      Src: /src/unbound/testcode/doqclient.c:243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ssl
    argTypes:
    - SSL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 246
    functionName: get_app_data
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 4
    functionsReached:
    - SSL_get_app_data
    linkageType: ''
    returnType: struct doq_client_data
    signature: 'struct doq_client_data *

      get_app_data(SSL* ssl)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:262,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:263,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:265,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:267,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:269,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:270,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:271,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:272,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:273,1
    - Dst: exit
      Src: /src/unbound/testcode/doqclient.c:274,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - argv
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 275
      start: 260
    functionDepth: 0
    functionLinenumber: 260
    functionLinenumberEnd: 275
    functionName: usage
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 8
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(char* argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/doqclient.c:281,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:282,1
    - Dst: exit
      Src: /src/unbound/testcode/doqclient.c:283,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - data
    - svr
    - port
    argTypes:
    - struct doq_client_data*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 278
    functionDepth: 1
    functionLinenumber: 278
    functionLinenumberEnd: 285
    functionName: get_dest_addr
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - exit
    - ipstrtoaddr
    - printf
    linkageType: ''
    returnType: void
    signature: void get_dest_addr(struct doq_client_data* data, const char* svr, int
      port)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: socket
      Src: /src/unbound/testcode/doqclient.c:293,1
    - Dst: addr_is_ip6
      Src: /src/unbound/testcode/doqclient.c:293,1
    - Dst: perror
      Src: /src/unbound/testcode/doqclient.c:296,1
    - Dst: exit
      Src: /src/unbound/testcode/doqclient.c:297,1
    - Dst: connect
      Src: /src/unbound/testcode/doqclient.c:299,1
    - Dst: perror
      Src: /src/unbound/testcode/doqclient.c:302,1
    - Dst: exit
      Src: /src/unbound/testcode/doqclient.c:303,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/testcode/doqclient.c:305,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 288
    functionDepth: 1
    functionLinenumber: 288
    functionLinenumberEnd: 307
    functionName: open_svr_udp
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - exit
    - perror
    - socket
    - fd_set_nonblock
    - addr_is_ip6
    - connect
    linkageType: ''
    returnType: int
    signature: int open_svr_udp(struct doq_client_data* data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/doqclient.c:313,1
    - Dst: getsockname
      Src: /src/unbound/testcode/doqclient.c:315,1
    - Dst: perror
      Src: /src/unbound/testcode/doqclient.c:317,1
    - Dst: exit
      Src: /src/unbound/testcode/doqclient.c:318,1
    - Dst: log_addr
      Src: /src/unbound/testcode/doqclient.c:320,1
    - Dst: log_addr
      Src: /src/unbound/testcode/doqclient.c:321,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 322
    functionName: get_local_addr
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - exit
    - perror
    - getsockname
    - log_addr
    - memset
    linkageType: ''
    returnType: void
    signature: void get_local_addr(struct doq_client_data* data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/doqclient.c:329,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:330,1
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/testcode/doqclient.c:331,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:333,1
    - Dst: exit
      Src: /src/unbound/testcode/doqclient.c:334,1
    - Dst: sldns_get_rr_type_by_name
      Src: /src/unbound/testcode/doqclient.c:337,1
    - Dst: sldns_get_rr_class_by_name
      Src: /src/unbound/testcode/doqclient.c:338,1
    - Dst: qinfo_query_encode
      Src: /src/unbound/testcode/doqclient.c:341,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:342,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/testcode/doqclient.c:343,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/testcode/doqclient.c:344,1
    - Dst: memset
      Src: /src/unbound/testcode/doqclient.c:345,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/testcode/doqclient.c:349,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/doqclient.c:350,1
    - Dst: calc_edns_field_size
      Src: /src/unbound/testcode/doqclient.c:350,1
    - Dst: attach_edns_record
      Src: /src/unbound/testcode/doqclient.c:351,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 3
    argNames:
    - qname
    - qtype
    - qclass
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 353
      start: 324
    functionDepth: 4
    functionLinenumber: 324
    functionLinenumberEnd: 353
    functionName: make_query
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - exit
    - sldns_buffer_capacity
    - sldns_buffer_new
    - attach_edns_record
    - sldns_get_rr_class_by_name
    - qinfo_query_encode
    - printf
    - fatal_exit
    - sldns_buffer_limit
    - free
    - sldns_str2wire_dname
    - memset
    - calc_edns_field_size
    - sldns_buffer_write_u16_at
    - sldns_get_rr_type_by_name
    linkageType: ''
    returnType: sldns_buffer
    signature: 'sldns_buffer *

      make_query(char* qname, char* qtype, char* qclass)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/doqclient.c:359,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:361,1
    - Dst: memdup
      Src: /src/unbound/testcode/doqclient.c:362,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/doqclient.c:362,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/doqclient.c:363,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:365,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/doqclient.c:366,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - query_data
    argTypes:
    - struct sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 356
    functionDepth: 2
    functionLinenumber: 356
    functionLinenumberEnd: 369
    functionName: client_stream_create
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_limit
    - fatal_exit
    - calloc
    - sldns_buffer_begin
    - memdup
    linkageType: ''
    returnType: struct doq_client_stream
    signature: 'struct doq_client_stream *

      client_stream_create(struct sldns_buffer* query_data)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:377,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/doqclient.c:378,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:379,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - str
    argTypes:
    - struct doq_client_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 380
      start: 372
    functionDepth: 2
    functionLinenumber: 372
    functionLinenumberEnd: 380
    functionName: client_stream_free
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - free
    - sldns_buffer_free
    linkageType: ''
    returnType: void
    signature: void client_stream_free(struct doq_client_stream* str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/doqclient.c:395,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 2
    argNames:
    - str
    - stream_id
    argTypes:
    - struct doq_client_stream*
    - int64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 383
    functionDepth: 2
    functionLinenumber: 383
    functionLinenumberEnd: 398
    functionName: client_stream_start_setup
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_free
    linkageType: ''
    returnType: void
    signature: void client_stream_start_setup(struct doq_client_stream* str, int64_t
      stream_id)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/unbound/testcode/doqclient.c:409,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:411,1
    - Dst: dname_valid
      Src: /src/unbound/testcode/doqclient.c:414,1
    - Dst: strdup
      Src: /src/unbound/testcode/doqclient.c:417,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:419,1
    - Dst: sldns_wire2str_dname_buf
      Src: /src/unbound/testcode/doqclient.c:422,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/testcode/doqclient.c:424,1
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/testcode/doqclient.c:426,1
    - Dst: snprintf
      Src: /src/unbound/testcode/doqclient.c:427,1
    - Dst: strdup
      Src: /src/unbound/testcode/doqclient.c:428,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:430,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - str
    argTypes:
    - struct doq_client_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 432
      start: 401
    functionDepth: 2
    functionLinenumber: 401
    functionLinenumberEnd: 432
    functionName: client_stream_string
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_dname_buf
    - snprintf
    - sldns_wire2str_type_buf
    - fatal_exit
    - dname_valid
    - sldns_wirerr_get_type
    - strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      client_stream_string(struct doq_client_stream* str)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/doqclient.c:438,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:440,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 435
    functionDepth: 1
    functionLinenumber: 435
    functionLinenumberEnd: 442
    functionName: stream_list_create
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - calloc
    - fatal_exit
    linkageType: ''
    returnType: struct doq_client_stream_list
    signature: 'struct doq_client_stream_list *

      stream_list_create(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_stream_free
      Src: /src/unbound/testcode/doqclient.c:454,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:457,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct doq_client_stream_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 445
    functionDepth: 3
    functionLinenumber: 445
    functionLinenumberEnd: 458
    functionName: stream_list_free
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - free
    - client_stream_free
    linkageType: ''
    returnType: void
    signature: void stream_list_free(struct doq_client_stream_list* list)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - list
    - str
    argTypes:
    - struct doq_client_stream_list*
    - struct doq_client_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 474
      start: 461
    functionDepth: 0
    functionLinenumber: 461
    functionLinenumberEnd: 474
    functionName: stream_list_append
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void stream_list_append(struct doq_client_stream_list* list,\n\tstruct
      doq_client_stream* str)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - list
    - str
    argTypes:
    - struct doq_client_stream_list*
    - struct doq_client_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 477
    functionDepth: 0
    functionLinenumber: 477
    functionLinenumberEnd: 493
    functionName: stream_list_delete
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void stream_list_delete(struct doq_client_stream_list* list,\n\tstruct
      doq_client_stream* str)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: stream_list_delete
      Src: /src/unbound/testcode/doqclient.c:501,1
    - Dst: stream_list_append
      Src: /src/unbound/testcode/doqclient.c:502,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - str
    - list1
    - list2
    argTypes:
    - struct doq_client_stream*
    - struct doq_client_stream_list*
    - struct doq_client_stream_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 496
    functionDepth: 1
    functionLinenumber: 496
    functionLinenumberEnd: 503
    functionName: stream_list_move
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - stream_list_delete
    - stream_list_append
    linkageType: ''
    returnType: void
    signature: "void stream_list_move(struct doq_client_stream* str,\n\tstruct doq_client_stream_list*
      list1,\n\tstruct doq_client_stream_list* list2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:509,1
    - Dst: ntohs
      Src: /src/unbound/testcode/doqclient.c:509,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/doqclient.c:510,1
    - Dst: ntohs
      Src: /src/unbound/testcode/doqclient.c:510,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:512,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/testcode/doqclient.c:513,1
    - Dst: ntohs
      Src: /src/unbound/testcode/doqclient.c:513,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - str
    argTypes:
    - struct doq_client_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 506
    functionDepth: 2
    functionLinenumber: 506
    functionLinenumberEnd: 514
    functionName: client_stream_datalen_complete
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_new
    - verbose
    - fatal_exit
    - sldns_buffer_set_limit
    - ntohs
    linkageType: ''
    returnType: void
    signature: void client_stream_datalen_complete(struct doq_client_stream* str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/doqclient.c:529,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/testcode/doqclient.c:530,1
    - Dst: sldns_wire2str_rrquestion_scan
      Src: /src/unbound/testcode/doqclient.c:537,1
    - Dst: sldns_wire2str_rr_scan
      Src: /src/unbound/testcode/doqclient.c:543,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:549,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 2
    argNames:
    - pkt
    - pktlen
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 517
    functionDepth: 7
    functionLinenumber: 517
    functionLinenumberEnd: 551
    functionName: print_answer_rrs
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - LDNS_ANCOUNT
    - sldns_wire2str_rr_scan
    - LDNS_QDCOUNT
    - printf
    - sldns_wire2str_rrquestion_scan
    linkageType: ''
    returnType: void
    signature: void print_answer_rrs(uint8_t* pkt, size_t pktlen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: client_stream_string
      Src: /src/unbound/testcode/doqclient.c:559,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:560,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:561,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/doqclient.c:564,1
    - Dst: client_stream_string
      Src: /src/unbound/testcode/doqclient.c:565,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:566,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:568,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/testcode/doqclient.c:571,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/doqclient.c:571,1
    - Dst: client_stream_string
      Src: /src/unbound/testcode/doqclient.c:573,1
    - Dst: sldns_wire2str_rcode_buf
      Src: /src/unbound/testcode/doqclient.c:575,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:576,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:577,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/testcode/doqclient.c:580,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/doqclient.c:580,1
    - Dst: client_stream_string
      Src: /src/unbound/testcode/doqclient.c:582,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:583,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:584,1
    - Dst: print_answer_rrs
      Src: /src/unbound/testcode/doqclient.c:587,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/doqclient.c:587,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/doqclient.c:588,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 25
    argCount: 1
    argNames:
    - str
    argTypes:
    - struct doq_client_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 554
    functionDepth: 8
    functionLinenumber: 554
    functionLinenumberEnd: 589
    functionName: client_stream_print_short
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - LDNS_ANCOUNT
    - client_stream_string
    - sldns_wire2str_rcode_buf
    - printf
    - sldns_buffer_limit
    - free
    - LDNS_RCODE_WIRE
    - print_answer_rrs
    - sldns_buffer_begin
    linkageType: ''
    returnType: void
    signature: void client_stream_print_short(struct doq_client_stream* str)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_stream_string
      Src: /src/unbound/testcode/doqclient.c:598,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:599,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:600,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/doqclient.c:603,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/doqclient.c:603,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/doqclient.c:604,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:605,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:606,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:607,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - data
    - str
    argTypes:
    - struct doq_client_data*
    - struct doq_client_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 608
      start: 592
    functionDepth: 3
    functionLinenumber: 592
    functionLinenumberEnd: 608
    functionName: client_stream_print_long
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - client_stream_string
    - sldns_wire2str_pkt
    - printf
    - sldns_buffer_limit
    - free
    - sldns_buffer_begin
    linkageType: ''
    returnType: void
    signature: "void client_stream_print_long(struct doq_client_data* data,\n\tstruct
      doq_client_stream* str)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:614,1
    - Dst: client_stream_string
      Src: /src/unbound/testcode/doqclient.c:616,1
    - Dst: log_buf
      Src: /src/unbound/testcode/doqclient.c:618,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/doqclient.c:619,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/doqclient.c:619,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/doqclient.c:620,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:621,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:622,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:623,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:624,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - str
    argTypes:
    - struct doq_client_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 611
    functionDepth: 3
    functionLinenumber: 611
    functionLinenumberEnd: 627
    functionName: client_stream_data_complete
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - verbose
    - client_stream_string
    - sldns_wire2str_pkt
    - sldns_buffer_limit
    - free
    - log_buf
    - sldns_buffer_begin
    linkageType: ''
    returnType: void
    signature: void client_stream_data_complete(struct doq_client_stream* str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_stream_string
      Src: /src/unbound/testcode/doqclient.c:634,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:636,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/testcode/doqclient.c:637,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/doqclient.c:638,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:640,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:642,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - str
    argTypes:
    - struct doq_client_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 630
    functionDepth: 3
    functionLinenumber: 630
    functionLinenumberEnd: 645
    functionName: client_stream_answer_error
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - client_stream_string
    - verbose
    - sldns_buffer_limit
    - free
    linkageType: ''
    returnType: void
    signature: void client_stream_answer_error(struct doq_client_stream* str)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/testcode/doqclient.c:658,1
    - Dst: client_stream_datalen_complete
      Src: /src/unbound/testcode/doqclient.c:665,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/testcode/doqclient.c:671,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/testcode/doqclient.c:672,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/doqclient.c:674,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:683,1
    - Dst: log_hex
      Src: /src/unbound/testcode/doqclient.c:685,1
    - Dst: ntohs
      Src: /src/unbound/testcode/doqclient.c:688,1
    - Dst: client_stream_data_complete
      Src: /src/unbound/testcode/doqclient.c:689,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 31
    argCount: 3
    argNames:
    - str
    - data
    - datalen
    argTypes:
    - struct doq_client_stream*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 648
    functionDepth: 5
    functionLinenumber: 648
    functionLinenumberEnd: 691
    functionName: client_stream_recv_data
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_write
    - memmove
    - client_stream_data_complete
    - verbose
    - log_hex
    - client_stream_datalen_complete
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void client_stream_recv_data(struct doq_client_stream* str, const
      uint8_t* data,\n\tsize_t datalen)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: client_stream_string
      Src: /src/unbound/testcode/doqclient.c:700,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:702,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:704,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:705,1
    - Dst: stream_list_move
      Src: /src/unbound/testcode/doqclient.c:708,1
    - Dst: stream_list_move
      Src: /src/unbound/testcode/doqclient.c:711,1
    - Dst: client_stream_answer_error
      Src: /src/unbound/testcode/doqclient.c:714,1
    - Dst: client_stream_print_short
      Src: /src/unbound/testcode/doqclient.c:718,1
    - Dst: client_stream_print_long
      Src: /src/unbound/testcode/doqclient.c:719,1
    - Dst: disconnect
      Src: /src/unbound/testcode/doqclient.c:722,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - data
    - str
    - is_fin
    argTypes:
    - struct doq_client_data*
    - struct doq_client_stream*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 723
      start: 695
    functionDepth: 9
    functionLinenumber: 695
    functionLinenumberEnd: 723
    functionName: client_stream_recv_fin
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - client_stream_string
    - verbose
    - disconnect
    - stream_list_move
    - free
    - client_stream_print_short
    - client_stream_print_long
    - client_stream_answer_error
    linkageType: ''
    returnType: void
    signature: "void client_stream_recv_fin(struct doq_client_data* data,\n\tstruct
      doq_client_stream* str, int is_fin)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RAND_bytes
      Src: /src/unbound/testcode/doqclient.c:728,1
    - Dst: ub_random
      Src: /src/unbound/testcode/doqclient.c:731,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - rnd
    - buf
    - len
    argTypes:
    - struct ub_randstate*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 726
    functionDepth: 1
    functionLinenumber: 726
    functionLinenumberEnd: 733
    functionName: fill_rand
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 4
    functionsReached:
    - RAND_bytes
    - ub_random
    linkageType: ''
    returnType: void
    signature: void fill_rand(struct ub_randstate* rnd, uint8_t* buf, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/testcode/doqclient.c:738,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:740,1
    - Dst: fill_rand
      Src: /src/unbound/testcode/doqclient.c:742,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - struct doq_client_data*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 743
      start: 736
    functionDepth: 2
    functionLinenumber: 736
    functionLinenumberEnd: 743
    functionName: generate_static_secret
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - malloc
    - fill_rand
    - fatal_exit
    linkageType: ''
    returnType: void
    signature: void generate_static_secret(struct doq_client_data* data, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fill_rand
      Src: /src/unbound/testcode/doqclient.c:752,1
    - Dst: ngtcp2_cid_init
      Src: /src/unbound/testcode/doqclient.c:753,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - cid
    - datalen
    - rnd
    argTypes:
    - struct ngtcp2_cid*
    - size_t
    - struct ub_randstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 754
      start: 746
    functionDepth: 2
    functionLinenumber: 746
    functionLinenumberEnd: 754
    functionName: cid_randfill
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - fill_rand
    - ngtcp2_cid_init
    linkageType: ''
    returnType: void
    signature: "void cid_randfill(struct ngtcp2_cid* cid, size_t datalen,\n\tstruct
      ub_randstate* rnd)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ngtcp2_conn_open_bidi_stream
      Src: /src/unbound/testcode/doqclient.c:765,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:772,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/testcode/doqclient.c:773,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - data
    - ret_stream_id
    - stream_user_data
    argTypes:
    - struct doq_client_data*
    - int64_t*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 757
    functionDepth: 0
    functionLinenumber: 757
    functionLinenumberEnd: 777
    functionName: client_bidi_stream
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - ngtcp2_conn_open_bidi_stream
    - fatal_exit
    - ngtcp2_strerror
    linkageType: ''
    returnType: int
    signature: "int client_bidi_stream(struct doq_client_data* data, int64_t* ret_stream_id,\n\tvoid*
      stream_user_data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: client_bidi_stream
      Src: /src/unbound/testcode/doqclient.c:787,1
    - Dst: client_stream_string
      Src: /src/unbound/testcode/doqclient.c:792,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:793,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:795,1
    - Dst: client_stream_start_setup
      Src: /src/unbound/testcode/doqclient.c:798,1
    - Dst: stream_list_move
      Src: /src/unbound/testcode/doqclient.c:800,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 781
    functionDepth: 3
    functionLinenumber: 781
    functionLinenumberEnd: 803
    functionName: query_streams_start
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - client_stream_string
    - verbose
    - stream_list_move
    - client_stream_start_setup
    - free
    - client_bidi_stream
    linkageType: ''
    returnType: void
    signature: void query_streams_start(struct doq_client_data* data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fill_rand
      Src: /src/unbound/testcode/doqclient.c:811,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - dest
    - destlen
    - rand_ctx
    argTypes:
    - uint8_t*
    - size_t
    - ngtcp2_rand_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 812
      start: 806
    functionDepth: 2
    functionLinenumber: 806
    functionLinenumberEnd: 812
    functionName: rand_cb
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - fill_rand
    linkageType: ''
    returnType: void
    signature: "void rand_cb(uint8_t* dest, size_t destlen,\n\tconst ngtcp2_rand_ctx*
      rand_ctx)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: cid_randfill
      Src: /src/unbound/testcode/doqclient.c:819,1
    - Dst: ngtcp2_crypto_generate_stateless_reset_token
      Src: /src/unbound/testcode/doqclient.c:820,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - ATTR_UNUSED(conn)
    - cid
    - token
    - cidlen
    - user_data
    argTypes:
    - struct ngtcp2_conn*
    - struct ngtcp2_cid*
    - uint8_t*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 815
    functionDepth: 3
    functionLinenumber: 815
    functionLinenumberEnd: 824
    functionName: get_new_connection_id_cb
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - cid_randfill
    - ngtcp2_crypto_generate_stateless_reset_token
    linkageType: ''
    returnType: int
    signature: "int get_new_connection_id_cb(struct ngtcp2_conn* ATTR_UNUSED(conn),\n\tstruct
      ngtcp2_cid* cid, uint8_t* token, size_t cidlen, void* user_data)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:831,1
    - Dst: ngtcp2_conn_tls_early_data_rejected
      Src: /src/unbound/testcode/doqclient.c:833,1
    - Dst: ngtcp2_conn_early_data_rejected
      Src: /src/unbound/testcode/doqclient.c:835,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:838,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/testcode/doqclient.c:839,1
    - Dst: stream_list_move
      Src: /src/unbound/testcode/doqclient.c:846,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/doqclient.c:860,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 864
      start: 827
    functionDepth: 2
    functionLinenumber: 827
    functionLinenumberEnd: 864
    functionName: early_data_is_rejected
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_err
    - verbose
    - ngtcp2_conn_tls_early_data_rejected
    - stream_list_move
    - ngtcp2_strerror
    - sldns_buffer_free
    - ngtcp2_conn_early_data_rejected
    linkageType: ''
    returnType: void
    signature: void early_data_is_rejected(struct doq_client_data* data)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:871,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:872,1
    - Dst: ngtcp2_conn_get_max_data_left
      Src: /src/unbound/testcode/doqclient.c:873,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:875,1
    - Dst: ngtcp2_conn_get_max_local_streams_uni
      Src: /src/unbound/testcode/doqclient.c:876,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:878,1
    - Dst: ngtcp2_conn_get_streams_uni_left
      Src: /src/unbound/testcode/doqclient.c:879,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:880,1
    - Dst: ngtcp2_conn_get_streams_bidi_left
      Src: /src/unbound/testcode/doqclient.c:881,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:882,1
    - Dst: SSL_get_cipher_name
      Src: /src/unbound/testcode/doqclient.c:883,1
    - Dst: SSL_get0_alpn_selected
      Src: /src/unbound/testcode/doqclient.c:888,1
    - Dst: memmove
      Src: /src/unbound/testcode/doqclient.c:891,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:893,1
    - Dst: SSL_get_early_data_status
      Src: /src/unbound/testcode/doqclient.c:898,1
    - Dst: early_data_is_rejected
      Src: /src/unbound/testcode/doqclient.c:900,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:902,1
    - Dst: early_data_write_transport
      Src: /src/unbound/testcode/doqclient.c:907,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 2
    argNames:
    - ATTR_UNUSED(conn)
    - user_data
    argTypes:
    - ngtcp2_conn*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 911
      start: 867
    functionDepth: 3
    functionLinenumber: 867
    functionLinenumberEnd: 911
    functionName: handshake_completed
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - ngtcp2_conn_get_max_data_left
    - SSL_get_cipher_name
    - SSL_get0_alpn_selected
    - ngtcp2_conn_get_max_local_streams_uni
    - memmove
    - ngtcp2_conn_get_streams_uni_left
    - verbose
    - ngtcp2_conn_get_streams_bidi_left
    - early_data_is_rejected
    - early_data_write_transport
    - SSL_get_early_data_status
    linkageType: ''
    returnType: int
    signature: int handshake_completed(ngtcp2_conn* ATTR_UNUSED(conn), void* user_data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:919,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:921,1
    - Dst: ngtcp2_conn_get_max_data_left
      Src: /src/unbound/testcode/doqclient.c:922,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:924,1
    - Dst: ngtcp2_conn_get_max_local_streams_uni
      Src: /src/unbound/testcode/doqclient.c:925,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:927,1
    - Dst: ngtcp2_conn_get_streams_uni_left
      Src: /src/unbound/testcode/doqclient.c:928,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:929,1
    - Dst: ngtcp2_conn_get_streams_bidi_left
      Src: /src/unbound/testcode/doqclient.c:930,1
    - Dst: query_streams_start
      Src: /src/unbound/testcode/doqclient.c:931,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 3
    argNames:
    - ATTR_UNUSED(conn)
    - max_streams
    - user_data
    argTypes:
    - ngtcp2_conn*
    - uint64_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 933
      start: 914
    functionDepth: 4
    functionLinenumber: 914
    functionLinenumberEnd: 933
    functionName: extend_max_local_streams_bidi
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - ngtcp2_conn_get_max_data_left
    - query_streams_start
    - ngtcp2_conn_get_max_local_streams_uni
    - ngtcp2_conn_get_streams_uni_left
    - verbose
    - ngtcp2_conn_get_streams_bidi_left
    linkageType: ''
    returnType: int
    signature: "int extend_max_local_streams_bidi(ngtcp2_conn* ATTR_UNUSED(conn),\n\tuint64_t
      max_streams, void* user_data)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:944,1
    - Dst: NGTCP2_STREAM_DATA_FLAG_0RTT
      Src: /src/unbound/testcode/doqclient.c:947,1
    - Dst: log_hex
      Src: /src/unbound/testcode/doqclient.c:954,1
    - Dst: client_stream_string
      Src: /src/unbound/testcode/doqclient.c:956,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:957,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:959,1
    - Dst: client_stream_recv_data
      Src: /src/unbound/testcode/doqclient.c:964,1
    - Dst: client_stream_recv_fin
      Src: /src/unbound/testcode/doqclient.c:967,1
    - Dst: ngtcp2_conn_extend_max_stream_offset
      Src: /src/unbound/testcode/doqclient.c:969,1
    - Dst: ngtcp2_conn_extend_max_offset
      Src: /src/unbound/testcode/doqclient.c:970,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 8
    argNames:
    - ATTR_UNUSED(conn)
    - flags
    - stream_id
    - offset
    - data
    - datalen
    - user_data
    - stream_user_data
    argTypes:
    - ngtcp2_conn*
    - uint32_t
    - int64_t
    - uint64_t
    - uint8_t*
    - size_t
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 936
    functionDepth: 10
    functionLinenumber: 936
    functionLinenumberEnd: 972
    functionName: recv_stream_data
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - ngtcp2_conn_extend_max_offset
    - verbose
    - client_stream_string
    - ngtcp2_conn_extend_max_stream_offset
    - client_stream_recv_fin
    - free
    - log_hex
    - client_stream_recv_data
    - NGTCP2_STREAM_DATA_FLAG_0RTT
    linkageType: ''
    returnType: int
    signature: "int recv_stream_data(ngtcp2_conn* ATTR_UNUSED(conn), uint32_t flags,\n\tint64_t
      stream_id, uint64_t offset, const uint8_t* data,\n\tsize_t datalen, void* user_data,
      void* stream_user_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:983,1
    - Dst: client_stream_recv_fin
      Src: /src/unbound/testcode/doqclient.c:985,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 6
    argNames:
    - ATTR_UNUSED(conn)
    - stream_id
    - final_size
    - app_error_code
    - user_data
    - stream_user_data
    argTypes:
    - ngtcp2_conn*
    - int64_t
    - uint64_t
    - uint64_t
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 987
      start: 975
    functionDepth: 10
    functionLinenumber: 975
    functionLinenumberEnd: 987
    functionName: stream_reset
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - verbose
    - client_stream_recv_fin
    linkageType: ''
    returnType: int
    signature: "int stream_reset(ngtcp2_conn* ATTR_UNUSED(conn), int64_t stream_id,\n\tuint64_t
      final_size, uint64_t app_error_code, void* user_data,\n\tvoid* stream_user_data)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: addr_is_ip6
      Src: /src/unbound/testcode/doqclient.c:994,1
    - Dst: calloc
      Src: /src/unbound/testcode/doqclient.c:998,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:999,1
    - Dst: memset
      Src: /src/unbound/testcode/doqclient.c:1001,1
    - Dst: memmove
      Src: /src/unbound/testcode/doqclient.c:1005,1
    - Dst: memmove
      Src: /src/unbound/testcode/doqclient.c:1007,1
    - Dst: calloc
      Src: /src/unbound/testcode/doqclient.c:1016,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:1017,1
    - Dst: memset
      Src: /src/unbound/testcode/doqclient.c:1019,1
    - Dst: memmove
      Src: /src/unbound/testcode/doqclient.c:1022,1
    - Dst: memmove
      Src: /src/unbound/testcode/doqclient.c:1023,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 3
    argNames:
    - ngaddr
    - addr
    - addrlen
    argTypes:
    - struct ngtcp2_addr*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1029
      start: 990
    functionDepth: 1
    functionLinenumber: 990
    functionLinenumberEnd: 1029
    functionName: copy_ngaddr
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - memmove
    - fatal_exit
    - calloc
    - addr_is_ip6
    - memset
    linkageType: ''
    returnType: void
    signature: "void copy_ngaddr(struct ngtcp2_addr* ngaddr, struct sockaddr_storage*
      addr,\n\tsocklen_t addrlen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/testcode/doqclient.c:1036,1
    - Dst: fprintf
      Src: /src/unbound/testcode/doqclient.c:1037,1
    - Dst: vfprintf
      Src: /src/unbound/testcode/doqclient.c:1038,1
    - Dst: va_end
      Src: /src/unbound/testcode/doqclient.c:1039,1
    - Dst: fprintf
      Src: /src/unbound/testcode/doqclient.c:1040,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - ATTR_UNUSED(user_data)
    - fmt
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1032
    functionDepth: 0
    functionLinenumber: 1032
    functionLinenumberEnd: 1041
    functionName: log_printf_for_doq
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - va_end
    - fprintf
    - vfprintf
    - va_start
    linkageType: ''
    returnType: void
    signature: "void log_printf_for_doq(void* ATTR_UNUSED(user_data),\n\tconst char*
      fmt, ...)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/doqclient.c:1082,1
    - Dst: memset
      Src: /src/unbound/testcode/doqclient.c:1083,1
    - Dst: memset
      Src: /src/unbound/testcode/doqclient.c:1084,1
    - Dst: memset
      Src: /src/unbound/testcode/doqclient.c:1085,1
    - Dst: memset
      Src: /src/unbound/testcode/doqclient.c:1086,1
    - Dst: memset
      Src: /src/unbound/testcode/doqclient.c:1087,1
    - Dst: ngtcp2_settings_default
      Src: /src/unbound/testcode/doqclient.c:1090,1
    - Dst: str_is_ip6
      Src: /src/unbound/testcode/doqclient.c:1091,1
    - Dst: get_timestamp_nanosec
      Src: /src/unbound/testcode/doqclient.c:1103,1
    - Dst: ngtcp2_transport_params_default
      Src: /src/unbound/testcode/doqclient.c:1104,1
    - Dst: cid_randfill
      Src: /src/unbound/testcode/doqclient.c:1113,1
    - Dst: cid_randfill
      Src: /src/unbound/testcode/doqclient.c:1114,1
    - Dst: copy_ngaddr
      Src: /src/unbound/testcode/doqclient.c:1133,1
    - Dst: copy_ngaddr
      Src: /src/unbound/testcode/doqclient.c:1134,1
    - Dst: ngtcp2_conn_client_new
      Src: /src/unbound/testcode/doqclient.c:1136,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:1142,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/testcode/doqclient.c:1143,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 55
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1147
      start: 1071
    functionDepth: 3
    functionLinenumber: 1071
    functionLinenumberEnd: 1147
    functionName: conn_client_setup
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - cid_randfill
    - get_timestamp_nanosec
    - fatal_exit
    - ngtcp2_strerror
    - ngtcp2_transport_params_default
    - str_is_ip6
    - memset
    - copy_ngaddr
    - ngtcp2_settings_default
    - ngtcp2_conn_client_new
    linkageType: ''
    returnType: struct ngtcp2_conn
    signature: struct ngtcp2_conn * conn_client_setup(struct doq_client_data* data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/testcode/doqclient.c:1155,1
    - Dst: perror
      Src: /src/unbound/testcode/doqclient.c:1157,1
    - Dst: fprintf
      Src: /src/unbound/testcode/doqclient.c:1160,1
    - Dst: fprintf
      Src: /src/unbound/testcode/doqclient.c:1162,1
    - Dst: fprintf
      Src: /src/unbound/testcode/doqclient.c:1164,1
    - Dst: fprintf
      Src: /src/unbound/testcode/doqclient.c:1166,1
    - Dst: fprintf
      Src: /src/unbound/testcode/doqclient.c:1168,1
    - Dst: fprintf
      Src: /src/unbound/testcode/doqclient.c:1170,1
    - Dst: fprintf
      Src: /src/unbound/testcode/doqclient.c:1172,1
    - Dst: fprintf
      Src: /src/unbound/testcode/doqclient.c:1174,1
    - Dst: ferror
      Src: /src/unbound/testcode/doqclient.c:1176,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:1177,1
    - Dst: strerror
      Src: /src/unbound/testcode/doqclient.c:1178,1
    - Dst: fclose
      Src: /src/unbound/testcode/doqclient.c:1179,1
    - Dst: fclose
      Src: /src/unbound/testcode/doqclient.c:1182,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 2
    argNames:
    - file
    - params
    argTypes:
    - char*
    - struct ngtcp2_transport_params*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1183
      start: 1151
    functionDepth: 1
    functionLinenumber: 1151
    functionLinenumberEnd: 1183
    functionName: transport_file_write
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - perror
    - verbose
    - fclose
    - ferror
    - fopen
    - strerror
    - fprintf
    linkageType: ''
    returnType: void
    signature: void transport_file_write(const char* file, struct ngtcp2_transport_params*
      params)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ngtcp2_conn_encode_0rtt_transport_params
      Src: /src/unbound/testcode/doqclient.c:1193,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:1196,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/testcode/doqclient.c:1197,1
    - Dst: fopen
      Src: /src/unbound/testcode/doqclient.c:1200,1
    - Dst: perror
      Src: /src/unbound/testcode/doqclient.c:1202,1
    - Dst: fwrite
      Src: /src/unbound/testcode/doqclient.c:1205,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:1206,1
    - Dst: strerror
      Src: /src/unbound/testcode/doqclient.c:1207,1
    - Dst: ferror
      Src: /src/unbound/testcode/doqclient.c:1209,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:1210,1
    - Dst: strerror
      Src: /src/unbound/testcode/doqclient.c:1211,1
    - Dst: fclose
      Src: /src/unbound/testcode/doqclient.c:1213,1
    - Dst: memset
      Src: /src/unbound/testcode/doqclient.c:1216,1
    - Dst: ngtcp2_conn_get_remote_transport_params
      Src: /src/unbound/testcode/doqclient.c:1217,1
    - Dst: transport_file_write
      Src: /src/unbound/testcode/doqclient.c:1218,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1220
      start: 1187
    functionDepth: 2
    functionLinenumber: 1187
    functionLinenumberEnd: 1220
    functionName: early_data_write_transport
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 1
    functionsReached:
    - log_err
    - perror
    - fwrite
    - ngtcp2_conn_get_remote_transport_params
    - verbose
    - fclose
    - transport_file_write
    - ferror
    - ngtcp2_strerror
    - fopen
    - strerror
    - memset
    - ngtcp2_conn_encode_0rtt_transport_params
    linkageType: ''
    returnType: void
    signature: void early_data_write_transport(struct doq_client_data* data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:1229,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:1230,1
    - Dst: ngtcp2_conn_get_max_data_left
      Src: /src/unbound/testcode/doqclient.c:1231,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:1233,1
    - Dst: ngtcp2_conn_get_max_local_streams_uni
      Src: /src/unbound/testcode/doqclient.c:1234,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:1236,1
    - Dst: ngtcp2_conn_get_streams_uni_left
      Src: /src/unbound/testcode/doqclient.c:1237,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:1238,1
    - Dst: ngtcp2_conn_get_streams_bidi_left
      Src: /src/unbound/testcode/doqclient.c:1239,1
    - Dst: early_data_write_transport
      Src: /src/unbound/testcode/doqclient.c:1241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1244
      start: 1226
    functionDepth: 3
    functionLinenumber: 1226
    functionLinenumberEnd: 1244
    functionName: application_rx_key_cb
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - ngtcp2_conn_get_max_data_left
    - ngtcp2_conn_get_max_local_streams_uni
    - ngtcp2_conn_get_streams_uni_left
    - verbose
    - ngtcp2_conn_get_streams_bidi_left
    - early_data_write_transport
    linkageType: ''
    returnType: int
    signature: int application_rx_key_cb(struct doq_client_data* data)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get_app_data
      Src: /src/unbound/testcode/doqclient.c:1252,1
    - Dst: ngtcp2_crypto_quictls_from_ossl_encryption_level
      Src: /src/unbound/testcode/doqclient.c:1260,1
    - Dst: ngtcp2_crypto_openssl_from_ossl_encryption_level
      Src: /src/unbound/testcode/doqclient.c:1262,1
    - Dst: ngtcp2_crypto_derive_and_install_rx_key
      Src: /src/unbound/testcode/doqclient.c:1266,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:1268,1
    - Dst: application_rx_key_cb
      Src: /src/unbound/testcode/doqclient.c:1272,1
    - Dst: ngtcp2_crypto_derive_and_install_tx_key
      Src: /src/unbound/testcode/doqclient.c:1278,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:1280,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 5
    argNames:
    - ssl
    - ossl_level
    - read_secret
    - write_secret
    - secret_len
    argTypes:
    - SSL*
    - OSSL_ENCRYPTION_LEVEL
    - uint8_t*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1285
      start: 1247
    functionDepth: 4
    functionLinenumber: 1247
    functionLinenumberEnd: 1285
    functionName: set_encryption_secrets
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_err
    - ngtcp2_crypto_quictls_from_ossl_encryption_level
    - get_app_data
    - ngtcp2_crypto_derive_and_install_tx_key
    - ngtcp2_crypto_derive_and_install_rx_key
    - application_rx_key_cb
    - ngtcp2_crypto_openssl_from_ossl_encryption_level
    linkageType: ''
    returnType: int
    signature: "int set_encryption_secrets(SSL *ssl, OSSL_ENCRYPTION_LEVEL ossl_level,\n\tconst
      uint8_t *read_secret, const uint8_t *write_secret,\n\tsize_t secret_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_app_data
      Src: /src/unbound/testcode/doqclient.c:1292,1
    - Dst: ngtcp2_crypto_quictls_from_ossl_encryption_level
      Src: /src/unbound/testcode/doqclient.c:1300,1
    - Dst: ngtcp2_crypto_openssl_from_ossl_encryption_level
      Src: /src/unbound/testcode/doqclient.c:1302,1
    - Dst: ngtcp2_conn_submit_crypto_data
      Src: /src/unbound/testcode/doqclient.c:1306,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:1308,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/testcode/doqclient.c:1309,1
    - Dst: ngtcp2_conn_set_tls_error
      Src: /src/unbound/testcode/doqclient.c:1310,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - ssl
    - ossl_level
    - data
    - len
    argTypes:
    - SSL*
    - OSSL_ENCRYPTION_LEVEL
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1314
      start: 1288
    functionDepth: 1
    functionLinenumber: 1288
    functionLinenumberEnd: 1314
    functionName: add_handshake_data
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_err
    - ngtcp2_crypto_quictls_from_ossl_encryption_level
    - ngtcp2_conn_set_tls_error
    - get_app_data
    - ngtcp2_strerror
    - ngtcp2_conn_submit_crypto_data
    - ngtcp2_crypto_openssl_from_ossl_encryption_level
    linkageType: ''
    returnType: int
    signature: "int add_handshake_data(SSL *ssl, OSSL_ENCRYPTION_LEVEL ossl_level,\n\tconst
      uint8_t *data, size_t len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(ssl)
    argTypes:
    - SSL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1321
      start: 1317
    functionDepth: 0
    functionLinenumber: 1317
    functionLinenumberEnd: 1321
    functionName: flush_flight
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int flush_flight(SSL* ATTR_UNUSED(ssl))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_app_data
      Src: /src/unbound/testcode/doqclient.c:1328,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ssl
    - ATTR_UNUSED
    - alert
    argTypes:
    - SSL*
    - enum ssl_encryption_level_t
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1331
      start: 1324
    functionDepth: 1
    functionLinenumber: 1324
    functionLinenumberEnd: 1331
    functionName: send_alert
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - get_app_data
    linkageType: ''
    returnType: int
    signature: "int send_alert(SSL *ssl, enum ssl_encryption_level_t ATTR_UNUSED(level),\n\tuint8_t
      alert)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_app_data
      Src: /src/unbound/testcode/doqclient.c:1338,1
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:1340,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:1341,1
    - Dst: SSL_SESSION_get_max_early_data
      Src: /src/unbound/testcode/doqclient.c:1342,1
    - Dst: BIO_new_file
      Src: /src/unbound/testcode/doqclient.c:1343,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:1345,1
    - Dst: strerror
      Src: /src/unbound/testcode/doqclient.c:1346,1
    - Dst: PEM_write_bio_SSL_SESSION
      Src: /src/unbound/testcode/doqclient.c:1349,1
    - Dst: BIO_free
      Src: /src/unbound/testcode/doqclient.c:1350,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:1351,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - ssl
    - session
    argTypes:
    - SSL*
    - SSL_SESSION*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1353
      start: 1335
    functionDepth: 1
    functionLinenumber: 1335
    functionLinenumberEnd: 1353
    functionName: new_session_cb
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - BIO_free
    - log_err
    - BIO_new_file
    - verbose
    - log_assert
    - SSL_SESSION_get_max_early_data
    - strerror
    - PEM_write_bio_SSL_SESSION
    - get_app_data
    linkageType: ''
    returnType: int
    signature: int new_session_cb(SSL* ssl, SSL_SESSION* session)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_new
      Src: /src/unbound/testcode/doqclient.c:1359,1
    - Dst: TLS_client_method
      Src: /src/unbound/testcode/doqclient.c:1359,1
    - Dst: log_crypto_err
      Src: /src/unbound/testcode/doqclient.c:1361,1
    - Dst: exit
      Src: /src/unbound/testcode/doqclient.c:1362,1
    - Dst: SSL_CTX_set_min_proto_version
      Src: /src/unbound/testcode/doqclient.c:1364,1
    - Dst: SSL_CTX_set_max_proto_version
      Src: /src/unbound/testcode/doqclient.c:1365,1
    - Dst: SSL_CTX_set_default_verify_paths
      Src: /src/unbound/testcode/doqclient.c:1366,1
    - Dst: ngtcp2_crypto_quictls_configure_client_context
      Src: /src/unbound/testcode/doqclient.c:1368,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:1369,1
    - Dst: exit
      Src: /src/unbound/testcode/doqclient.c:1370,1
    - Dst: memset
      Src: /src/unbound/testcode/doqclient.c:1373,1
    - Dst: SSL_CTX_set_quic_method
      Src: /src/unbound/testcode/doqclient.c:1378,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1381
      start: 1356
    functionDepth: 1
    functionLinenumber: 1356
    functionLinenumberEnd: 1381
    functionName: ctx_client_setup
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - exit
    - log_err
    - SSL_CTX_new
    - SSL_CTX_set_default_verify_paths
    - SSL_CTX_set_max_proto_version
    - ngtcp2_crypto_quictls_configure_client_context
    - SSL_CTX_set_min_proto_version
    - log_crypto_err
    - memset
    - SSL_CTX_set_quic_method
    - TLS_client_method
    linkageType: ''
    returnType: SSL_CTX
    signature: 'SSL_CTX *

      ctx_client_setup(void)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: SSL_new
      Src: /src/unbound/testcode/doqclient.c:1391,1
    - Dst: log_crypto_err
      Src: /src/unbound/testcode/doqclient.c:1393,1
    - Dst: exit
      Src: /src/unbound/testcode/doqclient.c:1394,1
    - Dst: ngtcp2_crypto_ossl_ctx_new
      Src: /src/unbound/testcode/doqclient.c:1397,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:1398,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/testcode/doqclient.c:1399,1
    - Dst: exit
      Src: /src/unbound/testcode/doqclient.c:1400,1
    - Dst: ngtcp2_crypto_ossl_ctx_set_ssl
      Src: /src/unbound/testcode/doqclient.c:1402,1
    - Dst: ngtcp2_crypto_ossl_configure_client_session
      Src: /src/unbound/testcode/doqclient.c:1403,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:1404,1
    - Dst: exit
      Src: /src/unbound/testcode/doqclient.c:1405,1
    - Dst: set_app_data
      Src: /src/unbound/testcode/doqclient.c:1408,1
    - Dst: SSL_set_connect_state
      Src: /src/unbound/testcode/doqclient.c:1409,1
    - Dst: SSL_set_fd
      Src: /src/unbound/testcode/doqclient.c:1410,1
    - Dst: log_crypto_err
      Src: /src/unbound/testcode/doqclient.c:1411,1
    - Dst: exit
      Src: /src/unbound/testcode/doqclient.c:1412,1
    - Dst: SSL_set_quic_use_legacy_codepoint
      Src: /src/unbound/testcode/doqclient.c:1416,1
    - Dst: SSL_set_quic_use_legacy_codepoint
      Src: /src/unbound/testcode/doqclient.c:1418,1
    - Dst: SSL_set_alpn_protos
      Src: /src/unbound/testcode/doqclient.c:1421,1
    - Dst: SSL_set_tlsext_host_name
      Src: /src/unbound/testcode/doqclient.c:1423,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1425
      start: 1385
    functionDepth: 1
    functionLinenumber: 1385
    functionLinenumberEnd: 1425
    functionName: ssl_client_setup
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - exit
    - log_err
    - ngtcp2_crypto_ossl_ctx_new
    - SSL_set_alpn_protos
    - SSL_set_quic_use_legacy_codepoint
    - ngtcp2_crypto_ossl_ctx_set_ssl
    - SSL_set_connect_state
    - SSL_set_tlsext_host_name
    - ngtcp2_strerror
    - ngtcp2_crypto_ossl_configure_client_session
    - log_crypto_err
    - set_app_data
    - SSL_new
    - SSL_set_fd
    linkageType: ''
    returnType: SSL
    signature: 'SSL *

      ssl_client_setup(struct doq_client_data* data)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_FIRSTHDR
      Src: /src/unbound/testcode/doqclient.c:1434,1
    - Dst: CMSG_NXTHDR
      Src: /src/unbound/testcode/doqclient.c:1435,1
    - Dst: CMSG_DATA
      Src: /src/unbound/testcode/doqclient.c:1439,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/unbound/testcode/doqclient.c:1445,1
    - Dst: CMSG_NXTHDR
      Src: /src/unbound/testcode/doqclient.c:1446,1
    - Dst: CMSG_DATA
      Src: /src/unbound/testcode/doqclient.c:1450,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 2
    argNames:
    - msg
    - family
    argTypes:
    - struct msghdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1456
      start: 1428
    functionDepth: 0
    functionLinenumber: 1428
    functionLinenumberEnd: 1456
    functionName: msghdr_get_ecn
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - CMSG_FIRSTHDR
    - CMSG_NXTHDR
    - CMSG_DATA
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t msghdr_get_ecn(struct msghdr* msg, int family)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/unbound/testcode/doqclient.c:1464,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:1466,1
    - Dst: strerror
      Src: /src/unbound/testcode/doqclient.c:1467,1
    - Dst: setsockopt
      Src: /src/unbound/testcode/doqclient.c:1471,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:1473,1
    - Dst: strerror
      Src: /src/unbound/testcode/doqclient.c:1474,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - fd
    - family
    - ecn
    argTypes:
    - int
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1476
      start: 1459
    functionDepth: 1
    functionLinenumber: 1459
    functionLinenumberEnd: 1476
    functionName: set_ecn
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - setsockopt
    - log_err
    - strerror
    linkageType: ''
    returnType: void
    signature: void set_ecn(int fd, int family, uint32_t ecn)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/doqclient.c:1488,1
    - Dst: set_ecn
      Src: /src/unbound/testcode/doqclient.c:1493,1
    - Dst: sendmsg
      Src: /src/unbound/testcode/doqclient.c:1496,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/testcode/doqclient.c:1504,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/doqclient.c:1516,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/doqclient.c:1517,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/doqclient.c:1519,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:1523,1
    - Dst: strerror
      Src: /src/unbound/testcode/doqclient.c:1523,1
    - Dst: ngtcp2_ccerr_set_application_error
      Src: /src/unbound/testcode/doqclient.c:1525,1
    - Dst: ngtcp2_connection_close_error_set_application_error
      Src: /src/unbound/testcode/doqclient.c:1527,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 6
    argNames:
    - data
    - ecn
    - buf
    - buf_len
    - is_blocked_pkt
    - send_is_blocked
    argTypes:
    - struct doq_client_data*
    - uint32_t
    - uint8_t*
    - size_t
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1532
      start: 1479
    functionDepth: 5
    functionLinenumber: 1479
    functionLinenumberEnd: 1532
    functionName: doq_client_send_pkt
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - log_err
    - sldns_buffer_write
    - sendmsg
    - ngtcp2_connection_close_error_set_application_error
    - sldns_buffer_flip
    - sldns_buffer_clear
    - ngtcp2_ccerr_set_application_error
    - strerror
    - memset
    - set_ecn
    linkageType: ''
    returnType: int
    signature: "int doq_client_send_pkt(struct doq_client_data* data, uint32_t ecn,
      uint8_t* buf,\n\tsize_t buf_len, int is_blocked_pkt, int* send_is_blocked)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ub_event_del
      Src: /src/unbound/testcode/doqclient.c:1538,1
    - Dst: ub_event_add_bits
      Src: /src/unbound/testcode/doqclient.c:1540,1
    - Dst: ub_event_del_bits
      Src: /src/unbound/testcode/doqclient.c:1542,1
    - Dst: ub_event_add
      Src: /src/unbound/testcode/doqclient.c:1544,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:1545,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - data
    - do_write
    argTypes:
    - struct doq_client_data*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1547
      start: 1535
    functionDepth: 0
    functionLinenumber: 1535
    functionLinenumberEnd: 1547
    functionName: event_change_write
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - ub_event_del_bits
    - fatal_exit
    - ub_event_add
    - ub_event_del
    - ub_event_add_bits
    linkageType: ''
    returnType: void
    signature: void event_change_write(struct doq_client_data* data, int do_write)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:1614,1
    - Dst: write_conn_close
      Src: /src/unbound/testcode/doqclient.c:1615,1
    - Dst: ub_event_base_loopexit
      Src: /src/unbound/testcode/doqclient.c:1616,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1617
      start: 1611
    functionDepth: 1
    functionLinenumber: 1611
    functionLinenumberEnd: 1617
    functionName: disconnect
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 1
    functionsReached:
    - verbose
    - write_conn_close
    - ub_event_base_loopexit
    linkageType: ''
    returnType: void
    signature: void disconnect(struct doq_client_data* data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: get_timestamp_nanosec
      Src: /src/unbound/testcode/doqclient.c:1624,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:1627,1
    - Dst: ngtcp2_conn_handle_expiry
      Src: /src/unbound/testcode/doqclient.c:1629,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:1631,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/testcode/doqclient.c:1632,1
    - Dst: ngtcp2_ccerr_set_liberr
      Src: /src/unbound/testcode/doqclient.c:1634,1
    - Dst: ngtcp2_connection_close_error_set_transport_error_liberr
      Src: /src/unbound/testcode/doqclient.c:1636,1
    - Dst: disconnect
      Src: /src/unbound/testcode/doqclient.c:1639,1
    - Dst: update_timer
      Src: /src/unbound/testcode/doqclient.c:1642,1
    - Dst: on_write
      Src: /src/unbound/testcode/doqclient.c:1643,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1644
      start: 1620
    functionDepth: 2
    functionLinenumber: 1620
    functionLinenumberEnd: 1644
    functionName: doq_client_timer_cb
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_err
    - get_timestamp_nanosec
    - verbose
    - update_timer
    - disconnect
    - ngtcp2_strerror
    - ngtcp2_connection_close_error_set_transport_error_liberr
    - ngtcp2_conn_handle_expiry
    - ngtcp2_ccerr_set_liberr
    - on_write
    linkageType: ''
    returnType: void
    signature: "void doq_client_timer_cb(int ATTR_UNUSED(fd),\n\tshort ATTR_UNUSED(bits),
      void* arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ngtcp2_conn_get_expiry
      Src: /src/unbound/testcode/doqclient.c:1650,1
    - Dst: get_timestamp_nanosec
      Src: /src/unbound/testcode/doqclient.c:1651,1
    - Dst: ub_timer_del
      Src: /src/unbound/testcode/doqclient.c:1664,1
    - Dst: memset
      Src: /src/unbound/testcode/doqclient.c:1667,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:1670,1
    - Dst: ub_timer_add
      Src: /src/unbound/testcode/doqclient.c:1672,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:1674,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1678
      start: 1647
    functionDepth: 1
    functionLinenumber: 1647
    functionLinenumberEnd: 1678
    functionName: update_timer
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 1
    functionsReached:
    - ngtcp2_conn_get_expiry
    - log_err
    - get_timestamp_nanosec
    - verbose
    - memset
    - ub_timer_del
    - ub_timer_add
    linkageType: ''
    returnType: void
    signature: void update_timer(struct doq_client_data* data)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/doqclient.c:1700,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/testcode/doqclient.c:1701,1
    - Dst: recvmsg
      Src: /src/unbound/testcode/doqclient.c:1710,1
    - Dst: log_err_addr
      Src: /src/unbound/testcode/doqclient.c:1714,1
    - Dst: strerror
      Src: /src/unbound/testcode/doqclient.c:1714,1
    - Dst: msghdr_get_ecn
      Src: /src/unbound/testcode/doqclient.c:1719,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:1720,1
    - Dst: memset
      Src: /src/unbound/testcode/doqclient.c:1722,1
    - Dst: ngtcp2_conn_read_pkt
      Src: /src/unbound/testcode/doqclient.c:1727,1
    - Dst: get_timestamp_nanosec
      Src: /src/unbound/testcode/doqclient.c:1728,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:1730,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/testcode/doqclient.c:1731,1
    - Dst: ngtcp2_ccerr_set_tls_alert
      Src: /src/unbound/testcode/doqclient.c:1745,1
    - Dst: ngtcp2_connection_close_error_set_transport_error_tls_alert
      Src: /src/unbound/testcode/doqclient.c:1749,1
    - Dst: ngtcp2_ccerr_set_liberr
      Src: /src/unbound/testcode/doqclient.c:1755,1
    - Dst: ngtcp2_connection_close_error_set_transport_error_liberr
      Src: /src/unbound/testcode/doqclient.c:1758,1
    - Dst: disconnect
      Src: /src/unbound/testcode/doqclient.c:1764,1
    - Dst: update_timer
      Src: /src/unbound/testcode/doqclient.c:1769,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 42
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1770
      start: 1681
    functionDepth: 3
    functionLinenumber: 1681
    functionLinenumberEnd: 1770
    functionName: on_read
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - msghdr_get_ecn
    - log_err
    - get_timestamp_nanosec
    - verbose
    - ngtcp2_ccerr_set_tls_alert
    - ngtcp2_connection_close_error_set_transport_error_tls_alert
    - disconnect
    - update_timer
    - ngtcp2_strerror
    - log_err_addr
    - ngtcp2_connection_close_error_set_transport_error_liberr
    - recvmsg
    - strerror
    - sldns_buffer_begin
    - ngtcp2_conn_read_pkt
    - ngtcp2_ccerr_set_liberr
    - memset
    linkageType: ''
    returnType: void
    signature: void on_read(struct doq_client_data* data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_stream_string
      Src: /src/unbound/testcode/doqclient.c:1779,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:1780,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:1781,1
    - Dst: stream_list_move
      Src: /src/unbound/testcode/doqclient.c:1784,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - data
    - str
    argTypes:
    - struct doq_client_data*
    - struct doq_client_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1785
      start: 1774
    functionDepth: 3
    functionLinenumber: 1774
    functionLinenumberEnd: 1785
    functionName: query_write_is_done
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - free
    - client_stream_string
    - verbose
    - stream_list_move
    linkageType: ''
    returnType: void
    signature: "void query_write_is_done(struct doq_client_data* data,\n\tstruct doq_client_stream*
      str)"
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: get_timestamp_nanosec
      Src: /src/unbound/testcode/doqclient.c:1792,1
    - Dst: ngtcp2_conn_get_send_quantum
      Src: /src/unbound/testcode/doqclient.c:1796,1
    - Dst: ngtcp2_path_storage_zero
      Src: /src/unbound/testcode/doqclient.c:1806,1
    - Dst: client_stream_string
      Src: /src/unbound/testcode/doqclient.c:1839,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:1840,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:1841,1
    - Dst: htons
      Src: /src/unbound/testcode/doqclient.c:1846,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:1859,1
    - Dst: ngtcp2_conn_update_pkt_tx_time
      Src: /src/unbound/testcode/doqclient.c:1881,1
    - Dst: event_change_write
      Src: /src/unbound/testcode/doqclient.c:1882,1
    - Dst: update_timer
      Src: /src/unbound/testcode/doqclient.c:1885,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/doqclient.c:1925,1
    - Dst: ngtcp2_conn_writev_stream
      Src: /src/unbound/testcode/doqclient.c:1926,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/doqclient.c:1927,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/testcode/doqclient.c:1928,1
    - Dst: query_write_is_done
      Src: /src/unbound/testcode/doqclient.c:1935,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:1941,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/testcode/doqclient.c:1942,1
    - Dst: ngtcp2_ccerr_set_liberr
      Src: /src/unbound/testcode/doqclient.c:1944,1
    - Dst: ngtcp2_connection_close_error_set_transport_error_liberr
      Src: /src/unbound/testcode/doqclient.c:1946,1
    - Dst: disconnect
      Src: /src/unbound/testcode/doqclient.c:1949,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:1952,1
    - Dst: query_write_is_done
      Src: /src/unbound/testcode/doqclient.c:1958,1
    - Dst: ngtcp2_conn_update_pkt_tx_time
      Src: /src/unbound/testcode/doqclient.c:1962,1
    - Dst: event_change_write
      Src: /src/unbound/testcode/doqclient.c:1963,1
    - Dst: update_timer
      Src: /src/unbound/testcode/doqclient.c:1966,1
    - Dst: doq_client_send_pkt
      Src: /src/unbound/testcode/doqclient.c:1969,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/doqclient.c:1970,1
    - Dst: event_change_write
      Src: /src/unbound/testcode/doqclient.c:1975,1
    - Dst: update_timer
      Src: /src/unbound/testcode/doqclient.c:1976,1
    - Dst: ngtcp2_conn_update_pkt_tx_time
      Src: /src/unbound/testcode/doqclient.c:1980,1
    - Dst: event_change_write
      Src: /src/unbound/testcode/doqclient.c:1981,1
    - Dst: update_timer
      Src: /src/unbound/testcode/doqclient.c:1982,1
    - Dst: ngtcp2_conn_update_pkt_tx_time
      Src: /src/unbound/testcode/doqclient.c:1996,1
    - Dst: event_change_write
      Src: /src/unbound/testcode/doqclient.c:1997,1
    CyclomaticComplexity: 37
    EdgeCount: 37
    ICount: 115
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1999
      start: 1788
    functionDepth: 6
    functionLinenumber: 1788
    functionLinenumberEnd: 1999
    functionName: write_streams
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 1
    functionsReached:
    - client_stream_string
    - ngtcp2_conn_update_pkt_tx_time
    - ngtcp2_strerror
    - htons
    - query_write_is_done
    - ngtcp2_path_storage_zero
    - ngtcp2_ccerr_set_liberr
    - doq_client_send_pkt
    - log_err
    - update_timer
    - disconnect
    - ngtcp2_connection_close_error_set_transport_error_liberr
    - sldns_buffer_begin
    - event_change_write
    - verbose
    - free
    - sldns_buffer_remaining
    - ngtcp2_conn_get_send_quantum
    - ngtcp2_conn_writev_stream
    - get_timestamp_nanosec
    - sldns_buffer_clear
    linkageType: ''
    returnType: int
    signature: int write_streams(struct doq_client_data* data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_timestamp_nanosec
      Src: /src/unbound/testcode/doqclient.c:2005,1
    - Dst: doq_client_send_pkt
      Src: /src/unbound/testcode/doqclient.c:2007,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/doqclient.c:2008,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/doqclient.c:2009,1
    - Dst: event_change_write
      Src: /src/unbound/testcode/doqclient.c:2012,1
    - Dst: update_timer
      Src: /src/unbound/testcode/doqclient.c:2014,1
    - Dst: ngtcp2_conn_update_pkt_tx_time
      Src: /src/unbound/testcode/doqclient.c:2019,1
    - Dst: event_change_write
      Src: /src/unbound/testcode/doqclient.c:2020,1
    - Dst: update_timer
      Src: /src/unbound/testcode/doqclient.c:2021,1
    - Dst: ngtcp2_conn_update_pkt_tx_time
      Src: /src/unbound/testcode/doqclient.c:2027,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2029
      start: 2002
    functionDepth: 6
    functionLinenumber: 2002
    functionLinenumberEnd: 2029
    functionName: send_blocked_pkt
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - get_timestamp_nanosec
    - update_timer
    - ngtcp2_conn_update_pkt_tx_time
    - sldns_buffer_limit
    - sldns_buffer_begin
    - event_change_write
    - doq_client_send_pkt
    linkageType: ''
    returnType: int
    signature: int send_blocked_pkt(struct doq_client_data* data)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: send_blocked_pkt
      Src: /src/unbound/testcode/doqclient.c:2036,1
    - Dst: if
      Src: /src/unbound/testcode/doqclient.c:2047,1
    - Dst: write_streams
      Src: /src/unbound/testcode/doqclient.c:2047,1
    - Dst: update_timer
      Src: /src/unbound/testcode/doqclient.c:2049,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2050
      start: 2032
    functionDepth: 7
    functionLinenumber: 2032
    functionLinenumberEnd: 2050
    functionName: on_write
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 1
    functionsReached:
    - write_streams
    - if
    - update_timer
    - send_blocked_pkt
    linkageType: ''
    returnType: void
    signature: void on_write(struct doq_client_data* data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:2057,1
    - Dst: on_read
      Src: /src/unbound/testcode/doqclient.c:2063,1
    - Dst: on_write
      Src: /src/unbound/testcode/doqclient.c:2068,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - bits
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2069
      start: 2053
    functionDepth: 8
    functionLinenumber: 2053
    functionLinenumberEnd: 2069
    functionName: doq_client_event_cb
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - verbose
    - on_write
    - on_read
    linkageType: ''
    returnType: void
    signature: void doq_client_event_cb(int ATTR_UNUSED(fd), short bits, void* arg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: BIO_new_file
      Src: /src/unbound/testcode/doqclient.c:2076,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:2079,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:2083,1
    - Dst: strerror
      Src: /src/unbound/testcode/doqclient.c:2084,1
    - Dst: PEM_read_bio_SSL_SESSION
      Src: /src/unbound/testcode/doqclient.c:2087,1
    - Dst: log_crypto_err
      Src: /src/unbound/testcode/doqclient.c:2089,1
    - Dst: BIO_free
      Src: /src/unbound/testcode/doqclient.c:2090,1
    - Dst: BIO_free
      Src: /src/unbound/testcode/doqclient.c:2093,1
    - Dst: SSL_set_session
      Src: /src/unbound/testcode/doqclient.c:2094,1
    - Dst: log_crypto_err
      Src: /src/unbound/testcode/doqclient.c:2095,1
    - Dst: SSL_SESSION_free
      Src: /src/unbound/testcode/doqclient.c:2096,1
    - Dst: SSL_SESSION_get_max_early_data
      Src: /src/unbound/testcode/doqclient.c:2099,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:2100,1
    - Dst: SSL_SESSION_free
      Src: /src/unbound/testcode/doqclient.c:2101,1
    - Dst: SSL_set_quic_tls_early_data_enabled
      Src: /src/unbound/testcode/doqclient.c:2105,1
    - Dst: SSL_set_quic_early_data_enabled
      Src: /src/unbound/testcode/doqclient.c:2107,1
    - Dst: SSL_SESSION_free
      Src: /src/unbound/testcode/doqclient.c:2109,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 30
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2111
      start: 2072
    functionDepth: 1
    functionLinenumber: 2072
    functionLinenumberEnd: 2111
    functionName: early_data_setup_session
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - BIO_free
    - log_err
    - BIO_new_file
    - SSL_set_session
    - verbose
    - SSL_set_quic_early_data_enabled
    - PEM_read_bio_SSL_SESSION
    - strerror
    - SSL_SESSION_get_max_early_data
    - log_crypto_err
    - SSL_SESSION_free
    - SSL_set_quic_tls_early_data_enabled
    linkageType: ''
    returnType: int
    signature: int early_data_setup_session(struct doq_client_data* data)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/unbound/testcode/doqclient.c:2118,1
    - Dst: atoi
      Src: /src/unbound/testcode/doqclient.c:2119,1
    - Dst: strncmp
      Src: /src/unbound/testcode/doqclient.c:2122,1
    - Dst: atoi
      Src: /src/unbound/testcode/doqclient.c:2123,1
    - Dst: strncmp
      Src: /src/unbound/testcode/doqclient.c:2126,1
    - Dst: atoi
      Src: /src/unbound/testcode/doqclient.c:2127,1
    - Dst: strncmp
      Src: /src/unbound/testcode/doqclient.c:2130,1
    - Dst: atoi
      Src: /src/unbound/testcode/doqclient.c:2131,1
    - Dst: strncmp
      Src: /src/unbound/testcode/doqclient.c:2134,1
    - Dst: atoi
      Src: /src/unbound/testcode/doqclient.c:2135,1
    - Dst: strncmp
      Src: /src/unbound/testcode/doqclient.c:2138,1
    - Dst: atoi
      Src: /src/unbound/testcode/doqclient.c:2139,1
    - Dst: strncmp
      Src: /src/unbound/testcode/doqclient.c:2142,1
    - Dst: atoi
      Src: /src/unbound/testcode/doqclient.c:2143,1
    - Dst: strncmp
      Src: /src/unbound/testcode/doqclient.c:2146,1
    - Dst: atoi
      Src: /src/unbound/testcode/doqclient.c:2147,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 2
    argNames:
    - params
    - line
    argTypes:
    - struct ngtcp2_transport_params*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2151
      start: 2115
    functionDepth: 0
    functionLinenumber: 2115
    functionLinenumberEnd: 2151
    functionName: transport_parse_line
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - atoi
    - strncmp
    linkageType: ''
    returnType: int
    signature: int transport_parse_line(struct ngtcp2_transport_params* params, char*
      line)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/testcode/doqclient.c:2163,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:2166,1
    - Dst: perror
      Src: /src/unbound/testcode/doqclient.c:2170,1
    - Dst: fread
      Src: /src/unbound/testcode/doqclient.c:2173,1
    - Dst: ferror
      Src: /src/unbound/testcode/doqclient.c:2174,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:2175,1
    - Dst: strerror
      Src: /src/unbound/testcode/doqclient.c:2176,1
    - Dst: fclose
      Src: /src/unbound/testcode/doqclient.c:2177,1
    - Dst: fclose
      Src: /src/unbound/testcode/doqclient.c:2180,1
    - Dst: ngtcp2_conn_decode_and_set_0rtt_transport_params
      Src: /src/unbound/testcode/doqclient.c:2181,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:2184,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/testcode/doqclient.c:2185,1
    - Dst: memset
      Src: /src/unbound/testcode/doqclient.c:2193,1
    - Dst: fopen
      Src: /src/unbound/testcode/doqclient.c:2194,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:2197,1
    - Dst: perror
      Src: /src/unbound/testcode/doqclient.c:2201,1
    - Dst: feof
      Src: /src/unbound/testcode/doqclient.c:2204,1
    - Dst: fgets
      Src: /src/unbound/testcode/doqclient.c:2205,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:2206,1
    - Dst: strerror
      Src: /src/unbound/testcode/doqclient.c:2207,1
    - Dst: fclose
      Src: /src/unbound/testcode/doqclient.c:2208,1
    - Dst: transport_parse_line
      Src: /src/unbound/testcode/doqclient.c:2211,1
    - Dst: log_err
      Src: /src/unbound/testcode/doqclient.c:2212,1
    - Dst: fclose
      Src: /src/unbound/testcode/doqclient.c:2214,1
    - Dst: fclose
      Src: /src/unbound/testcode/doqclient.c:2218,1
    - Dst: ngtcp2_conn_set_early_remote_transport_params
      Src: /src/unbound/testcode/doqclient.c:2219,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 48
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2222
      start: 2155
    functionDepth: 1
    functionLinenumber: 2155
    functionLinenumberEnd: 2222
    functionName: early_data_setup_transport
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_err
    - perror
    - fgets
    - verbose
    - fclose
    - ferror
    - feof
    - ngtcp2_strerror
    - fopen
    - fread
    - strerror
    - ngtcp2_conn_decode_and_set_0rtt_transport_params
    - ngtcp2_conn_set_early_remote_transport_params
    - memset
    - transport_parse_line
    linkageType: ''
    returnType: int
    signature: int early_data_setup_transport(struct doq_client_data* data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: early_data_setup_session
      Src: /src/unbound/testcode/doqclient.c:2228,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:2229,1
    - Dst: early_data_setup_transport
      Src: /src/unbound/testcode/doqclient.c:2233,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:2234,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2238
      start: 2225
    functionDepth: 2
    functionLinenumber: 2225
    functionLinenumberEnd: 2238
    functionName: early_data_setup
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - early_data_setup_session
    - verbose
    - early_data_setup_transport
    linkageType: ''
    returnType: void
    signature: void early_data_setup(struct doq_client_data* data)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: query_streams_start
      Src: /src/unbound/testcode/doqclient.c:2244,1
    - Dst: on_write
      Src: /src/unbound/testcode/doqclient.c:2245,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2246
      start: 2241
    functionDepth: 8
    functionLinenumber: 2241
    functionLinenumberEnd: 2246
    functionName: early_data_start
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - on_write
    - query_streams_start
    linkageType: ''
    returnType: void
    signature: void early_data_start(struct doq_client_data* data)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/doqclient.c:2254,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:2255,1
    - Dst: ngtcp2_crypto_ossl_init
      Src: /src/unbound/testcode/doqclient.c:2260,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:2261,1
    - Dst: ngtcp2_crypto_quictls_init
      Src: /src/unbound/testcode/doqclient.c:2263,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:2264,1
    - Dst: ub_initstate
      Src: /src/unbound/testcode/doqclient.c:2266,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:2267,1
    - Dst: get_dest_addr
      Src: /src/unbound/testcode/doqclient.c:2269,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/doqclient.c:2272,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:2274,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/doqclient.c:2275,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:2277,1
    - Dst: open_svr_udp
      Src: /src/unbound/testcode/doqclient.c:2278,1
    - Dst: get_local_addr
      Src: /src/unbound/testcode/doqclient.c:2279,1
    - Dst: conn_client_setup
      Src: /src/unbound/testcode/doqclient.c:2280,1
    - Dst: ngtcp2_ccerr_default
      Src: /src/unbound/testcode/doqclient.c:2282,1
    - Dst: ngtcp2_connection_close_error_default
      Src: /src/unbound/testcode/doqclient.c:2284,1
    - Dst: generate_static_secret
      Src: /src/unbound/testcode/doqclient.c:2291,1
    - Dst: ctx_client_setup
      Src: /src/unbound/testcode/doqclient.c:2292,1
    - Dst: SSL_CTX_set_session_cache_mode
      Src: /src/unbound/testcode/doqclient.c:2294,1
    - Dst: SSL_CTX_sess_set_new_cb
      Src: /src/unbound/testcode/doqclient.c:2297,1
    - Dst: ssl_client_setup
      Src: /src/unbound/testcode/doqclient.c:2299,1
    - Dst: ngtcp2_conn_set_tls_native_handle
      Src: /src/unbound/testcode/doqclient.c:2301,1
    - Dst: ngtcp2_conn_set_tls_native_handle
      Src: /src/unbound/testcode/doqclient.c:2303,1
    - Dst: early_data_setup
      Src: /src/unbound/testcode/doqclient.c:2306,1
    - Dst: ub_event_new
      Src: /src/unbound/testcode/doqclient.c:2308,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:2311,1
    - Dst: ub_event_add
      Src: /src/unbound/testcode/doqclient.c:2313,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:2314,1
    - Dst: ub_event_new
      Src: /src/unbound/testcode/doqclient.c:2316,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:2319,1
    - Dst: stream_list_create
      Src: /src/unbound/testcode/doqclient.c:2320,1
    - Dst: stream_list_create
      Src: /src/unbound/testcode/doqclient.c:2321,1
    - Dst: stream_list_create
      Src: /src/unbound/testcode/doqclient.c:2322,1
    - Dst: stream_list_create
      Src: /src/unbound/testcode/doqclient.c:2323,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 57
    argCount: 6
    argNames:
    - svr
    - port
    - base
    - transport_file
    - session_file
    - quiet
    argTypes:
    - char*
    - int
    - struct ub_event_base*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2325
      start: 2249
    functionDepth: 4
    functionLinenumber: 2249
    functionLinenumberEnd: 2325
    functionName: create_doq_client_data
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_new
    - open_svr_udp
    - ngtcp2_connection_close_error_default
    - ub_initstate
    - early_data_setup
    - ssl_client_setup
    - ngtcp2_conn_set_tls_native_handle
    - calloc
    - ngtcp2_ccerr_default
    - stream_list_create
    - ub_event_new
    - SSL_CTX_sess_set_new_cb
    - conn_client_setup
    - ctx_client_setup
    - SSL_CTX_set_session_cache_mode
    - get_local_addr
    - ngtcp2_crypto_quictls_init
    - fatal_exit
    - ub_event_add
    - ngtcp2_crypto_ossl_init
    - get_dest_addr
    - generate_static_secret
    linkageType: ''
    returnType: struct doq_client_data
    signature: "struct doq_client_data *\ncreate_doq_client_data(const char* svr,
      int port, struct ub_event_base* base,\n\tconst char* transport_file, const char*
      session_file, int quiet)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: addr_is_ip6
      Src: /src/unbound/testcode/doqclient.c:2335,1
    - Dst: ngtcp2_conn_get_path
      Src: /src/unbound/testcode/doqclient.c:2337,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:2338,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:2339,1
    - Dst: ngtcp2_conn_get_path
      Src: /src/unbound/testcode/doqclient.c:2343,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:2344,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:2345,1
    - Dst: SSL_set_app_data
      Src: /src/unbound/testcode/doqclient.c:2352,1
    - Dst: SSL_free
      Src: /src/unbound/testcode/doqclient.c:2353,1
    - Dst: ngtcp2_crypto_ossl_ctx_del
      Src: /src/unbound/testcode/doqclient.c:2355,1
    - Dst: ngtcp2_conn_del
      Src: /src/unbound/testcode/doqclient.c:2357,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/doqclient.c:2358,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/doqclient.c:2359,1
    - Dst: sock_close
      Src: /src/unbound/testcode/doqclient.c:2361,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/testcode/doqclient.c:2362,1
    - Dst: stream_list_free
      Src: /src/unbound/testcode/doqclient.c:2363,1
    - Dst: stream_list_free
      Src: /src/unbound/testcode/doqclient.c:2364,1
    - Dst: stream_list_free
      Src: /src/unbound/testcode/doqclient.c:2365,1
    - Dst: stream_list_free
      Src: /src/unbound/testcode/doqclient.c:2366,1
    - Dst: ub_randfree
      Src: /src/unbound/testcode/doqclient.c:2367,1
    - Dst: ub_event_del
      Src: /src/unbound/testcode/doqclient.c:2369,1
    - Dst: ub_event_free
      Src: /src/unbound/testcode/doqclient.c:2370,1
    - Dst: ub_timer_del
      Src: /src/unbound/testcode/doqclient.c:2373,1
    - Dst: ub_event_free
      Src: /src/unbound/testcode/doqclient.c:2374,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:2375,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:2376,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 35
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct doq_client_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2377
      start: 2328
    functionDepth: 4
    functionLinenumber: 2328
    functionLinenumberEnd: 2377
    functionName: delete_doq_client_data
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - ngtcp2_crypto_ossl_ctx_del
    - SSL_CTX_free
    - ub_randfree
    - ngtcp2_conn_del
    - sock_close
    - SSL_free
    - stream_list_free
    - ub_event_del
    - free
    - ngtcp2_conn_get_path
    - ub_event_free
    - sldns_buffer_free
    - addr_is_ip6
    - ub_timer_del
    - SSL_set_app_data
    linkageType: ''
    returnType: void
    signature: void delete_doq_client_data(struct doq_client_data* data)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/doqclient.c:2386,1
    - Dst: ub_default_event_base
      Src: /src/unbound/testcode/doqclient.c:2387,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:2388,1
    - Dst: ub_get_event_sys
      Src: /src/unbound/testcode/doqclient.c:2390,1
    - Dst: log_info
      Src: /src/unbound/testcode/doqclient.c:2391,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - secs
    - now
    argTypes:
    - time_t*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2394
      start: 2380
    functionDepth: 1
    functionLinenumber: 2380
    functionLinenumberEnd: 2394
    functionName: create_event_base
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_info
    - ub_get_event_sys
    - fatal_exit
    - memset
    - ub_default_event_base
    linkageType: ''
    returnType: struct ub_event_base
    signature: 'struct ub_event_base *

      create_event_base(time_t* secs, struct timeval* now)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: client_stream_create
      Src: /src/unbound/testcode/doqclient.c:2401,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/doqclient.c:2403,1
    - Dst: stream_list_append
      Src: /src/unbound/testcode/doqclient.c:2404,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - data
    - buf
    argTypes:
    - struct doq_client_data*
    - struct sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2405
      start: 2397
    functionDepth: 3
    functionLinenumber: 2397
    functionLinenumberEnd: 2405
    functionName: client_enter_query_buf
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - client_stream_create
    - fatal_exit
    - stream_list_append
    linkageType: ''
    returnType: void
    signature: void client_enter_query_buf(struct doq_client_data* data, struct sldns_buffer*
      buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: make_query
      Src: /src/unbound/testcode/doqclient.c:2414,1
    - Dst: log_buf
      Src: /src/unbound/testcode/doqclient.c:2417,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/doqclient.c:2418,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/doqclient.c:2418,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/doqclient.c:2419,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:2420,1
    - Dst: verbose
      Src: /src/unbound/testcode/doqclient.c:2421,1
    - Dst: free
      Src: /src/unbound/testcode/doqclient.c:2422,1
    - Dst: client_enter_query_buf
      Src: /src/unbound/testcode/doqclient.c:2424,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/doqclient.c:2425,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - data
    - qs
    - count
    argTypes:
    - struct doq_client_data*
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2427
      start: 2408
    functionDepth: 4
    functionLinenumber: 2408
    functionLinenumberEnd: 2427
    functionName: client_enter_queries
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - make_query
    - verbose
    - sldns_wire2str_pkt
    - sldns_buffer_limit
    - client_enter_query_buf
    - free
    - log_buf
    - sldns_buffer_free
    - sldns_buffer_begin
    linkageType: ''
    returnType: void
    signature: void client_enter_queries(struct doq_client_data* data, char** qs,
      int count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: create_event_base
      Src: /src/unbound/testcode/doqclient.c:2439,1
    - Dst: create_doq_client_data
      Src: /src/unbound/testcode/doqclient.c:2440,1
    - Dst: client_enter_queries
      Src: /src/unbound/testcode/doqclient.c:2442,1
    - Dst: early_data_start
      Src: /src/unbound/testcode/doqclient.c:2444,1
    - Dst: ub_event_base_dispatch
      Src: /src/unbound/testcode/doqclient.c:2447,1
    - Dst: delete_doq_client_data
      Src: /src/unbound/testcode/doqclient.c:2450,1
    - Dst: ub_event_base_free
      Src: /src/unbound/testcode/doqclient.c:2451,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 7
    argNames:
    - svr
    - port
    - qs
    - count
    - transport_file
    - session_file
    - quiet
    argTypes:
    - char*
    - int
    - char**
    - int
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2452
      start: 2430
    functionDepth: 9
    functionLinenumber: 2430
    functionLinenumberEnd: 2452
    functionName: run
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 4
    functionsReached:
    - client_enter_queries
    - ub_event_base_dispatch
    - ub_event_base_free
    - delete_doq_client_data
    - create_event_base
    - early_data_start
    - create_doq_client_data
    linkageType: ''
    returnType: void
    signature: "void run(const char* svr, int port, char** qs, int count,\n\tconst
      char* transport_file, const char* session_file, int quiet)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: WSAStartup
      Src: /src/unbound/testcode/doqclient.c:2468,1
    - Dst: MAKEWORD
      Src: /src/unbound/testcode/doqclient.c:2468,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:2469,1
    - Dst: checklock_set_output_name
      Src: /src/unbound/testcode/doqclient.c:2473,1
    - Dst: checklock_start
      Src: /src/unbound/testcode/doqclient.c:2474,1
    - Dst: log_init
      Src: /src/unbound/testcode/doqclient.c:2475,1
    - Dst: log_ident_set
      Src: /src/unbound/testcode/doqclient.c:2476,1
    - Dst: getopt
      Src: /src/unbound/testcode/doqclient.c:2478,1
    - Dst: atoi
      Src: /src/unbound/testcode/doqclient.c:2481,1
    - Dst: strcmp
      Src: /src/unbound/testcode/doqclient.c:2481,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:2482,1
    - Dst: atoi
      Src: /src/unbound/testcode/doqclient.c:2486,1
    - Dst: usage
      Src: /src/unbound/testcode/doqclient.c:2506,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:2514,1
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:2518,1
    - Dst: run
      Src: /src/unbound/testcode/doqclient.c:2522,1
    - Dst: checklock_stop
      Src: /src/unbound/testcode/doqclient.c:2524,1
    - Dst: WSACleanup
      Src: /src/unbound/testcode/doqclient.c:2526,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 53
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED(argv)
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2529
      start: 2460
    functionDepth: 4
    functionLinenumber: 2460
    functionLinenumberEnd: 2529
    functionName: main
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 31
    functionsReached:
    - getopt
    - strcmp
    - WSACleanup
    - run
    - printf
    - log_init
    - atoi
    - log_ident_set
    - checklock_stop
    - checklock_set_output_name
    - MAKEWORD
    - WSAStartup
    - checklock_start
    - usage
    linkageType: ''
    returnType: int
    signature: int main(int ATTR_UNUSED(argc), char** ATTR_UNUSED(argv))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/doqclient.c:2533,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED(argv)
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2535
      start: 2531
    functionDepth: 0
    functionLinenumber: 2531
    functionLinenumberEnd: 2535
    functionName: main
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 31
    functionsReached:
    - printf
    linkageType: ''
    returnType: int
    signature: int main(int ATTR_UNUSED(argc), char** ATTR_UNUSED(argv))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2553,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ATTR_UNUSED(tube)
    - ATTR_UNUSED(buffer)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - struct tube*
    - uint8_t*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2554
      start: 2549
    functionDepth: 1
    functionLinenumber: 2549
    functionLinenumberEnd: 2554
    functionName: worker_handle_control_cmd
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void worker_handle_control_cmd(struct tube* ATTR_UNUSED(tube),\n\tuint8_t*
      ATTR_UNUSED(buffer), size_t ATTR_UNUSED(len),\n\tint ATTR_UNUSED(error), void*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2560,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2562
      start: 2556
    functionDepth: 1
    functionLinenumber: 2556
    functionLinenumberEnd: 2562
    functionName: worker_handle_request
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int worker_handle_request(struct comm_point* ATTR_UNUSED(c), \n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2568,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(reply_info)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2570
      start: 2564
    functionDepth: 1
    functionLinenumber: 2564
    functionLinenumberEnd: 2570
    functionName: worker_handle_service_reply
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int worker_handle_service_reply(struct comm_point* ATTR_UNUSED(c),
      \n\tvoid* ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply*
      ATTR_UNUSED(reply_info))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2576,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2578
      start: 2572
    functionDepth: 1
    functionLinenumber: 2572
    functionLinenumberEnd: 2578
    functionName: remote_accept_callback
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int remote_accept_callback(struct comm_point* ATTR_UNUSED(c), \n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2584,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2586
      start: 2580
    functionDepth: 1
    functionLinenumber: 2580
    functionLinenumberEnd: 2586
    functionName: remote_control_callback
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 1
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int remote_control_callback(struct comm_point* ATTR_UNUSED(c), \n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2590,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2591
      start: 2588
    functionDepth: 1
    functionLinenumber: 2588
    functionLinenumberEnd: 2591
    functionName: worker_sighandler
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 1
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_sighandler(int ATTR_UNUSED(sig), void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2604,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 16
    argNames:
    - ATTR_UNUSED(qinfo)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(addr)
    - ATTR_UNUSED
    - ATTR_UNUSED(zone)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(tls_auth_name)
    - ATTR_UNUSED(q)
    - ATTR_UNUSED(was_ratelimited)
    - ATTR_UNUSED(ratelimit_incremented)
    argTypes:
    - struct query_info*
    - uint16_t
    - int
    - int
    - int
    - int
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - int
    - int
    - char*
    - struct module_qstate*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2606
      start: 2593
    functionDepth: 1
    functionLinenumber: 2593
    functionLinenumberEnd: 2606
    functionName: worker_send_query
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: struct outbound_entry
    signature: "struct outbound_entry * worker_send_query(\n\tstruct query_info* ATTR_UNUSED(qinfo),
      uint16_t ATTR_UNUSED(flags),\n\tint ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec),\n\tint
      ATTR_UNUSED(nocaps), int ATTR_UNUSED(check_ratelimit),\n\tstruct sockaddr_storage*
      ATTR_UNUSED(addr),\n\tsocklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone),\n\tsize_t
      ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream),\n\tint ATTR_UNUSED(ssl_upstream),
      char* ATTR_UNUSED(tls_auth_name),\n\tstruct module_qstate* ATTR_UNUSED(q), int*
      ATTR_UNUSED(was_ratelimited),\n\tint* ATTR_UNUSED(ratelimit_incremented))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2612,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2613
      start: 2609
    functionDepth: 1
    functionLinenumber: 2609
    functionLinenumberEnd: 2613
    functionName: worker_win_stop_cb
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void worker_win_stop_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),
      void* \n\tATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2618,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2619
      start: 2615
    functionDepth: 1
    functionLinenumber: 2615
    functionLinenumberEnd: 2619
    functionName: wsvc_cron_cb
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void wsvc_cron_cb(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2626
      start: 2622
    functionDepth: 1
    functionLinenumber: 2622
    functionLinenumberEnd: 2626
    functionName: worker_alloc_cleanup
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_alloc_cleanup(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2639,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 16
    argNames:
    - ATTR_UNUSED(qinfo)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(addr)
    - ATTR_UNUSED
    - ATTR_UNUSED(zone)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(tls_auth_name)
    - ATTR_UNUSED(q)
    - ATTR_UNUSED(was_ratelimited)
    - ATTR_UNUSED(ratelimit_incremented)
    argTypes:
    - struct query_info*
    - uint16_t
    - int
    - int
    - int
    - int
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - int
    - int
    - char*
    - struct module_qstate*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2641
      start: 2628
    functionDepth: 1
    functionLinenumber: 2628
    functionLinenumberEnd: 2641
    functionName: libworker_send_query
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: struct outbound_entry
    signature: "struct outbound_entry * libworker_send_query(\n\tstruct query_info*
      ATTR_UNUSED(qinfo), uint16_t ATTR_UNUSED(flags),\n\tint ATTR_UNUSED(dnssec),
      int ATTR_UNUSED(want_dnssec),\n\tint ATTR_UNUSED(nocaps), int ATTR_UNUSED(check_ratelimit),\n\tstruct
      sockaddr_storage* ATTR_UNUSED(addr),\n\tsocklen_t ATTR_UNUSED(addrlen), uint8_t*
      ATTR_UNUSED(zone),\n\tsize_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream),\n\tint
      ATTR_UNUSED(ssl_upstream), char* ATTR_UNUSED(tls_auth_name),\n\tstruct module_qstate*
      ATTR_UNUSED(q), int* ATTR_UNUSED(was_ratelimited),\n\tint* ATTR_UNUSED(ratelimit_incremented))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2647,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(reply_info)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2649
      start: 2643
    functionDepth: 1
    functionLinenumber: 2643
    functionLinenumberEnd: 2649
    functionName: libworker_handle_service_reply
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int libworker_handle_service_reply(struct comm_point* ATTR_UNUSED(c),
      \n\tvoid* ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply*
      ATTR_UNUSED(reply_info))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2655,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ATTR_UNUSED(tube)
    - ATTR_UNUSED(buffer)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - struct tube*
    - uint8_t*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2656
      start: 2651
    functionDepth: 1
    functionLinenumber: 2651
    functionLinenumberEnd: 2656
    functionName: libworker_handle_control_cmd
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void libworker_handle_control_cmd(struct tube* ATTR_UNUSED(tube),\n
      \       uint8_t* ATTR_UNUSED(buffer), size_t ATTR_UNUSED(len),\n        int
      ATTR_UNUSED(error), void* ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2662,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(buf)
    - ATTR_UNUSED
    - ATTR_UNUSED(why_bogus)
    - ATTR_UNUSED
    argTypes:
    - void*
    - int
    - struct sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2663
      start: 2658
    functionDepth: 1
    functionLinenumber: 2658
    functionLinenumberEnd: 2663
    functionName: libworker_fg_done_cb
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void libworker_fg_done_cb(void* ATTR_UNUSED(arg), int ATTR_UNUSED(rcode),
      \n\tstruct sldns_buffer* ATTR_UNUSED(buf), enum sec_status ATTR_UNUSED(s),\n\tchar*
      ATTR_UNUSED(why_bogus), int ATTR_UNUSED(was_ratelimited))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2669,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(buf)
    - ATTR_UNUSED
    - ATTR_UNUSED(why_bogus)
    - ATTR_UNUSED
    argTypes:
    - void*
    - int
    - struct sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2670
      start: 2665
    functionDepth: 1
    functionLinenumber: 2665
    functionLinenumberEnd: 2670
    functionName: libworker_bg_done_cb
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void libworker_bg_done_cb(void* ATTR_UNUSED(arg), int ATTR_UNUSED(rcode),
      \n\tstruct sldns_buffer* ATTR_UNUSED(buf), enum sec_status ATTR_UNUSED(s),\n\tchar*
      ATTR_UNUSED(why_bogus), int ATTR_UNUSED(was_ratelimited))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2676,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(buf)
    - ATTR_UNUSED
    - ATTR_UNUSED(why_bogus)
    - ATTR_UNUSED
    argTypes:
    - void*
    - int
    - struct sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2677
      start: 2672
    functionDepth: 1
    functionLinenumber: 2672
    functionLinenumberEnd: 2677
    functionName: libworker_event_done_cb
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 1
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void libworker_event_done_cb(void* ATTR_UNUSED(arg), int ATTR_UNUSED(rcode),
      \n\tstruct sldns_buffer* ATTR_UNUSED(buf), enum sec_status ATTR_UNUSED(s),\n\tchar*
      ATTR_UNUSED(why_bogus), int ATTR_UNUSED(was_ratelimited))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2681,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2682
      start: 2679
    functionDepth: 1
    functionLinenumber: 2679
    functionLinenumberEnd: 2682
    functionName: libworker_alloc_cleanup
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void libworker_alloc_cleanup(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2686,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED(a)
    - ATTR_UNUSED(b)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2688
      start: 2684
    functionDepth: 1
    functionLinenumber: 2684
    functionLinenumberEnd: 2688
    functionName: context_query_cmp
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int context_query_cmp(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2692,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2693
      start: 2690
    functionDepth: 1
    functionLinenumber: 2690
    functionLinenumberEnd: 2693
    functionName: worker_stat_timer_cb
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_stat_timer_cb(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2697,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2698
      start: 2695
    functionDepth: 1
    functionLinenumber: 2695
    functionLinenumberEnd: 2698
    functionName: worker_probe_timer_cb
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_probe_timer_cb(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2702,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2703
      start: 2700
    functionDepth: 1
    functionLinenumber: 2700
    functionLinenumberEnd: 2703
    functionName: worker_start_accept
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_start_accept(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2707,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2708
      start: 2705
    functionDepth: 1
    functionLinenumber: 2705
    functionLinenumberEnd: 2708
    functionName: worker_stop_accept
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_stop_accept(void* ATTR_UNUSED(arg))
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - e1
    - e2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2727
      start: 2718
    functionDepth: 0
    functionLinenumber: 2718
    functionLinenumberEnd: 2727
    functionName: order_lock_cmp
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int order_lock_cmp(const void* e1, const void* e2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/testcode/doqclient.c:2732,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2733
      start: 2729
    functionDepth: 0
    functionLinenumber: 2729
    functionLinenumberEnd: 2733
    functionName: codeline_cmp
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int codeline_cmp(const void* a, const void* b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2737,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED(a)
    - ATTR_UNUSED(b)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2739
      start: 2735
    functionDepth: 1
    functionLinenumber: 2735
    functionLinenumberEnd: 2739
    functionName: replay_var_compare
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int replay_var_compare(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2743,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED(str)
    - ATTR_UNUSED(arg)
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2744
      start: 2741
    functionDepth: 1
    functionLinenumber: 2741
    functionLinenumberEnd: 2744
    functionName: remote_get_opt_ssl
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void remote_get_opt_ssl(char* ATTR_UNUSED(str), void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2750,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2751
      start: 2747
    functionDepth: 1
    functionLinenumber: 2747
    functionLinenumberEnd: 2751
    functionName: dtio_tap_callback
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void dtio_tap_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2758,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2759
      start: 2755
    functionDepth: 1
    functionLinenumber: 2755
    functionLinenumberEnd: 2759
    functionName: dtio_mainfdcallback
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void dtio_mainfdcallback(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2765,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2766
      start: 2762
    functionDepth: 1
    functionLinenumber: 2762
    functionLinenumberEnd: 2766
    functionName: fast_reload_service_cb
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void fast_reload_service_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/doqclient.c:2772,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2774
      start: 2768
    functionDepth: 1
    functionLinenumber: 2768
    functionLinenumberEnd: 2774
    functionName: fast_reload_client_callback
    functionSourceFile: /src/unbound/testcode/doqclient.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int fast_reload_client_callback(struct comm_point* ATTR_UNUSED(c),\n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:61,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:62,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:63,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:64,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:65,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:66,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:67,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:68,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:69,1
    - Dst: exit
      Src: /src/unbound/testcode/perf.c:70,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - nm
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 71
    functionName: usage
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 9
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(char* nm)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/perf.c:153,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:155,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - sig
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 151
    functionDepth: 1
    functionLinenumber: 151
    functionLinenumberEnd: 157
    functionName: perf_sigh
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 0
    functionsReached:
    - log_assert
    - printf
    linkageType: ''
    returnType: RETSIGTYPE
    signature: RETSIGTYPE perf_sigh(int sig)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - t1
    - t2
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 160
    functionDepth: 0
    functionLinenumber: 160
    functionLinenumberEnd: 171
    functionName: perf_tv_smaller
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int perf_tv_smaller(struct timeval* t1, struct timeval* t2)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - t1
    - t2
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 185
    functionName: perf_tv_add
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void perf_tv_add(struct timeval* t1, struct timeval* t2)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - t1
    - t2
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 200
    functionName: perf_tv_subtract
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void perf_tv_subtract(struct timeval* t1, struct timeval* t2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/unbound/testcode/perf.c:208,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/perf.c:209,1
    - Dst: strerror
      Src: /src/unbound/testcode/perf.c:209,1
    - Dst: signal
      Src: /src/unbound/testcode/perf.c:211,1
    - Dst: signal
      Src: /src/unbound/testcode/perf.c:213,1
    - Dst: signal
      Src: /src/unbound/testcode/perf.c:216,1
    - Dst: signal
      Src: /src/unbound/testcode/perf.c:219,1
    - Dst: signal
      Src: /src/unbound/testcode/perf.c:221,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/perf.c:222,1
    - Dst: calloc
      Src: /src/unbound/testcode/perf.c:223,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/perf.c:224,1
    - Dst: FD_ZERO
      Src: /src/unbound/testcode/perf.c:226,1
    - Dst: socket
      Src: /src/unbound/testcode/perf.c:232,1
    - Dst: addr_is_ip6
      Src: /src/unbound/testcode/perf.c:233,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/perf.c:236,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/perf.c:236,1
    - Dst: perf_tv_add
      Src: /src/unbound/testcode/perf.c:245,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct perfinfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 248
    functionName: perfsetup
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 0
    functionsReached:
    - perf_tv_add
    - socket
    - fatal_exit
    - FD_ZERO
    - calloc
    - sock_strerror
    - strerror
    - gettimeofday
    - addr_is_ip6
    - signal
    linkageType: ''
    returnType: void
    signature: void perfsetup(struct perfinfo* info)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sock_close
      Src: /src/unbound/testcode/perf.c:258,1
    - Dst: free
      Src: /src/unbound/testcode/perf.c:260,1
    - Dst: free
      Src: /src/unbound/testcode/perf.c:263,1
    - Dst: free
      Src: /src/unbound/testcode/perf.c:264,1
    - Dst: free
      Src: /src/unbound/testcode/perf.c:265,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct perfinfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 266
    functionName: perffree
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 0
    functionsReached:
    - free
    - sock_close
    linkageType: ''
    returnType: void
    signature: void perffree(struct perfinfo* info)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sendto
      Src: /src/unbound/testcode/perf.c:273,1
    - Dst: log_err
      Src: /src/unbound/testcode/perf.c:279,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/perf.c:279,1
    - Dst: log_err
      Src: /src/unbound/testcode/perf.c:281,1
    - Dst: perf_tv_add
      Src: /src/unbound/testcode/perf.c:288,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - info
    - n
    - now
    argTypes:
    - struct perfinfo*
    - size_t
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 289
    functionName: perfsend
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 0
    functionsReached:
    - log_err
    - perf_tv_add
    - sock_strerror
    - sendto
    linkageType: ''
    returnType: void
    signature: void perfsend(struct perfinfo* info, size_t n, struct timeval* now)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: recv
      Src: /src/unbound/testcode/perf.c:296,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/perf.c:296,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/testcode/perf.c:297,1
    - Dst: log_err
      Src: /src/unbound/testcode/perf.c:299,1
    - Dst: sock_strerror
      Src: /src/unbound/testcode/perf.c:299,1
    - Dst: LDNS_RCODE_WIRE
      Src: /src/unbound/testcode/perf.c:301,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/perf.c:301,1
    - Dst: perfsend
      Src: /src/unbound/testcode/perf.c:307,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 3
    argNames:
    - info
    - n
    - now
    argTypes:
    - struct perfinfo*
    - size_t
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 292
    functionDepth: 2
    functionLinenumber: 292
    functionLinenumberEnd: 308
    functionName: perfreply
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - log_err
    - LDNS_RCODE_WIRE
    - sock_strerror
    - sldns_buffer_begin
    - perfsend
    - recv
    linkageType: ''
    returnType: void
    signature: void perfreply(struct perfinfo* info, size_t n, struct timeval* now)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: perfsend
      Src: /src/unbound/testcode/perf.c:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - info
    - n
    - now
    argTypes:
    - struct perfinfo*
    - size_t
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 311
    functionDepth: 2
    functionLinenumber: 311
    functionLinenumberEnd: 317
    functionName: perftimeout
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 0
    functionsReached:
    - perfsend
    linkageType: ''
    returnType: void
    signature: void perftimeout(struct perfinfo* info, size_t n, struct timeval* now)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:332,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - info
    - now
    - elapsed
    argTypes:
    - struct perfinfo*
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 339
    functionName: stat_printout
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: "void stat_printout(struct perfinfo* info, struct timeval* now, \n\tstruct
      timeval* elapsed)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/unbound/testcode/perf.c:349,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/perf.c:350,1
    - Dst: strerror
      Src: /src/unbound/testcode/perf.c:350,1
    - Dst: perf_tv_subtract
      Src: /src/unbound/testcode/perf.c:354,1
    - Dst: perf_tv_subtract
      Src: /src/unbound/testcode/perf.c:362,1
    - Dst: stat_printout
      Src: /src/unbound/testcode/perf.c:364,1
    - Dst: perf_tv_smaller
      Src: /src/unbound/testcode/perf.c:369,1
    - Dst: perftimeout
      Src: /src/unbound/testcode/perf.c:370,1
    - Dst: perf_tv_smaller
      Src: /src/unbound/testcode/perf.c:373,1
    - Dst: perf_tv_subtract
      Src: /src/unbound/testcode/perf.c:377,1
    - Dst: select
      Src: /src/unbound/testcode/perf.c:379,1
    - Dst: log_err
      Src: /src/unbound/testcode/perf.c:383,1
    - Dst: strerror
      Src: /src/unbound/testcode/perf.c:383,1
    - Dst: FD_ISSET
      Src: /src/unbound/testcode/perf.c:388,1
    - Dst: perfreply
      Src: /src/unbound/testcode/perf.c:389,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 39
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct perfinfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 342
    functionDepth: 3
    functionLinenumber: 342
    functionLinenumberEnd: 393
    functionName: perfselect
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 0
    functionsReached:
    - log_err
    - stat_printout
    - select
    - perftimeout
    - fatal_exit
    - FD_ISSET
    - perf_tv_smaller
    - strerror
    - gettimeofday
    - perfreply
    - perf_tv_subtract
    linkageType: ''
    returnType: void
    signature: void perfselect(struct perfinfo* info)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/unbound/testcode/perf.c:402,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/perf.c:403,1
    - Dst: strerror
      Src: /src/unbound/testcode/perf.c:403,1
    - Dst: perf_tv_subtract
      Src: /src/unbound/testcode/perf.c:405,1
    - Dst: stat_printout
      Src: /src/unbound/testcode/perf.c:406,1
    - Dst: perf_tv_subtract
      Src: /src/unbound/testcode/perf.c:409,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:414,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:418,1
    - Dst: sldns_wire2str_rcode_buf
      Src: /src/unbound/testcode/perf.c:424,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:425,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:430,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct perfinfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 431
      start: 396
    functionDepth: 2
    functionLinenumber: 396
    functionLinenumberEnd: 431
    functionName: perfendstats
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 0
    functionsReached:
    - stat_printout
    - sldns_wire2str_rcode_buf
    - printf
    - fatal_exit
    - strerror
    - gettimeofday
    - perf_tv_subtract
    linkageType: ''
    returnType: void
    signature: void perfendstats(struct perfinfo* info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: perfsetup
      Src: /src/unbound/testcode/perf.c:437,1
    - Dst: perfselect
      Src: /src/unbound/testcode/perf.c:439,1
    - Dst: perfendstats
      Src: /src/unbound/testcode/perf.c:441,1
    - Dst: perffree
      Src: /src/unbound/testcode/perf.c:442,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct perfinfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 434
    functionDepth: 4
    functionLinenumber: 434
    functionLinenumberEnd: 443
    functionName: perfmain
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 0
    functionsReached:
    - perfendstats
    - perfselect
    - perfsetup
    - perffree
    linkageType: ''
    returnType: void
    signature: void perfmain(struct perfinfo* info)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: sscanf
      Src: /src/unbound/testcode/perf.c:454,1
    - Dst: strcmp
      Src: /src/unbound/testcode/perf.c:458,1
    - Dst: strcmp
      Src: /src/unbound/testcode/perf.c:458,1
    - Dst: sldns_get_rr_type_by_name
      Src: /src/unbound/testcode/perf.c:459,1
    - Dst: sldns_get_rr_class_by_name
      Src: /src/unbound/testcode/perf.c:460,1
    - Dst: strcmp
      Src: /src/unbound/testcode/perf.c:461,1
    - Dst: strcmp
      Src: /src/unbound/testcode/perf.c:462,1
    - Dst: sldns_get_rr_type_by_name
      Src: /src/unbound/testcode/perf.c:466,1
    - Dst: sldns_get_rr_class_by_name
      Src: /src/unbound/testcode/perf.c:467,1
    - Dst: strcmp
      Src: /src/unbound/testcode/perf.c:468,1
    - Dst: strcmp
      Src: /src/unbound/testcode/perf.c:469,1
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/testcode/perf.c:478,1
    - Dst: qinfo_query_encode
      Src: /src/unbound/testcode/perf.c:482,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/testcode/perf.c:483,1
    - Dst: LDNS_RD_SET
      Src: /src/unbound/testcode/perf.c:484,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/perf.c:484,1
    - Dst: memset
      Src: /src/unbound/testcode/perf.c:487,1
    - Dst: attach_edns_record
      Src: /src/unbound/testcode/perf.c:492,1
    - Dst: free
      Src: /src/unbound/testcode/perf.c:494,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 46
    argCount: 2
    argNames:
    - buf
    - p
    argTypes:
    - sldns_buffer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 446
    functionDepth: 4
    functionLinenumber: 446
    functionLinenumberEnd: 496
    functionName: qlist_parse_line
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 0
    functionsReached:
    - strcmp
    - attach_edns_record
    - sldns_get_rr_class_by_name
    - qinfo_query_encode
    - free
    - sldns_str2wire_dname
    - sldns_buffer_begin
    - memset
    - sscanf
    - LDNS_RD_SET
    - sldns_buffer_write_u16_at
    - sldns_get_rr_type_by_name
    linkageType: ''
    returnType: int
    signature: int qlist_parse_line(sldns_buffer* buf, char* p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/perf.c:504,1
    - Dst: calloc
      Src: /src/unbound/testcode/perf.c:505,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/perf.c:506,1
    - Dst: memcpy
      Src: /src/unbound/testcode/perf.c:508,1
    - Dst: memcpy
      Src: /src/unbound/testcode/perf.c:511,1
    - Dst: free
      Src: /src/unbound/testcode/perf.c:513,1
    - Dst: free
      Src: /src/unbound/testcode/perf.c:514,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct perfinfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 518
      start: 499
    functionDepth: 1
    functionLinenumber: 499
    functionLinenumberEnd: 518
    functionName: qlist_grow_capacity
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 0
    functionsReached:
    - free
    - memcpy
    - calloc
    - fatal_exit
    linkageType: ''
    returnType: void
    signature: void qlist_grow_capacity(struct perfinfo* info)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: qlist_parse_line
      Src: /src/unbound/testcode/perf.c:524,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:525,1
    - Dst: exit
      Src: /src/unbound/testcode/perf.c:526,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/testcode/perf.c:528,1
    - Dst: qlist_grow_capacity
      Src: /src/unbound/testcode/perf.c:530,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/perf.c:532,1
    - Dst: memdup
      Src: /src/unbound/testcode/perf.c:533,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/perf.c:534,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/perf.c:534,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/perf.c:536,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 3
    argNames:
    - info
    - line
    - 'no'
    argTypes:
    - struct perfinfo*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 521
    functionDepth: 5
    functionLinenumber: 521
    functionLinenumberEnd: 538
    functionName: qlist_add_line
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 0
    functionsReached:
    - exit
    - qlist_parse_line
    - printf
    - sldns_buffer_limit
    - fatal_exit
    - qlist_grow_capacity
    - sldns_buffer_begin
    - memdup
    - sldns_buffer_write_u16_at
    linkageType: ''
    returnType: void
    signature: void qlist_add_line(struct perfinfo* info, char* line, int no)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/testcode/perf.c:546,1
    - Dst: perror
      Src: /src/unbound/testcode/perf.c:549,1
    - Dst: exit
      Src: /src/unbound/testcode/perf.c:550,1
    - Dst: fgets
      Src: /src/unbound/testcode/perf.c:552,1
    - Dst: qlist_add_line
      Src: /src/unbound/testcode/perf.c:560,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:562,1
    - Dst: fclose
      Src: /src/unbound/testcode/perf.c:563,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - info
    - fname
    argTypes:
    - struct perfinfo*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 541
    functionDepth: 6
    functionLinenumber: 541
    functionLinenumberEnd: 564
    functionName: qlist_read_file
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 0
    functionsReached:
    - exit
    - perror
    - fclose
    - printf
    - fopen
    - qlist_add_line
    - fgets
    linkageType: ''
    returnType: void
    signature: void qlist_read_file(struct perfinfo* info, char* fname)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/perf.c:583,1
    - Dst: checklock_start
      Src: /src/unbound/testcode/perf.c:586,1
    - Dst: log_init
      Src: /src/unbound/testcode/perf.c:587,1
    - Dst: log_ident_set
      Src: /src/unbound/testcode/perf.c:588,1
    - Dst: WSAStartup
      Src: /src/unbound/testcode/perf.c:590,1
    - Dst: MAKEWORD
      Src: /src/unbound/testcode/perf.c:590,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/perf.c:591,1
    - Dst: wsa_strerror
      Src: /src/unbound/testcode/perf.c:591,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/perf.c:594,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/perf.c:595,1
    - Dst: getopt
      Src: /src/unbound/testcode/perf.c:598,1
    - Dst: atoi
      Src: /src/unbound/testcode/perf.c:604,1
    - Dst: strcmp
      Src: /src/unbound/testcode/perf.c:604,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:605,1
    - Dst: exit
      Src: /src/unbound/testcode/perf.c:606,1
    - Dst: atoi
      Src: /src/unbound/testcode/perf.c:608,1
    - Dst: qlist_add_line
      Src: /src/unbound/testcode/perf.c:611,1
    - Dst: qlist_read_file
      Src: /src/unbound/testcode/perf.c:614,1
    - Dst: usage
      Src: /src/unbound/testcode/perf.c:619,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:626,1
    - Dst: usage
      Src: /src/unbound/testcode/perf.c:627,1
    - Dst: extstrtoaddr
      Src: /src/unbound/testcode/perf.c:629,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:630,1
    - Dst: exit
      Src: /src/unbound/testcode/perf.c:631,1
    - Dst: printf
      Src: /src/unbound/testcode/perf.c:634,1
    - Dst: exit
      Src: /src/unbound/testcode/perf.c:635,1
    - Dst: perfmain
      Src: /src/unbound/testcode/perf.c:639,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/perf.c:641,1
    - Dst: WSACleanup
      Src: /src/unbound/testcode/perf.c:643,1
    - Dst: checklock_stop
      Src: /src/unbound/testcode/perf.c:645,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 54
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 647
      start: 572
    functionDepth: 7
    functionLinenumber: 572
    functionLinenumberEnd: 647
    functionName: main
    functionSourceFile: /src/unbound/testcode/perf.c
    functionUses: 32
    functionsReached:
    - getopt
    - sldns_buffer_new
    - strcmp
    - WSACleanup
    - log_init
    - perfmain
    - atoi
    - sldns_buffer_free
    - memset
    - printf
    - qlist_read_file
    - log_ident_set
    - wsa_strerror
    - checklock_stop
    - qlist_add_line
    - MAKEWORD
    - exit
    - extstrtoaddr
    - fatal_exit
    - WSAStartup
    - checklock_start
    - usage
    linkageType: ''
    returnType: int
    signature: int main(int argc, char* argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:79,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:80,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:81,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:82,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:83,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:84,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:85,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:86,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:87,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:88,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:89,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:90,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:91,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:92,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:93,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 94
    functionName: testbound_usage
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void testbound_usage(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/testcode/testbound.c:110,1
    - Dst: strchr
      Src: /src/unbound/testcode/testbound.c:114,1
    - Dst: strlen
      Src: /src/unbound/testcode/testbound.c:116,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/testbound.c:119,1
    - Dst: malloc
      Src: /src/unbound/testcode/testbound.c:120,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/testbound.c:122,1
    - Dst: memcpy
      Src: /src/unbound/testcode/testbound.c:123,1
    - Dst: isspace
      Src: /src/unbound/testcode/testbound.c:128,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 19
    argCount: 3
    argNames:
    - args
    - pass_argc
    - pass_argv
    argTypes:
    - char*
    - int*
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 131
    functionName: add_opts
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached:
    - memcpy
    - isspace
    - fatal_exit
    - malloc
    - strlen
    - strchr
    linkageType: ''
    returnType: void
    signature: void add_opts(const char* args, int* pass_argc, char* pass_argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/unbound/testcode/testbound.c:138,1
    - Dst: fprintf
      Src: /src/unbound/testcode/testbound.c:140,1
    - Dst: fprintf
      Src: /src/unbound/testcode/testbound.c:142,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 143
    functionName: echo_cmdline
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void echo_cmdline(int argc, char* argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/testcode/testbound.c:151,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/testbound.c:154,1
    - Dst: strip_end_white
      Src: /src/unbound/testcode/testbound.c:155,1
    - Dst: fake_temp_file
      Src: /src/unbound/testcode/testbound.c:156,1
    - Dst: fprintf
      Src: /src/unbound/testcode/testbound.c:157,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - lineno
    - cfg
    - id
    argTypes:
    - int*
    - FILE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 158
    functionName: spool_temp_file_name
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached:
    - isspace
    - fake_temp_file
    - fatal_exit
    - strip_end_white
    - fprintf
    linkageType: ''
    returnType: void
    signature: void spool_temp_file_name(int* lineno, FILE* cfg, char* id)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/testcode/testbound.c:168,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/testbound.c:171,1
    - Dst: strip_end_white
      Src: /src/unbound/testcode/testbound.c:172,1
    - Dst: fake_temp_file
      Src: /src/unbound/testcode/testbound.c:173,1
    - Dst: fopen
      Src: /src/unbound/testcode/testbound.c:175,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/testbound.c:176,1
    - Dst: strerror
      Src: /src/unbound/testcode/testbound.c:176,1
    - Dst: fprintf
      Src: /src/unbound/testcode/testbound.c:177,1
    - Dst: cfg_strlist_insert
      Src: /src/unbound/testcode/testbound.c:178,1
    - Dst: strdup
      Src: /src/unbound/testcode/testbound.c:178,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/testbound.c:179,1
    - Dst: fgets
      Src: /src/unbound/testcode/testbound.c:181,1
    - Dst: isspace
      Src: /src/unbound/testcode/testbound.c:184,1
    - Dst: strncmp
      Src: /src/unbound/testcode/testbound.c:186,1
    - Dst: isspace
      Src: /src/unbound/testcode/testbound.c:190,1
    - Dst: strip_end_white
      Src: /src/unbound/testcode/testbound.c:192,1
    - Dst: fake_temp_file
      Src: /src/unbound/testcode/testbound.c:193,1
    - Dst: snprintf
      Src: /src/unbound/testcode/testbound.c:194,1
    - Dst: strncmp
      Src: /src/unbound/testcode/testbound.c:196,1
    - Dst: fclose
      Src: /src/unbound/testcode/testbound.c:197,1
    - Dst: fputs
      Src: /src/unbound/testcode/testbound.c:200,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/testbound.c:202,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 3
    argNames:
    - in
    - lineno
    - id
    argTypes:
    - FILE*
    - int*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 161
    functionDepth: 2
    functionLinenumber: 161
    functionLinenumberEnd: 203
    functionName: spool_temp_file
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached:
    - strncmp
    - isspace
    - fake_temp_file
    - fputs
    - snprintf
    - fclose
    - cfg_strlist_insert
    - fatal_exit
    - strip_end_white
    - fopen
    - strerror
    - fgets
    - fprintf
    - strdup
    linkageType: ''
    returnType: void
    signature: void spool_temp_file(FILE* in, int* lineno, char* id)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/testcode/testbound.c:213,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/testbound.c:216,1
    - Dst: strip_end_white
      Src: /src/unbound/testcode/testbound.c:217,1
    - Dst: fake_temp_file
      Src: /src/unbound/testcode/testbound.c:218,1
    - Dst: fprintf
      Src: /src/unbound/testcode/testbound.c:220,1
    - Dst: fopen
      Src: /src/unbound/testcode/testbound.c:222,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/testbound.c:223,1
    - Dst: strerror
      Src: /src/unbound/testcode/testbound.c:223,1
    - Dst: fprintf
      Src: /src/unbound/testcode/testbound.c:224,1
    - Dst: cfg_strlist_insert
      Src: /src/unbound/testcode/testbound.c:225,1
    - Dst: strdup
      Src: /src/unbound/testcode/testbound.c:225,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/testbound.c:226,1
    - Dst: fgets
      Src: /src/unbound/testcode/testbound.c:228,1
    - Dst: isspace
      Src: /src/unbound/testcode/testbound.c:231,1
    - Dst: strncmp
      Src: /src/unbound/testcode/testbound.c:233,1
    - Dst: fclose
      Src: /src/unbound/testcode/testbound.c:234,1
    - Dst: fputs
      Src: /src/unbound/testcode/testbound.c:237,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/testbound.c:239,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 4
    argNames:
    - in
    - lineno
    - cfg
    - id
    argTypes:
    - FILE*
    - int*
    - FILE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 240
    functionName: spool_auto_file
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached:
    - strncmp
    - isspace
    - fake_temp_file
    - fputs
    - fclose
    - cfg_strlist_insert
    - fatal_exit
    - strip_end_white
    - fopen
    - strerror
    - fgets
    - fprintf
    - strdup
    linkageType: ''
    returnType: void
    signature: void spool_auto_file(FILE* in, int* lineno, FILE* cfg, char* id)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: fake_temp_file
      Src: /src/unbound/testcode/testbound.c:250,1
    - Dst: add_opts
      Src: /src/unbound/testcode/testbound.c:251,1
    - Dst: add_opts
      Src: /src/unbound/testcode/testbound.c:252,1
    - Dst: fopen
      Src: /src/unbound/testcode/testbound.c:253,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/testbound.c:254,1
    - Dst: strerror
      Src: /src/unbound/testcode/testbound.c:255,1
    - Dst: cfg_strlist_insert
      Src: /src/unbound/testcode/testbound.c:256,1
    - Dst: strdup
      Src: /src/unbound/testcode/testbound.c:256,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/testbound.c:257,1
    - Dst: fprintf
      Src: /src/unbound/testcode/testbound.c:260,1
    - Dst: fprintf
      Src: /src/unbound/testcode/testbound.c:261,1
    - Dst: fprintf
      Src: /src/unbound/testcode/testbound.c:262,1
    - Dst: fprintf
      Src: /src/unbound/testcode/testbound.c:263,1
    - Dst: fprintf
      Src: /src/unbound/testcode/testbound.c:264,1
    - Dst: fprintf
      Src: /src/unbound/testcode/testbound.c:265,1
    - Dst: fprintf
      Src: /src/unbound/testcode/testbound.c:266,1
    - Dst: fprintf
      Src: /src/unbound/testcode/testbound.c:267,1
    - Dst: fgets
      Src: /src/unbound/testcode/testbound.c:268,1
    - Dst: isspace
      Src: /src/unbound/testcode/testbound.c:271,1
    - Dst: strncmp
      Src: /src/unbound/testcode/testbound.c:275,1
    - Dst: strlen
      Src: /src/unbound/testcode/testbound.c:276,1
    - Dst: add_opts
      Src: /src/unbound/testcode/testbound.c:277,1
    - Dst: strncmp
      Src: /src/unbound/testcode/testbound.c:280,1
    - Dst: spool_auto_file
      Src: /src/unbound/testcode/testbound.c:281,1
    - Dst: strncmp
      Src: /src/unbound/testcode/testbound.c:284,1
    - Dst: spool_temp_file_name
      Src: /src/unbound/testcode/testbound.c:285,1
    - Dst: strncmp
      Src: /src/unbound/testcode/testbound.c:288,1
    - Dst: spool_temp_file
      Src: /src/unbound/testcode/testbound.c:289,1
    - Dst: strncmp
      Src: /src/unbound/testcode/testbound.c:292,1
    - Dst: fclose
      Src: /src/unbound/testcode/testbound.c:293,1
    - Dst: strncmp
      Src: /src/unbound/testcode/testbound.c:296,1
    - Dst: setenv
      Src: /src/unbound/testcode/testbound.c:301,1
    - Dst: _putenv
      Src: /src/unbound/testcode/testbound.c:303,1
    - Dst: fputs
      Src: /src/unbound/testcode/testbound.c:306,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/testbound.c:308,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 53
    argCount: 4
    argNames:
    - in
    - lineno
    - pass_argc
    - pass_argv
    argTypes:
    - FILE*
    - int*
    - int*
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 243
    functionDepth: 3
    functionLinenumber: 243
    functionLinenumberEnd: 310
    functionName: setup_config
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached:
    - spool_auto_file
    - fopen
    - _putenv
    - fgets
    - add_opts
    - fclose
    - cfg_strlist_insert
    - strlen
    - strncmp
    - fake_temp_file
    - strerror
    - fprintf
    - strdup
    - isspace
    - fputs
    - fatal_exit
    - spool_temp_file_name
    - setenv
    - spool_temp_file
    linkageType: ''
    returnType: void
    signature: void setup_config(FILE* in, int* lineno, int* pass_argc, char* pass_argv[])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/testcode/testbound.c:320,1
    - Dst: perror
      Src: /src/unbound/testcode/testbound.c:322,1
    - Dst: exit
      Src: /src/unbound/testcode/testbound.c:323,1
    - Dst: setup_config
      Src: /src/unbound/testcode/testbound.c:325,1
    - Dst: replay_scenario_read
      Src: /src/unbound/testcode/testbound.c:326,1
    - Dst: fclose
      Src: /src/unbound/testcode/testbound.c:327,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/testbound.c:329,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/testbound.c:331,1
    - Dst: log_info
      Src: /src/unbound/testcode/testbound.c:332,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - filename
    - pass_argc
    - pass_argv
    argTypes:
    - char*
    - int*
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 313
    functionDepth: 4
    functionLinenumber: 313
    functionLinenumberEnd: 334
    functionName: setup_playback
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached:
    - exit
    - perror
    - fclose
    - log_info
    - fatal_exit
    - replay_scenario_read
    - fopen
    - setup_config
    linkageType: ''
    returnType: struct replay_scenario
    signature: "struct replay_scenario * \nsetup_playback(const char* filename, int*
      pass_argc, char* pass_argv[])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/unbound/testcode/testbound.c:341,1
    - Dst: config_delstrlist
      Src: /src/unbound/testcode/testbound.c:342,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 337
    functionDepth: 1
    functionLinenumber: 337
    functionLinenumberEnd: 344
    functionName: remove_configfile
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached:
    - config_delstrlist
    - unlink
    linkageType: ''
    returnType: void
    signature: void remove_configfile(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: setup_playback
      Src: /src/unbound/testcode/testbound.c:354,1
    - Dst: fake_event_init
      Src: /src/unbound/testcode/testbound.c:356,1
    - Dst: echo_cmdline
      Src: /src/unbound/testcode/testbound.c:359,1
    - Dst: daemon_main
      Src: /src/unbound/testcode/testbound.c:362,1
    - Dst: fake_event_cleanup
      Src: /src/unbound/testcode/testbound.c:364,1
    - Dst: free
      Src: /src/unbound/testcode/testbound.c:366,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 3
    argNames:
    - playback_file
    - pass_argc
    - pass_argv
    argTypes:
    - char*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 368
      start: 347
    functionDepth: 5
    functionLinenumber: 347
    functionLinenumberEnd: 368
    functionName: perform_playback
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached:
    - fake_event_cleanup
    - free
    - fake_event_init
    - echo_cmdline
    - setup_playback
    - daemon_main
    linkageType: ''
    returnType: int
    signature: int perform_playback(char* playback_file, int pass_argc, char** pass_argv)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: putenv
      Src: /src/unbound/testcode/testbound.c:392,1
    - Dst: memset
      Src: /src/unbound/testcode/testbound.c:393,1
    - Dst: unsetenv
      Src: /src/unbound/testcode/testbound.c:396,1
    - Dst: checklock_start
      Src: /src/unbound/testcode/testbound.c:399,1
    - Dst: log_init
      Src: /src/unbound/testcode/testbound.c:400,1
    - Dst: add_opts
      Src: /src/unbound/testcode/testbound.c:404,1
    - Dst: getopt
      Src: /src/unbound/testcode/testbound.c:405,1
    - Dst: free
      Src: /src/unbound/testcode/testbound.c:408,1
    - Dst: testbound_selftest
      Src: /src/unbound/testcode/testbound.c:409,1
    - Dst: checklock_stop
      Src: /src/unbound/testcode/testbound.c:410,1
    - Dst: log_get_lock
      Src: /src/unbound/testcode/testbound.c:411,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/testcode/testbound.c:412,1
    - Dst: log_get_lock
      Src: /src/unbound/testcode/testbound.c:412,1
    - Dst: exit
      Src: /src/unbound/testcode/testbound.c:414,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:417,1
    - Dst: exit
      Src: /src/unbound/testcode/testbound.c:418,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:420,1
    - Dst: exit
      Src: /src/unbound/testcode/testbound.c:421,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:426,1
    - Dst: exit
      Src: /src/unbound/testcode/testbound.c:427,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:429,1
    - Dst: exit
      Src: /src/unbound/testcode/testbound.c:430,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:435,1
    - Dst: exit
      Src: /src/unbound/testcode/testbound.c:436,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:438,1
    - Dst: exit
      Src: /src/unbound/testcode/testbound.c:439,1
    - Dst: sldns_key_EVP_load_gost_id
      Src: /src/unbound/testcode/testbound.c:444,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:445,1
    - Dst: exit
      Src: /src/unbound/testcode/testbound.c:446,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:448,1
    - Dst: exit
      Src: /src/unbound/testcode/testbound.c:449,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:452,1
    - Dst: exit
      Src: /src/unbound/testcode/testbound.c:453,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:458,1
    - Dst: exit
      Src: /src/unbound/testcode/testbound.c:459,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:461,1
    - Dst: exit
      Src: /src/unbound/testcode/testbound.c:462,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:467,1
    - Dst: exit
      Src: /src/unbound/testcode/testbound.c:468,1
    - Dst: printf
      Src: /src/unbound/testcode/testbound.c:470,1
    - Dst: exit
      Src: /src/unbound/testcode/testbound.c:471,1
    - Dst: add_opts
      Src: /src/unbound/testcode/testbound.c:478,1
    - Dst: testbound_usage
      Src: /src/unbound/testcode/testbound.c:483,1
    - Dst: exit
      Src: /src/unbound/testcode/testbound.c:484,1
    - Dst: testbound_usage
      Src: /src/unbound/testcode/testbound.c:490,1
    - Dst: exit
      Src: /src/unbound/testcode/testbound.c:491,1
    - Dst: log_info
      Src: /src/unbound/testcode/testbound.c:493,1
    - Dst: atexit
      Src: /src/unbound/testcode/testbound.c:494,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/testbound.c:495,1
    - Dst: strerror
      Src: /src/unbound/testcode/testbound.c:495,1
    - Dst: perform_playback
      Src: /src/unbound/testcode/testbound.c:501,1
    - Dst: log_info
      Src: /src/unbound/testcode/testbound.c:503,1
    - Dst: remove_configfile
      Src: /src/unbound/testcode/testbound.c:509,1
    - Dst: log_get_lock
      Src: /src/unbound/testcode/testbound.c:510,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/testcode/testbound.c:511,1
    - Dst: log_get_lock
      Src: /src/unbound/testcode/testbound.c:511,1
    - Dst: pthread_exit
      Src: /src/unbound/testcode/testbound.c:515,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 93
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 381
    functionDepth: 6
    functionLinenumber: 381
    functionLinenumberEnd: 519
    functionName: main
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 33
    functionsReached:
    - getopt
    - log_info
    - log_init
    - testbound_selftest
    - memset
    - add_opts
    - pthread_exit
    - printf
    - perform_playback
    - putenv
    - sldns_key_EVP_load_gost_id
    - remove_configfile
    - testbound_usage
    - free
    - checklock_stop
    - log_get_lock
    - strerror
    - lock_basic_destroy
    - unsetenv
    - exit
    - fatal_exit
    - atexit
    - checklock_start
    linkageType: ''
    returnType: int
    signature: int main(int argc, char* argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/unbound/testcode/testbound.c:523,1
    - Dst: free
      Src: /src/unbound/testcode/testbound.c:524,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - pathname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 526
      start: 522
    functionDepth: 1
    functionLinenumber: 522
    functionLinenumberEnd: 526
    functionName: delete_file
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached:
    - free
    - unlink
    linkageType: ''
    returnType: int
    signature: int delete_file(const char *pathname)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/unbound/testcode/testbound.c:531,1
    - Dst: mkstemp
      Src: /src/unbound/testcode/testbound.c:535,1
    - Dst: log_err
      Src: /src/unbound/testcode/testbound.c:537,1
    - Dst: strerror
      Src: /src/unbound/testcode/testbound.c:537,1
    - Dst: free
      Src: /src/unbound/testcode/testbound.c:538,1
    - Dst: write
      Src: /src/unbound/testcode/testbound.c:543,1
    - Dst: log_err
      Src: /src/unbound/testcode/testbound.c:547,1
    - Dst: strerror
      Src: /src/unbound/testcode/testbound.c:547,1
    - Dst: close
      Src: /src/unbound/testcode/testbound.c:553,1
    - Dst: log_err
      Src: /src/unbound/testcode/testbound.c:554,1
    - Dst: strerror
      Src: /src/unbound/testcode/testbound.c:554,1
    - Dst: delete_file
      Src: /src/unbound/testcode/testbound.c:560,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 2
    argNames:
    - buf
    - size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 528
    functionDepth: 2
    functionLinenumber: 528
    functionLinenumberEnd: 562
    functionName: buf_to_file
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached:
    - log_err
    - delete_file
    - free
    - write
    - strerror
    - close
    - strdup
    - mkstemp
    linkageType: ''
    returnType: char
    signature: char *buf_to_file(const uint8_t *buf, size_t size)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: putenv
      Src: /src/unbound/testcode/testbound.c:573,1
    - Dst: memset
      Src: /src/unbound/testcode/testbound.c:574,1
    - Dst: unsetenv
      Src: /src/unbound/testcode/testbound.c:577,1
    - Dst: checklock_start
      Src: /src/unbound/testcode/testbound.c:580,1
    - Dst: log_init
      Src: /src/unbound/testcode/testbound.c:581,1
    - Dst: add_opts
      Src: /src/unbound/testcode/testbound.c:585,1
    - Dst: buf_to_file
      Src: /src/unbound/testcode/testbound.c:587,1
    - Dst: log_info
      Src: /src/unbound/testcode/testbound.c:589,1
    - Dst: perform_playback
      Src: /src/unbound/testcode/testbound.c:591,1
    - Dst: log_info
      Src: /src/unbound/testcode/testbound.c:593,1
    - Dst: remove_configfile
      Src: /src/unbound/testcode/testbound.c:599,1
    - Dst: pthread_exit
      Src: /src/unbound/testcode/testbound.c:602,1
    - Dst: delete_file
      Src: /src/unbound/testcode/testbound.c:606,1
    - Dst: log_get_lock
      Src: /src/unbound/testcode/testbound.c:609,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/testcode/testbound.c:610,1
    - Dst: log_get_lock
      Src: /src/unbound/testcode/testbound.c:610,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 24
    argCount: 2
    argNames:
    - Data
    - Size
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 613
      start: 565
    functionDepth: 6
    functionLinenumber: 565
    functionLinenumberEnd: 613
    functionName: LLVMFuzzerTestOneInput
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached:
    - add_opts
    - log_info
    - buf_to_file
    - pthread_exit
    - delete_file
    - log_init
    - lock_basic_destroy
    - perform_playback
    - log_get_lock
    - putenv
    - remove_configfile
    - memset
    - checklock_start
    - unsetenv
    linkageType: ''
    returnType: int
    signature: int LLVMFuzzerTestOneInput(const uint8_t *Data, size_t Size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(cfg)
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 621
      start: 617
    functionDepth: 0
    functionLinenumber: 617
    functionLinenumberEnd: 621
    functionName: daemon_remote_open_ports
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: struct listen_port
    signature: "struct listen_port * daemon_remote_open_ports(struct config_file*
      \n\tATTR_UNUSED(cfg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/testbound.c:625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(cfg)
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 623
    functionDepth: 1
    functionLinenumber: 623
    functionLinenumberEnd: 626
    functionName: daemon_remote_create
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 2
    functionsReached:
    - calloc
    linkageType: ''
    returnType: struct daemon_remote
    signature: struct daemon_remote * daemon_remote_create(struct config_file* ATTR_UNUSED(cfg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/testcode/testbound.c:630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rc
    argTypes:
    - struct daemon_remote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 628
    functionDepth: 1
    functionLinenumber: 628
    functionLinenumberEnd: 631
    functionName: daemon_remote_delete
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 2
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void daemon_remote_delete(struct daemon_remote* rc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED(rc)
    argTypes:
    - struct daemon_remote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 636
      start: 633
    functionDepth: 0
    functionLinenumber: 633
    functionLinenumberEnd: 636
    functionName: daemon_remote_clear
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void daemon_remote_clear(struct daemon_remote* ATTR_UNUSED(rc))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED(rc)
    - ATTR_UNUSED(ports)
    - worker
    argTypes:
    - struct daemon_remote*
    - struct listen_port*
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 638
    functionDepth: 0
    functionLinenumber: 638
    functionLinenumberEnd: 644
    functionName: daemon_remote_open_accept
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int daemon_remote_open_accept(struct daemon_remote* ATTR_UNUSED(rc),\n
      \       struct listen_port* ATTR_UNUSED(ports), struct worker* worker)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/testbound.c:650,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 652
      start: 646
    functionDepth: 1
    functionLinenumber: 646
    functionLinenumberEnd: 652
    functionName: remote_accept_callback
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int remote_accept_callback(struct comm_point* ATTR_UNUSED(c), \n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/testbound.c:658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 654
    functionDepth: 1
    functionLinenumber: 654
    functionLinenumberEnd: 660
    functionName: remote_control_callback
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 1
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int remote_control_callback(struct comm_point* ATTR_UNUSED(c), \n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/testbound.c:664,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED(str)
    - ATTR_UNUSED(arg)
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 662
    functionDepth: 1
    functionLinenumber: 662
    functionLinenumberEnd: 665
    functionName: remote_get_opt_ssl
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void remote_get_opt_ssl(char* ATTR_UNUSED(str), void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/testbound.c:672,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ATTR_UNUSED(wopt)
    - ATTR_UNUSED(cfgfile)
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 673
      start: 668
    functionDepth: 1
    functionLinenumber: 668
    functionLinenumberEnd: 673
    functionName: wsvc_command_option
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 1
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void wsvc_command_option(const char* ATTR_UNUSED(wopt), \n\tconst
      char* ATTR_UNUSED(cfgfile), int ATTR_UNUSED(v), \n\tint ATTR_UNUSED(c))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED(worker)
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 677
    functionDepth: 0
    functionLinenumber: 677
    functionLinenumberEnd: 680
    functionName: wsvc_setup_worker
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void wsvc_setup_worker(struct worker* ATTR_UNUSED(worker))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED(worker)
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 687
      start: 684
    functionDepth: 0
    functionLinenumber: 684
    functionLinenumberEnd: 687
    functionName: wsvc_desetup_worker
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void wsvc_desetup_worker(struct worker* ATTR_UNUSED(worker))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/testbound.c:694,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 695
      start: 691
    functionDepth: 1
    functionLinenumber: 691
    functionLinenumberEnd: 695
    functionName: worker_win_stop_cb
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void worker_win_stop_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/testbound.c:699,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 700
      start: 697
    functionDepth: 1
    functionLinenumber: 697
    functionLinenumberEnd: 700
    functionName: wsvc_cron_cb
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void wsvc_cron_cb(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED(addr)
    - ATTR_UNUSED
    argTypes:
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 707
      start: 703
    functionDepth: 0
    functionLinenumber: 703
    functionLinenumberEnd: 707
    functionName: tcp_connect_errno_needs_log
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int tcp_connect_errno_needs_log(struct sockaddr* ATTR_UNUSED(addr),\n\tsocklen_t
      ATTR_UNUSED(addrlen))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 709
    functionDepth: 0
    functionLinenumber: 709
    functionLinenumberEnd: 712
    functionName: squelch_err_ssl_handshake
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int squelch_err_ssl_handshake(unsigned long ATTR_UNUSED(err))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 714
    functionDepth: 0
    functionLinenumber: 714
    functionLinenumberEnd: 717
    functionName: listen_setup_locks
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void listen_setup_locks(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 719
    functionDepth: 0
    functionLinenumber: 719
    functionLinenumberEnd: 722
    functionName: listen_desetup_locks
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void listen_desetup_locks(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED(list)
    argTypes:
    - struct fast_reload_printq*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 728
      start: 724
    functionDepth: 0
    functionLinenumber: 724
    functionLinenumberEnd: 728
    functionName: fast_reload_printq_list_delete
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void fast_reload_printq_list_delete(\n\tstruct fast_reload_printq*
      ATTR_UNUSED(list))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED(worker)
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 733
      start: 730
    functionDepth: 0
    functionLinenumber: 730
    functionLinenumberEnd: 733
    functionName: fast_reload_worker_pickup_changes
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fast_reload_worker_pickup_changes(struct worker* ATTR_UNUSED(worker))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED(key)
    - ATTR_UNUSED(pem)
    - ATTR_UNUSED(verifypem)
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 736
    functionDepth: 0
    functionLinenumber: 736
    functionLinenumberEnd: 740
    functionName: quic_sslctx_create
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void * quic_sslctx_create(char* ATTR_UNUSED(key), char* ATTR_UNUSED(pem),\n\tchar*
      ATTR_UNUSED(verifypem))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 742
    functionDepth: 0
    functionLinenumber: 742
    functionLinenumberEnd: 746
    functionName: comm_point_doq_callback
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void comm_point_doq_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(event),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED(key1)
    - ATTR_UNUSED(key2)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 748
    functionDepth: 0
    functionLinenumber: 748
    functionLinenumberEnd: 751
    functionName: doq_conn_cmp
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int doq_conn_cmp(const void* ATTR_UNUSED(key1), const void* ATTR_UNUSED(key2))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED(key1)
    - ATTR_UNUSED(key2)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 753
    functionDepth: 0
    functionLinenumber: 753
    functionLinenumberEnd: 756
    functionName: doq_conid_cmp
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int doq_conid_cmp(const void* ATTR_UNUSED(key1), const void* ATTR_UNUSED(key2))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED(key1)
    - ATTR_UNUSED(key2)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 758
    functionDepth: 0
    functionLinenumber: 758
    functionLinenumberEnd: 761
    functionName: doq_timer_cmp
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int doq_timer_cmp(const void* ATTR_UNUSED(key1), const void* ATTR_UNUSED(key2))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED(key1)
    - ATTR_UNUSED(key2)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 766
      start: 763
    functionDepth: 0
    functionLinenumber: 763
    functionLinenumberEnd: 766
    functionName: doq_stream_cmp
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int doq_stream_cmp(const void* ATTR_UNUSED(key1), const void* ATTR_UNUSED(key2))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/testbound.c:771,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED(cfg)
    - ATTR_UNUSED(rnd)
    argTypes:
    - struct config_file*
    - struct ub_randstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 772
      start: 768
    functionDepth: 1
    functionLinenumber: 768
    functionLinenumberEnd: 772
    functionName: doq_table_create
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 1
    functionsReached:
    - calloc
    linkageType: ''
    returnType: struct doq_table
    signature: "struct doq_table * doq_table_create(struct config_file* ATTR_UNUSED(cfg),\n\tstruct
      ub_randstate* ATTR_UNUSED(rnd))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/testcode/testbound.c:776,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct doq_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 777
      start: 774
    functionDepth: 1
    functionLinenumber: 774
    functionLinenumberEnd: 777
    functionName: doq_table_delete
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void doq_table_delete(struct doq_table* table)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 782
      start: 779
    functionDepth: 0
    functionLinenumber: 779
    functionLinenumberEnd: 782
    functionName: doq_timer_cb
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doq_timer_cb(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(table)
    argTypes:
    - struct doq_table*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 787
      start: 784
    functionDepth: 0
    functionLinenumber: 784
    functionLinenumberEnd: 787
    functionName: doq_table_quic_size_get
    functionSourceFile: /src/unbound/testcode/testbound.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t doq_table_quic_size_get(struct doq_table* ATTR_UNUSED(table))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:75,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:76,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:77,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:78,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:79,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:80,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:81,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:82,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:83,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:84,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:85,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:86,1
    - Dst: exit
      Src: /src/unbound/testcode/petal.c:87,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 72
    functionDepth: 0
    functionLinenumber: 72
    functionLinenumberEnd: 88
    functionName: usage
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 11
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:91,1
    - Dst: exit
      Src: /src/unbound/testcode/petal.c:91,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 91
    functionName: print_exit
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 0
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void print_exit(const char* str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:94,1
    - Dst: strerror
      Src: /src/unbound/testcode/petal.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 93
    functionDepth: 0
    functionLinenumber: 93
    functionLinenumberEnd: 94
    functionName: log_errno
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 0
    functionsReached:
    - strerror
    - printf
    linkageType: ''
    returnType: void
    signature: void log_errno(const char* str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/petal.c:106,1
    - Dst: memset
      Src: /src/unbound/testcode/petal.c:107,1
    - Dst: inet_pton
      Src: /src/unbound/testcode/petal.c:109,1
    - Dst: htons
      Src: /src/unbound/testcode/petal.c:113,1
    - Dst: inet_pton
      Src: /src/unbound/testcode/petal.c:117,1
    - Dst: htons
      Src: /src/unbound/testcode/petal.c:121,1
    - Dst: print_exit
      Src: /src/unbound/testcode/petal.c:125,1
    - Dst: memmove
      Src: /src/unbound/testcode/petal.c:127,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 4
    argNames:
    - str
    - port
    - ret
    - l
    argTypes:
    - char*
    - int
    - struct sockaddr_storage*
    - socklen_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 97
    functionDepth: 2
    functionLinenumber: 97
    functionLinenumberEnd: 129
    functionName: parse_ip_addr
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 0
    functionsReached:
    - memmove
    - htons
    - memset
    - print_exit
    - inet_pton
    linkageType: ''
    returnType: int
    signature: int parse_ip_addr(char* str, int port, struct sockaddr_storage* ret,
      socklen_t* l)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/unbound/testcode/petal.c:136,1
    - Dst: closesocket
      Src: /src/unbound/testcode/petal.c:138,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 140
    functionName: fd_close
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 0
    functionsReached:
    - close
    - closesocket
    linkageType: ''
    returnType: void
    signature: void fd_close(int fd)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:159,1
    - Dst: SSL_read
      Src: /src/unbound/testcode/petal.c:162,1
    - Dst: SSL_get_error
      Src: /src/unbound/testcode/petal.c:163,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:172,1
    - Dst: strerror
      Src: /src/unbound/testcode/petal.c:173,1
    - Dst: ERR_peek_error
      Src: /src/unbound/testcode/petal.c:175,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:177,1
    - Dst: ERR_reason_error_string
      Src: /src/unbound/testcode/petal.c:178,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:180,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:189,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 49
    argCount: 3
    argNames:
    - ssl
    - buf
    - len
    argTypes:
    - SSL*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 151
    functionDepth: 0
    functionLinenumber: 151
    functionLinenumberEnd: 202
    functionName: read_ssl_line
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 0
    functionsReached:
    - ERR_peek_error
    - printf
    - SSL_read
    - ERR_reason_error_string
    - strerror
    - SSL_get_error
    linkageType: ''
    returnType: int
    signature: int read_ssl_line(SSL* ssl, char* buf, size_t len)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strncasecmp
      Src: /src/unbound/testcode/petal.c:209,1
    - Dst: strstr
      Src: /src/unbound/testcode/petal.c:210,1
    - Dst: strstr
      Src: /src/unbound/testcode/petal.c:211,1
    - Dst: strstr
      Src: /src/unbound/testcode/petal.c:213,1
    - Dst: strstr
      Src: /src/unbound/testcode/petal.c:214,1
    - Dst: strrchr
      Src: /src/unbound/testcode/petal.c:215,1
    - Dst: strrchr
      Src: /src/unbound/testcode/petal.c:216,1
    - Dst: strlen
      Src: /src/unbound/testcode/petal.c:220,1
    - Dst: strlcpy
      Src: /src/unbound/testcode/petal.c:221,1
    - Dst: strncasecmp
      Src: /src/unbound/testcode/petal.c:222,1
    - Dst: strlcpy
      Src: /src/unbound/testcode/petal.c:223,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 25
    argCount: 6
    argNames:
    - buf
    - file
    - flen
    - host
    - hlen
    - vs
    argTypes:
    - char*
    - char*
    - size_t
    - char*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 226
      start: 205
    functionDepth: 1
    functionLinenumber: 205
    functionLinenumberEnd: 226
    functionName: process_one_header
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - strrchr
    - strlen
    - strncasecmp
    - strstr
    linkageType: ''
    returnType: int
    signature: "int process_one_header(char* buf, char* file, size_t flen, char* host,
      size_t hlen,\n\tint* vs)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: read_ssl_line
      Src: /src/unbound/testcode/petal.c:236,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:237,1
    - Dst: ERR_peek_error
      Src: /src/unbound/testcode/petal.c:239,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:241,1
    - Dst: ERR_reason_error_string
      Src: /src/unbound/testcode/petal.c:241,1
    - Dst: process_one_header
      Src: /src/unbound/testcode/petal.c:244,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 6
    argNames:
    - ssl
    - file
    - flen
    - host
    - hlen
    - vs
    argTypes:
    - SSL*
    - char*
    - size_t
    - char*
    - size_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 248
    functionName: read_http_headers
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 0
    functionsReached:
    - ERR_peek_error
    - read_ssl_line
    - printf
    - ERR_reason_error_string
    - process_one_header
    linkageType: ''
    returnType: int
    signature: "int read_http_headers(SSL* ssl, char* file, size_t flen, char* host,
      size_t hlen,\n\tint* vs)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_new
      Src: /src/unbound/testcode/petal.c:254,1
    - Dst: SSLv23_server_method
      Src: /src/unbound/testcode/petal.c:254,1
    - Dst: print_exit
      Src: /src/unbound/testcode/petal.c:255,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/testcode/petal.c:257,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/testcode/petal.c:259,1
    - Dst: SSL_CTX_set_security_level
      Src: /src/unbound/testcode/petal.c:261,1
    - Dst: SSL_CTX_use_certificate_chain_file
      Src: /src/unbound/testcode/petal.c:263,1
    - Dst: ERR_peek_error
      Src: /src/unbound/testcode/petal.c:264,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:266,1
    - Dst: ERR_reason_error_string
      Src: /src/unbound/testcode/petal.c:266,1
    - Dst: print_exit
      Src: /src/unbound/testcode/petal.c:267,1
    - Dst: SSL_CTX_use_PrivateKey_file
      Src: /src/unbound/testcode/petal.c:269,1
    - Dst: print_exit
      Src: /src/unbound/testcode/petal.c:270,1
    - Dst: SSL_CTX_check_private_key
      Src: /src/unbound/testcode/petal.c:271,1
    - Dst: print_exit
      Src: /src/unbound/testcode/petal.c:272,1
    - Dst: SSL_CTX_set_ecdh_auto
      Src: /src/unbound/testcode/petal.c:274,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:275,1
    - Dst: EC_KEY_new_by_curve_name
      Src: /src/unbound/testcode/petal.c:278,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:280,1
    - Dst: SSL_CTX_set_tmp_ecdh
      Src: /src/unbound/testcode/petal.c:282,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:283,1
    - Dst: EC_KEY_free
      Src: /src/unbound/testcode/petal.c:285,1
    - Dst: SSL_CTX_load_verify_locations
      Src: /src/unbound/testcode/petal.c:289,1
    - Dst: print_exit
      Src: /src/unbound/testcode/petal.c:290,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 2
    argNames:
    - key
    - cert
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 292
    functionName: setup_ctx
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 1
    functionsReached:
    - SSL_CTX_check_private_key
    - SSL_CTX_load_verify_locations
    - SSL_CTX_use_certificate_chain_file
    - SSL_CTX_set_options
    - SSL_CTX_new
    - EC_KEY_new_by_curve_name
    - SSL_CTX_set_tmp_ecdh
    - ERR_peek_error
    - SSL_CTX_set_ecdh_auto
    - printf
    - SSLv23_server_method
    - SSL_CTX_set_security_level
    - ERR_reason_error_string
    - EC_KEY_free
    - SSL_CTX_use_PrivateKey_file
    - print_exit
    linkageType: ''
    returnType: SSL_CTX
    signature: 'SSL_CTX *

      setup_ctx(char* key, char* cert)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: parse_ip_addr
      Src: /src/unbound/testcode/petal.c:302,1
    - Dst: socket
      Src: /src/unbound/testcode/petal.c:303,1
    - Dst: log_errno
      Src: /src/unbound/testcode/petal.c:305,1
    - Dst: setsockopt
      Src: /src/unbound/testcode/petal.c:308,1
    - Dst: log_errno
      Src: /src/unbound/testcode/petal.c:310,1
    - Dst: bind
      Src: /src/unbound/testcode/petal.c:312,1
    - Dst: log_errno
      Src: /src/unbound/testcode/petal.c:313,1
    - Dst: fd_close
      Src: /src/unbound/testcode/petal.c:314,1
    - Dst: listen
      Src: /src/unbound/testcode/petal.c:317,1
    - Dst: log_errno
      Src: /src/unbound/testcode/petal.c:318,1
    - Dst: fd_close
      Src: /src/unbound/testcode/petal.c:319,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - addr
    - port
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 323
    functionName: setup_fd
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 0
    functionsReached:
    - bind
    - socket
    - log_errno
    - setsockopt
    - listen
    - fd_close
    - parse_ip_addr
    linkageType: ''
    returnType: int
    signature: int setup_fd(char* addr, int port)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_new
      Src: /src/unbound/testcode/petal.c:329,1
    - Dst: SSL_set_accept_state
      Src: /src/unbound/testcode/petal.c:331,1
    - Dst: SSL_set_mode
      Src: /src/unbound/testcode/petal.c:332,1
    - Dst: SSL_set_fd
      Src: /src/unbound/testcode/petal.c:333,1
    - Dst: SSL_free
      Src: /src/unbound/testcode/petal.c:334,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - s
    - ctx
    argTypes:
    - int
    - SSL_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 326
    functionDepth: 0
    functionLinenumber: 326
    functionLinenumberEnd: 338
    functionName: setup_ssl
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 1
    functionsReached:
    - SSL_set_accept_state
    - SSL_set_mode
    - SSL_free
    - SSL_new
    - SSL_set_fd
    linkageType: ''
    returnType: SSL
    signature: 'SSL *

      setup_ssl(int s, SSL_CTX* ctx)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/testcode/petal.c:344,1
    - Dst: strstr
      Src: /src/unbound/testcode/petal.c:347,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 352
    functionName: file_name_is_safe
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 0
    functionsReached:
    - strstr
    - strlen
    linkageType: ''
    returnType: int
    signature: int file_name_is_safe(char* s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/unbound/testcode/petal.c:360,1
    - Dst: strrchr
      Src: /src/unbound/testcode/petal.c:361,1
    - Dst: strlen
      Src: /src/unbound/testcode/petal.c:363,1
    - Dst: tolower
      Src: /src/unbound/testcode/petal.c:365,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - host
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 366
    functionName: adjust_host
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 0
    functionsReached:
    - strrchr
    - strlen
    - tolower
    linkageType: ''
    returnType: void
    signature: void adjust_host(char* host)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/testcode/petal.c:373,1
    - Dst: tolower
      Src: /src/unbound/testcode/petal.c:375,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 376
      start: 369
    functionDepth: 0
    functionLinenumber: 369
    functionLinenumberEnd: 376
    functionName: adjust_file
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 0
    functionsReached:
    - strlen
    - tolower
    linkageType: ''
    returnType: void
    signature: void adjust_file(char* file)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/testcode/petal.c:382,1
    - Dst: strcmp
      Src: /src/unbound/testcode/petal.c:384,1
    - Dst: strcmp
      Src: /src/unbound/testcode/petal.c:386,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 389
      start: 379
    functionDepth: 0
    functionLinenumber: 379
    functionLinenumberEnd: 389
    functionName: host_name_is_safe
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 0
    functionsReached:
    - strchr
    - strcmp
    linkageType: ''
    returnType: int
    signature: int host_name_is_safe(char* s)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/testcode/petal.c:397,1
    - Dst: snprintf
      Src: /src/unbound/testcode/petal.c:409,1
    - Dst: strlen
      Src: /src/unbound/testcode/petal.c:410,1
    - Dst: SSL_write
      Src: /src/unbound/testcode/petal.c:411,1
    - Dst: fseek
      Src: /src/unbound/testcode/petal.c:416,1
    - Dst: ftell
      Src: /src/unbound/testcode/petal.c:417,1
    - Dst: fseek
      Src: /src/unbound/testcode/petal.c:418,1
    - Dst: malloc
      Src: /src/unbound/testcode/petal.c:420,1
    - Dst: fclose
      Src: /src/unbound/testcode/petal.c:422,1
    - Dst: snprintf
      Src: /src/unbound/testcode/petal.c:427,1
    - Dst: strlen
      Src: /src/unbound/testcode/petal.c:428,1
    - Dst: snprintf
      Src: /src/unbound/testcode/petal.c:431,1
    - Dst: strlen
      Src: /src/unbound/testcode/petal.c:432,1
    - Dst: snprintf
      Src: /src/unbound/testcode/petal.c:435,1
    - Dst: strlen
      Src: /src/unbound/testcode/petal.c:436,1
    - Dst: snprintf
      Src: /src/unbound/testcode/petal.c:439,1
    - Dst: strlen
      Src: /src/unbound/testcode/petal.c:440,1
    - Dst: free
      Src: /src/unbound/testcode/petal.c:444,1
    - Dst: fclose
      Src: /src/unbound/testcode/petal.c:445,1
    - Dst: fread
      Src: /src/unbound/testcode/petal.c:448,1
    - Dst: free
      Src: /src/unbound/testcode/petal.c:449,1
    - Dst: fclose
      Src: /src/unbound/testcode/petal.c:450,1
    - Dst: fclose
      Src: /src/unbound/testcode/petal.c:453,1
    - Dst: SSL_write
      Src: /src/unbound/testcode/petal.c:456,1
    - Dst: free
      Src: /src/unbound/testcode/petal.c:459,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 50
    argCount: 2
    argNames:
    - ssl
    - fname
    argTypes:
    - SSL*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 460
      start: 392
    functionDepth: 2
    functionLinenumber: 392
    functionLinenumberEnd: 460
    functionName: provide_file_10
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 0
    functionsReached:
    - SSL_write
    - snprintf
    - fseek
    - fclose
    - malloc
    - free
    - fopen
    - fread
    - strlen
    - ftell
    linkageType: ''
    returnType: void
    signature: void provide_file_10(SSL* ssl, char* fname)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/testcode/petal.c:471,1
    - Dst: snprintf
      Src: /src/unbound/testcode/petal.c:484,1
    - Dst: strlen
      Src: /src/unbound/testcode/petal.c:485,1
    - Dst: snprintf
      Src: /src/unbound/testcode/petal.c:488,1
    - Dst: strlen
      Src: /src/unbound/testcode/petal.c:489,1
    - Dst: snprintf
      Src: /src/unbound/testcode/petal.c:492,1
    - Dst: strlen
      Src: /src/unbound/testcode/petal.c:493,1
    - Dst: snprintf
      Src: /src/unbound/testcode/petal.c:496,1
    - Dst: strlen
      Src: /src/unbound/testcode/petal.c:497,1
    - Dst: snprintf
      Src: /src/unbound/testcode/petal.c:500,1
    - Dst: strlen
      Src: /src/unbound/testcode/petal.c:501,1
    - Dst: fclose
      Src: /src/unbound/testcode/petal.c:505,1
    - Dst: free
      Src: /src/unbound/testcode/petal.c:511,1
    - Dst: malloc
      Src: /src/unbound/testcode/petal.c:512,1
    - Dst: fread
      Src: /src/unbound/testcode/petal.c:516,1
    - Dst: snprintf
      Src: /src/unbound/testcode/petal.c:518,1
    - Dst: strlen
      Src: /src/unbound/testcode/petal.c:519,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:521,1
    - Dst: fflush
      Src: /src/unbound/testcode/petal.c:521,1
    - Dst: memmove
      Src: /src/unbound/testcode/petal.c:526,1
    - Dst: snprintf
      Src: /src/unbound/testcode/petal.c:529,1
    - Dst: strlen
      Src: /src/unbound/testcode/petal.c:530,1
    - Dst: feof
      Src: /src/unbound/testcode/petal.c:534,1
    - Dst: snprintf
      Src: /src/unbound/testcode/petal.c:535,1
    - Dst: strlen
      Src: /src/unbound/testcode/petal.c:536,1
    - Dst: feof
      Src: /src/unbound/testcode/petal.c:540,1
    - Dst: snprintf
      Src: /src/unbound/testcode/petal.c:541,1
    - Dst: strlen
      Src: /src/unbound/testcode/petal.c:542,1
    - Dst: SSL_write
      Src: /src/unbound/testcode/petal.c:547,1
    - Dst: feof
      Src: /src/unbound/testcode/petal.c:555,1
    - Dst: ferror
      Src: /src/unbound/testcode/petal.c:555,1
    - Dst: free
      Src: /src/unbound/testcode/petal.c:557,1
    - Dst: fclose
      Src: /src/unbound/testcode/petal.c:558,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 74
    argCount: 2
    argNames:
    - ssl
    - fname
    argTypes:
    - SSL*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 559
      start: 463
    functionDepth: 2
    functionLinenumber: 463
    functionLinenumberEnd: 559
    functionName: provide_file_chunked
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 0
    functionsReached:
    - SSL_write
    - memmove
    - snprintf
    - fclose
    - feof
    - printf
    - ferror
    - free
    - malloc
    - fopen
    - fread
    - strlen
    - fflush
    linkageType: ''
    returnType: void
    signature: void provide_file_chunked(SSL* ssl, char* fname)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: read_http_headers
      Src: /src/unbound/testcode/petal.c:569,1
    - Dst: adjust_host
      Src: /src/unbound/testcode/petal.c:572,1
    - Dst: adjust_file
      Src: /src/unbound/testcode/petal.c:573,1
    - Dst: host_name_is_safe
      Src: /src/unbound/testcode/petal.c:574,1
    - Dst: strlcpy
      Src: /src/unbound/testcode/petal.c:575,1
    - Dst: file_name_is_safe
      Src: /src/unbound/testcode/petal.c:576,1
    - Dst: snprintf
      Src: /src/unbound/testcode/petal.c:579,1
    - Dst: inet_ntop
      Src: /src/unbound/testcode/petal.c:586,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:588,1
    - Dst: fflush
      Src: /src/unbound/testcode/petal.c:589,1
    - Dst: provide_file_10
      Src: /src/unbound/testcode/petal.c:592,1
    - Dst: provide_file_chunked
      Src: /src/unbound/testcode/petal.c:593,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 3
    argNames:
    - ssl
    - from
    - falen
    argTypes:
    - SSL*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 562
    functionDepth: 3
    functionLinenumber: 562
    functionLinenumberEnd: 594
    functionName: service_ssl
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 0
    functionsReached:
    - strlcpy
    - inet_ntop
    - provide_file_chunked
    - snprintf
    - printf
    - read_http_headers
    - host_name_is_safe
    - provide_file_10
    - adjust_host
    - file_name_is_safe
    - adjust_file
    - fflush
    linkageType: ''
    returnType: void
    signature: void service_ssl(SSL* ssl, struct sockaddr_storage* from, socklen_t
      falen)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: setup_ctx
      Src: /src/unbound/testcode/petal.c:600,1
    - Dst: setup_fd
      Src: /src/unbound/testcode/petal.c:601,1
    - Dst: print_exit
      Src: /src/unbound/testcode/petal.c:602,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:603,1
    - Dst: fflush
      Src: /src/unbound/testcode/petal.c:603,1
    - Dst: memset
      Src: /src/unbound/testcode/petal.c:608,1
    - Dst: accept
      Src: /src/unbound/testcode/petal.c:609,1
    - Dst: fflush
      Src: /src/unbound/testcode/petal.c:610,1
    - Dst: setup_ssl
      Src: /src/unbound/testcode/petal.c:612,1
    - Dst: fflush
      Src: /src/unbound/testcode/petal.c:613,1
    - Dst: service_ssl
      Src: /src/unbound/testcode/petal.c:615,1
    - Dst: fflush
      Src: /src/unbound/testcode/petal.c:616,1
    - Dst: SSL_shutdown
      Src: /src/unbound/testcode/petal.c:617,1
    - Dst: SSL_free
      Src: /src/unbound/testcode/petal.c:618,1
    - Dst: fd_close
      Src: /src/unbound/testcode/petal.c:620,1
    - Dst: log_errno
      Src: /src/unbound/testcode/petal.c:621,1
    - Dst: fflush
      Src: /src/unbound/testcode/petal.c:622,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:625,1
    - Dst: fd_close
      Src: /src/unbound/testcode/petal.c:626,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/testcode/petal.c:627,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 33
    argCount: 4
    argNames:
    - addr
    - port
    - key
    - cert
    argTypes:
    - char*
    - int
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 628
      start: 597
    functionDepth: 4
    functionLinenumber: 597
    functionLinenumberEnd: 628
    functionName: do_service
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 0
    functionsReached:
    - setup_ssl
    - accept
    - SSL_CTX_free
    - service_ssl
    - SSL_free
    - printf
    - log_errno
    - setup_fd
    - setup_ctx
    - fd_close
    - memset
    - print_exit
    - SSL_shutdown
    - fflush
    linkageType: ''
    returnType: void
    signature: void do_service(char* addr, int port, char* key, char* cert)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: WSAStartup
      Src: /src/unbound/testcode/petal.c:643,1
    - Dst: MAKEWORD
      Src: /src/unbound/testcode/petal.c:643,1
    - Dst: printf
      Src: /src/unbound/testcode/petal.c:644,1
    - Dst: exit
      Src: /src/unbound/testcode/petal.c:644,1
    - Dst: atexit
      Src: /src/unbound/testcode/petal.c:645,1
    - Dst: getopt
      Src: /src/unbound/testcode/petal.c:649,1
    - Dst: atoi
      Src: /src/unbound/testcode/petal.c:661,1
    - Dst: usage
      Src: /src/unbound/testcode/petal.c:669,1
    - Dst: usage
      Src: /src/unbound/testcode/petal.c:675,1
    - Dst: signal
      Src: /src/unbound/testcode/petal.c:678,1
    - Dst: ERR_load_crypto_strings
      Src: /src/unbound/testcode/petal.c:681,1
    - Dst: ERR_load_SSL_strings
      Src: /src/unbound/testcode/petal.c:684,1
    - Dst: OpenSSL_add_all_algorithms
      Src: /src/unbound/testcode/petal.c:688,1
    - Dst: OPENSSL_init_crypto
      Src: /src/unbound/testcode/petal.c:691,1
    - Dst: defined
      Src: /src/unbound/testcode/petal.c:694,1
    - Dst: SSL_library_init
      Src: /src/unbound/testcode/petal.c:700,1
    - Dst: OPENSSL_init_ssl
      Src: /src/unbound/testcode/petal.c:702,1
    - Dst: defined
      Src: /src/unbound/testcode/petal.c:703,1
    - Dst: do_service
      Src: /src/unbound/testcode/petal.c:709,1
    - Dst: CRYPTO_cleanup_all_ex_data
      Src: /src/unbound/testcode/petal.c:712,1
    - Dst: ERR_free_strings
      Src: /src/unbound/testcode/petal.c:715,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 43
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 636
    functionDepth: 5
    functionLinenumber: 636
    functionLinenumberEnd: 718
    functionName: main
    functionSourceFile: /src/unbound/testcode/petal.c
    functionUses: 33
    functionsReached:
    - getopt
    - atoi
    - ERR_load_SSL_strings
    - SSL_library_init
    - do_service
    - printf
    - defined
    - OPENSSL_init_ssl
    - WSAStartup
    - MAKEWORD
    - exit
    - OpenSSL_add_all_algorithms
    - ERR_free_strings
    - CRYPTO_cleanup_all_ex_data
    - atexit
    - OPENSSL_init_crypto
    - ERR_load_crypto_strings
    - usage
    - signal
    linkageType: ''
    returnType: int
    signature: int main(int argc, char* argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitmain.c:80,1
    - Dst: alloc_init
      Src: /src/unbound/testcode/unitmain.c:81,1
    - Dst: alloc_init
      Src: /src/unbound/testcode/unitmain.c:82,1
    - Dst: alloc_init
      Src: /src/unbound/testcode/unitmain.c:83,1
    - Dst: alloc_special_obtain
      Src: /src/unbound/testcode/unitmain.c:85,1
    - Dst: alloc_clear
      Src: /src/unbound/testcode/unitmain.c:86,1
    - Dst: alloc_special_release
      Src: /src/unbound/testcode/unitmain.c:88,1
    - Dst: alloc_special_obtain
      Src: /src/unbound/testcode/unitmain.c:89,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:90,1
    - Dst: alloc_special_release
      Src: /src/unbound/testcode/unitmain.c:91,1
    - Dst: alloc_special_obtain
      Src: /src/unbound/testcode/unitmain.c:94,1
    - Dst: alloc_special_release
      Src: /src/unbound/testcode/unitmain.c:95,1
    - Dst: alloc_stats
      Src: /src/unbound/testcode/unitmain.c:98,1
    - Dst: alloc_stats
      Src: /src/unbound/testcode/unitmain.c:99,1
    - Dst: alloc_stats
      Src: /src/unbound/testcode/unitmain.c:100,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:103,1
    - Dst: alloc_clear
      Src: /src/unbound/testcode/unitmain.c:105,1
    - Dst: alloc_clear
      Src: /src/unbound/testcode/unitmain.c:106,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:107,1
    - Dst: alloc_clear
      Src: /src/unbound/testcode/unitmain.c:108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 74
    functionDepth: 1
    functionLinenumber: 74
    functionLinenumberEnd: 109
    functionName: alloc_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - alloc_clear
    - alloc_init
    - unit_show_feature
    - alloc_special_release
    - alloc_stats
    - unit_assert
    - alloc_special_obtain
    linkageType: ''
    returnType: void
    signature: void alloc_test(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitmain.c:152,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:153,1
    - Dst: str_is_ip6
      Src: /src/unbound/testcode/unitmain.c:153,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:154,1
    - Dst: str_is_ip6
      Src: /src/unbound/testcode/unitmain.c:154,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:155,1
    - Dst: str_is_ip6
      Src: /src/unbound/testcode/unitmain.c:155,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:156,1
    - Dst: str_is_ip6
      Src: /src/unbound/testcode/unitmain.c:156,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:157,1
    - Dst: str_is_ip6
      Src: /src/unbound/testcode/unitmain.c:157,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:158,1
    - Dst: str_is_ip6
      Src: /src/unbound/testcode/unitmain.c:158,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:159,1
    - Dst: str_is_ip6
      Src: /src/unbound/testcode/unitmain.c:159,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:160,1
    - Dst: str_is_ip6
      Src: /src/unbound/testcode/unitmain.c:160,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitmain.c:161,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:162,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:162,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:163,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:163,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:164,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:164,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:165,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:165,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:166,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:166,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:167,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:167,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:168,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:168,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:169,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:169,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:170,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:170,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:171,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:171,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:172,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:172,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:173,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:173,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:174,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:174,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:175,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:175,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:176,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:176,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:177,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:177,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:178,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:178,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:179,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:179,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:180,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:180,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:181,1
    - Dst: is_pow2
      Src: /src/unbound/testcode/unitmain.c:181,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitmain.c:184,1
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:195,1
    - Dst: addr_mask
      Src: /src/unbound/testcode/unitmain.c:196,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:197,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitmain.c:197,1
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:199,1
    - Dst: addr_mask
      Src: /src/unbound/testcode/unitmain.c:200,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:201,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitmain.c:201,1
    - Dst: addr_mask
      Src: /src/unbound/testcode/unitmain.c:202,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:203,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitmain.c:203,1
    - Dst: addr_mask
      Src: /src/unbound/testcode/unitmain.c:204,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:205,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitmain.c:205,1
    - Dst: addr_mask
      Src: /src/unbound/testcode/unitmain.c:206,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:207,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitmain.c:207,1
    - Dst: addr_mask
      Src: /src/unbound/testcode/unitmain.c:209,1
    - Dst: addr_mask
      Src: /src/unbound/testcode/unitmain.c:210,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:211,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitmain.c:211,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitmain.c:215,1
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:226,1
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:227,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:228,1
    - Dst: addr_in_common
      Src: /src/unbound/testcode/unitmain.c:228,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:230,1
    - Dst: addr_in_common
      Src: /src/unbound/testcode/unitmain.c:230,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:233,1
    - Dst: addr_in_common
      Src: /src/unbound/testcode/unitmain.c:233,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:236,1
    - Dst: addr_in_common
      Src: /src/unbound/testcode/unitmain.c:236,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:239,1
    - Dst: addr_in_common
      Src: /src/unbound/testcode/unitmain.c:239,1
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:244,1
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:245,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:246,1
    - Dst: addr_in_common
      Src: /src/unbound/testcode/unitmain.c:246,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:249,1
    - Dst: addr_in_common
      Src: /src/unbound/testcode/unitmain.c:249,1
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:253,1
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:254,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:255,1
    - Dst: addr_in_common
      Src: /src/unbound/testcode/unitmain.c:255,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:257,1
    - Dst: addr_in_common
      Src: /src/unbound/testcode/unitmain.c:257,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:260,1
    - Dst: addr_in_common
      Src: /src/unbound/testcode/unitmain.c:260,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:263,1
    - Dst: addr_in_common
      Src: /src/unbound/testcode/unitmain.c:263,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:266,1
    - Dst: addr_in_common
      Src: /src/unbound/testcode/unitmain.c:266,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitmain.c:272,1
    - Dst: memset
      Src: /src/unbound/testcode/unitmain.c:278,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:280,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:281,1
    - Dst: addr_to_str
      Src: /src/unbound/testcode/unitmain.c:282,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:283,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitmain.c:283,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:284,1
    - Dst: ntohs
      Src: /src/unbound/testcode/unitmain.c:284,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:286,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:288,1
    - Dst: addr_to_str
      Src: /src/unbound/testcode/unitmain.c:289,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:290,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitmain.c:290,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:291,1
    - Dst: ntohs
      Src: /src/unbound/testcode/unitmain.c:291,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitmain.c:294,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:299,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:299,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:300,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:300,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:301,1
    - Dst: sockaddr_cmp_addr
      Src: /src/unbound/testcode/unitmain.c:301,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:302,1
    - Dst: sockaddr_cmp_addr
      Src: /src/unbound/testcode/unitmain.c:302,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:303,1
    - Dst: sockaddr_cmp_addr
      Src: /src/unbound/testcode/unitmain.c:303,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:304,1
    - Dst: sockaddr_cmp_addr
      Src: /src/unbound/testcode/unitmain.c:304,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:305,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:305,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:306,1
    - Dst: sockaddr_cmp_addr
      Src: /src/unbound/testcode/unitmain.c:306,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:307,1
    - Dst: sockaddr_cmp_addr
      Src: /src/unbound/testcode/unitmain.c:307,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:308,1
    - Dst: sockaddr_cmp_addr
      Src: /src/unbound/testcode/unitmain.c:308,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:309,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:309,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:310,1
    - Dst: sockaddr_cmp_addr
      Src: /src/unbound/testcode/unitmain.c:310,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:311,1
    - Dst: sockaddr_cmp_addr
      Src: /src/unbound/testcode/unitmain.c:311,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:312,1
    - Dst: sockaddr_cmp_addr
      Src: /src/unbound/testcode/unitmain.c:312,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitmain.c:315,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:319,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:319,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:320,1
    - Dst: addr_is_ip4mapped
      Src: /src/unbound/testcode/unitmain.c:320,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:321,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:321,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:322,1
    - Dst: addr_is_ip4mapped
      Src: /src/unbound/testcode/unitmain.c:322,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:323,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:323,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:324,1
    - Dst: addr_is_ip4mapped
      Src: /src/unbound/testcode/unitmain.c:324,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:325,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:325,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:326,1
    - Dst: addr_is_ip4mapped
      Src: /src/unbound/testcode/unitmain.c:326,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:327,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:327,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:328,1
    - Dst: addr_is_ip4mapped
      Src: /src/unbound/testcode/unitmain.c:328,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:329,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:329,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:330,1
    - Dst: addr_is_ip4mapped
      Src: /src/unbound/testcode/unitmain.c:330,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:331,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:331,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:332,1
    - Dst: addr_is_ip4mapped
      Src: /src/unbound/testcode/unitmain.c:332,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:333,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:333,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:334,1
    - Dst: addr_is_ip4mapped
      Src: /src/unbound/testcode/unitmain.c:334,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:335,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:335,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:336,1
    - Dst: addr_is_ip4mapped
      Src: /src/unbound/testcode/unitmain.c:336,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitmain.c:339,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:343,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:343,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:344,1
    - Dst: addr_is_any
      Src: /src/unbound/testcode/unitmain.c:344,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:345,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:345,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:346,1
    - Dst: addr_is_any
      Src: /src/unbound/testcode/unitmain.c:346,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:347,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:347,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:348,1
    - Dst: addr_is_any
      Src: /src/unbound/testcode/unitmain.c:348,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:349,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:349,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:350,1
    - Dst: addr_is_any
      Src: /src/unbound/testcode/unitmain.c:350,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:351,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:351,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:352,1
    - Dst: addr_is_any
      Src: /src/unbound/testcode/unitmain.c:352,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:353,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:353,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:354,1
    - Dst: addr_is_any
      Src: /src/unbound/testcode/unitmain.c:354,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:355,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:355,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:356,1
    - Dst: addr_is_any
      Src: /src/unbound/testcode/unitmain.c:356,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:357,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:357,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:358,1
    - Dst: addr_is_any
      Src: /src/unbound/testcode/unitmain.c:358,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:359,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:359,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:360,1
    - Dst: addr_is_any
      Src: /src/unbound/testcode/unitmain.c:360,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:361,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:361,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:362,1
    - Dst: addr_is_any
      Src: /src/unbound/testcode/unitmain.c:362,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:363,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:363,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:364,1
    - Dst: addr_is_any
      Src: /src/unbound/testcode/unitmain.c:364,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 161
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 366
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 366
    functionName: net_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - memcpy
    - addr_to_str
    - strcmp
    - is_pow2
    - ntohs
    - netblockstrtoaddr
    - addr_in_common
    - ipstrtoaddr
    - addr_is_ip4mapped
    - unit_show_func
    - memcmp
    - str_is_ip6
    - memset
    - sockaddr_cmp_addr
    - addr_is_any
    - unit_assert
    - addr_mask
    linkageType: ''
    returnType: void
    signature: void net_test(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitmain.c:374,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:377,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:377,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:378,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:378,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:379,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:379,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:380,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:380,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:381,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:381,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:382,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:382,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:383,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:383,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:384,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:384,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:386,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:386,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:387,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:387,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:388,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:388,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:389,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:389,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:390,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:390,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:391,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:391,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:392,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:392,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:393,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:393,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:394,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:394,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:395,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:395,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:396,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:396,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:397,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:397,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:398,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:398,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:399,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:399,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:400,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:400,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:401,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:401,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:402,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:402,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:403,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:403,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:404,1
    - Dst: cfg_parse_memsize
      Src: /src/unbound/testcode/unitmain.c:404,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 31
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 370
    functionDepth: 1
    functionLinenumber: 370
    functionLinenumberEnd: 405
    functionName: config_memsize_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - cfg_parse_memsize
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void config_memsize_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitmain.c:411,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:412,1
    - Dst: taglist_intersect
      Src: /src/unbound/testcode/unitmain.c:412,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:415,1
    - Dst: taglist_intersect
      Src: /src/unbound/testcode/unitmain.c:415,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:418,1
    - Dst: taglist_intersect
      Src: /src/unbound/testcode/unitmain.c:418,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:421,1
    - Dst: taglist_intersect
      Src: /src/unbound/testcode/unitmain.c:421,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:424,1
    - Dst: taglist_intersect
      Src: /src/unbound/testcode/unitmain.c:424,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 408
    functionDepth: 1
    functionLinenumber: 408
    functionLinenumberEnd: 427
    functionName: config_tag_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - taglist_intersect
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void config_tag_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitmain.c:440,1
    - Dst: rtt_init
      Src: /src/unbound/testcode/unitmain.c:441,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:443,1
    - Dst: rtt_timeout
      Src: /src/unbound/testcode/unitmain.c:443,1
    - Dst: rtt_lost
      Src: /src/unbound/testcode/unitmain.c:444,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:445,1
    - Dst: rtt_timeout
      Src: /src/unbound/testcode/unitmain.c:445,1
    - Dst: rtt_lost
      Src: /src/unbound/testcode/unitmain.c:446,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:447,1
    - Dst: rtt_timeout
      Src: /src/unbound/testcode/unitmain.c:447,1
    - Dst: rtt_update
      Src: /src/unbound/testcode/unitmain.c:448,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:449,1
    - Dst: rtt_timeout
      Src: /src/unbound/testcode/unitmain.c:449,1
    - Dst: rtt_lost
      Src: /src/unbound/testcode/unitmain.c:450,1
    - Dst: rtt_timeout
      Src: /src/unbound/testcode/unitmain.c:450,1
    - Dst: rtt_lost
      Src: /src/unbound/testcode/unitmain.c:452,1
    - Dst: rtt_timeout
      Src: /src/unbound/testcode/unitmain.c:452,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:453,1
    - Dst: rtt_timeout
      Src: /src/unbound/testcode/unitmain.c:453,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:454,1
    - Dst: rtt_timeout
      Src: /src/unbound/testcode/unitmain.c:454,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:457,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 434
    functionDepth: 1
    functionLinenumber: 434
    functionLinenumberEnd: 458
    functionName: rtt_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - rtt_update
    - unit_show_func
    - rtt_timeout
    - rtt_init
    - rtt_lost
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void rtt_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:482,1
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:484,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:485,1
    - Dst: edns_cookie_server_validate
      Src: /src/unbound/testcode/unitmain.c:485,1
    - Dst: edns_cookie_server_write
      Src: /src/unbound/testcode/unitmain.c:488,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:489,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitmain.c:489,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 490
      start: 463
    functionDepth: 1
    functionLinenumber: 463
    functionLinenumberEnd: 490
    functionName: edns_cookie_invalid_version
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - memcpy
    - edns_cookie_server_write
    - memcmp
    - unit_assert
    - edns_cookie_server_validate
    linkageType: ''
    returnType: void
    signature: void edns_cookie_invalid_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:512,1
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:514,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:515,1
    - Dst: edns_cookie_server_validate
      Src: /src/unbound/testcode/unitmain.c:515,1
    - Dst: edns_cookie_server_write
      Src: /src/unbound/testcode/unitmain.c:518,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:519,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitmain.c:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 493
    functionDepth: 1
    functionLinenumber: 493
    functionLinenumberEnd: 520
    functionName: edns_cookie_invalid_hash
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - memcpy
    - edns_cookie_server_write
    - memcmp
    - unit_assert
    - edns_cookie_server_validate
    linkageType: ''
    returnType: void
    signature: void edns_cookie_invalid_hash(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:545,1
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:547,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:548,1
    - Dst: edns_cookie_server_validate
      Src: /src/unbound/testcode/unitmain.c:548,1
    - Dst: edns_cookie_server_write
      Src: /src/unbound/testcode/unitmain.c:551,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:552,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitmain.c:552,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 553
      start: 526
    functionDepth: 1
    functionLinenumber: 526
    functionLinenumberEnd: 553
    functionName: edns_cookie_rfc9018_a3_better
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - memcpy
    - edns_cookie_server_write
    - memcmp
    - unit_assert
    - edns_cookie_server_validate
    linkageType: ''
    returnType: void
    signature: void edns_cookie_rfc9018_a3_better(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:576,1
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:578,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:579,1
    - Dst: edns_cookie_server_validate
      Src: /src/unbound/testcode/unitmain.c:579,1
    - Dst: edns_cookie_server_write
      Src: /src/unbound/testcode/unitmain.c:582,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:583,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitmain.c:583,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 557
    functionDepth: 1
    functionLinenumber: 557
    functionLinenumberEnd: 584
    functionName: edns_cookie_rfc9018_a3
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - memcpy
    - edns_cookie_server_write
    - memcmp
    - unit_assert
    - edns_cookie_server_validate
    linkageType: ''
    returnType: void
    signature: void edns_cookie_rfc9018_a3(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:607,1
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:609,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:610,1
    - Dst: edns_cookie_server_validate
      Src: /src/unbound/testcode/unitmain.c:610,1
    - Dst: edns_cookie_server_write
      Src: /src/unbound/testcode/unitmain.c:613,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:614,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitmain.c:614,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 588
    functionDepth: 1
    functionLinenumber: 588
    functionLinenumberEnd: 615
    functionName: edns_cookie_rfc9018_a2
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - memcpy
    - edns_cookie_server_write
    - memcmp
    - unit_assert
    - edns_cookie_server_validate
    linkageType: ''
    returnType: void
    signature: void edns_cookie_rfc9018_a2(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:634,1
    - Dst: memcpy
      Src: /src/unbound/testcode/unitmain.c:636,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:637,1
    - Dst: edns_cookie_server_validate
      Src: /src/unbound/testcode/unitmain.c:637,1
    - Dst: edns_cookie_server_write
      Src: /src/unbound/testcode/unitmain.c:642,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:643,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitmain.c:643,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 618
    functionDepth: 1
    functionLinenumber: 618
    functionLinenumberEnd: 644
    functionName: edns_cookie_rfc9018_a1
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - memcpy
    - edns_cookie_server_write
    - memcmp
    - unit_assert
    - edns_cookie_server_validate
    linkageType: ''
    returnType: void
    signature: void edns_cookie_rfc9018_a1(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitmain.c:650,1
    - Dst: edns_cookie_rfc9018_a1
      Src: /src/unbound/testcode/unitmain.c:652,1
    - Dst: edns_cookie_rfc9018_a2
      Src: /src/unbound/testcode/unitmain.c:653,1
    - Dst: edns_cookie_rfc9018_a3
      Src: /src/unbound/testcode/unitmain.c:654,1
    - Dst: edns_cookie_rfc9018_a3_better
      Src: /src/unbound/testcode/unitmain.c:656,1
    - Dst: edns_cookie_invalid_hash
      Src: /src/unbound/testcode/unitmain.c:657,1
    - Dst: edns_cookie_invalid_version
      Src: /src/unbound/testcode/unitmain.c:658,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 659
      start: 647
    functionDepth: 2
    functionLinenumber: 647
    functionLinenumberEnd: 659
    functionName: edns_cookie_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - edns_cookie_invalid_hash
    - edns_cookie_rfc9018_a3_better
    - unit_show_feature
    - edns_cookie_rfc9018_a2
    - edns_cookie_rfc9018_a3
    - edns_cookie_invalid_version
    - edns_cookie_rfc9018_a1
    linkageType: ''
    returnType: void
    signature: void edns_cookie_test(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitmain.c:669,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:670,1
    - Dst: ub_initstate
      Src: /src/unbound/testcode/unitmain.c:670,1
    - Dst: ub_random
      Src: /src/unbound/testcode/unitmain.c:672,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:673,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:674,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:676,1
    - Dst: ub_random_max
      Src: /src/unbound/testcode/unitmain.c:680,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:681,1
    - Dst: ub_random_max
      Src: /src/unbound/testcode/unitmain.c:682,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:683,1
    - Dst: ub_random_max
      Src: /src/unbound/testcode/unitmain.c:685,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:686,1
    - Dst: ub_randfree
      Src: /src/unbound/testcode/unitmain.c:688,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 19
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 663
    functionDepth: 1
    functionLinenumber: 663
    functionLinenumberEnd: 689
    functionName: rnd_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - ub_randfree
    - ub_random_max
    - ub_initstate
    - unit_show_feature
    - unit_assert
    - ub_random
    linkageType: ''
    returnType: void
    signature: void rnd_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: respip_set_get_tree
      Src: /src/unbound/testcode/unitmain.c:703,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:709,1
    - Dst: addr_tree_find
      Src: /src/unbound/testcode/unitmain.c:711,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:715,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:716,1
    - Dst: resp_addr_get_action
      Src: /src/unbound/testcode/unitmain.c:717,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:718,1
    - Dst: resp_addr_get_rrset
      Src: /src/unbound/testcode/unitmain.c:718,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:720,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:721,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 3
    argNames:
    - set
    - actions
    - actions_len
    argTypes:
    - struct respip_set*
    - addr_action_t[]
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 698
    functionDepth: 1
    functionLinenumber: 698
    functionLinenumberEnd: 722
    functionName: verify_respip_set_actions
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - resp_addr_get_rrset
    - resp_addr_get_action
    - netblockstrtoaddr
    - addr_tree_find
    - respip_set_get_tree
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void verify_respip_set_actions(struct respip_set* set, addr_action_t
      actions[],\n\tint actions_len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: respip_set_create
      Src: /src/unbound/testcode/unitmain.c:740,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:744,1
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitmain.c:745,1
    - Dst: memset
      Src: /src/unbound/testcode/unitmain.c:746,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitmain.c:748,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitmain.c:749,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:750,1
    - Dst: cfg_str2list_insert
      Src: /src/unbound/testcode/unitmain.c:751,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:752,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:754,1
    - Dst: respip_global_apply_cfg
      Src: /src/unbound/testcode/unitmain.c:754,1
    - Dst: verify_respip_set_actions
      Src: /src/unbound/testcode/unitmain.c:755,1
    - Dst: respip_set_delete
      Src: /src/unbound/testcode/unitmain.c:757,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/testcode/unitmain.c:758,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 759
      start: 727
    functionDepth: 12
    functionLinenumber: 727
    functionLinenumberEnd: 759
    functionName: respip_conf_actions_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - cfg_str2list_insert
    - verify_respip_set_actions
    - respip_set_delete
    - respip_set_create
    - unit_show_feature
    - respip_global_apply_cfg
    - config_deldblstrlist
    - memset
    - strdup
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void respip_conf_actions_test(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitmain.c:787,1
    - Dst: memset
      Src: /src/unbound/testcode/unitmain.c:788,1
    - Dst: calloc
      Src: /src/unbound/testcode/unitmain.c:789,1
    - Dst: calloc
      Src: /src/unbound/testcode/unitmain.c:790,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:791,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitmain.c:792,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitmain.c:793,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:794,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitmain.c:799,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitmain.c:800,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:801,1
    - Dst: cfg_str2list_insert
      Src: /src/unbound/testcode/unitmain.c:802,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:803,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitmain.c:806,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitmain.c:807,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:808,1
    - Dst: cfg_str2list_insert
      Src: /src/unbound/testcode/unitmain.c:809,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:810,1
    - Dst: views_create
      Src: /src/unbound/testcode/unitmain.c:812,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:813,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:814,1
    - Dst: views_apply_cfg
      Src: /src/unbound/testcode/unitmain.c:814,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:815,1
    - Dst: respip_views_apply_cfg
      Src: /src/unbound/testcode/unitmain.c:815,1
    - Dst: views_find_view
      Src: /src/unbound/testcode/unitmain.c:818,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:819,1
    - Dst: verify_respip_set_actions
      Src: /src/unbound/testcode/unitmain.c:820,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitmain.c:821,1
    - Dst: views_find_view
      Src: /src/unbound/testcode/unitmain.c:822,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:823,1
    - Dst: verify_respip_set_actions
      Src: /src/unbound/testcode/unitmain.c:824,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitmain.c:825,1
    - Dst: views_delete
      Src: /src/unbound/testcode/unitmain.c:827,1
    - Dst: free
      Src: /src/unbound/testcode/unitmain.c:828,1
    - Dst: free
      Src: /src/unbound/testcode/unitmain.c:829,1
    - Dst: free
      Src: /src/unbound/testcode/unitmain.c:830,1
    - Dst: free
      Src: /src/unbound/testcode/unitmain.c:831,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 38
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 832
      start: 763
    functionDepth: 12
    functionLinenumber: 763
    functionLinenumberEnd: 832
    functionName: respip_view_conf_actions_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - respip_views_apply_cfg
    - views_apply_cfg
    - cfg_str2list_insert
    - verify_respip_set_actions
    - views_delete
    - lock_rw_unlock
    - views_create
    - unit_show_feature
    - free
    - views_find_view
    - calloc
    - memset
    - strdup
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void respip_view_conf_actions_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: netblockstrtoaddr
      Src: /src/unbound/testcode/unitmain.c:851,1
    - Dst: respip_set_get_tree
      Src: /src/unbound/testcode/unitmain.c:852,1
    - Dst: addr_tree_find
      Src: /src/unbound/testcode/unitmain.c:853,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:854,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:855,1
    - Dst: resp_addr_get_rrset
      Src: /src/unbound/testcode/unitmain.c:855,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:856,1
    - Dst: ntohs
      Src: /src/unbound/testcode/unitmain.c:856,1
    - Dst: packed_rr_to_string
      Src: /src/unbound/testcode/unitmain.c:857,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:859,1
    - Dst: strstr
      Src: /src/unbound/testcode/unitmain.c:859,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 5
    argNames:
    - set
    - ipstr
    - rdatastr
    - rdi
    - type
    argTypes:
    - struct respip_set*
    - char*
    - char*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 860
      start: 839
    functionDepth: 1
    functionLinenumber: 839
    functionLinenumberEnd: 860
    functionName: verify_rrset
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 9
    functionsReached:
    - resp_addr_get_rrset
    - packed_rr_to_string
    - netblockstrtoaddr
    - addr_tree_find
    - respip_set_get_tree
    - strstr
    - unit_assert
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void verify_rrset(struct respip_set* set, const char* ipstr,\n\tconst
      char* rdatastr, size_t rdi, uint16_t type)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/unbound/testcode/unitmain.c:882,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitmain.c:883,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:884,1
    - Dst: cfg_str2list_insert
      Src: /src/unbound/testcode/unitmain.c:885,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:886,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitmain.c:890,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitmain.c:891,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:892,1
    - Dst: cfg_str2list_insert
      Src: /src/unbound/testcode/unitmain.c:893,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:894,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 2
    argNames:
    - respip_actions
    - respip_data
    argTypes:
    - struct config_str2list**
    - struct config_str2list**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 896
      start: 873
    functionDepth: 1
    functionLinenumber: 873
    functionLinenumberEnd: 896
    functionName: cfg_insert_respip_data
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - strdup
    - cfg_str2list_insert
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void cfg_insert_respip_data(struct config_str2list** respip_actions,\n\tstruct
      config_str2list** respip_data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: respip_set_create
      Src: /src/unbound/testcode/unitmain.c:902,1
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitmain.c:905,1
    - Dst: memset
      Src: /src/unbound/testcode/unitmain.c:906,1
    - Dst: cfg_insert_respip_data
      Src: /src/unbound/testcode/unitmain.c:908,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:911,1
    - Dst: respip_global_apply_cfg
      Src: /src/unbound/testcode/unitmain.c:911,1
    - Dst: verify_rrset
      Src: /src/unbound/testcode/unitmain.c:912,1
    - Dst: verify_rrset
      Src: /src/unbound/testcode/unitmain.c:913,1
    - Dst: verify_rrset
      Src: /src/unbound/testcode/unitmain.c:914,1
    - Dst: verify_rrset
      Src: /src/unbound/testcode/unitmain.c:915,1
    - Dst: respip_set_delete
      Src: /src/unbound/testcode/unitmain.c:917,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 918
      start: 899
    functionDepth: 12
    functionLinenumber: 899
    functionLinenumberEnd: 918
    functionName: respip_conf_data_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - respip_set_delete
    - verify_rrset
    - respip_set_create
    - cfg_insert_respip_data
    - unit_show_feature
    - respip_global_apply_cfg
    - memset
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void respip_conf_data_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitmain.c:930,1
    - Dst: memset
      Src: /src/unbound/testcode/unitmain.c:931,1
    - Dst: calloc
      Src: /src/unbound/testcode/unitmain.c:932,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:933,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitmain.c:934,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:935,1
    - Dst: cfg_insert_respip_data
      Src: /src/unbound/testcode/unitmain.c:937,1
    - Dst: views_create
      Src: /src/unbound/testcode/unitmain.c:938,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:939,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:940,1
    - Dst: views_apply_cfg
      Src: /src/unbound/testcode/unitmain.c:940,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:943,1
    - Dst: respip_views_apply_cfg
      Src: /src/unbound/testcode/unitmain.c:943,1
    - Dst: views_find_view
      Src: /src/unbound/testcode/unitmain.c:944,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:945,1
    - Dst: verify_rrset
      Src: /src/unbound/testcode/unitmain.c:946,1
    - Dst: verify_rrset
      Src: /src/unbound/testcode/unitmain.c:948,1
    - Dst: verify_rrset
      Src: /src/unbound/testcode/unitmain.c:950,1
    - Dst: verify_rrset
      Src: /src/unbound/testcode/unitmain.c:952,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitmain.c:954,1
    - Dst: views_delete
      Src: /src/unbound/testcode/unitmain.c:956,1
    - Dst: free
      Src: /src/unbound/testcode/unitmain.c:957,1
    - Dst: free
      Src: /src/unbound/testcode/unitmain.c:958,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 959
      start: 921
    functionDepth: 12
    functionLinenumber: 921
    functionLinenumberEnd: 959
    functionName: respip_view_conf_data_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - respip_views_apply_cfg
    - views_apply_cfg
    - views_delete
    - verify_rrset
    - cfg_insert_respip_data
    - lock_rw_unlock
    - views_create
    - unit_show_feature
    - free
    - views_find_view
    - calloc
    - memset
    - strdup
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void respip_view_conf_data_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: respip_view_conf_data_test
      Src: /src/unbound/testcode/unitmain.c:964,1
    - Dst: respip_conf_data_test
      Src: /src/unbound/testcode/unitmain.c:965,1
    - Dst: respip_view_conf_actions_test
      Src: /src/unbound/testcode/unitmain.c:966,1
    - Dst: respip_conf_actions_test
      Src: /src/unbound/testcode/unitmain.c:967,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 968
      start: 962
    functionDepth: 13
    functionLinenumber: 962
    functionLinenumberEnd: 968
    functionName: respip_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - respip_conf_actions_test
    - respip_view_conf_data_test
    - respip_view_conf_actions_test
    - respip_conf_data_test
    linkageType: ''
    returnType: void
    signature: void respip_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/unitmain.c:980,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:986,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/testcode/unitmain.c:987,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:989,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/testcode/unitmain.c:990,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:992,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/testcode/unitmain.c:993,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:995,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/testcode/unitmain.c:996,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:998,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/testcode/unitmain.c:999,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1002,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/testcode/unitmain.c:1003,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1005,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/testcode/unitmain.c:1006,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1008,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/testcode/unitmain.c:1009,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1011,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/testcode/unitmain.c:1012,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1014,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/testcode/unitmain.c:1015,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1018,1
    - Dst: edns_opt_list_append
      Src: /src/unbound/testcode/unitmain.c:1019,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1021,1
    - Dst: edns_opt_list_append
      Src: /src/unbound/testcode/unitmain.c:1022,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1025,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/testcode/unitmain.c:1026,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1028,1
    - Dst: edns_opt_list_append_ede
      Src: /src/unbound/testcode/unitmain.c:1029,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 20
    argCount: 2
    argNames:
    - edns
    - region
    argTypes:
    - struct edns_data*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1031
      start: 977
    functionDepth: 1
    functionLinenumber: 977
    functionLinenumberEnd: 1031
    functionName: edns_ede_encode_setup
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - edns_opt_list_append_ede
    - memset
    - edns_opt_list_append
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void edns_ede_encode_setup(struct edns_data* edns,\n\tstruct regional*
      region)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1038,1
    - Dst: reply_info_answer_encode
      Src: /src/unbound/testcode/unitmain.c:1039,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/testcode/unitmain.c:1042,1
    - Dst: query_dname_len
      Src: /src/unbound/testcode/unitmain.c:1043,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/testcode/unitmain.c:1044,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1046,1
    - Dst: parse_edns_from_query_pkt
      Src: /src/unbound/testcode/unitmain.c:1046,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - qinfo
    - rep
    - region
    - edns
    - pkt
    argTypes:
    - struct query_info*
    - struct reply_info*
    - struct regional*
    - struct edns_data*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1048
      start: 1033
    functionDepth: 1
    functionLinenumber: 1033
    functionLinenumberEnd: 1048
    functionName: edns_ede_encode_encodedecode
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - query_dname_len
    - reply_info_answer_encode
    - sldns_buffer_skip
    - parse_edns_from_query_pkt
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void edns_ede_encode_encodedecode(struct query_info* qinfo,\n\tstruct
      reply_info* rep, struct regional* region,\n\tstruct edns_data* edns, sldns_buffer*
      pkt)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/testcode/unitmain.c:1059,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 5
    argNames:
    - edns
    - found_ede
    - found_ede_other
    - found_ede_txt
    - found_other_edns
    argTypes:
    - struct edns_data*
    - int*
    - int*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1050
    functionDepth: 1
    functionLinenumber: 1050
    functionLinenumberEnd: 1067
    functionName: edns_ede_encode_check
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - sldns_read_uint16
    linkageType: ''
    returnType: void
    signature: "void edns_ede_encode_check(struct edns_data* edns, int* found_ede,\n\tint*
      found_ede_other, int* found_ede_txt, int* found_other_edns)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/unitmain.c:1075,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1076,1
    - Dst: edns_ede_encode_setup
      Src: /src/unbound/testcode/unitmain.c:1077,1
    - Dst: edns_ede_encode_encodedecode
      Src: /src/unbound/testcode/unitmain.c:1079,1
    - Dst: edns_ede_encode_check
      Src: /src/unbound/testcode/unitmain.c:1080,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1082,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1083,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1084,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1085,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/unitmain.c:1087,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 10
    argCount: 3
    argNames:
    - qinfo
    - rep
    - region
    argTypes:
    - struct query_info*
    - struct reply_info*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1088
      start: 1069
    functionDepth: 2
    functionLinenumber: 1069
    functionLinenumberEnd: 1088
    functionName: edns_ede_encode_fit_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_new
    - sldns_buffer_free
    - edns_ede_encode_encodedecode
    - edns_ede_encode_setup
    - edns_ede_encode_check
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void edns_ede_encode_fit_test(struct query_info* qinfo,\n\tstruct
      reply_info* rep, struct regional* region)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: edns_ede_encode_setup
      Src: /src/unbound/testcode/unitmain.c:1098,1
    - Dst: calc_edns_field_size
      Src: /src/unbound/testcode/unitmain.c:1101,1
    - Dst: calc_ede_option_size
      Src: /src/unbound/testcode/unitmain.c:1102,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/unitmain.c:1103,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1109,1
    - Dst: edns_ede_encode_encodedecode
      Src: /src/unbound/testcode/unitmain.c:1110,1
    - Dst: edns_ede_encode_check
      Src: /src/unbound/testcode/unitmain.c:1111,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1113,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1114,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1115,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1116,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/unitmain.c:1118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - qinfo
    - rep
    - region
    argTypes:
    - struct query_info*
    - struct reply_info*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1090
    functionDepth: 2
    functionLinenumber: 1090
    functionLinenumberEnd: 1119
    functionName: edns_ede_encode_notxt_fit_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_new
    - calc_ede_option_size
    - sldns_buffer_free
    - edns_ede_encode_encodedecode
    - edns_ede_encode_setup
    - calc_edns_field_size
    - edns_ede_encode_check
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void edns_ede_encode_notxt_fit_test( struct query_info* qinfo,\n\tstruct
      reply_info* rep, struct regional* region)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: edns_ede_encode_setup
      Src: /src/unbound/testcode/unitmain.c:1129,1
    - Dst: calc_edns_field_size
      Src: /src/unbound/testcode/unitmain.c:1131,1
    - Dst: calc_ede_option_size
      Src: /src/unbound/testcode/unitmain.c:1132,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/unitmain.c:1133,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1139,1
    - Dst: edns_ede_encode_encodedecode
      Src: /src/unbound/testcode/unitmain.c:1140,1
    - Dst: edns_ede_encode_check
      Src: /src/unbound/testcode/unitmain.c:1141,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1143,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1144,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1145,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1146,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/unitmain.c:1148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 3
    argNames:
    - qinfo
    - rep
    - region
    argTypes:
    - struct query_info*
    - struct reply_info*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1149
      start: 1121
    functionDepth: 2
    functionLinenumber: 1121
    functionLinenumberEnd: 1149
    functionName: edns_ede_encode_no_fit_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_new
    - calc_ede_option_size
    - sldns_buffer_free
    - edns_ede_encode_encodedecode
    - edns_ede_encode_setup
    - calc_edns_field_size
    - edns_ede_encode_check
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void edns_ede_encode_no_fit_test( struct query_info* qinfo,\n\tstruct
      reply_info* rep, struct regional* region)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regional_create
      Src: /src/unbound/testcode/unitmain.c:1155,1
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitmain.c:1158,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1159,1
    - Dst: construct_reply_info_base
      Src: /src/unbound/testcode/unitmain.c:1160,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1165,1
    - Dst: memset
      Src: /src/unbound/testcode/unitmain.c:1166,1
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/testcode/unitmain.c:1167,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1168,1
    - Dst: edns_ede_encode_fit_test
      Src: /src/unbound/testcode/unitmain.c:1172,1
    - Dst: edns_ede_encode_notxt_fit_test
      Src: /src/unbound/testcode/unitmain.c:1173,1
    - Dst: edns_ede_encode_no_fit_test
      Src: /src/unbound/testcode/unitmain.c:1174,1
    - Dst: free
      Src: /src/unbound/testcode/unitmain.c:1177,1
    - Dst: regional_free_all
      Src: /src/unbound/testcode/unitmain.c:1178,1
    - Dst: regional_destroy
      Src: /src/unbound/testcode/unitmain.c:1179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1180
      start: 1153
    functionDepth: 4
    functionLinenumber: 1153
    functionLinenumberEnd: 1180
    functionName: edns_ede_answer_encode_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - construct_reply_info_base
    - edns_ede_encode_no_fit_test
    - regional_create
    - edns_ede_encode_fit_test
    - unit_show_feature
    - free
    - sldns_str2wire_dname
    - memset
    - edns_ede_encode_notxt_fit_test
    - regional_free_all
    - regional_destroy
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void edns_ede_answer_encode_test(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/testcode/unitmain.c:1188,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/testcode/unitmain.c:1189,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1191,1
    - Dst: rbtree_first
      Src: /src/unbound/testcode/unitmain.c:1192,1
    - Dst: rbtree_first
      Src: /src/unbound/testcode/unitmain.c:1193,1
    - Dst: rbtree_next
      Src: /src/unbound/testcode/unitmain.c:1196,1
    - Dst: rbtree_next
      Src: /src/unbound/testcode/unitmain.c:1197,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1200,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitmain.c:1200,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1205,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1209,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/testcode/unitmain.c:1209,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitmain.c:1215,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitmain.c:1216,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 2
    argNames:
    - z1
    - z2
    argTypes:
    - struct local_zones*
    - struct local_zones*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1184
    functionDepth: 1
    functionLinenumber: 1184
    functionLinenumberEnd: 1217
    functionName: compare_localzone_trees
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - dname_lab_cmp
    - lock_rw_unlock
    - rbtree_next
    - rbtree_first
    - lock_rw_rdlock
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void compare_localzone_trees(struct local_zones* z1,\n\tstruct local_zones*
      z2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitmain.c:1244,1
    - Dst: local_zones_create
      Src: /src/unbound/testcode/unitmain.c:1245,1
    - Dst: local_zones_create
      Src: /src/unbound/testcode/unitmain.c:1246,1
    - Dst: lz_enter_zone
      Src: /src/unbound/testcode/unitmain.c:1255,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitmain.c:1259,1
    - Dst: lz_init_parents
      Src: /src/unbound/testcode/unitmain.c:1260,1
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/testcode/unitmain.c:1263,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1264,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/testcode/unitmain.c:1265,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/testcode/unitmain.c:1266,1
    - Dst: local_zones_add_zone
      Src: /src/unbound/testcode/unitmain.c:1267,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitmain.c:1269,1
    - Dst: compare_localzone_trees
      Src: /src/unbound/testcode/unitmain.c:1272,1
    - Dst: local_zones_delete
      Src: /src/unbound/testcode/unitmain.c:1275,1
    - Dst: local_zones_delete
      Src: /src/unbound/testcode/unitmain.c:1276,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 20
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1277
      start: 1221
    functionDepth: 6
    functionLinenumber: 1221
    functionLinenumberEnd: 1277
    functionName: localzone_parents_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - dname_count_size_labels
    - local_zones_delete
    - local_zones_add_zone
    - local_zones_create
    - unit_show_feature
    - lz_enter_zone
    - sldns_str2wire_dname
    - compare_localzone_trees
    - lz_init_parents
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void localzone_parents_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: localzone_parents_test
      Src: /src/unbound/testcode/unitmain.c:1282,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1283
      start: 1280
    functionDepth: 7
    functionLinenumber: 1280
    functionLinenumberEnd: 1283
    functionName: localzone_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - localzone_parents_test
    linkageType: ''
    returnType: void
    signature: void localzone_test(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitmain.c:1291,1
    - Dst: regional_create
      Src: /src/unbound/testcode/unitmain.c:1292,1
    - Dst: regional_create
      Src: /src/unbound/testcode/unitmain.c:1293,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitmain.c:1294,1
    - Dst: calloc
      Src: /src/unbound/testcode/unitmain.c:1296,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitmain.c:1297,1
    - Dst: calloc
      Src: /src/unbound/testcode/unitmain.c:1298,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitmain.c:1299,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitmain.c:1300,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitmain.c:1301,1
    - Dst: mesh_copy_client_info
      Src: /src/unbound/testcode/unitmain.c:1303,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitmain.c:1304,1
    - Dst: mesh_copy_client_info
      Src: /src/unbound/testcode/unitmain.c:1305,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitmain.c:1306,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1308,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitmain.c:1308,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1309,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitmain.c:1309,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1312,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitmain.c:1313,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitmain.c:1317,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1324,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1327,1
    - Dst: regional_destroy
      Src: /src/unbound/testcode/unitmain.c:1330,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1332,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitmain.c:1332,1
    - Dst: regional_destroy
      Src: /src/unbound/testcode/unitmain.c:1334,1
    - Dst: free
      Src: /src/unbound/testcode/unitmain.c:1335,1
    - Dst: free
      Src: /src/unbound/testcode/unitmain.c:1336,1
    - Dst: free
      Src: /src/unbound/testcode/unitmain.c:1337,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 42
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1338
      start: 1287
    functionDepth: 2
    functionLinenumber: 1287
    functionLinenumberEnd: 1338
    functionName: mesh_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - strcmp
    - regional_create
    - mesh_copy_client_info
    - fatal_exit
    - unit_show_func
    - free
    - calloc
    - strlen
    - regional_destroy
    - strdup
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void mesh_test(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/testcode/unitmain.c:1360,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitmain.c:1363,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitmain.c:1364,1
    - Dst: memset
      Src: /src/unbound/testcode/unitmain.c:1365,1
    - Dst: memset
      Src: /src/unbound/testcode/unitmain.c:1366,1
    - Dst: htons
      Src: /src/unbound/testcode/unitmain.c:1368,1
    - Dst: htons
      Src: /src/unbound/testcode/unitmain.c:1378,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1381,1
    - Dst: packed_rr_to_string
      Src: /src/unbound/testcode/unitmain.c:1381,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1382,1
    - Dst: strstr
      Src: /src/unbound/testcode/unitmain.c:1382,1
    - Dst: htons
      Src: /src/unbound/testcode/unitmain.c:1392,1
    - Dst: calloc
      Src: /src/unbound/testcode/unitmain.c:1396,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitmain.c:1397,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/testcode/unitmain.c:1398,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1399,1
    - Dst: packed_rr_to_string
      Src: /src/unbound/testcode/unitmain.c:1399,1
    - Dst: free
      Src: /src/unbound/testcode/unitmain.c:1400,1
    - Dst: calloc
      Src: /src/unbound/testcode/unitmain.c:1404,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitmain.c:1405,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/testcode/unitmain.c:1406,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1407,1
    - Dst: packed_rr_to_string
      Src: /src/unbound/testcode/unitmain.c:1407,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1408,1
    - Dst: free
      Src: /src/unbound/testcode/unitmain.c:1409,1
    - Dst: calloc
      Src: /src/unbound/testcode/unitmain.c:1413,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitmain.c:1414,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/testcode/unitmain.c:1415,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1416,1
    - Dst: packed_rr_to_string
      Src: /src/unbound/testcode/unitmain.c:1416,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmain.c:1417,1
    - Dst: free
      Src: /src/unbound/testcode/unitmain.c:1418,1
    - Dst: free
      Src: /src/unbound/testcode/unitmain.c:1420,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 52
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1421
      start: 1343
    functionDepth: 1
    functionLinenumber: 1343
    functionLinenumberEnd: 1421
    functionName: packed_rrset_test
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 0
    functionsReached:
    - packed_rr_to_string
    - sldns_write_uint16
    - fatal_exit
    - malloc
    - htons
    - unit_show_func
    - calloc
    - free
    - memset
    - strstr
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void packed_rrset_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/unitmain.c:1425,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - file
    - func
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1423
    functionDepth: 0
    functionLinenumber: 1423
    functionLinenumberEnd: 1426
    functionName: unit_show_func
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 35
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void unit_show_func(const char* file, const char* func)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/unitmain.c:1430,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - feature
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1431
      start: 1428
    functionDepth: 0
    functionLinenumber: 1428
    functionLinenumberEnd: 1431
    functionName: unit_show_feature
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 17
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void unit_show_feature(const char* feature)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: checklock_start
      Src: /src/unbound/testcode/unitmain.c:1446,1
    - Dst: log_init
      Src: /src/unbound/testcode/unitmain.c:1447,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmain.c:1449,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmain.c:1450,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmain.c:1456,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmain.c:1458,1
    - Dst: ERR_load_crypto_strings
      Src: /src/unbound/testcode/unitmain.c:1462,1
    - Dst: sldns_key_EVP_load_gost_id
      Src: /src/unbound/testcode/unitmain.c:1465,1
    - Dst: ecdsa_evp_workaround_init
      Src: /src/unbound/testcode/unitmain.c:1468,1
    - Dst: NSS_NoDB_Init
      Src: /src/unbound/testcode/unitmain.c:1471,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitmain.c:1472,1
    - Dst: authzone_test
      Src: /src/unbound/testcode/unitmain.c:1474,1
    - Dst: neg_test
      Src: /src/unbound/testcode/unitmain.c:1475,1
    - Dst: rnd_test
      Src: /src/unbound/testcode/unitmain.c:1476,1
    - Dst: respip_test
      Src: /src/unbound/testcode/unitmain.c:1477,1
    - Dst: verify_test
      Src: /src/unbound/testcode/unitmain.c:1478,1
    - Dst: net_test
      Src: /src/unbound/testcode/unitmain.c:1479,1
    - Dst: config_memsize_test
      Src: /src/unbound/testcode/unitmain.c:1480,1
    - Dst: config_tag_test
      Src: /src/unbound/testcode/unitmain.c:1481,1
    - Dst: dname_test
      Src: /src/unbound/testcode/unitmain.c:1482,1
    - Dst: rtt_test
      Src: /src/unbound/testcode/unitmain.c:1483,1
    - Dst: anchors_test
      Src: /src/unbound/testcode/unitmain.c:1484,1
    - Dst: alloc_test
      Src: /src/unbound/testcode/unitmain.c:1485,1
    - Dst: regional_test
      Src: /src/unbound/testcode/unitmain.c:1486,1
    - Dst: lruhash_test
      Src: /src/unbound/testcode/unitmain.c:1487,1
    - Dst: slabhash_test
      Src: /src/unbound/testcode/unitmain.c:1488,1
    - Dst: infra_test
      Src: /src/unbound/testcode/unitmain.c:1489,1
    - Dst: ldns_test
      Src: /src/unbound/testcode/unitmain.c:1490,1
    - Dst: edns_cookie_test
      Src: /src/unbound/testcode/unitmain.c:1491,1
    - Dst: zonemd_test
      Src: /src/unbound/testcode/unitmain.c:1492,1
    - Dst: tcpreuse_test
      Src: /src/unbound/testcode/unitmain.c:1493,1
    - Dst: msgparse_test
      Src: /src/unbound/testcode/unitmain.c:1494,1
    - Dst: packed_rrset_test
      Src: /src/unbound/testcode/unitmain.c:1495,1
    - Dst: edns_ede_answer_encode_test
      Src: /src/unbound/testcode/unitmain.c:1496,1
    - Dst: localzone_test
      Src: /src/unbound/testcode/unitmain.c:1497,1
    - Dst: mesh_test
      Src: /src/unbound/testcode/unitmain.c:1498,1
    - Dst: ecs_test
      Src: /src/unbound/testcode/unitmain.c:1500,1
    - Dst: doq_test
      Src: /src/unbound/testcode/unitmain.c:1503,1
    - Dst: log_get_lock
      Src: /src/unbound/testcode/unitmain.c:1505,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/testcode/unitmain.c:1506,1
    - Dst: log_get_lock
      Src: /src/unbound/testcode/unitmain.c:1506,1
    - Dst: checklock_stop
      Src: /src/unbound/testcode/unitmain.c:1508,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmain.c:1509,1
    - Dst: sldns_key_EVP_unload_gost
      Src: /src/unbound/testcode/unitmain.c:1512,1
    - Dst: EVP_cleanup
      Src: /src/unbound/testcode/unitmain.c:1516,1
    - Dst: ENGINE_cleanup
      Src: /src/unbound/testcode/unitmain.c:1519,1
    - Dst: CONF_modules_free
      Src: /src/unbound/testcode/unitmain.c:1521,1
    - Dst: CRYPTO_cleanup_all_ex_data
      Src: /src/unbound/testcode/unitmain.c:1524,1
    - Dst: ERR_free_strings
      Src: /src/unbound/testcode/unitmain.c:1527,1
    - Dst: RAND_cleanup
      Src: /src/unbound/testcode/unitmain.c:1530,1
    - Dst: OPENSSL_cleanup
      Src: /src/unbound/testcode/unitmain.c:1533,1
    - Dst: NSS_Shutdown
      Src: /src/unbound/testcode/unitmain.c:1536,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitmain.c:1537,1
    - Dst: pthread_exit
      Src: /src/unbound/testcode/unitmain.c:1541,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 60
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1544
      start: 1443
    functionDepth: 14
    functionLinenumber: 1443
    functionLinenumberEnd: 1544
    functionName: main
    functionSourceFile: /src/unbound/testcode/unitmain.c
    functionUses: 33
    functionsReached:
    - lruhash_test
    - localzone_test
    - EVP_cleanup
    - CONF_modules_free
    - ldns_test
    - doq_test
    - RAND_cleanup
    - net_test
    - rtt_test
    - log_init
    - anchors_test
    - sldns_key_EVP_unload_gost
    - NSS_NoDB_Init
    - packed_rrset_test
    - tcpreuse_test
    - edns_ede_answer_encode_test
    - pthread_exit
    - printf
    - edns_cookie_test
    - alloc_test
    - verify_test
    - sldns_key_EVP_load_gost_id
    - config_tag_test
    - zonemd_test
    - ecs_test
    - OPENSSL_cleanup
    - msgparse_test
    - neg_test
    - infra_test
    - authzone_test
    - respip_test
    - slabhash_test
    - log_get_lock
    - checklock_stop
    - lock_basic_destroy
    - dname_test
    - config_memsize_test
    - NSS_Shutdown
    - mesh_test
    - ecdsa_evp_workaround_init
    - ERR_free_strings
    - fatal_exit
    - CRYPTO_cleanup_all_ex_data
    - rnd_test
    - ENGINE_cleanup
    - ERR_load_crypto_strings
    - checklock_start
    - regional_test
    linkageType: ''
    returnType: int
    signature: int main(int argc, char* argv[])
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/unitldns.c:58,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:59,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 4
    argNames:
    - b
    - blen
    - s
    - slen
    argTypes:
    - uint8_t*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 66
      start: 53
    functionDepth: 1
    functionLinenumber: 53
    functionLinenumberEnd: 66
    functionName: buf_to_hex
    functionSourceFile: /src/unbound/testcode/unitldns.c
    functionUses: 0
    functionsReached:
    - printf
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void buf_to_hex(uint8_t* b, size_t blen, char* s, size_t slen)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_rr_buf
      Src: /src/unbound/testcode/unitldns.c:84,1
    - Dst: printf
      Src: /src/unbound/testcode/unitldns.c:87,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/testcode/unitldns.c:88,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/testcode/unitldns.c:89,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:91,1
    - Dst: buf_to_hex
      Src: /src/unbound/testcode/unitldns.c:92,1
    - Dst: printf
      Src: /src/unbound/testcode/unitldns.c:93,1
    - Dst: sldns_wire2str_rr_buf
      Src: /src/unbound/testcode/unitldns.c:95,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:96,1
    - Dst: printf
      Src: /src/unbound/testcode/unitldns.c:97,1
    - Dst: sldns_str2wire_rr_buf
      Src: /src/unbound/testcode/unitldns.c:100,1
    - Dst: printf
      Src: /src/unbound/testcode/unitldns.c:103,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/testcode/unitldns.c:104,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/testcode/unitldns.c:105,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:107,1
    - Dst: buf_to_hex
      Src: /src/unbound/testcode/unitldns.c:108,1
    - Dst: printf
      Src: /src/unbound/testcode/unitldns.c:109,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 5
    argNames:
    - txt_in
    - wire1
    - txt_out
    - wire2
    - bufs
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 75
    functionDepth: 7
    functionLinenumber: 75
    functionLinenumberEnd: 110
    functionName: rr_transform
    functionSourceFile: /src/unbound/testcode/unitldns.c
    functionUses: 0
    functionsReached:
    - sldns_str2wire_rr_buf
    - printf
    - LDNS_WIREPARSE_OFFSET
    - sldns_wire2str_rr_buf
    - sldns_get_errorstr_parse
    - buf_to_hex
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void rr_transform(char* txt_in, char* wire1, char* txt_out, char*
      wire2, \n\tsize_t bufs)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/unbound/testcode/unitldns.c:120,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitldns.c:125,1
    - Dst: printf
      Src: /src/unbound/testcode/unitldns.c:126,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitldns.c:127,1
    - Dst: printf
      Src: /src/unbound/testcode/unitldns.c:128,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitldns.c:129,1
    - Dst: printf
      Src: /src/unbound/testcode/unitldns.c:130,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:132,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitldns.c:132,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:133,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitldns.c:133,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:134,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitldns.c:134,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 5
    argNames:
    - wire_chk
    - txt_chk
    - txt_out
    - wire_out
    - back
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 135
    functionName: rr_checks
    functionSourceFile: /src/unbound/testcode/unitldns.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strstr
    - printf
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void rr_checks(char* wire_chk, char* txt_chk, char* txt_out, char*
      wire_out,\n\tchar* back)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/testcode/unitldns.c:148,1
    - Dst: malloc
      Src: /src/unbound/testcode/unitldns.c:149,1
    - Dst: malloc
      Src: /src/unbound/testcode/unitldns.c:150,1
    - Dst: malloc
      Src: /src/unbound/testcode/unitldns.c:151,1
    - Dst: malloc
      Src: /src/unbound/testcode/unitldns.c:152,1
    - Dst: malloc
      Src: /src/unbound/testcode/unitldns.c:153,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitldns.c:155,1
    - Dst: fopen
      Src: /src/unbound/testcode/unitldns.c:156,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitldns.c:157,1
    - Dst: strerror
      Src: /src/unbound/testcode/unitldns.c:157,1
    - Dst: fopen
      Src: /src/unbound/testcode/unitldns.c:158,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitldns.c:159,1
    - Dst: strerror
      Src: /src/unbound/testcode/unitldns.c:159,1
    - Dst: fopen
      Src: /src/unbound/testcode/unitldns.c:164,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitldns.c:165,1
    - Dst: strerror
      Src: /src/unbound/testcode/unitldns.c:165,1
    - Dst: fgets
      Src: /src/unbound/testcode/unitldns.c:168,1
    - Dst: printf
      Src: /src/unbound/testcode/unitldns.c:170,1
    - Dst: fgets
      Src: /src/unbound/testcode/unitldns.c:175,1
    - Dst: printf
      Src: /src/unbound/testcode/unitldns.c:176,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:177,1
    - Dst: fgets
      Src: /src/unbound/testcode/unitldns.c:179,1
    - Dst: printf
      Src: /src/unbound/testcode/unitldns.c:180,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:181,1
    - Dst: printf
      Src: /src/unbound/testcode/unitldns.c:184,1
    - Dst: printf
      Src: /src/unbound/testcode/unitldns.c:185,1
    - Dst: rr_transform
      Src: /src/unbound/testcode/unitldns.c:187,1
    - Dst: fprintf
      Src: /src/unbound/testcode/unitldns.c:190,1
    - Dst: rr_checks
      Src: /src/unbound/testcode/unitldns.c:192,1
    - Dst: fclose
      Src: /src/unbound/testcode/unitldns.c:196,1
    - Dst: fclose
      Src: /src/unbound/testcode/unitldns.c:197,1
    - Dst: fclose
      Src: /src/unbound/testcode/unitldns.c:198,1
    - Dst: free
      Src: /src/unbound/testcode/unitldns.c:199,1
    - Dst: free
      Src: /src/unbound/testcode/unitldns.c:200,1
    - Dst: free
      Src: /src/unbound/testcode/unitldns.c:201,1
    - Dst: free
      Src: /src/unbound/testcode/unitldns.c:202,1
    - Dst: free
      Src: /src/unbound/testcode/unitldns.c:203,1
    - Dst: free
      Src: /src/unbound/testcode/unitldns.c:204,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 51
    argCount: 2
    argNames:
    - input
    - check
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 142
    functionDepth: 8
    functionLinenumber: 142
    functionLinenumberEnd: 205
    functionName: rr_test_file
    functionSourceFile: /src/unbound/testcode/unitldns.c
    functionUses: 0
    functionsReached:
    - rr_transform
    - fclose
    - printf
    - fatal_exit
    - malloc
    - free
    - fopen
    - strerror
    - fgets
    - fprintf
    - rr_checks
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void rr_test_file(const char* input, const char* check)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 207
    functionDepth: 0
    functionLinenumber: 207
    functionLinenumberEnd: 208
    functionName: xstr
    functionSourceFile: /src/unbound/testcode/unitldns.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: xstr(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 209
    functionName: str
    functionSourceFile: /src/unbound/testcode/unitldns.c
    functionUses: 142
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: str(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rr_test_file
      Src: /src/unbound/testcode/unitldns.c:220,1
    - Dst: rr_test_file
      Src: /src/unbound/testcode/unitldns.c:222,1
    - Dst: rr_test_file
      Src: /src/unbound/testcode/unitldns.c:224,1
    - Dst: rr_test_file
      Src: /src/unbound/testcode/unitldns.c:226,1
    - Dst: rr_test_file
      Src: /src/unbound/testcode/unitldns.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 217
    functionDepth: 9
    functionLinenumber: 217
    functionLinenumberEnd: 230
    functionName: rr_tests
    functionSourceFile: /src/unbound/testcode/unitldns.c
    functionUses: 0
    functionsReached:
    - rr_test_file
    linkageType: ''
    returnType: void
    signature: void rr_tests(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/unitldns.c:252,1
    - Dst: sldns_b64_pton
      Src: /src/unbound/testcode/unitldns.c:253,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:254,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitldns.c:254,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitldns.c:254,1
    - Dst: memset
      Src: /src/unbound/testcode/unitldns.c:255,1
    - Dst: sldns_b64_pton
      Src: /src/unbound/testcode/unitldns.c:256,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:257,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitldns.c:257,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitldns.c:257,1
    - Dst: memset
      Src: /src/unbound/testcode/unitldns.c:258,1
    - Dst: sldns_b64_pton
      Src: /src/unbound/testcode/unitldns.c:259,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:260,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitldns.c:260,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitldns.c:260,1
    - Dst: memset
      Src: /src/unbound/testcode/unitldns.c:261,1
    - Dst: sldns_b64_pton
      Src: /src/unbound/testcode/unitldns.c:262,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:265,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitldns.c:265,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitldns.c:265,1
    - Dst: memset
      Src: /src/unbound/testcode/unitldns.c:267,1
    - Dst: sldns_b64url_pton
      Src: /src/unbound/testcode/unitldns.c:268,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitldns.c:268,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:269,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitldns.c:269,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitldns.c:269,1
    - Dst: memset
      Src: /src/unbound/testcode/unitldns.c:270,1
    - Dst: sldns_b64url_pton
      Src: /src/unbound/testcode/unitldns.c:271,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitldns.c:271,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:272,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitldns.c:272,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitldns.c:272,1
    - Dst: memset
      Src: /src/unbound/testcode/unitldns.c:273,1
    - Dst: sldns_b64url_pton
      Src: /src/unbound/testcode/unitldns.c:274,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitldns.c:274,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:275,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitldns.c:275,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitldns.c:275,1
    - Dst: memset
      Src: /src/unbound/testcode/unitldns.c:277,1
    - Dst: sldns_b64url_pton
      Src: /src/unbound/testcode/unitldns.c:278,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitldns.c:278,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:279,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 233
    functionDepth: 2
    functionLinenumber: 233
    functionLinenumberEnd: 280
    functionName: b64_test
    functionSourceFile: /src/unbound/testcode/unitldns.c
    functionUses: 0
    functionsReached:
    - strcmp
    - sldns_b64url_pton
    - strlen
    - memset
    - sldns_b64_pton
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void b64_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_rr_buf
      Src: /src/unbound/testcode/unitldns.c:288,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:290,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:291,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitldns.c:292,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/testcode/unitldns.c:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 283
    functionDepth: 7
    functionLinenumber: 283
    functionLinenumberEnd: 293
    functionName: svcb_ech_test
    functionSourceFile: /src/unbound/testcode/unitldns.c
    functionUses: 0
    functionsReached:
    - sldns_str2wire_rr_buf
    - sldns_read_uint16
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void svcb_ech_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitldns.c:298,1
    - Dst: rr_tests
      Src: /src/unbound/testcode/unitldns.c:299,1
    - Dst: b64_test
      Src: /src/unbound/testcode/unitldns.c:300,1
    - Dst: svcb_ech_test
      Src: /src/unbound/testcode/unitldns.c:301,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 295
    functionDepth: 10
    functionLinenumber: 295
    functionLinenumberEnd: 302
    functionName: ldns_test
    functionSourceFile: /src/unbound/testcode/unitldns.c
    functionUses: 1
    functionsReached:
    - svcb_ech_test
    - b64_test
    - rr_tests
    - unit_show_feature
    linkageType: ''
    returnType: void
    signature: void ldns_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - lock
    - ','
    - area
    - ','
    - size
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 205
    functionName: lock_protect
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 25
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_protect(lock, area, size)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 333
    functionDepth: 0
    functionLinenumber: 333
    functionLinenumberEnd: 334
    functionName: lock_rw_init
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_init(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 335
      start: 334
    functionDepth: 0
    functionLinenumber: 334
    functionLinenumberEnd: 335
    functionName: lock_rw_destroy
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_destroy(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 336
      start: 335
    functionDepth: 0
    functionLinenumber: 335
    functionLinenumberEnd: 336
    functionName: lock_rw_rdlock
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 69
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_rdlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 337
      start: 336
    functionDepth: 0
    functionLinenumber: 336
    functionLinenumberEnd: 337
    functionName: lock_rw_wrlock
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 73
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_wrlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 337
    functionDepth: 0
    functionLinenumber: 337
    functionLinenumberEnd: 338
    functionName: lock_rw_unlock
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 217
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_unlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 341
    functionDepth: 0
    functionLinenumber: 341
    functionLinenumberEnd: 342
    functionName: lock_basic_init
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_basic_init(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 342
    functionDepth: 0
    functionLinenumber: 342
    functionLinenumberEnd: 343
    functionName: lock_basic_destroy
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 26
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_basic_destroy(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 343
    functionDepth: 0
    functionLinenumber: 343
    functionLinenumberEnd: 344
    functionName: lock_basic_lock
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 150
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_basic_lock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 344
    functionDepth: 0
    functionLinenumber: 344
    functionLinenumberEnd: 345
    functionName: lock_basic_unlock
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 170
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_basic_unlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 348
    functionDepth: 0
    functionLinenumber: 348
    functionLinenumberEnd: 349
    functionName: lock_quick_init
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_init(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 349
    functionDepth: 0
    functionLinenumber: 349
    functionLinenumberEnd: 350
    functionName: lock_quick_destroy
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_destroy(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 351
      start: 350
    functionDepth: 0
    functionLinenumber: 350
    functionLinenumberEnd: 351
    functionName: lock_quick_lock
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_lock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 351
    functionDepth: 0
    functionLinenumber: 351
    functionLinenumberEnd: 352
    functionName: lock_quick_unlock
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_unlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - thr
    - ','
    - func
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 355
    functionDepth: 0
    functionLinenumber: 355
    functionLinenumberEnd: 356
    functionName: ub_thread_create
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_create(thr, func, arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 357
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 357
    functionName: ub_thread_self
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_self()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - thread
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 358
      start: 357
    functionDepth: 0
    functionLinenumber: 357
    functionLinenumberEnd: 358
    functionName: ub_thread_join
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_join(thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - key
    - ','
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 360
    functionDepth: 0
    functionLinenumber: 360
    functionLinenumberEnd: 361
    functionName: ub_thread_key_create
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_key_create(key, f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - key
    - ','
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 361
    functionDepth: 0
    functionLinenumber: 361
    functionLinenumberEnd: 362
    functionName: ub_thread_key_set
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_key_set(key, v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 363
    functionName: ub_thread_key_get
    functionSourceFile: /src/unbound/testcode/checklocks.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_key_get(key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:72,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:73,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:74,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:75,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:76,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:77,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:78,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:79,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:80,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:81,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:82,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:83,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 14
    argCount: 1
    argNames:
    - argv
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 85
    functionName: usage
    functionSourceFile: /src/unbound/testcode/streamtcp.c
    functionUses: 12
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(char* argv[])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/streamtcp.c:94,1
    - Dst: extstrtoaddr
      Src: /src/unbound/testcode/streamtcp.c:95,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:96,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:97,1
    - Dst: socket
      Src: /src/unbound/testcode/streamtcp.c:99,1
    - Dst: addr_is_ip6
      Src: /src/unbound/testcode/streamtcp.c:99,1
    - Dst: perror
      Src: /src/unbound/testcode/streamtcp.c:103,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:105,1
    - Dst: wsa_strerror
      Src: /src/unbound/testcode/streamtcp.c:105,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/streamtcp.c:105,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:107,1
    - Dst: connect
      Src: /src/unbound/testcode/streamtcp.c:109,1
    - Dst: perror
      Src: /src/unbound/testcode/streamtcp.c:111,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:113,1
    - Dst: wsa_strerror
      Src: /src/unbound/testcode/streamtcp.c:113,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/streamtcp.c:113,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:115,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 4
    argNames:
    - svr
    - udp
    - addr
    - addrlen
    argTypes:
    - char*
    - int
    - struct sockaddr_storage*
    - socklen_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 118
    functionName: open_svr
    functionSourceFile: /src/unbound/testcode/streamtcp.c
    functionUses: 0
    functionsReached:
    - exit
    - perror
    - wsa_strerror
    - socket
    - extstrtoaddr
    - printf
    - WSAGetLastError
    - addr_is_ip6
    - memset
    - connect
    linkageType: ''
    returnType: int
    signature: "int open_svr(const char* svr, int udp, struct sockaddr_storage* addr,\n\tsocklen_t*
      addrlen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/testcode/streamtcp.c:125,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/streamtcp.c:125,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/testcode/streamtcp.c:126,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/testcode/streamtcp.c:126,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/streamtcp.c:128,1
    - Dst: PTR_CREATE
      Src: /src/unbound/testcode/streamtcp.c:128,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/streamtcp.c:129,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/streamtcp.c:130,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/testcode/streamtcp.c:131,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/streamtcp.c:132,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/testcode/streamtcp.c:133,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/testcode/streamtcp.c:134,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/testcode/streamtcp.c:135,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/testcode/streamtcp.c:136,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/testcode/streamtcp.c:137,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/testcode/streamtcp.c:138,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/testcode/streamtcp.c:139,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/streamtcp.c:140,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 16
    argCount: 3
    argNames:
    - buf
    - qinfo
    - serial
    argTypes:
    - sldns_buffer*
    - struct query_info*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 121
    functionDepth: 5
    functionLinenumber: 121
    functionLinenumberEnd: 141
    functionName: write_soa_serial_to_buf
    functionSourceFile: /src/unbound/testcode/streamtcp.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - PTR_CREATE
    - sldns_buffer_flip
    - sldns_buffer_limit
    - sldns_buffer_write_u16
    - sldns_buffer_set_position
    - sldns_buffer_set_limit
    - sldns_buffer_write_u32
    - sldns_buffer_write_u8
    linkageType: ''
    returnType: void
    signature: "void write_soa_serial_to_buf(sldns_buffer* buf, struct query_info*
      qinfo,\n\tuint32_t serial)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/streamtcp.c:150,1
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/testcode/streamtcp.c:154,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:156,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:157,1
    - Dst: strncasecmp
      Src: /src/unbound/testcode/streamtcp.c:161,1
    - Dst: atoi
      Src: /src/unbound/testcode/streamtcp.c:162,1
    - Dst: strcasecmp
      Src: /src/unbound/testcode/streamtcp.c:165,1
    - Dst: strncasecmp
      Src: /src/unbound/testcode/streamtcp.c:168,1
    - Dst: atoi
      Src: /src/unbound/testcode/streamtcp.c:169,1
    - Dst: sldns_get_rr_type_by_name
      Src: /src/unbound/testcode/streamtcp.c:174,1
    - Dst: strcmp
      Src: /src/unbound/testcode/streamtcp.c:175,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:176,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:177,1
    - Dst: sldns_get_rr_class_by_name
      Src: /src/unbound/testcode/streamtcp.c:181,1
    - Dst: strcmp
      Src: /src/unbound/testcode/streamtcp.c:182,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:183,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:184,1
    - Dst: qinfo_query_encode
      Src: /src/unbound/testcode/streamtcp.c:191,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/testcode/streamtcp.c:192,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/testcode/streamtcp.c:193,1
    - Dst: write_soa_serial_to_buf
      Src: /src/unbound/testcode/streamtcp.c:197,1
    - Dst: LDNS_NSCOUNT_SET
      Src: /src/unbound/testcode/streamtcp.c:198,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/streamtcp.c:198,1
    - Dst: LDNS_OPCODE_SET
      Src: /src/unbound/testcode/streamtcp.c:201,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/streamtcp.c:201,1
    - Dst: LDNS_RD_CLR
      Src: /src/unbound/testcode/streamtcp.c:202,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/streamtcp.c:202,1
    - Dst: LDNS_AA_SET
      Src: /src/unbound/testcode/streamtcp.c:203,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/streamtcp.c:203,1
    - Dst: write_soa_serial_to_buf
      Src: /src/unbound/testcode/streamtcp.c:205,1
    - Dst: LDNS_ANCOUNT_SET
      Src: /src/unbound/testcode/streamtcp.c:206,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/streamtcp.c:206,1
    - Dst: memset
      Src: /src/unbound/testcode/streamtcp.c:213,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/testcode/streamtcp.c:217,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/streamtcp.c:218,1
    - Dst: calc_edns_field_size
      Src: /src/unbound/testcode/streamtcp.c:218,1
    - Dst: attach_edns_record
      Src: /src/unbound/testcode/streamtcp.c:219,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/testcode/streamtcp.c:226,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/streamtcp.c:227,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/streamtcp.c:228,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:229,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:230,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/streamtcp.c:232,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/testcode/streamtcp.c:233,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/streamtcp.c:234,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/streamtcp.c:234,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/streamtcp.c:235,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/streamtcp.c:236,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/streamtcp.c:242,1
    - Dst: htons
      Src: /src/unbound/testcode/streamtcp.c:243,1
    - Dst: SSL_write
      Src: /src/unbound/testcode/streamtcp.c:245,1
    - Dst: log_crypto_err
      Src: /src/unbound/testcode/streamtcp.c:246,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:247,1
    - Dst: send
      Src: /src/unbound/testcode/streamtcp.c:250,1
    - Dst: perror
      Src: /src/unbound/testcode/streamtcp.c:253,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:255,1
    - Dst: wsa_strerror
      Src: /src/unbound/testcode/streamtcp.c:256,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/streamtcp.c:256,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:258,1
    - Dst: SSL_write
      Src: /src/unbound/testcode/streamtcp.c:263,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/streamtcp.c:263,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/streamtcp.c:264,1
    - Dst: log_crypto_err
      Src: /src/unbound/testcode/streamtcp.c:265,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:266,1
    - Dst: send
      Src: /src/unbound/testcode/streamtcp.c:269,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/streamtcp.c:269,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/streamtcp.c:270,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/streamtcp.c:271,1
    - Dst: perror
      Src: /src/unbound/testcode/streamtcp.c:273,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:275,1
    - Dst: wsa_strerror
      Src: /src/unbound/testcode/streamtcp.c:276,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/streamtcp.c:276,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:278,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/testcode/streamtcp.c:283,1
    - Dst: free
      Src: /src/unbound/testcode/streamtcp.c:284,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 97
    argCount: 10
    argNames:
    - fd
    - udp
    - ssl
    - buf
    - id
    - proxy_buf
    - pp2_parsed
    - strname
    - strtype
    - strclass
    argTypes:
    - int
    - int
    - SSL*
    - sldns_buffer*
    - uint16_t
    - sldns_buffer*
    - int
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 144
    functionDepth: 6
    functionLinenumber: 144
    functionLinenumberEnd: 285
    functionName: write_q
    functionSourceFile: /src/unbound/testcode/streamtcp.c
    functionUses: 0
    functionsReached:
    - strcmp
    - attach_edns_record
    - sldns_buffer_skip
    - LDNS_OPCODE_SET
    - LDNS_RD_CLR
    - atoi
    - htons
    - sldns_str2wire_dname
    - LDNS_NSCOUNT_SET
    - memset
    - sldns_buffer_write_u16_at
    - printf
    - sldns_buffer_begin
    - calc_edns_field_size
    - send
    - wsa_strerror
    - write_soa_serial_to_buf
    - sldns_buffer_write
    - SSL_write
    - LDNS_ANCOUNT_SET
    - free
    - log_crypto_err
    - strncasecmp
    - strcasecmp
    - qinfo_query_encode
    - exit
    - sldns_get_rr_type_by_name
    - sldns_buffer_capacity
    - perror
    - LDNS_AA_SET
    - sldns_get_rr_class_by_name
    - sldns_buffer_flip
    - sldns_buffer_limit
    - sldns_buffer_clear
    - WSAGetLastError
    - sldns_buffer_set_limit
    linkageType: ''
    returnType: void
    signature: "void write_q(int fd, int udp, SSL* ssl, sldns_buffer* buf, uint16_t
      id,\n\tsldns_buffer* proxy_buf, int pp2_parsed,\n\tconst char* strname, const
      char* strtype, const char* strclass)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: SSL_read
      Src: /src/unbound/testcode/streamtcp.c:296,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:298,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:299,1
    - Dst: log_crypto_err
      Src: /src/unbound/testcode/streamtcp.c:302,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:303,1
    - Dst: recv
      Src: /src/unbound/testcode/streamtcp.c:306,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:308,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:309,1
    - Dst: perror
      Src: /src/unbound/testcode/streamtcp.c:313,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:315,1
    - Dst: wsa_strerror
      Src: /src/unbound/testcode/streamtcp.c:316,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/streamtcp.c:316,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:318,1
    - Dst: ntohs
      Src: /src/unbound/testcode/streamtcp.c:321,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/streamtcp.c:322,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/testcode/streamtcp.c:323,1
    - Dst: SSL_read
      Src: /src/unbound/testcode/streamtcp.c:325,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/streamtcp.c:325,1
    - Dst: log_crypto_err
      Src: /src/unbound/testcode/streamtcp.c:328,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:329,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/streamtcp.c:332,1
    - Dst: recv
      Src: /src/unbound/testcode/streamtcp.c:334,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/streamtcp.c:334,1
    - Dst: perror
      Src: /src/unbound/testcode/streamtcp.c:337,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:339,1
    - Dst: wsa_strerror
      Src: /src/unbound/testcode/streamtcp.c:340,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/streamtcp.c:340,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:342,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/streamtcp.c:347,1
    - Dst: recv
      Src: /src/unbound/testcode/streamtcp.c:348,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/streamtcp.c:348,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/testcode/streamtcp.c:349,1
    - Dst: perror
      Src: /src/unbound/testcode/streamtcp.c:351,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:353,1
    - Dst: wsa_strerror
      Src: /src/unbound/testcode/streamtcp.c:354,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/streamtcp.c:354,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:356,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/testcode/streamtcp.c:358,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:361,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:362,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/streamtcp.c:362,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/streamtcp.c:363,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:365,1
    - Dst: sldns_buffer_read_u8_at
      Src: /src/unbound/testcode/streamtcp.c:365,1
    - Dst: sldns_buffer_read_u8_at
      Src: /src/unbound/testcode/streamtcp.c:366,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:368,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/streamtcp.c:370,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/streamtcp.c:370,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:371,1
    - Dst: free
      Src: /src/unbound/testcode/streamtcp.c:372,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 58
    argCount: 4
    argNames:
    - fd
    - udp
    - ssl
    - buf
    argTypes:
    - int
    - int
    - SSL*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 373
      start: 288
    functionDepth: 4
    functionLinenumber: 288
    functionLinenumberEnd: 373
    functionName: recv_one
    functionSourceFile: /src/unbound/testcode/streamtcp.c
    functionUses: 0
    functionsReached:
    - exit
    - sldns_buffer_capacity
    - perror
    - wsa_strerror
    - sldns_buffer_read_u8_at
    - sldns_wire2str_pkt
    - printf
    - SSL_read
    - WSAGetLastError
    - sldns_buffer_clear
    - fatal_exit
    - sldns_buffer_limit
    - free
    - sldns_buffer_set_limit
    - sldns_buffer_begin
    - log_crypto_err
    - recv
    - ntohs
    linkageType: ''
    returnType: void
    signature: void recv_one(int fd, int udp, SSL* ssl, sldns_buffer* buf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/streamtcp.c:385,1
    - Dst: memset
      Src: /src/unbound/testcode/streamtcp.c:386,1
    - Dst: FD_ZERO
      Src: /src/unbound/testcode/streamtcp.c:387,1
    - Dst: FD_SET
      Src: /src/unbound/testcode/streamtcp.c:388,1
    - Dst: select
      Src: /src/unbound/testcode/streamtcp.c:391,1
    - Dst: perror
      Src: /src/unbound/testcode/streamtcp.c:394,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:395,1
    - Dst: recv_one
      Src: /src/unbound/testcode/streamtcp.c:402,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 6
    argNames:
    - fd
    - udp
    - ssl
    - buf
    - num_answers
    - wait_all
    argTypes:
    - int
    - int
    - SSL*
    - sldns_buffer*
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 376
    functionDepth: 5
    functionLinenumber: 376
    functionLinenumberEnd: 404
    functionName: print_any_answers
    functionSourceFile: /src/unbound/testcode/streamtcp.c
    functionUses: 0
    functionsReached:
    - exit
    - recv_one
    - perror
    - select
    - FD_ZERO
    - FD_SET
    - memset
    linkageType: ''
    returnType: void
    signature: "void print_any_answers(int fd, int udp, SSL* ssl, sldns_buffer* buf,\n\tint*
      num_answers, int wait_all)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: RAND_bytes
      Src: /src/unbound/testcode/streamtcp.c:409,1
    - Dst: arc4random
      Src: /src/unbound/testcode/streamtcp.c:412,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 406
    functionDepth: 7
    functionLinenumber: 406
    functionLinenumberEnd: 413
    functionName: get_random
    functionSourceFile: /src/unbound/testcode/streamtcp.c
    functionUses: 0
    functionsReached:
    - RAND_bytes
    - arc4random
    linkageType: ''
    returnType: int
    signature: int get_random(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/streamtcp.c:423,1
    - Dst: extstrtoaddr
      Src: /src/unbound/testcode/streamtcp.c:425,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:426,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:427,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/streamtcp.c:429,1
    - Dst: pp2_write_to_buf
      Src: /src/unbound/testcode/streamtcp.c:430,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/streamtcp.c:430,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/testcode/streamtcp.c:431,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/testcode/streamtcp.c:432,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/streamtcp.c:433,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - pp2_client
    - udp
    - proxy_buf
    argTypes:
    - char*
    - int
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 435
      start: 417
    functionDepth: 3
    functionLinenumber: 417
    functionLinenumberEnd: 435
    functionName: parse_pp2_client
    functionSourceFile: /src/unbound/testcode/streamtcp.c
    functionUses: 0
    functionsReached:
    - exit
    - sldns_buffer_remaining
    - pp2_write_to_buf
    - extstrtoaddr
    - sldns_buffer_flip
    - printf
    - sldns_buffer_clear
    - sldns_buffer_set_position
    - sldns_buffer_begin
    - memset
    linkageType: ''
    returnType: int
    signature: "int parse_pp2_client(const char* pp2_client, int udp,\n\tsldns_buffer*
      proxy_buf)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: open_svr
      Src: /src/unbound/testcode/streamtcp.c:444,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/streamtcp.c:448,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/streamtcp.c:449,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/streamtcp.c:451,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/streamtcp.c:452,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/streamtcp.c:453,1
    - Dst: parse_pp2_client
      Src: /src/unbound/testcode/streamtcp.c:455,1
    - Dst: connect_sslctx_create
      Src: /src/unbound/testcode/streamtcp.c:457,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/streamtcp.c:458,1
    - Dst: outgoing_ssl_fd
      Src: /src/unbound/testcode/streamtcp.c:459,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/streamtcp.c:460,1
    - Dst: ERR_clear_error
      Src: /src/unbound/testcode/streamtcp.c:463,1
    - Dst: SSL_do_handshake
      Src: /src/unbound/testcode/streamtcp.c:464,1
    - Dst: SSL_get_error
      Src: /src/unbound/testcode/streamtcp.c:466,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/testcode/streamtcp.c:469,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:470,1
    - Dst: SSL_get1_peer_certificate
      Src: /src/unbound/testcode/streamtcp.c:475,1
    - Dst: SSL_get_peer_certificate
      Src: /src/unbound/testcode/streamtcp.c:477,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:479,1
    - Dst: X509_print_fp
      Src: /src/unbound/testcode/streamtcp.c:481,1
    - Dst: X509_free
      Src: /src/unbound/testcode/streamtcp.c:482,1
    - Dst: SSL_write
      Src: /src/unbound/testcode/streamtcp.c:489,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/streamtcp.c:489,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/streamtcp.c:490,1
    - Dst: log_crypto_err
      Src: /src/unbound/testcode/streamtcp.c:491,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:492,1
    - Dst: send
      Src: /src/unbound/testcode/streamtcp.c:495,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/streamtcp.c:495,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/streamtcp.c:496,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/streamtcp.c:497,1
    - Dst: perror
      Src: /src/unbound/testcode/streamtcp.c:499,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:501,1
    - Dst: wsa_strerror
      Src: /src/unbound/testcode/streamtcp.c:502,1
    - Dst: WSAGetLastError
      Src: /src/unbound/testcode/streamtcp.c:502,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:504,1
    - Dst: sleep
      Src: /src/unbound/testcode/streamtcp.c:511,1
    - Dst: Sleep
      Src: /src/unbound/testcode/streamtcp.c:513,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:516,1
    - Dst: write_q
      Src: /src/unbound/testcode/streamtcp.c:517,1
    - Dst: get_random
      Src: /src/unbound/testcode/streamtcp.c:517,1
    - Dst: print_any_answers
      Src: /src/unbound/testcode/streamtcp.c:523,1
    - Dst: recv_one
      Src: /src/unbound/testcode/streamtcp.c:525,1
    - Dst: print_any_answers
      Src: /src/unbound/testcode/streamtcp.c:529,1
    - Dst: SSL_shutdown
      Src: /src/unbound/testcode/streamtcp.c:532,1
    - Dst: SSL_free
      Src: /src/unbound/testcode/streamtcp.c:533,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/testcode/streamtcp.c:534,1
    - Dst: sock_close
      Src: /src/unbound/testcode/streamtcp.c:536,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/streamtcp.c:537,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/streamtcp.c:538,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:539,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 72
    argCount: 9
    argNames:
    - svr
    - pp2_client
    - udp
    - usessl
    - noanswer
    - onarrival
    - delay
    - num
    - qs
    argTypes:
    - char*
    - char*
    - int
    - int
    - int
    - int
    - int
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 540
      start: 438
    functionDepth: 8
    functionLinenumber: 438
    functionLinenumberEnd: 540
    functionName: send_em
    functionSourceFile: /src/unbound/testcode/streamtcp.c
    functionUses: 0
    functionsReached:
    - print_any_answers
    - sldns_buffer_new
    - SSL_do_handshake
    - sldns_buffer_free
    - parse_pp2_client
    - outgoing_ssl_fd
    - recv_one
    - printf
    - get_random
    - sldns_buffer_begin
    - X509_free
    - send
    - wsa_strerror
    - SSL_write
    - open_svr
    - X509_print_fp
    - SSL_get_peer_certificate
    - log_crypto_err
    - connect_sslctx_create
    - ERR_clear_error
    - SSL_shutdown
    - exit
    - perror
    - SSL_CTX_free
    - sock_close
    - log_crypto_err_io
    - SSL_free
    - sleep
    - sldns_buffer_limit
    - fatal_exit
    - WSAGetLastError
    - write_q
    - Sleep
    - SSL_get1_peer_certificate
    - SSL_get_error
    linkageType: ''
    returnType: void
    signature: "void send_em(const char* svr, const char* pp2_client, int udp, int
      usessl,\n\tint noanswer, int onarrival, int delay, int num, char** qs)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/unbound/testcode/streamtcp.c:550,1
    - Dst: strlen
      Src: /src/unbound/testcode/streamtcp.c:550,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:551,1
    - Dst: write
      Src: /src/unbound/testcode/streamtcp.c:556,1
    - Dst: strlen
      Src: /src/unbound/testcode/streamtcp.c:556,1
    - Dst: exit
      Src: /src/unbound/testcode/streamtcp.c:557,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - sig
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 544
    functionDepth: 0
    functionLinenumber: 544
    functionLinenumberEnd: 558
    functionName: sigh
    functionSourceFile: /src/unbound/testcode/streamtcp.c
    functionUses: 0
    functionsReached:
    - exit
    - write
    - strlen
    linkageType: ''
    returnType: RETSIGTYPE
    signature: RETSIGTYPE sigh(int sig)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: WSAStartup
      Src: /src/unbound/testcode/streamtcp.c:580,1
    - Dst: MAKEWORD
      Src: /src/unbound/testcode/streamtcp.c:580,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:581,1
    - Dst: checklock_start
      Src: /src/unbound/testcode/streamtcp.c:587,1
    - Dst: log_init
      Src: /src/unbound/testcode/streamtcp.c:588,1
    - Dst: signal
      Src: /src/unbound/testcode/streamtcp.c:591,1
    - Dst: perror
      Src: /src/unbound/testcode/streamtcp.c:592,1
    - Dst: usage
      Src: /src/unbound/testcode/streamtcp.c:599,1
    - Dst: getopt
      Src: /src/unbound/testcode/streamtcp.c:601,1
    - Dst: pp_init
      Src: /src/unbound/testcode/streamtcp.c:608,1
    - Dst: atoi
      Src: /src/unbound/testcode/streamtcp.c:624,1
    - Dst: strcmp
      Src: /src/unbound/testcode/streamtcp.c:624,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:625,1
    - Dst: atoi
      Src: /src/unbound/testcode/streamtcp.c:629,1
    - Dst: usage
      Src: /src/unbound/testcode/streamtcp.c:634,1
    - Dst: printf
      Src: /src/unbound/testcode/streamtcp.c:641,1
    - Dst: ERR_load_SSL_strings
      Src: /src/unbound/testcode/streamtcp.c:646,1
    - Dst: OpenSSL_add_all_algorithms
      Src: /src/unbound/testcode/streamtcp.c:650,1
    - Dst: OPENSSL_init_crypto
      Src: /src/unbound/testcode/streamtcp.c:653,1
    - Dst: defined
      Src: /src/unbound/testcode/streamtcp.c:656,1
    - Dst: SSL_library_init
      Src: /src/unbound/testcode/streamtcp.c:662,1
    - Dst: OPENSSL_init_ssl
      Src: /src/unbound/testcode/streamtcp.c:664,1
    - Dst: defined
      Src: /src/unbound/testcode/streamtcp.c:665,1
    - Dst: send_em
      Src: /src/unbound/testcode/streamtcp.c:671,1
    - Dst: checklock_stop
      Src: /src/unbound/testcode/streamtcp.c:672,1
    - Dst: WSACleanup
      Src: /src/unbound/testcode/streamtcp.c:674,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 65
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 567
    functionDepth: 9
    functionLinenumber: 567
    functionLinenumberEnd: 677
    functionName: main
    functionSourceFile: /src/unbound/testcode/streamtcp.c
    functionUses: 33
    functionsReached:
    - getopt
    - strcmp
    - WSACleanup
    - log_init
    - atoi
    - ERR_load_SSL_strings
    - SSL_library_init
    - printf
    - pp_init
    - defined
    - OPENSSL_init_ssl
    - send_em
    - checklock_stop
    - MAKEWORD
    - perror
    - OpenSSL_add_all_algorithms
    - OPENSSL_init_crypto
    - WSAStartup
    - checklock_start
    - usage
    - signal
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:82,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:83,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:85,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:87,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:89,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:90,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:91,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:93,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:94,1
    - Dst: exit
      Src: /src/unbound/testcode/dohclient.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - argv
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 96
    functionName: usage
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 13
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(char* argv[])
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ipstrtoaddr
      Src: /src/unbound/testcode/dohclient.c:106,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:107,1
    - Dst: exit
      Src: /src/unbound/testcode/dohclient.c:108,1
    - Dst: socket
      Src: /src/unbound/testcode/dohclient.c:111,1
    - Dst: addr_is_ip6
      Src: /src/unbound/testcode/dohclient.c:111,1
    - Dst: perror
      Src: /src/unbound/testcode/dohclient.c:114,1
    - Dst: exit
      Src: /src/unbound/testcode/dohclient.c:115,1
    - Dst: connect
      Src: /src/unbound/testcode/dohclient.c:117,1
    - Dst: perror
      Src: /src/unbound/testcode/dohclient.c:119,1
    - Dst: exit
      Src: /src/unbound/testcode/dohclient.c:120,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - svr
    - port
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 123
    functionName: open_svr
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 1
    functionsReached:
    - exit
    - perror
    - socket
    - ipstrtoaddr
    - printf
    - addr_is_ip6
    - connect
    linkageType: ''
    returnType: int
    signature: int open_svr(const char* svr, int port)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/testcode/dohclient.c:131,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/testcode/dohclient.c:132,1
    - Dst: memcpy
      Src: /src/unbound/testcode/dohclient.c:134,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/testcode/dohclient.c:134,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/testcode/dohclient.c:135,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/testcode/dohclient.c:137,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 7
    argNames:
    - ATTR_UNUSED(session)
    - ATTR_UNUSED
    - buf
    - length
    - data_flags
    - source
    - ATTR_UNUSED(cb_arg)
    argTypes:
    - nghttp2_session*
    - int32_t
    - uint8_t*
    - size_t
    - uint32_t*
    - nghttp2_data_source*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 125
    functionDepth: 3
    functionLinenumber: 125
    functionLinenumberEnd: 142
    functionName: http2_submit_request_read_cb
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_current
    - memcpy
    - sldns_buffer_skip
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t http2_submit_request_read_cb(\n\tnghttp2_session* ATTR_UNUSED(session),\n\tint32_t
      ATTR_UNUSED(stream_id), uint8_t* buf, size_t length,\n\tuint32_t* data_flags,
      nghttp2_data_source* source,\n\tvoid* ATTR_UNUSED(cb_arg))"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/dohclient.c:158,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/dohclient.c:160,1
    - Dst: sldns_b64_ntop_calculate_size
      Src: /src/unbound/testcode/dohclient.c:168,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/testcode/dohclient.c:169,1
    - Dst: malloc
      Src: /src/unbound/testcode/dohclient.c:170,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/dohclient.c:171,1
    - Dst: sldns_b64url_ntop
      Src: /src/unbound/testcode/dohclient.c:172,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/dohclient.c:172,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/testcode/dohclient.c:173,1
    - Dst: malloc
      Src: /src/unbound/testcode/dohclient.c:174,1
    - Dst: strlen
      Src: /src/unbound/testcode/dohclient.c:174,1
    - Dst: strlen
      Src: /src/unbound/testcode/dohclient.c:175,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/dohclient.c:176,1
    - Dst: snprintf
      Src: /src/unbound/testcode/dohclient.c:177,1
    - Dst: strlen
      Src: /src/unbound/testcode/dohclient.c:177,1
    - Dst: strlen
      Src: /src/unbound/testcode/dohclient.c:178,1
    - Dst: free
      Src: /src/unbound/testcode/dohclient.c:180,1
    - Dst: snprintf
      Src: /src/unbound/testcode/dohclient.c:200,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/testcode/dohclient.c:201,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:207,1
    - Dst: strlen
      Src: /src/unbound/testcode/dohclient.c:209,1
    - Dst: strlen
      Src: /src/unbound/testcode/dohclient.c:210,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:212,1
    - Dst: nghttp2_submit_request
      Src: /src/unbound/testcode/dohclient.c:215,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:219,1
    - Dst: exit
      Src: /src/unbound/testcode/dohclient.c:220,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 55
    argCount: 2
    argNames:
    - h2_session
    - buf
    argTypes:
    - struct http2_session*
    - struct sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 144
    functionDepth: 3
    functionLinenumber: 144
    functionLinenumberEnd: 224
    functionName: submit_query
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - exit
    - nghttp2_submit_request
    - snprintf
    - printf
    - fatal_exit
    - malloc
    - sldns_b64url_ntop
    - free
    - calloc
    - sldns_b64_ntop_calculate_size
    - sldns_buffer_begin
    - strlen
    linkageType: ''
    returnType: void
    signature: void submit_query(struct http2_session* h2_session, struct sldns_buffer*
      buf)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/dohclient.c:231,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/dohclient.c:232,1
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/testcode/dohclient.c:233,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:235,1
    - Dst: exit
      Src: /src/unbound/testcode/dohclient.c:236,1
    - Dst: sldns_get_rr_type_by_name
      Src: /src/unbound/testcode/dohclient.c:238,1
    - Dst: strcmp
      Src: /src/unbound/testcode/dohclient.c:239,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:240,1
    - Dst: exit
      Src: /src/unbound/testcode/dohclient.c:241,1
    - Dst: sldns_get_rr_class_by_name
      Src: /src/unbound/testcode/dohclient.c:243,1
    - Dst: strcmp
      Src: /src/unbound/testcode/dohclient.c:244,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:245,1
    - Dst: exit
      Src: /src/unbound/testcode/dohclient.c:246,1
    - Dst: qinfo_query_encode
      Src: /src/unbound/testcode/dohclient.c:250,1
    - Dst: free
      Src: /src/unbound/testcode/dohclient.c:251,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/testcode/dohclient.c:252,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/testcode/dohclient.c:253,1
    - Dst: memset
      Src: /src/unbound/testcode/dohclient.c:254,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/testcode/dohclient.c:258,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/dohclient.c:259,1
    - Dst: calc_edns_field_size
      Src: /src/unbound/testcode/dohclient.c:259,1
    - Dst: attach_edns_record
      Src: /src/unbound/testcode/dohclient.c:260,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 3
    argNames:
    - qname
    - qtype
    - qclass
    argTypes:
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 262
      start: 226
    functionDepth: 4
    functionLinenumber: 226
    functionLinenumberEnd: 262
    functionName: make_query
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 1
    functionsReached:
    - exit
    - sldns_buffer_capacity
    - sldns_buffer_new
    - strcmp
    - attach_edns_record
    - sldns_get_rr_class_by_name
    - qinfo_query_encode
    - printf
    - fatal_exit
    - sldns_buffer_limit
    - free
    - sldns_str2wire_dname
    - memset
    - calc_edns_field_size
    - sldns_buffer_write_u16_at
    - sldns_get_rr_type_by_name
    linkageType: ''
    returnType: sldns_buffer
    signature: 'sldns_buffer *

      make_query(char* qname, char* qtype, char* qclass)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: ERR_clear_error
      Src: /src/unbound/testcode/dohclient.c:272,1
    - Dst: memset
      Src: /src/unbound/testcode/dohclient.c:274,1
    - Dst: memset
      Src: /src/unbound/testcode/dohclient.c:283,1
    - Dst: FD_ZERO
      Src: /src/unbound/testcode/dohclient.c:284,1
    - Dst: FD_SET
      Src: /src/unbound/testcode/dohclient.c:285,1
    - Dst: select
      Src: /src/unbound/testcode/dohclient.c:286,1
    - Dst: SSL_read
      Src: /src/unbound/testcode/dohclient.c:292,1
    - Dst: SSL_get_error
      Src: /src/unbound/testcode/dohclient.c:294,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/testcode/dohclient.c:298,1
    - Dst: read
      Src: /src/unbound/testcode/dohclient.c:304,1
    - Dst: log_err
      Src: /src/unbound/testcode/dohclient.c:308,1
    - Dst: strerror
      Src: /src/unbound/testcode/dohclient.c:308,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 5
    argNames:
    - ATTR_UNUSED(session)
    - buf
    - len
    - ATTR_UNUSED
    - cb_arg
    argTypes:
    - nghttp2_session*
    - uint8_t*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 264
    functionDepth: 1
    functionLinenumber: 264
    functionLinenumberEnd: 312
    functionName: http2_recv_cb
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 0
    functionsReached:
    - log_err
    - read
    - select
    - log_crypto_err_io
    - FD_ZERO
    - FD_SET
    - SSL_read
    - strerror
    - memset
    - ERR_clear_error
    - SSL_get_error
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t http2_recv_cb(nghttp2_session* ATTR_UNUSED(session),\n\tuint8_t*
      buf, size_t len, int ATTR_UNUSED(flags), void* cb_arg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ERR_clear_error
      Src: /src/unbound/testcode/dohclient.c:322,1
    - Dst: SSL_write
      Src: /src/unbound/testcode/dohclient.c:323,1
    - Dst: SSL_get_error
      Src: /src/unbound/testcode/dohclient.c:325,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/testcode/dohclient.c:329,1
    - Dst: write
      Src: /src/unbound/testcode/dohclient.c:335,1
    - Dst: log_err
      Src: /src/unbound/testcode/dohclient.c:339,1
    - Dst: strerror
      Src: /src/unbound/testcode/dohclient.c:339,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 5
    argNames:
    - ATTR_UNUSED(session)
    - buf
    - len
    - ATTR_UNUSED
    - cb_arg
    argTypes:
    - nghttp2_session*
    - uint8_t*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 314
    functionDepth: 1
    functionLinenumber: 314
    functionLinenumberEnd: 343
    functionName: http2_send_cb
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 0
    functionsReached:
    - log_err
    - SSL_write
    - log_crypto_err_io
    - write
    - strerror
    - ERR_clear_error
    - SSL_get_error
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t http2_send_cb(nghttp2_session* ATTR_UNUSED(session),\n\tconst
      uint8_t* buf, size_t len, int ATTR_UNUSED(flags), void* cb_arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_session_get_stream_user_data
      Src: /src/unbound/testcode/dohclient.c:351,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/dohclient.c:356,1
    - Dst: free
      Src: /src/unbound/testcode/dohclient.c:358,1
    - Dst: free
      Src: /src/unbound/testcode/dohclient.c:359,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - ATTR_UNUSED(session)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - cb_arg
    argTypes:
    - nghttp2_session*
    - int32_t
    - nghttp2_error_code
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 345
    functionDepth: 2
    functionLinenumber: 345
    functionLinenumberEnd: 362
    functionName: http2_stream_close_cb
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 0
    functionsReached:
    - free
    - nghttp2_session_get_stream_user_data
    - sldns_buffer_free
    linkageType: ''
    returnType: int
    signature: "int http2_stream_close_cb(nghttp2_session* ATTR_UNUSED(session),\n\tint32_t
      ATTR_UNUSED(stream_id),\n\tnghttp2_error_code ATTR_UNUSED(error_code), void
      *cb_arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_session_get_stream_user_data
      Src: /src/unbound/testcode/dohclient.c:371,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/testcode/dohclient.c:376,1
    - Dst: log_err
      Src: /src/unbound/testcode/dohclient.c:377,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/dohclient.c:381,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 6
    argNames:
    - ATTR_UNUSED(session)
    - ATTR_UNUSED
    - stream_id
    - data
    - len
    - cb_arg
    argTypes:
    - nghttp2_session*
    - uint8_t
    - int32_t
    - uint8_t*
    - size_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 364
    functionDepth: 5
    functionLinenumber: 364
    functionLinenumberEnd: 384
    functionName: http2_data_chunk_recv_cb
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - nghttp2_session_get_stream_user_data
    - sldns_buffer_write
    - log_err
    linkageType: ''
    returnType: int
    signature: "int http2_data_chunk_recv_cb(nghttp2_session* ATTR_UNUSED(session),\n\tuint8_t
      ATTR_UNUSED(flags), int32_t stream_id, const uint8_t* data,\n\tsize_t len, void*
      cb_arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_session_get_stream_user_data
      Src: /src/unbound/testcode/dohclient.c:391,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/dohclient.c:396,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/dohclient.c:403,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/dohclient.c:404,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/dohclient.c:405,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/dohclient.c:406,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:407,1
    - Dst: free
      Src: /src/unbound/testcode/dohclient.c:408,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 3
    argNames:
    - session
    - frame
    - ATTR_UNUSED(cb_arg)
    argTypes:
    - nghttp2_session*
    - nghttp2_frame*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 386
    functionDepth: 2
    functionLinenumber: 386
    functionLinenumberEnd: 412
    functionName: http2_frame_recv_cb
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 0
    functionsReached:
    - nghttp2_session_get_stream_user_data
    - sldns_wire2str_pkt
    - sldns_buffer_flip
    - sldns_buffer_clear
    - sldns_buffer_limit
    - printf
    - free
    - sldns_buffer_begin
    linkageType: ''
    returnType: int
    signature: "int http2_frame_recv_cb(nghttp2_session *session,\n\tconst nghttp2_frame
      *frame, void* ATTR_UNUSED(cb_arg))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:420,1
    - Dst: memcmp
      Src: /src/unbound/testcode/dohclient.c:421,1
    - Dst: nghttp2_session_get_stream_user_data
      Src: /src/unbound/testcode/dohclient.c:422,1
    - Dst: atoi
      Src: /src/unbound/testcode/dohclient.c:426,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 8
    argNames:
    - ATTR_UNUSED(session)
    - frame
    - name
    - namelen
    - value
    - ATTR_UNUSED
    - ATTR_UNUSED
    - cb_arg
    argTypes:
    - nghttp2_session*
    - nghttp2_frame*
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - uint8_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 413
    functionDepth: 1
    functionLinenumber: 413
    functionLinenumberEnd: 429
    functionName: http2_header_cb
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 0
    functionsReached:
    - nghttp2_session_get_stream_user_data
    - printf
    - atoi
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int http2_header_cb(nghttp2_session* ATTR_UNUSED(session),\n\tconst
      nghttp2_frame* frame, const uint8_t* name, size_t namelen,\n\tconst uint8_t*
      value, size_t ATTR_UNUSED(valuelen),\n\tuint8_t ATTR_UNUSED(flags), void* cb_arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/dohclient.c:434,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/dohclient.c:438,1
    - Dst: nghttp2_session_callbacks_new
      Src: /src/unbound/testcode/dohclient.c:440,1
    - Dst: log_err
      Src: /src/unbound/testcode/dohclient.c:441,1
    - Dst: free
      Src: /src/unbound/testcode/dohclient.c:442,1
    - Dst: nghttp2_session_callbacks_set_recv_callback
      Src: /src/unbound/testcode/dohclient.c:445,1
    - Dst: nghttp2_session_callbacks_set_send_callback
      Src: /src/unbound/testcode/dohclient.c:446,1
    - Dst: nghttp2_session_callbacks_set_on_stream_close_callback
      Src: /src/unbound/testcode/dohclient.c:447,1
    - Dst: nghttp2_session_callbacks_set_on_data_chunk_recv_callback
      Src: /src/unbound/testcode/dohclient.c:449,1
    - Dst: nghttp2_session_callbacks_set_on_frame_recv_callback
      Src: /src/unbound/testcode/dohclient.c:451,1
    - Dst: nghttp2_session_callbacks_set_on_header_callback
      Src: /src/unbound/testcode/dohclient.c:453,1
    - Dst: nghttp2_session_client_new
      Src: /src/unbound/testcode/dohclient.c:455,1
    - Dst: nghttp2_session_callbacks_del
      Src: /src/unbound/testcode/dohclient.c:456,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 458
      start: 431
    functionDepth: 1
    functionLinenumber: 431
    functionLinenumberEnd: 458
    functionName: http2_session_create
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 0
    functionsReached:
    - log_err
    - nghttp2_session_callbacks_new
    - nghttp2_session_callbacks_del
    - nghttp2_session_callbacks_set_send_callback
    - fatal_exit
    - nghttp2_session_callbacks_set_recv_callback
    - free
    - nghttp2_session_client_new
    - calloc
    - nghttp2_session_callbacks_set_on_data_chunk_recv_callback
    - nghttp2_session_callbacks_set_on_frame_recv_callback
    - nghttp2_session_callbacks_set_on_header_callback
    - nghttp2_session_callbacks_set_on_stream_close_callback
    linkageType: ''
    returnType: struct http2_session
    signature: 'struct http2_session *

      http2_session_create()'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_session_del
      Src: /src/unbound/testcode/dohclient.c:463,1
    - Dst: free
      Src: /src/unbound/testcode/dohclient.c:464,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - h2_session
    argTypes:
    - struct http2_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 460
    functionDepth: 1
    functionLinenumber: 460
    functionLinenumberEnd: 465
    functionName: http2_session_delete
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 0
    functionsReached:
    - free
    - nghttp2_session_del
    linkageType: ''
    returnType: void
    signature: void http2_session_delete(struct http2_session* h2_session)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_submit_settings
      Src: /src/unbound/testcode/dohclient.c:475,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:478,1
    - Dst: nghttp2_strerror
      Src: /src/unbound/testcode/dohclient.c:479,1
    - Dst: exit
      Src: /src/unbound/testcode/dohclient.c:480,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - h2_session
    argTypes:
    - struct http2_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 467
    functionDepth: 0
    functionLinenumber: 467
    functionLinenumberEnd: 482
    functionName: http2_submit_setting
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 0
    functionsReached:
    - exit
    - nghttp2_submit_settings
    - printf
    - nghttp2_strerror
    linkageType: ''
    returnType: void
    signature: void http2_submit_setting(struct http2_session* h2_session)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_session_want_write
      Src: /src/unbound/testcode/dohclient.c:487,1
    - Dst: nghttp2_session_send
      Src: /src/unbound/testcode/dohclient.c:488,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:489,1
    - Dst: exit
      Src: /src/unbound/testcode/dohclient.c:490,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - h2_session
    argTypes:
    - struct http2_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 484
    functionDepth: 0
    functionLinenumber: 484
    functionLinenumberEnd: 493
    functionName: http2_write
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 0
    functionsReached:
    - exit
    - nghttp2_session_send
    - nghttp2_session_want_write
    - printf
    linkageType: ''
    returnType: void
    signature: void http2_write(struct http2_session* h2_session)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_session_want_read
      Src: /src/unbound/testcode/dohclient.c:498,1
    - Dst: nghttp2_session_recv
      Src: /src/unbound/testcode/dohclient.c:499,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:500,1
    - Dst: exit
      Src: /src/unbound/testcode/dohclient.c:501,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - h2_session
    argTypes:
    - struct http2_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 504
    functionName: http2_read
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 0
    functionsReached:
    - nghttp2_session_recv
    - exit
    - printf
    - nghttp2_session_want_read
    linkageType: ''
    returnType: void
    signature: void http2_read(struct http2_session* h2_session)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: open_svr
      Src: /src/unbound/testcode/dohclient.c:515,1
    - Dst: connect_sslctx_create
      Src: /src/unbound/testcode/dohclient.c:519,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/dohclient.c:520,1
    - Dst: SSL_CTX_set_alpn_protos
      Src: /src/unbound/testcode/dohclient.c:522,1
    - Dst: outgoing_ssl_fd
      Src: /src/unbound/testcode/dohclient.c:524,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:526,1
    - Dst: exit
      Src: /src/unbound/testcode/dohclient.c:527,1
    - Dst: ERR_clear_error
      Src: /src/unbound/testcode/dohclient.c:532,1
    - Dst: SSL_do_handshake
      Src: /src/unbound/testcode/dohclient.c:533,1
    - Dst: SSL_get_error
      Src: /src/unbound/testcode/dohclient.c:535,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/testcode/dohclient.c:538,1
    - Dst: exit
      Src: /src/unbound/testcode/dohclient.c:539,1
    - Dst: http2_submit_setting
      Src: /src/unbound/testcode/dohclient.c:544,1
    - Dst: http2_write
      Src: /src/unbound/testcode/dohclient.c:545,1
    - Dst: http2_read
      Src: /src/unbound/testcode/dohclient.c:546,1
    - Dst: make_query
      Src: /src/unbound/testcode/dohclient.c:552,1
    - Dst: submit_query
      Src: /src/unbound/testcode/dohclient.c:553,1
    - Dst: http2_write
      Src: /src/unbound/testcode/dohclient.c:555,1
    - Dst: http2_read
      Src: /src/unbound/testcode/dohclient.c:557,1
    - Dst: http2_write
      Src: /src/unbound/testcode/dohclient.c:558,1
    - Dst: http2_session_delete
      Src: /src/unbound/testcode/dohclient.c:562,1
    - Dst: SSL_shutdown
      Src: /src/unbound/testcode/dohclient.c:564,1
    - Dst: SSL_free
      Src: /src/unbound/testcode/dohclient.c:565,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/testcode/dohclient.c:568,1
    - Dst: sock_close
      Src: /src/unbound/testcode/dohclient.c:570,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 47
    argCount: 5
    argNames:
    - h2_session
    - port
    - no_tls
    - count
    - q
    argTypes:
    - struct http2_session*
    - int
    - int
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 506
    functionDepth: 4
    functionLinenumber: 506
    functionLinenumberEnd: 571
    functionName: run
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 5
    functionsReached:
    - make_query
    - http2_write
    - SSL_do_handshake
    - outgoing_ssl_fd
    - printf
    - http2_session_delete
    - submit_query
    - open_svr
    - connect_sslctx_create
    - SSL_shutdown
    - ERR_clear_error
    - exit
    - http2_read
    - SSL_CTX_free
    - SSL_CTX_set_alpn_protos
    - sock_close
    - log_crypto_err_io
    - SSL_free
    - fatal_exit
    - http2_submit_setting
    - SSL_get_error
    linkageType: ''
    returnType: void
    signature: void run(struct http2_session* h2_session, int port, int no_tls, int
      count, char** q)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: WSAStartup
      Src: /src/unbound/testcode/dohclient.c:585,1
    - Dst: MAKEWORD
      Src: /src/unbound/testcode/dohclient.c:585,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:586,1
    - Dst: checklock_start
      Src: /src/unbound/testcode/dohclient.c:590,1
    - Dst: log_init
      Src: /src/unbound/testcode/dohclient.c:591,1
    - Dst: log_ident_set
      Src: /src/unbound/testcode/dohclient.c:592,1
    - Dst: http2_session_create
      Src: /src/unbound/testcode/dohclient.c:594,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/dohclient.c:595,1
    - Dst: usage
      Src: /src/unbound/testcode/dohclient.c:597,1
    - Dst: getopt
      Src: /src/unbound/testcode/dohclient.c:605,1
    - Dst: atoi
      Src: /src/unbound/testcode/dohclient.c:617,1
    - Dst: strcmp
      Src: /src/unbound/testcode/dohclient.c:617,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:618,1
    - Dst: atoi
      Src: /src/unbound/testcode/dohclient.c:622,1
    - Dst: usage
      Src: /src/unbound/testcode/dohclient.c:633,1
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:639,1
    - Dst: ERR_load_SSL_strings
      Src: /src/unbound/testcode/dohclient.c:645,1
    - Dst: OpenSSL_add_all_algorithms
      Src: /src/unbound/testcode/dohclient.c:649,1
    - Dst: OPENSSL_init_crypto
      Src: /src/unbound/testcode/dohclient.c:652,1
    - Dst: defined
      Src: /src/unbound/testcode/dohclient.c:655,1
    - Dst: SSL_library_init
      Src: /src/unbound/testcode/dohclient.c:661,1
    - Dst: OPENSSL_init_ssl
      Src: /src/unbound/testcode/dohclient.c:663,1
    - Dst: defined
      Src: /src/unbound/testcode/dohclient.c:664,1
    - Dst: run
      Src: /src/unbound/testcode/dohclient.c:670,1
    - Dst: checklock_stop
      Src: /src/unbound/testcode/dohclient.c:672,1
    - Dst: WSACleanup
      Src: /src/unbound/testcode/dohclient.c:674,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 65
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 577
    functionDepth: 4
    functionLinenumber: 577
    functionLinenumberEnd: 677
    functionName: main
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 33
    functionsReached:
    - getopt
    - strcmp
    - WSACleanup
    - log_init
    - atoi
    - ERR_load_SSL_strings
    - SSL_library_init
    - printf
    - log_ident_set
    - defined
    - run
    - OPENSSL_init_ssl
    - checklock_stop
    - http2_session_create
    - MAKEWORD
    - OpenSSL_add_all_algorithms
    - fatal_exit
    - OPENSSL_init_crypto
    - WSAStartup
    - checklock_start
    - usage
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/dohclient.c:681,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED(argv)
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 679
    functionDepth: 0
    functionLinenumber: 679
    functionLinenumberEnd: 683
    functionName: main
    functionSourceFile: /src/unbound/testcode/dohclient.c
    functionUses: 33
    functionsReached:
    - printf
    linkageType: ''
    returnType: int
    signature: int main(int ATTR_UNUSED(argc), char** ATTR_UNUSED(argv))
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:74,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:74,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitmsgparse.c:75,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitmsgparse.c:75,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitmsgparse.c:75,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:76,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:77,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:78,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:85,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:86,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:87,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitmsgparse.c:91,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/testcode/unitmsgparse.c:91,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/testcode/unitmsgparse.c:92,1
    - Dst: log_info
      Src: /src/unbound/testcode/unitmsgparse.c:93,1
    - Dst: log_hex
      Src: /src/unbound/testcode/unitmsgparse.c:94,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/testcode/unitmsgparse.c:94,1
    - Dst: log_info
      Src: /src/unbound/testcode/unitmsgparse.c:97,1
    - Dst: log_hex
      Src: /src/unbound/testcode/unitmsgparse.c:98,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/testcode/unitmsgparse.c:98,1
    - Dst: log_hex
      Src: /src/unbound/testcode/unitmsgparse.c:100,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/testcode/unitmsgparse.c:100,1
    - Dst: log_buf
      Src: /src/unbound/testcode/unitmsgparse.c:109,1
    - Dst: log_buf
      Src: /src/unbound/testcode/unitmsgparse.c:110,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:111,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:112,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/unitmsgparse.c:113,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitmsgparse.c:113,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:114,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:115,1
    - Dst: free
      Src: /src/unbound/testcode/unitmsgparse.c:116,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:118,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:119,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/unitmsgparse.c:120,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitmsgparse.c:120,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:121,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:122,1
    - Dst: free
      Src: /src/unbound/testcode/unitmsgparse.c:123,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:124,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/unitmsgparse.c:128,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitmsgparse.c:128,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:129,1
    - Dst: strstr
      Src: /src/unbound/testcode/unitmsgparse.c:130,1
    - Dst: strstr
      Src: /src/unbound/testcode/unitmsgparse.c:131,1
    - Dst: free
      Src: /src/unbound/testcode/unitmsgparse.c:132,1
    - Dst: free
      Src: /src/unbound/testcode/unitmsgparse.c:135,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmsgparse.c:138,1
    - Dst: match_all
      Src: /src/unbound/testcode/unitmsgparse.c:138,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitmsgparse.c:138,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:138,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitmsgparse.c:139,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:139,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 2
    argNames:
    - pkt
    - out
    argTypes:
    - sldns_buffer*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 70
    functionDepth: 9
    functionLinenumber: 70
    functionLinenumberEnd: 142
    functionName: test_buffers
    functionSourceFile: /src/unbound/testcode/unitmsgparse.c
    functionUses: 0
    functionsReached:
    - match_all
    - sldns_buffer_at
    - log_info
    - sldns_wire2str_pkt
    - printf
    - sldns_buffer_limit
    - free
    - log_hex
    - log_buf
    - sldns_buffer_begin
    - memcmp
    - strstr
    - unit_assert
    linkageType: ''
    returnType: int
    signature: int test_buffers(sldns_buffer* pkt, sldns_buffer* out)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/unitmsgparse.c:149,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitmsgparse.c:149,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:150,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitmsgparse.c:151,1
    - Dst: strstr
      Src: /src/unbound/testcode/unitmsgparse.c:152,1
    - Dst: strstr
      Src: /src/unbound/testcode/unitmsgparse.c:153,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:155,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:156,1
    - Dst: free
      Src: /src/unbound/testcode/unitmsgparse.c:157,1
    - Dst: exit
      Src: /src/unbound/testcode/unitmsgparse.c:158,1
    - Dst: free
      Src: /src/unbound/testcode/unitmsgparse.c:160,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmsgparse.c:161,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - pkt
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 162
    functionName: checkformerr
    functionSourceFile: /src/unbound/testcode/unitmsgparse.c
    functionUses: 0
    functionsReached:
    - exit
    - sldns_wire2str_pkt
    - sldns_buffer_limit
    - fatal_exit
    - printf
    - free
    - sldns_buffer_begin
    - strstr
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void checkformerr(sldns_buffer* pkt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_create
      Src: /src/unbound/testcode/unitmsgparse.c:176,1
    - Dst: gettimeofday
      Src: /src/unbound/testcode/unitmsgparse.c:177,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitmsgparse.c:178,1
    - Dst: strerror
      Src: /src/unbound/testcode/unitmsgparse.c:178,1
    - Dst: reply_info_encode
      Src: /src/unbound/testcode/unitmsgparse.c:181,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmsgparse.c:183,1
    - Dst: attach_edns_record
      Src: /src/unbound/testcode/unitmsgparse.c:184,1
    - Dst: regional_free_all
      Src: /src/unbound/testcode/unitmsgparse.c:185,1
    - Dst: gettimeofday
      Src: /src/unbound/testcode/unitmsgparse.c:187,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitmsgparse.c:188,1
    - Dst: strerror
      Src: /src/unbound/testcode/unitmsgparse.c:188,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:192,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:194,1
    - Dst: regional_destroy
      Src: /src/unbound/testcode/unitmsgparse.c:195,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 7
    argNames:
    - qi
    - rep
    - id
    - flags
    - out
    - timenow
    - edns
    argTypes:
    - struct query_info*
    - struct reply_info*
    - uint16_t
    - uint16_t
    - sldns_buffer*
    - time_t
    - struct edns_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 165
    functionDepth: 1
    functionLinenumber: 165
    functionLinenumberEnd: 196
    functionName: perf_encode
    functionSourceFile: /src/unbound/testcode/unitmsgparse.c
    functionUses: 0
    functionsReached:
    - attach_edns_record
    - regional_create
    - printf
    - fatal_exit
    - sldns_buffer_limit
    - strerror
    - gettimeofday
    - regional_destroy
    - regional_free_all
    - reply_info_encode
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void perf_encode(struct query_info* qi, struct reply_info* rep, uint16_t
      id, \n\tuint16_t flags, sldns_buffer* out, time_t timenow, \n\tstruct edns_data*
      edns)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: regional_create
      Src: /src/unbound/testcode/unitmsgparse.c:209,1
    - Dst: hex_to_buf
      Src: /src/unbound/testcode/unitmsgparse.c:212,1
    - Dst: memmove
      Src: /src/unbound/testcode/unitmsgparse.c:213,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitmsgparse.c:213,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:214,1
    - Dst: memmove
      Src: /src/unbound/testcode/unitmsgparse.c:216,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/testcode/unitmsgparse.c:216,1
    - Dst: ntohs
      Src: /src/unbound/testcode/unitmsgparse.c:217,1
    - Dst: reply_info_parse
      Src: /src/unbound/testcode/unitmsgparse.c:218,1
    - Dst: sldns_wire2str_rcode_buf
      Src: /src/unbound/testcode/unitmsgparse.c:221,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:222,1
    - Dst: checkformerr
      Src: /src/unbound/testcode/unitmsgparse.c:224,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmsgparse.c:225,1
    - Dst: perf_encode
      Src: /src/unbound/testcode/unitmsgparse.c:227,1
    - Dst: query_info_clear
      Src: /src/unbound/testcode/unitmsgparse.c:230,1
    - Dst: reply_info_parsedelete
      Src: /src/unbound/testcode/unitmsgparse.c:231,1
    - Dst: regional_destroy
      Src: /src/unbound/testcode/unitmsgparse.c:232,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 4
    argNames:
    - pkt
    - alloc
    - out
    - hex
    argTypes:
    - sldns_buffer*
    - struct alloc_cache*
    - sldns_buffer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 199
    functionDepth: 6
    functionLinenumber: 199
    functionLinenumberEnd: 233
    functionName: perftestpkt
    functionSourceFile: /src/unbound/testcode/unitmsgparse.c
    functionUses: 0
    functionsReached:
    - reply_info_parse
    - sldns_buffer_at
    - memmove
    - regional_create
    - sldns_wire2str_rcode_buf
    - reply_info_parsedelete
    - sldns_buffer_limit
    - printf
    - checkformerr
    - query_info_clear
    - sldns_buffer_begin
    - hex_to_buf
    - perf_encode
    - regional_destroy
    - unit_assert
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void perftestpkt(sldns_buffer* pkt, struct alloc_cache* alloc, sldns_buffer*
      out, \n\tconst char* hex)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: packed_rr_to_string
      Src: /src/unbound/testcode/unitmsgparse.c:244,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:245,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:247,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - rrset
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 249
    functionName: print_rrset
    functionSourceFile: /src/unbound/testcode/unitmsgparse.c
    functionUses: 0
    functionsReached:
    - printf
    - packed_rr_to_string
    linkageType: ''
    returnType: void
    signature: void print_rrset(struct ub_packed_rrset_key* rrset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_query_info
      Src: /src/unbound/testcode/unitmsgparse.c:256,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:257,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:259,1
    - Dst: print_rrset
      Src: /src/unbound/testcode/unitmsgparse.c:260,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:262,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:264,1
    - Dst: print_rrset
      Src: /src/unbound/testcode/unitmsgparse.c:265,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:267,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:269,1
    - Dst: print_rrset
      Src: /src/unbound/testcode/unitmsgparse.c:270,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:272,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - qinfo
    - rep
    argTypes:
    - struct query_info*
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 252
    functionDepth: 2
    functionLinenumber: 252
    functionLinenumberEnd: 273
    functionName: print_packet_rrsets
    functionSourceFile: /src/unbound/testcode/unitmsgparse.c
    functionUses: 0
    functionsReached:
    - log_query_info
    - printf
    - print_rrset
    linkageType: ''
    returnType: void
    signature: void print_packet_rrsets(struct query_info* qinfo, struct reply_info*
      rep)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/testcode/unitmsgparse.c:281,1
    - Dst: query_dname_compare
      Src: /src/unbound/testcode/unitmsgparse.c:283,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 2
    argNames:
    - rep
    - rrsig
    argTypes:
    - struct reply_info*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 276
    functionDepth: 1
    functionLinenumber: 276
    functionLinenumberEnd: 289
    functionName: no_data_for_rrsig
    functionSourceFile: /src/unbound/testcode/unitmsgparse.c
    functionUses: 0
    functionsReached:
    - query_dname_compare
    - ntohs
    linkageType: ''
    returnType: int
    signature: int no_data_for_rrsig(struct reply_info* rep, struct ub_packed_rrset_key*
      rrsig)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/testcode/unitmsgparse.c:299,1
    - Dst: no_data_for_rrsig
      Src: /src/unbound/testcode/unitmsgparse.c:302,1
    - Dst: log_dns_msg
      Src: /src/unbound/testcode/unitmsgparse.c:304,1
    - Dst: print_packet_rrsets
      Src: /src/unbound/testcode/unitmsgparse.c:305,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:306,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmsgparse.c:307,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 2
    argNames:
    - qinfo
    - rep
    argTypes:
    - struct query_info*
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 292
    functionDepth: 3
    functionLinenumber: 292
    functionLinenumberEnd: 310
    functionName: check_the_rrsigs
    functionSourceFile: /src/unbound/testcode/unitmsgparse.c
    functionUses: 0
    functionsReached:
    - log_dns_msg
    - printf
    - print_packet_rrsets
    - no_data_for_rrsig
    - unit_assert
    - ntohs
    linkageType: ''
    returnType: void
    signature: void check_the_rrsigs(struct query_info* qinfo, struct reply_info*
      rep)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: regional_create
      Src: /src/unbound/testcode/unitmsgparse.c:323,1
    - Dst: hex_to_buf
      Src: /src/unbound/testcode/unitmsgparse.c:326,1
    - Dst: memmove
      Src: /src/unbound/testcode/unitmsgparse.c:327,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitmsgparse.c:327,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:328,1
    - Dst: memmove
      Src: /src/unbound/testcode/unitmsgparse.c:330,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/testcode/unitmsgparse.c:330,1
    - Dst: ntohs
      Src: /src/unbound/testcode/unitmsgparse.c:331,1
    - Dst: reply_info_parse
      Src: /src/unbound/testcode/unitmsgparse.c:332,1
    - Dst: sldns_wire2str_rcode_buf
      Src: /src/unbound/testcode/unitmsgparse.c:335,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:336,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmsgparse.c:338,1
    - Dst: checkformerr
      Src: /src/unbound/testcode/unitmsgparse.c:339,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmsgparse.c:341,1
    - Dst: reply_info_encode
      Src: /src/unbound/testcode/unitmsgparse.c:344,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmsgparse.c:346,1
    - Dst: attach_edns_record
      Src: /src/unbound/testcode/unitmsgparse.c:347,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:348,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:349,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:350,1
    - Dst: test_buffers
      Src: /src/unbound/testcode/unitmsgparse.c:352,1
    - Dst: check_the_rrsigs
      Src: /src/unbound/testcode/unitmsgparse.c:354,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:356,1
    - Dst: reply_info_encode
      Src: /src/unbound/testcode/unitmsgparse.c:357,1
    - Dst: calc_edns_field_size
      Src: /src/unbound/testcode/unitmsgparse.c:359,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmsgparse.c:361,1
    - Dst: attach_edns_record
      Src: /src/unbound/testcode/unitmsgparse.c:362,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/unitmsgparse.c:363,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitmsgparse.c:363,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/unitmsgparse.c:364,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitmsgparse.c:364,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/testcode/unitmsgparse.c:365,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitmsgparse.c:365,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/testcode/unitmsgparse.c:366,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitmsgparse.c:366,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/testcode/unitmsgparse.c:367,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitmsgparse.c:367,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/testcode/unitmsgparse.c:368,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitmsgparse.c:368,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmsgparse.c:369,1
    - Dst: LDNS_TC_WIRE
      Src: /src/unbound/testcode/unitmsgparse.c:370,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitmsgparse.c:370,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitmsgparse.c:372,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/unitmsgparse.c:372,1
    - Dst: query_info_clear
      Src: /src/unbound/testcode/unitmsgparse.c:376,1
    - Dst: reply_info_parsedelete
      Src: /src/unbound/testcode/unitmsgparse.c:377,1
    - Dst: regional_destroy
      Src: /src/unbound/testcode/unitmsgparse.c:378,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 40
    argCount: 4
    argNames:
    - pkt
    - alloc
    - out
    - hex
    argTypes:
    - sldns_buffer*
    - struct alloc_cache*
    - sldns_buffer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 379
      start: 313
    functionDepth: 10
    functionLinenumber: 313
    functionLinenumberEnd: 379
    functionName: testpkt
    functionSourceFile: /src/unbound/testcode/unitmsgparse.c
    functionUses: 0
    functionsReached:
    - LDNS_ANCOUNT
    - attach_edns_record
    - regional_create
    - sldns_wire2str_rcode_buf
    - reply_info_parsedelete
    - reply_info_encode
    - check_the_rrsigs
    - printf
    - query_info_clear
    - sldns_buffer_begin
    - calc_edns_field_size
    - regional_destroy
    - reply_info_parse
    - LDNS_NSCOUNT
    - unit_assert
    - LDNS_TC_WIRE
    - sldns_buffer_at
    - memmove
    - test_buffers
    - LDNS_QDCOUNT
    - sldns_buffer_limit
    - checkformerr
    - hex_to_buf
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void testpkt(sldns_buffer* pkt, struct alloc_cache* alloc, sldns_buffer*
      out, \n\tconst char* hex)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: testpkt
      Src: /src/unbound/testcode/unitmsgparse.c:386,1
    - Dst: testpkt
      Src: /src/unbound/testcode/unitmsgparse.c:390,1
    - Dst: testpkt
      Src: /src/unbound/testcode/unitmsgparse.c:402,1
    - Dst: perftestpkt
      Src: /src/unbound/testcode/unitmsgparse.c:432,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - pkt
    - alloc
    - out
    argTypes:
    - sldns_buffer*
    - struct alloc_cache*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 382
    functionDepth: 11
    functionLinenumber: 382
    functionLinenumberEnd: 436
    functionName: simpletest
    functionSourceFile: /src/unbound/testcode/unitmsgparse.c
    functionUses: 0
    functionsReached:
    - testpkt
    - perftestpkt
    linkageType: ''
    returnType: void
    signature: void simpletest(sldns_buffer* pkt, struct alloc_cache* alloc, sldns_buffer*
      out)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/testcode/unitmsgparse.c:443,1
    - Dst: perror
      Src: /src/unbound/testcode/unitmsgparse.c:447,1
    - Dst: fgets
      Src: /src/unbound/testcode/unitmsgparse.c:450,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitmsgparse.c:453,1
    - Dst: printf
      Src: /src/unbound/testcode/unitmsgparse.c:456,1
    - Dst: fflush
      Src: /src/unbound/testcode/unitmsgparse.c:457,1
    - Dst: testpkt
      Src: /src/unbound/testcode/unitmsgparse.c:459,1
    - Dst: fclose
      Src: /src/unbound/testcode/unitmsgparse.c:462,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 4
    argNames:
    - pkt
    - alloc
    - out
    - fname
    argTypes:
    - sldns_buffer*
    - struct alloc_cache*
    - sldns_buffer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 463
      start: 439
    functionDepth: 11
    functionLinenumber: 439
    functionLinenumberEnd: 463
    functionName: testfromfile
    functionSourceFile: /src/unbound/testcode/unitmsgparse.c
    functionUses: 0
    functionsReached:
    - perror
    - fclose
    - printf
    - fopen
    - strlen
    - testpkt
    - fgets
    - fflush
    linkageType: ''
    returnType: void
    signature: "void testfromfile(sldns_buffer* pkt, struct alloc_cache* alloc, sldns_buffer*
      out,\n\tconst char* fname)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/testcode/unitmsgparse.c:471,1
    - Dst: perror
      Src: /src/unbound/testcode/unitmsgparse.c:476,1
    - Dst: fgets
      Src: /src/unbound/testcode/unitmsgparse.c:479,1
    - Dst: strncmp
      Src: /src/unbound/testcode/unitmsgparse.c:480,1
    - Dst: testpkt
      Src: /src/unbound/testcode/unitmsgparse.c:484,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitmsgparse.c:492,1
    - Dst: testpkt
      Src: /src/unbound/testcode/unitmsgparse.c:494,1
    - Dst: fclose
      Src: /src/unbound/testcode/unitmsgparse.c:495,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 20
    argCount: 4
    argNames:
    - pkt
    - alloc
    - out
    - fname
    argTypes:
    - sldns_buffer*
    - struct alloc_cache*
    - sldns_buffer*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 496
      start: 466
    functionDepth: 11
    functionLinenumber: 466
    functionLinenumberEnd: 496
    functionName: testfromdrillfile
    functionSourceFile: /src/unbound/testcode/unitmsgparse.c
    functionUses: 0
    functionsReached:
    - perror
    - strncmp
    - fgets
    - fclose
    - fopen
    - strlen
    - testpkt
    linkageType: ''
    returnType: void
    signature: "void testfromdrillfile(sldns_buffer* pkt, struct alloc_cache* alloc,
      \n\tsldns_buffer* out, const char* fname)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 499
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 499
    functionName: xstr
    functionSourceFile: /src/unbound/testcode/unitmsgparse.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: xstr(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 499
    functionDepth: 0
    functionLinenumber: 499
    functionLinenumberEnd: 500
    functionName: str
    functionSourceFile: /src/unbound/testcode/unitmsgparse.c
    functionUses: 144
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: str(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/unitmsgparse.c:510,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/unitmsgparse.c:511,1
    - Dst: alloc_init
      Src: /src/unbound/testcode/unitmsgparse.c:515,1
    - Dst: alloc_init
      Src: /src/unbound/testcode/unitmsgparse.c:516,1
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitmsgparse.c:518,1
    - Dst: simpletest
      Src: /src/unbound/testcode/unitmsgparse.c:519,1
    - Dst: testfromfile
      Src: /src/unbound/testcode/unitmsgparse.c:521,1
    - Dst: testfromfile
      Src: /src/unbound/testcode/unitmsgparse.c:522,1
    - Dst: testfromfile
      Src: /src/unbound/testcode/unitmsgparse.c:523,1
    - Dst: testfromdrillfile
      Src: /src/unbound/testcode/unitmsgparse.c:525,1
    - Dst: testfromdrillfile
      Src: /src/unbound/testcode/unitmsgparse.c:526,1
    - Dst: testfromdrillfile
      Src: /src/unbound/testcode/unitmsgparse.c:529,1
    - Dst: testfromdrillfile
      Src: /src/unbound/testcode/unitmsgparse.c:531,1
    - Dst: testfromdrillfile
      Src: /src/unbound/testcode/unitmsgparse.c:536,1
    - Dst: testfromdrillfile
      Src: /src/unbound/testcode/unitmsgparse.c:541,1
    - Dst: alloc_clear
      Src: /src/unbound/testcode/unitmsgparse.c:546,1
    - Dst: alloc_clear
      Src: /src/unbound/testcode/unitmsgparse.c:547,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/unitmsgparse.c:548,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/unitmsgparse.c:549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 30
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 507
    functionDepth: 12
    functionLinenumber: 507
    functionLinenumberEnd: 551
    functionName: msgparse_test
    functionSourceFile: /src/unbound/testcode/unitmsgparse.c
    functionUses: 1
    functionsReached:
    - sldns_buffer_new
    - testfromfile
    - testfromdrillfile
    - alloc_clear
    - simpletest
    - alloc_init
    - unit_show_feature
    - sldns_buffer_free
    linkageType: ''
    returnType: void
    signature: void msgparse_test(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:77,1
    - Dst: sldns_buffer_copy
      Src: /src/unbound/testcode/unitverify.c:79,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitverify.c:81,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/unitverify.c:82,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/unitverify.c:84,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - e
    - pkt
    argTypes:
    - struct entry*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 74
    functionDepth: 5
    functionLinenumber: 74
    functionLinenumberEnd: 86
    functionName: entry_to_buf
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_write
    - sldns_buffer_flip
    - sldns_buffer_clear
    - sldns_buffer_copy
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void entry_to_buf(struct entry* e, sldns_buffer* pkt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: entry_to_buf
      Src: /src/unbound/testcode/unitverify.c:96,1
    - Dst: lock_quick_lock
      Src: /src/unbound/testcode/unitverify.c:101,1
    - Dst: reply_info_parse
      Src: /src/unbound/testcode/unitverify.c:102,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/testcode/unitverify.c:103,1
    - Dst: sldns_wire2str_rcode_buf
      Src: /src/unbound/testcode/unitverify.c:106,1
    - Dst: printf
      Src: /src/unbound/testcode/unitverify.c:107,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 6
    argNames:
    - e
    - alloc
    - region
    - pkt
    - qi
    - rep
    argTypes:
    - struct entry*
    - struct alloc_cache*
    - struct regional*
    - sldns_buffer*
    - struct query_info*
    - struct reply_info**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 89
    functionDepth: 6
    functionLinenumber: 89
    functionLinenumberEnd: 110
    functionName: entry_to_repinfo
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 0
    functionsReached:
    - reply_info_parse
    - sldns_wire2str_rcode_buf
    - printf
    - lock_quick_unlock
    - lock_quick_lock
    - entry_to_buf
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void entry_to_repinfo(struct entry* e, struct alloc_cache* alloc,
      \n\tstruct regional* region, sldns_buffer* pkt, struct query_info* qi, \n\tstruct
      reply_info** rep)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: entry_to_repinfo
      Src: /src/unbound/testcode/unitverify.c:122,1
    - Dst: ntohs
      Src: /src/unbound/testcode/unitverify.c:124,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:130,1
    - Dst: reply_info_parsedelete
      Src: /src/unbound/testcode/unitverify.c:132,1
    - Dst: query_info_clear
      Src: /src/unbound/testcode/unitverify.c:133,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - e
    - alloc
    - region
    - pkt
    argTypes:
    - struct entry*
    - struct alloc_cache*
    - struct regional*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 135
      start: 113
    functionDepth: 7
    functionLinenumber: 113
    functionLinenumberEnd: 135
    functionName: extract_keys
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 0
    functionsReached:
    - reply_info_parsedelete
    - query_info_clear
    - entry_to_repinfo
    - unit_assert
    - ntohs
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: "struct ub_packed_rrset_key * \nextract_keys(struct entry* e, struct
      alloc_cache* alloc, \n\tstruct regional* region, sldns_buffer* pkt)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/testcode/unitverify.c:146,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitverify.c:148,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - rrset
    - qinfo
    argTypes:
    - struct ub_packed_rrset_key*
    - struct query_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 151
    functionName: should_be_bogus
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int should_be_bogus(struct ub_packed_rrset_key* rrset, struct query_info*
      qinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rrset
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 161
    functionName: rrset_get_count
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t rrset_get_count(struct ub_packed_rrset_key* rrset)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/unitverify.c:169,1
    - Dst: rrset_get_count
      Src: /src/unbound/testcode/unitverify.c:170,1
    - Dst: dnskey_get_algo
      Src: /src/unbound/testcode/unitverify.c:171,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - dnskey
    - sigalg
    argTypes:
    - struct ub_packed_rrset_key*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 164
    functionDepth: 3
    functionLinenumber: 164
    functionLinenumberEnd: 178
    functionName: setup_sigalg
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 0
    functionsReached:
    - memset
    - dnskey_get_algo
    - rrset_get_count
    linkageType: ''
    returnType: void
    signature: void setup_sigalg(struct ub_packed_rrset_key* dnskey, uint8_t* sigalg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_nametypeclass
      Src: /src/unbound/testcode/unitverify.c:192,1
    - Dst: ntohs
      Src: /src/unbound/testcode/unitverify.c:193,1
    - Dst: ntohs
      Src: /src/unbound/testcode/unitverify.c:194,1
    - Dst: setup_sigalg
      Src: /src/unbound/testcode/unitverify.c:196,1
    - Dst: dnskeyset_verify_rrset
      Src: /src/unbound/testcode/unitverify.c:198,1
    - Dst: printf
      Src: /src/unbound/testcode/unitverify.c:202,1
    - Dst: sec_status_to_string
      Src: /src/unbound/testcode/unitverify.c:202,1
    - Dst: should_be_bogus
      Src: /src/unbound/testcode/unitverify.c:205,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:206,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:208,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 5
    argNames:
    - env
    - ve
    - rrset
    - dnskey
    - qinfo
    argTypes:
    - struct module_env*
    - struct val_env*
    - struct ub_packed_rrset_key*
    - struct ub_packed_rrset_key*
    - struct query_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 210
      start: 181
    functionDepth: 5
    functionLinenumber: 181
    functionLinenumberEnd: 210
    functionName: verifytest_rrset
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 0
    functionsReached:
    - dnskeyset_verify_rrset
    - log_nametypeclass
    - setup_sigalg
    - printf
    - sec_status_to_string
    - should_be_bogus
    - unit_assert
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void verifytest_rrset(struct module_env* env, struct val_env* ve,
      \n\tstruct ub_packed_rrset_key* rrset, struct ub_packed_rrset_key* dnskey,\n\tstruct
      query_info* qinfo)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_free_all
      Src: /src/unbound/testcode/unitverify.c:223,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/unitverify.c:225,1
    - Dst: printf
      Src: /src/unbound/testcode/unitverify.c:227,1
    - Dst: free
      Src: /src/unbound/testcode/unitverify.c:228,1
    - Dst: entry_to_repinfo
      Src: /src/unbound/testcode/unitverify.c:230,1
    - Dst: verifytest_rrset
      Src: /src/unbound/testcode/unitverify.c:233,1
    - Dst: reply_info_parsedelete
      Src: /src/unbound/testcode/unitverify.c:236,1
    - Dst: query_info_clear
      Src: /src/unbound/testcode/unitverify.c:237,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 7
    argNames:
    - e
    - alloc
    - region
    - pkt
    - dnskey
    - env
    - ve
    argTypes:
    - struct entry*
    - struct alloc_cache*
    - struct regional*
    - sldns_buffer*
    - struct ub_packed_rrset_key*
    - struct module_env*
    - struct val_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 213
    functionDepth: 7
    functionLinenumber: 213
    functionLinenumberEnd: 238
    functionName: verifytest_entry
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_pkt
    - printf
    - reply_info_parsedelete
    - verifytest_rrset
    - free
    - query_info_clear
    - entry_to_repinfo
    - regional_free_all
    linkageType: ''
    returnType: void
    signature: "void verifytest_entry(struct entry* e, struct alloc_cache* alloc,
      \n\tstruct regional* region, sldns_buffer* pkt, \n\tstruct ub_packed_rrset_key*
      dnskey, struct module_env* env, \n\tstruct val_env* ve)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/testcode/unitverify.c:246,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - rep
    - type
    argTypes:
    - struct reply_info*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 250
    functionName: find_rrset_type
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 0
    functionsReached:
    - ntohs
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: 'struct ub_packed_rrset_key *

      find_rrset_type(struct reply_info* rep, uint16_t type)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: regional_free_all
      Src: /src/unbound/testcode/unitverify.c:262,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/unitverify.c:264,1
    - Dst: printf
      Src: /src/unbound/testcode/unitverify.c:266,1
    - Dst: free
      Src: /src/unbound/testcode/unitverify.c:267,1
    - Dst: entry_to_repinfo
      Src: /src/unbound/testcode/unitverify.c:269,1
    - Dst: find_rrset_type
      Src: /src/unbound/testcode/unitverify.c:270,1
    - Dst: find_rrset_type
      Src: /src/unbound/testcode/unitverify.c:271,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:273,1
    - Dst: ds_digest_match_dnskey
      Src: /src/unbound/testcode/unitverify.c:275,1
    - Dst: strncmp
      Src: /src/unbound/testcode/unitverify.c:276,1
    - Dst: printf
      Src: /src/unbound/testcode/unitverify.c:278,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:280,1
    - Dst: strncmp
      Src: /src/unbound/testcode/unitverify.c:281,1
    - Dst: printf
      Src: /src/unbound/testcode/unitverify.c:283,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:285,1
    - Dst: verbose
      Src: /src/unbound/testcode/unitverify.c:286,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitverify.c:288,1
    - Dst: reply_info_parsedelete
      Src: /src/unbound/testcode/unitverify.c:291,1
    - Dst: query_info_clear
      Src: /src/unbound/testcode/unitverify.c:292,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 5
    argNames:
    - e
    - alloc
    - region
    - pkt
    - env
    argTypes:
    - struct entry*
    - struct alloc_cache*
    - struct regional*
    - sldns_buffer*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 253
    functionDepth: 7
    functionLinenumber: 253
    functionLinenumberEnd: 293
    functionName: dstest_entry
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 0
    functionsReached:
    - strncmp
    - verbose
    - sldns_wire2str_pkt
    - printf
    - ds_digest_match_dnskey
    - fatal_exit
    - free
    - reply_info_parsedelete
    - query_info_clear
    - find_rrset_type
    - entry_to_repinfo
    - regional_free_all
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void dstest_entry(struct entry* e, struct alloc_cache* alloc, \n\tstruct
      regional* region, sldns_buffer* pkt, struct module_env* env)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_create
      Src: /src/unbound/testcode/unitverify.c:305,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/unitverify.c:307,1
    - Dst: read_datafile
      Src: /src/unbound/testcode/unitverify.c:309,1
    - Dst: time
      Src: /src/unbound/testcode/unitverify.c:312,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitverify.c:313,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitverify.c:316,1
    - Dst: strerror
      Src: /src/unbound/testcode/unitverify.c:316,1
    - Dst: alloc_init
      Src: /src/unbound/testcode/unitverify.c:317,1
    - Dst: memset
      Src: /src/unbound/testcode/unitverify.c:318,1
    - Dst: memset
      Src: /src/unbound/testcode/unitverify.c:319,1
    - Dst: cfg_convert_timeval
      Src: /src/unbound/testcode/unitverify.c:323,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:324,1
    - Dst: extract_keys
      Src: /src/unbound/testcode/unitverify.c:325,1
    - Dst: log_nametypeclass
      Src: /src/unbound/testcode/unitverify.c:326,1
    - Dst: ntohs
      Src: /src/unbound/testcode/unitverify.c:327,1
    - Dst: ntohs
      Src: /src/unbound/testcode/unitverify.c:328,1
    - Dst: verifytest_entry
      Src: /src/unbound/testcode/unitverify.c:331,1
    - Dst: ub_packed_rrset_parsedelete
      Src: /src/unbound/testcode/unitverify.c:334,1
    - Dst: delete_entry
      Src: /src/unbound/testcode/unitverify.c:335,1
    - Dst: regional_destroy
      Src: /src/unbound/testcode/unitverify.c:336,1
    - Dst: alloc_clear
      Src: /src/unbound/testcode/unitverify.c:337,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/unitverify.c:338,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 2
    argNames:
    - fname
    - at_date
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 296
    functionDepth: 10
    functionLinenumber: 296
    functionLinenumberEnd: 339
    functionName: verifytest_file
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 0
    functionsReached:
    - read_datafile
    - sldns_buffer_new
    - log_nametypeclass
    - ub_packed_rrset_parsedelete
    - regional_create
    - unit_show_func
    - sldns_buffer_free
    - extract_keys
    - memset
    - verifytest_entry
    - delete_entry
    - regional_destroy
    - alloc_init
    - cfg_convert_timeval
    - time
    - strerror
    - unit_assert
    - alloc_clear
    - fatal_exit
    - ntohs
    linkageType: ''
    returnType: void
    signature: void verifytest_file(const char* fname, const char* at_date)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_create
      Src: /src/unbound/testcode/unitverify.c:350,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/unitverify.c:352,1
    - Dst: read_datafile
      Src: /src/unbound/testcode/unitverify.c:354,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitverify.c:356,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitverify.c:359,1
    - Dst: strerror
      Src: /src/unbound/testcode/unitverify.c:359,1
    - Dst: alloc_init
      Src: /src/unbound/testcode/unitverify.c:360,1
    - Dst: memset
      Src: /src/unbound/testcode/unitverify.c:361,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:364,1
    - Dst: dstest_entry
      Src: /src/unbound/testcode/unitverify.c:368,1
    - Dst: delete_entry
      Src: /src/unbound/testcode/unitverify.c:371,1
    - Dst: regional_destroy
      Src: /src/unbound/testcode/unitverify.c:372,1
    - Dst: alloc_clear
      Src: /src/unbound/testcode/unitverify.c:373,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/unitverify.c:374,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 342
    functionDepth: 10
    functionLinenumber: 342
    functionLinenumberEnd: 375
    functionName: dstest_file
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 0
    functionsReached:
    - read_datafile
    - sldns_buffer_new
    - alloc_clear
    - regional_create
    - alloc_init
    - dstest_entry
    - delete_entry
    - fatal_exit
    - unit_show_func
    - sldns_buffer_free
    - strerror
    - memset
    - regional_destroy
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void dstest_file(const char* fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nsecbitmap_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:381,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - bitmap
    - len
    - type
    argTypes:
    - char*
    - size_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 382
      start: 378
    functionDepth: 1
    functionLinenumber: 378
    functionLinenumberEnd: 382
    functionName: unitest_nsec_has_type_rdata
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 0
    functionsReached:
    - nsecbitmap_has_type_rdata
    linkageType: ''
    returnType: int
    signature: int unitest_nsec_has_type_rdata(char* bitmap, size_t len, uint16_t
      type)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:397,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:397,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:398,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:398,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:399,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:399,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:400,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:400,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:401,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:401,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:402,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:402,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:403,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:403,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:404,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:404,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:405,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:405,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:406,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:406,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:407,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:407,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:408,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:408,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:409,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:409,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:410,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:410,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:411,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:411,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:412,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:412,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:413,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:413,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:414,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:414,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:415,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:415,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:416,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:416,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:417,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:417,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:418,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:418,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:419,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:419,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:420,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:420,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:421,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:421,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:422,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:422,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:423,1
    - Dst: unitest_nsec_has_type_rdata
      Src: /src/unbound/testcode/unitverify.c:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 28
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 385
    functionDepth: 2
    functionLinenumber: 385
    functionLinenumberEnd: 424
    functionName: nsectest
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 0
    functionsReached:
    - unitest_nsec_has_type_rdata
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void nsectest(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/unitverify.c:440,1
    - Dst: printf
      Src: /src/unbound/testcode/unitverify.c:442,1
    - Dst: free
      Src: /src/unbound/testcode/unitverify.c:443,1
    - Dst: entry_to_repinfo
      Src: /src/unbound/testcode/unitverify.c:445,1
    - Dst: find_rrset_type
      Src: /src/unbound/testcode/unitverify.c:446,1
    - Dst: find_rrset_type
      Src: /src/unbound/testcode/unitverify.c:447,1
    - Dst: regional_alloc_init
      Src: /src/unbound/testcode/unitverify.c:448,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:450,1
    - Dst: packed_rrset_copy_region
      Src: /src/unbound/testcode/unitverify.c:454,1
    - Dst: nsec3_hash_name
      Src: /src/unbound/testcode/unitverify.c:456,1
    - Dst: printf
      Src: /src/unbound/testcode/unitverify.c:459,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:460,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:462,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:464,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:466,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitverify.c:466,1
    - Dst: reply_info_parsedelete
      Src: /src/unbound/testcode/unitverify.c:469,1
    - Dst: query_info_clear
      Src: /src/unbound/testcode/unitverify.c:470,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 5
    argNames:
    - e
    - ct
    - alloc
    - region
    - buf
    argTypes:
    - struct entry*
    - rbtree_type*
    - struct alloc_cache*
    - struct regional*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 427
    functionDepth: 7
    functionLinenumber: 427
    functionLinenumberEnd: 471
    functionName: nsec3_hash_test_entry
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 0
    functionsReached:
    - packed_rrset_copy_region
    - nsec3_hash_name
    - sldns_wire2str_pkt
    - printf
    - reply_info_parsedelete
    - free
    - memcmp
    - regional_alloc_init
    - query_info_clear
    - find_rrset_type
    - entry_to_repinfo
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void nsec3_hash_test_entry(struct entry* e, rbtree_type* ct,\n\tstruct
      alloc_cache* alloc, struct regional* region, \n\tsldns_buffer* buf)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_create
      Src: /src/unbound/testcode/unitverify.c:489,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/unitverify.c:491,1
    - Dst: read_datafile
      Src: /src/unbound/testcode/unitverify.c:493,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitverify.c:494,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitverify.c:497,1
    - Dst: strerror
      Src: /src/unbound/testcode/unitverify.c:497,1
    - Dst: rbtree_init
      Src: /src/unbound/testcode/unitverify.c:498,1
    - Dst: alloc_init
      Src: /src/unbound/testcode/unitverify.c:499,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitverify.c:500,1
    - Dst: nsec3_hash_test_entry
      Src: /src/unbound/testcode/unitverify.c:504,1
    - Dst: delete_entry
      Src: /src/unbound/testcode/unitverify.c:507,1
    - Dst: regional_destroy
      Src: /src/unbound/testcode/unitverify.c:508,1
    - Dst: alloc_clear
      Src: /src/unbound/testcode/unitverify.c:509,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/unitverify.c:510,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 475
    functionDepth: 10
    functionLinenumber: 475
    functionLinenumberEnd: 511
    functionName: nsec3_hash_test
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 0
    functionsReached:
    - read_datafile
    - sldns_buffer_new
    - alloc_clear
    - regional_create
    - alloc_init
    - delete_entry
    - fatal_exit
    - unit_show_func
    - rbtree_init
    - nsec3_hash_test_entry
    - strerror
    - sldns_buffer_free
    - regional_destroy
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void nsec3_hash_test(const char* fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 514
      start: 513
    functionDepth: 0
    functionLinenumber: 513
    functionLinenumberEnd: 514
    functionName: xstr
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: xstr(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 514
    functionDepth: 0
    functionLinenumber: 514
    functionLinenumberEnd: 515
    functionName: str
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 144
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: str(s)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: EVP_MD_CTX_new
      Src: /src/unbound/testcode/unitverify.c:570,1
    - Dst: malloc
      Src: /src/unbound/testcode/unitverify.c:572,1
    - Dst: EVP_MD_CTX_init
      Src: /src/unbound/testcode/unitverify.c:573,1
    - Dst: sldns_key_rsa2pkey_raw
      Src: /src/unbound/testcode/unitverify.c:577,1
    - Dst: EVP_MD_CTX_destroy
      Src: /src/unbound/testcode/unitverify.c:580,1
    - Dst: EVP_MD_CTX_cleanup
      Src: /src/unbound/testcode/unitverify.c:582,1
    - Dst: free
      Src: /src/unbound/testcode/unitverify.c:583,1
    - Dst: EVP_DigestInit
      Src: /src/unbound/testcode/unitverify.c:590,1
    - Dst: EVP_sha1
      Src: /src/unbound/testcode/unitverify.c:590,1
    - Dst: EVP_DigestVerifyInit
      Src: /src/unbound/testcode/unitverify.c:592,1
    - Dst: EVP_sha1
      Src: /src/unbound/testcode/unitverify.c:592,1
    - Dst: ERR_get_error
      Src: /src/unbound/testcode/unitverify.c:595,1
    - Dst: ERR_GET_LIB
      Src: /src/unbound/testcode/unitverify.c:597,1
    - Dst: ERR_GET_REASON
      Src: /src/unbound/testcode/unitverify.c:598,1
    - Dst: printf
      Src: /src/unbound/testcode/unitverify.c:601,1
    - Dst: EVP_MD_CTX_destroy
      Src: /src/unbound/testcode/unitverify.c:603,1
    - Dst: EVP_MD_CTX_cleanup
      Src: /src/unbound/testcode/unitverify.c:605,1
    - Dst: free
      Src: /src/unbound/testcode/unitverify.c:606,1
    - Dst: EVP_PKEY_free
      Src: /src/unbound/testcode/unitverify.c:608,1
    - Dst: log_crypto_err_code
      Src: /src/unbound/testcode/unitverify.c:613,1
    - Dst: EVP_MD_CTX_destroy
      Src: /src/unbound/testcode/unitverify.c:615,1
    - Dst: EVP_MD_CTX_cleanup
      Src: /src/unbound/testcode/unitverify.c:617,1
    - Dst: free
      Src: /src/unbound/testcode/unitverify.c:618,1
    - Dst: EVP_PKEY_free
      Src: /src/unbound/testcode/unitverify.c:620,1
    - Dst: EVP_MD_CTX_destroy
      Src: /src/unbound/testcode/unitverify.c:624,1
    - Dst: EVP_MD_CTX_cleanup
      Src: /src/unbound/testcode/unitverify.c:626,1
    - Dst: free
      Src: /src/unbound/testcode/unitverify.c:627,1
    - Dst: EVP_PKEY_free
      Src: /src/unbound/testcode/unitverify.c:629,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 39
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 631
      start: 524
    functionDepth: 4
    functionLinenumber: 524
    functionLinenumberEnd: 631
    functionName: rh_allow_sha1_signatures_disabled
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 0
    functionsReached:
    - EVP_PKEY_free
    - EVP_MD_CTX_cleanup
    - EVP_DigestInit
    - log_crypto_err_code
    - ERR_get_error
    - EVP_MD_CTX_init
    - printf
    - malloc
    - free
    - EVP_DigestVerifyInit
    - ERR_GET_REASON
    - EVP_MD_CTX_destroy
    - EVP_MD_CTX_new
    - sldns_key_rsa2pkey_raw
    - EVP_sha1
    - ERR_GET_LIB
    linkageType: ''
    returnType: int
    signature: int rh_allow_sha1_signatures_disabled(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitverify.c:638,1
    - Dst: rh_allow_sha1_signatures_disabled
      Src: /src/unbound/testcode/unitverify.c:641,1
    - Dst: setenv
      Src: /src/unbound/testcode/unitverify.c:646,1
    - Dst: _putenv
      Src: /src/unbound/testcode/unitverify.c:648,1
    - Dst: EVP_default_properties_is_fips_enabled
      Src: /src/unbound/testcode/unitverify.c:653,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:660,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:665,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:666,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:667,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:668,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:669,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:670,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:675,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:679,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:682,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:685,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:688,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:689,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:693,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:694,1
    - Dst: sldns_key_EVP_load_gost_id
      Src: /src/unbound/testcode/unitverify.c:698,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:699,1
    - Dst: printf
      Src: /src/unbound/testcode/unitverify.c:700,1
    - Dst: dnskey_algo_id_is_supported
      Src: /src/unbound/testcode/unitverify.c:704,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:705,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:706,1
    - Dst: dstest_file
      Src: /src/unbound/testcode/unitverify.c:708,1
    - Dst: dnskey_algo_id_is_supported
      Src: /src/unbound/testcode/unitverify.c:711,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:712,1
    - Dst: dnskey_algo_id_is_supported
      Src: /src/unbound/testcode/unitverify.c:716,1
    - Dst: verifytest_file
      Src: /src/unbound/testcode/unitverify.c:717,1
    - Dst: dstest_file
      Src: /src/unbound/testcode/unitverify.c:722,1
    - Dst: nsectest
      Src: /src/unbound/testcode/unitverify.c:725,1
    - Dst: nsec3_hash_test
      Src: /src/unbound/testcode/unitverify.c:726,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 634
    functionDepth: 11
    functionLinenumber: 634
    functionLinenumberEnd: 727
    functionName: verify_test
    functionSourceFile: /src/unbound/testcode/unitverify.c
    functionUses: 1
    functionsReached:
    - rh_allow_sha1_signatures_disabled
    - printf
    - nsec3_hash_test
    - unit_show_feature
    - dnskey_algo_id_is_supported
    - dstest_file
    - nsectest
    - sldns_key_EVP_load_gost_id
    - setenv
    - _putenv
    - EVP_default_properties_is_fips_enabled
    - verifytest_file
    linkageType: ''
    returnType: void
    signature: void verify_test(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/testcode/unitauth.c:600,1
    - Dst: getpid
      Src: /src/unbound/testcode/unitauth.c:601,1
    - Dst: snprintf
      Src: /src/unbound/testcode/unitauth.c:603,1
    - Dst: getpid
      Src: /src/unbound/testcode/unitauth.c:604,1
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:606,1
    - Dst: unlink
      Src: /src/unbound/testcode/unitauth.c:607,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 609
      start: 593
    functionDepth: 2
    functionLinenumber: 593
    functionLinenumberEnd: 609
    functionName: tmpfilecleanup
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 0
    functionsReached:
    - unlink
    - snprintf
    - getpid
    - printf
    linkageType: ''
    returnType: void
    signature: void tmpfilecleanup(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/testcode/unitauth.c:620,1
    - Dst: getpid
      Src: /src/unbound/testcode/unitauth.c:621,1
    - Dst: snprintf
      Src: /src/unbound/testcode/unitauth.c:623,1
    - Dst: getpid
      Src: /src/unbound/testcode/unitauth.c:624,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitauth.c:626,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:627,1
    - Dst: fopen
      Src: /src/unbound/testcode/unitauth.c:631,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:632,1
    - Dst: strerror
      Src: /src/unbound/testcode/unitauth.c:632,1
    - Dst: fwrite
      Src: /src/unbound/testcode/unitauth.c:633,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitauth.c:633,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:635,1
    - Dst: strerror
      Src: /src/unbound/testcode/unitauth.c:635,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitauth.c:636,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:637,1
    - Dst: fclose
      Src: /src/unbound/testcode/unitauth.c:639,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 612
    functionDepth: 2
    functionLinenumber: 612
    functionLinenumberEnd: 641
    functionName: create_tmp_file
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 0
    functionsReached:
    - fwrite
    - snprintf
    - fclose
    - fatal_exit
    - fopen
    - getpid
    - strerror
    - strlen
    - strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      create_tmp_file(const char* s)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: unlink
      Src: /src/unbound/testcode/unitauth.c:647,1
    - Dst: free
      Src: /src/unbound/testcode/unitauth.c:648,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 655
      start: 644
    functionDepth: 1
    functionLinenumber: 644
    functionLinenumberEnd: 655
    functionName: del_tmp_file
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 0
    functionsReached:
    - free
    - unlink
    linkageType: ''
    returnType: void
    signature: void del_tmp_file(char* fname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/testcode/unitauth.c:663,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:665,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/testcode/unitauth.c:666,1
    - Dst: auth_zone_create
      Src: /src/unbound/testcode/unitauth.c:667,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitauth.c:668,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:669,1
    - Dst: auth_zone_set_zonefile
      Src: /src/unbound/testcode/unitauth.c:670,1
    - Dst: config_create
      Src: /src/unbound/testcode/unitauth.c:672,1
    - Dst: config_auto_slab_values
      Src: /src/unbound/testcode/unitauth.c:673,1
    - Dst: free
      Src: /src/unbound/testcode/unitauth.c:674,1
    - Dst: auth_zone_read_zonefile
      Src: /src/unbound/testcode/unitauth.c:677,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:678,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitauth.c:680,1
    - Dst: free
      Src: /src/unbound/testcode/unitauth.c:681,1
    - Dst: config_delete
      Src: /src/unbound/testcode/unitauth.c:682,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - az
    - name
    - fname
    argTypes:
    - struct auth_zones*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 684
      start: 658
    functionDepth: 10
    functionLinenumber: 658
    functionLinenumberEnd: 684
    functionName: authtest_addzone
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - config_create
    - auth_zone_set_zonefile
    - fatal_exit
    - free
    - config_auto_slab_values
    - sldns_str2wire_dname
    - config_delete
    - auth_zone_read_zonefile
    - auth_zone_create
    linkageType: ''
    returnType: struct auth_zone
    signature: 'struct auth_zone *

      authtest_addzone(struct auth_zones* az, const char* name, char* fname)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/testcode/unitauth.c:693,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:694,1
    - Dst: strerror
      Src: /src/unbound/testcode/unitauth.c:694,1
    - Dst: fopen
      Src: /src/unbound/testcode/unitauth.c:695,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:696,1
    - Dst: strerror
      Src: /src/unbound/testcode/unitauth.c:696,1
    - Dst: feof
      Src: /src/unbound/testcode/unitauth.c:698,1
    - Dst: feof
      Src: /src/unbound/testcode/unitauth.c:698,1
    - Dst: fgets
      Src: /src/unbound/testcode/unitauth.c:701,1
    - Dst: fgets
      Src: /src/unbound/testcode/unitauth.c:702,1
    - Dst: feof
      Src: /src/unbound/testcode/unitauth.c:703,1
    - Dst: feof
      Src: /src/unbound/testcode/unitauth.c:703,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:704,1
    - Dst: strerror
      Src: /src/unbound/testcode/unitauth.c:704,1
    - Dst: strncmp
      Src: /src/unbound/testcode/unitauth.c:705,1
    - Dst: fclose
      Src: /src/unbound/testcode/unitauth.c:706,1
    - Dst: fclose
      Src: /src/unbound/testcode/unitauth.c:707,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitauth.c:710,1
    - Dst: log_info
      Src: /src/unbound/testcode/unitauth.c:711,1
    - Dst: log_info
      Src: /src/unbound/testcode/unitauth.c:712,1
    - Dst: log_info
      Src: /src/unbound/testcode/unitauth.c:713,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:714,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:717,1
    - Dst: feof
      Src: /src/unbound/testcode/unitauth.c:717,1
    - Dst: feof
      Src: /src/unbound/testcode/unitauth.c:717,1
    - Dst: fclose
      Src: /src/unbound/testcode/unitauth.c:719,1
    - Dst: fclose
      Src: /src/unbound/testcode/unitauth.c:720,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 28
    argCount: 2
    argNames:
    - f1
    - f2
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 721
      start: 687
    functionDepth: 1
    functionLinenumber: 687
    functionLinenumberEnd: 721
    functionName: checkfile
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 0
    functionsReached:
    - strncmp
    - strcmp
    - fclose
    - log_info
    - feof
    - fatal_exit
    - fopen
    - strerror
    - fgets
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void checkfile(char* f1, char *f2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:730,1
    - Dst: create_tmp_file
      Src: /src/unbound/testcode/unitauth.c:731,1
    - Dst: auth_zones_create
      Src: /src/unbound/testcode/unitauth.c:733,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:734,1
    - Dst: authtest_addzone
      Src: /src/unbound/testcode/unitauth.c:735,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:736,1
    - Dst: create_tmp_file
      Src: /src/unbound/testcode/unitauth.c:737,1
    - Dst: auth_zone_write_file
      Src: /src/unbound/testcode/unitauth.c:738,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:739,1
    - Dst: checkfile
      Src: /src/unbound/testcode/unitauth.c:741,1
    - Dst: del_tmp_file
      Src: /src/unbound/testcode/unitauth.c:743,1
    - Dst: del_tmp_file
      Src: /src/unbound/testcode/unitauth.c:744,1
    - Dst: auth_zones_delete
      Src: /src/unbound/testcode/unitauth.c:745,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - name
    - zone
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 746
      start: 724
    functionDepth: 11
    functionLinenumber: 724
    functionLinenumberEnd: 746
    functionName: check_read_exact
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 0
    functionsReached:
    - create_tmp_file
    - checkfile
    - printf
    - authtest_addzone
    - fatal_exit
    - del_tmp_file
    - auth_zones_create
    - auth_zone_write_file
    - auth_zones_delete
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void check_read_exact(const char* name, const char* zone)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/unbound/testcode/unitauth.c:760,1
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/testcode/unitauth.c:765,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:766,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/testcode/unitauth.c:767,1
    - Dst: regional_alloc_init
      Src: /src/unbound/testcode/unitauth.c:768,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:769,1
    - Dst: sldns_str2wire_rr_question_buf
      Src: /src/unbound/testcode/unitauth.c:774,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:776,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/testcode/unitauth.c:777,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/testcode/unitauth.c:778,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:780,1
    - Dst: regional_alloc_init
      Src: /src/unbound/testcode/unitauth.c:781,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:782,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/testcode/unitauth.c:784,1
    - Dst: sldns_wirerr_get_class
      Src: /src/unbound/testcode/unitauth.c:785,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 6
    argNames:
    - q
    - region
    - qinfo
    - fallback
    - dp_nm
    - dp_nmlen
    argTypes:
    - struct q_ans*
    - struct regional*
    - struct query_info**
    - int*
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 786
      start: 749
    functionDepth: 7
    functionLinenumber: 749
    functionLinenumberEnd: 786
    functionName: q_ans_parse
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - fatal_exit
    - sldns_get_errorstr_parse
    - sldns_str2wire_dname_buf
    - sldns_wirerr_get_type
    - regional_alloc_init
    - sldns_str2wire_rr_question_buf
    - strstr
    - sldns_wirerr_get_class
    linkageType: ''
    returnType: void
    signature: "void q_ans_parse(struct q_ans* q, struct regional* region,\n\tstruct
      query_info** qinfo, int* fallback, uint8_t** dp_nm,\n\tsize_t* dp_nmlen)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:793,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:794,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:795,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:796,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:797,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:798,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:799,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:800,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:801,1
    - Dst: sldns_wire2str_rcode_buf
      Src: /src/unbound/testcode/unitauth.c:802,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/testcode/unitauth.c:802,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:804,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:805,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 21
    argCount: 2
    argNames:
    - buf
    - flags
    argTypes:
    - sldns_buffer*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 806
      start: 789
    functionDepth: 2
    functionLinenumber: 789
    functionLinenumberEnd: 806
    functionName: pr_flags
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_printf
    - FLAGS_GET_RCODE
    - sldns_wire2str_rcode_buf
    linkageType: ''
    returnType: void
    signature: void pr_flags(sldns_buffer* buf, uint16_t flags)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/unitauth.c:815,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:820,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:822,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:825,1
    - Dst: packed_rr_to_string
      Src: /src/unbound/testcode/unitauth.c:829,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:831,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:834,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 17
    argCount: 2
    argNames:
    - buf
    - rep
    argTypes:
    - sldns_buffer*
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 837
      start: 809
    functionDepth: 2
    functionLinenumber: 809
    functionLinenumberEnd: 837
    functionName: pr_rrs
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_printf
    - log_assert
    - fatal_exit
    - packed_rr_to_string
    linkageType: ''
    returnType: void
    signature: void pr_rrs(sldns_buffer* buf, struct reply_info* rep)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/unitauth.c:844,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:845,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:847,1
    - Dst: pr_flags
      Src: /src/unbound/testcode/unitauth.c:849,1
    - Dst: pr_rrs
      Src: /src/unbound/testcode/unitauth.c:850,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitauth.c:853,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/unitauth.c:853,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:854,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/unitauth.c:855,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - msg
    argTypes:
    - struct dns_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 857
      start: 840
    functionDepth: 3
    functionLinenumber: 840
    functionLinenumberEnd: 857
    functionName: msgtostr
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_new
    - fatal_exit
    - sldns_buffer_printf
    - sldns_buffer_free
    - sldns_buffer_begin
    - pr_flags
    - strdup
    - pr_rrs
    linkageType: ''
    returnType: char
    signature: 'char *

      msgtostr(struct dns_msg* msg)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/unbound/testcode/unitauth.c:865,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitauth.c:866,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:867,1
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:870,1
    - Dst: strchr
      Src: /src/unbound/testcode/unitauth.c:872,1
    - Dst: strchr
      Src: /src/unbound/testcode/unitauth.c:873,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitauth.c:878,1
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:879,1
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:881,1
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:882,1
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:893,1
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:896,1
    - Dst: free
      Src: /src/unbound/testcode/unitauth.c:898,1
    - Dst: free
      Src: /src/unbound/testcode/unitauth.c:899,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 39
    argCount: 4
    argNames:
    - p
    - q
    - pdesc
    - qdesc
    argTypes:
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 900
      start: 860
    functionDepth: 1
    functionLinenumber: 860
    functionLinenumberEnd: 900
    functionName: line_diff
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - printf
    - fatal_exit
    - free
    - strchr
    - strdup
    linkageType: ''
    returnType: void
    signature: void line_diff(const char* p, const char* q, const char* pdesc, const
      char* qdesc)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: auth_zones_lookup
      Src: /src/unbound/testcode/unitauth.c:914,1
    - Dst: msgtostr
      Src: /src/unbound/testcode/unitauth.c:919,1
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:921,1
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:926,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:928,1
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:932,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:935,1
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:939,1
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:941,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:943,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitauth.c:946,1
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:947,1
    - Dst: line_diff
      Src: /src/unbound/testcode/unitauth.c:948,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:950,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitauth.c:950,1
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:951,1
    - Dst: free
      Src: /src/unbound/testcode/unitauth.c:952,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 39
    argCount: 7
    argNames:
    - q
    - az
    - qinfo
    - region
    - expected_fallback
    - dp_nm
    - dp_nmlen
    argTypes:
    - struct q_ans*
    - struct auth_zones*
    - struct query_info*
    - struct regional*
    - int
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 953
      start: 903
    functionDepth: 13
    functionLinenumber: 903
    functionLinenumberEnd: 953
    functionName: q_ans_query
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 0
    functionsReached:
    - strcmp
    - line_diff
    - msgtostr
    - printf
    - auth_zones_lookup
    - free
    - unit_assert
    linkageType: ''
    returnType: void
    signature: "void q_ans_query(struct q_ans* q, struct auth_zones* az, struct query_info*
      qinfo,\n\tstruct regional* region, int expected_fallback, uint8_t* dp_nm,\n\tsize_t
      dp_nmlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_create
      Src: /src/unbound/testcode/unitauth.c:960,1
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:966,1
    - Dst: q_ans_parse
      Src: /src/unbound/testcode/unitauth.c:968,1
    - Dst: q_ans_query
      Src: /src/unbound/testcode/unitauth.c:969,1
    - Dst: regional_free_all
      Src: /src/unbound/testcode/unitauth.c:970,1
    - Dst: regional_destroy
      Src: /src/unbound/testcode/unitauth.c:972,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - az
    - queries
    argTypes:
    - struct auth_zones*
    - struct q_ans*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 956
    functionDepth: 14
    functionLinenumber: 956
    functionLinenumberEnd: 973
    functionName: check_az_q_ans
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 0
    functionsReached:
    - q_ans_query
    - regional_create
    - q_ans_parse
    - printf
    - regional_free_all
    - regional_destroy
    linkageType: ''
    returnType: void
    signature: void check_az_q_ans(struct auth_zones* az, struct q_ans* queries)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:982,1
    - Dst: create_tmp_file
      Src: /src/unbound/testcode/unitauth.c:983,1
    - Dst: auth_zones_create
      Src: /src/unbound/testcode/unitauth.c:984,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:985,1
    - Dst: authtest_addzone
      Src: /src/unbound/testcode/unitauth.c:986,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:987,1
    - Dst: del_tmp_file
      Src: /src/unbound/testcode/unitauth.c:988,1
    - Dst: check_az_q_ans
      Src: /src/unbound/testcode/unitauth.c:991,1
    - Dst: auth_zones_delete
      Src: /src/unbound/testcode/unitauth.c:993,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - name
    - zone
    - queries
    argTypes:
    - char*
    - char*
    - struct q_ans*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 994
      start: 976
    functionDepth: 15
    functionLinenumber: 976
    functionLinenumberEnd: 994
    functionName: check_queries
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 0
    functionsReached:
    - check_az_q_ans
    - create_tmp_file
    - printf
    - authtest_addzone
    - fatal_exit
    - del_tmp_file
    - auth_zones_create
    - auth_zones_delete
    linkageType: ''
    returnType: void
    signature: void check_queries(const char* name, const char* zone, struct q_ans*
      queries)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:1000,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:1001,1
    - Dst: compare_serial
      Src: /src/unbound/testcode/unitauth.c:1001,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:1002,1
    - Dst: compare_serial
      Src: /src/unbound/testcode/unitauth.c:1002,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:1003,1
    - Dst: compare_serial
      Src: /src/unbound/testcode/unitauth.c:1003,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:1004,1
    - Dst: compare_serial
      Src: /src/unbound/testcode/unitauth.c:1004,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:1005,1
    - Dst: compare_serial
      Src: /src/unbound/testcode/unitauth.c:1005,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:1006,1
    - Dst: compare_serial
      Src: /src/unbound/testcode/unitauth.c:1006,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:1007,1
    - Dst: compare_serial
      Src: /src/unbound/testcode/unitauth.c:1007,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:1008,1
    - Dst: compare_serial
      Src: /src/unbound/testcode/unitauth.c:1008,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:1009,1
    - Dst: compare_serial
      Src: /src/unbound/testcode/unitauth.c:1009,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:1010,1
    - Dst: compare_serial
      Src: /src/unbound/testcode/unitauth.c:1010,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:1011,1
    - Dst: compare_serial
      Src: /src/unbound/testcode/unitauth.c:1011,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 997
    functionDepth: 1
    functionLinenumber: 997
    functionLinenumberEnd: 1012
    functionName: authzone_compare_serial
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 0
    functionsReached:
    - compare_serial
    - printf
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void authzone_compare_serial(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:1018,1
    - Dst: check_read_exact
      Src: /src/unbound/testcode/unitauth.c:1019,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1020
      start: 1015
    functionDepth: 12
    functionLinenumber: 1015
    functionLinenumberEnd: 1020
    functionName: authzone_read_test
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 0
    functionsReached:
    - check_read_exact
    - printf
    linkageType: ''
    returnType: void
    signature: void authzone_read_test(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:1026,1
    - Dst: check_queries
      Src: /src/unbound/testcode/unitauth.c:1027,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1028
      start: 1023
    functionDepth: 16
    functionLinenumber: 1023
    functionLinenumberEnd: 1028
    functionName: authzone_query_test
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 0
    functionsReached:
    - check_queries
    - printf
    linkageType: ''
    returnType: void
    signature: void authzone_query_test(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/unitauth.c:1035,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/unitauth.c:1036,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitauth.c:1037,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:1040,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:1041,1
    - Dst: chunkline_count_parens
      Src: /src/unbound/testcode/unitauth.c:1041,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitauth.c:1043,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:1044,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:1045,1
    - Dst: chunkline_count_parens
      Src: /src/unbound/testcode/unitauth.c:1045,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitauth.c:1047,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:1048,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:1049,1
    - Dst: chunkline_count_parens
      Src: /src/unbound/testcode/unitauth.c:1049,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitauth.c:1051,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:1052,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:1053,1
    - Dst: chunkline_count_parens
      Src: /src/unbound/testcode/unitauth.c:1053,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/unitauth.c:1055,1
    - Dst: sldns_buffer_printf
      Src: /src/unbound/testcode/unitauth.c:1056,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitauth.c:1057,1
    - Dst: chunkline_count_parens
      Src: /src/unbound/testcode/unitauth.c:1057,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/unitauth.c:1059,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 21
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1031
    functionDepth: 5
    functionLinenumber: 1031
    functionLinenumberEnd: 1060
    functionName: authzone_chunkline_count_parens_test
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_new
    - printf
    - fatal_exit
    - sldns_buffer_clear
    - sldns_buffer_printf
    - sldns_buffer_free
    - chunkline_count_parens
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void authzone_chunkline_count_parens_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitauth.c:1066,1
    - Dst: atexit
      Src: /src/unbound/testcode/unitauth.c:1067,1
    - Dst: authzone_compare_serial
      Src: /src/unbound/testcode/unitauth.c:1068,1
    - Dst: authzone_read_test
      Src: /src/unbound/testcode/unitauth.c:1069,1
    - Dst: authzone_query_test
      Src: /src/unbound/testcode/unitauth.c:1070,1
    - Dst: authzone_chunkline_count_parens_test
      Src: /src/unbound/testcode/unitauth.c:1071,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1063
    functionDepth: 17
    functionLinenumber: 1063
    functionLinenumberEnd: 1072
    functionName: authzone_test
    functionSourceFile: /src/unbound/testcode/unitauth.c
    functionUses: 1
    functionsReached:
    - authzone_query_test
    - authzone_compare_serial
    - unit_show_feature
    - authzone_chunkline_count_parens_test
    - atexit
    - authzone_read_test
    linkageType: ''
    returnType: void
    signature: void authzone_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: xstr
    functionSourceFile: /src/unbound/testcode/unitzonemd.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: xstr(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 53
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 53
    functionName: str
    functionSourceFile: /src/unbound/testcode/unitzonemd.c
    functionUses: 146
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: str(s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zonemd_hashalgo_supported
      Src: /src/unbound/testcode/unitzonemd.c:79,1
    - Dst: auth_zones_create
      Src: /src/unbound/testcode/unitzonemd.c:83,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:84,1
    - Dst: regional_create
      Src: /src/unbound/testcode/unitzonemd.c:85,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:86,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/unitzonemd.c:87,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:88,1
    - Dst: authtest_addzone
      Src: /src/unbound/testcode/unitzonemd.c:91,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:92,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/testcode/unitzonemd.c:93,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitzonemd.c:95,1
    - Dst: auth_zone_generate_zonemd_hash
      Src: /src/unbound/testcode/unitzonemd.c:98,1
    - Dst: printf
      Src: /src/unbound/testcode/unitzonemd.c:101,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:102,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:105,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitzonemd.c:112,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:113,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitzonemd.c:114,1
    - Dst: toupper
      Src: /src/unbound/testcode/unitzonemd.c:115,1
    - Dst: dname_str
      Src: /src/unbound/testcode/unitzonemd.c:119,1
    - Dst: printf
      Src: /src/unbound/testcode/unitzonemd.c:120,1
    - Dst: printf
      Src: /src/unbound/testcode/unitzonemd.c:123,1
    - Dst: printf
      Src: /src/unbound/testcode/unitzonemd.c:124,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:126,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitzonemd.c:126,1
    - Dst: free
      Src: /src/unbound/testcode/unitzonemd.c:129,1
    - Dst: auth_zones_delete
      Src: /src/unbound/testcode/unitzonemd.c:130,1
    - Dst: regional_destroy
      Src: /src/unbound/testcode/unitzonemd.c:131,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/unitzonemd.c:132,1
    - Dst: printf
      Src: /src/unbound/testcode/unitzonemd.c:135,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 43
    argCount: 5
    argNames:
    - zname
    - zfile
    - scheme
    - hashalgo
    - digest
    argTypes:
    - char*
    - char*
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 64
    functionDepth: 11
    functionLinenumber: 64
    functionLinenumberEnd: 137
    functionName: zonemd_generate_test
    functionSourceFile: /src/unbound/testcode/unitzonemd.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_new
    - strcmp
    - regional_create
    - lock_rw_wrlock
    - zonemd_hashalgo_supported
    - auth_zones_create
    - sldns_buffer_free
    - toupper
    - printf
    - strlen
    - regional_destroy
    - lock_rw_unlock
    - free
    - strdup
    - auth_zone_generate_zonemd_hash
    - unit_assert
    - authtest_addzone
    - dname_str
    - auth_zones_delete
    linkageType: ''
    returnType: void
    signature: "void zonemd_generate_test(const char* zname, char* zfile,\n\tint scheme,
      int hashalgo, const char* digest)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitzonemd.c:142,1
    - Dst: zonemd_generate_test
      Src: /src/unbound/testcode/unitzonemd.c:143,1
    - Dst: zonemd_generate_test
      Src: /src/unbound/testcode/unitzonemd.c:148,1
    - Dst: zonemd_generate_test
      Src: /src/unbound/testcode/unitzonemd.c:153,1
    - Dst: zonemd_generate_test
      Src: /src/unbound/testcode/unitzonemd.c:158,1
    - Dst: zonemd_generate_test
      Src: /src/unbound/testcode/unitzonemd.c:163,1
    - Dst: zonemd_generate_test
      Src: /src/unbound/testcode/unitzonemd.c:168,1
    - Dst: zonemd_generate_test
      Src: /src/unbound/testcode/unitzonemd.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 140
    functionDepth: 12
    functionLinenumber: 140
    functionLinenumberEnd: 176
    functionName: zonemd_generate_tests
    functionSourceFile: /src/unbound/testcode/unitzonemd.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - zonemd_generate_test
    linkageType: ''
    returnType: void
    signature: void zonemd_generate_tests(void)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: zonemd_hashalgo_supported
      Src: /src/unbound/testcode/unitzonemd.c:196,1
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitzonemd.c:198,1
    - Dst: auth_zones_create
      Src: /src/unbound/testcode/unitzonemd.c:201,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:202,1
    - Dst: regional_create
      Src: /src/unbound/testcode/unitzonemd.c:203,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:204,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/unitzonemd.c:205,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:206,1
    - Dst: authtest_addzone
      Src: /src/unbound/testcode/unitzonemd.c:209,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:210,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/testcode/unitzonemd.c:211,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitzonemd.c:213,1
    - Dst: sldns_str2wire_hex_buf
      Src: /src/unbound/testcode/unitzonemd.c:215,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:216,1
    - Dst: sldns_str2wire_hex_buf
      Src: /src/unbound/testcode/unitzonemd.c:219,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:220,1
    - Dst: auth_zone_generate_zonemd_check
      Src: /src/unbound/testcode/unitzonemd.c:224,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:226,1
    - Dst: auth_zone_generate_zonemd_check
      Src: /src/unbound/testcode/unitzonemd.c:227,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:229,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitzonemd.c:229,1
    - Dst: auth_zone_generate_zonemd_check
      Src: /src/unbound/testcode/unitzonemd.c:230,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:232,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitzonemd.c:232,1
    - Dst: auth_zone_generate_zonemd_check
      Src: /src/unbound/testcode/unitzonemd.c:233,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:235,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitzonemd.c:235,1
    - Dst: auth_zone_generate_zonemd_check
      Src: /src/unbound/testcode/unitzonemd.c:236,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:238,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitzonemd.c:238,1
    - Dst: auth_zone_generate_zonemd_check
      Src: /src/unbound/testcode/unitzonemd.c:239,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:241,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitzonemd.c:241,1
    - Dst: auth_zones_delete
      Src: /src/unbound/testcode/unitzonemd.c:244,1
    - Dst: regional_destroy
      Src: /src/unbound/testcode/unitzonemd.c:245,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/unitzonemd.c:246,1
    - Dst: printf
      Src: /src/unbound/testcode/unitzonemd.c:249,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 179
    functionDepth: 11
    functionLinenumber: 179
    functionLinenumberEnd: 251
    functionName: zonemd_check_test
    functionSourceFile: /src/unbound/testcode/unitzonemd.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_new
    - auth_zone_generate_zonemd_check
    - sldns_str2wire_hex_buf
    - strcmp
    - regional_create
    - lock_rw_wrlock
    - lock_rw_unlock
    - zonemd_hashalgo_supported
    - authtest_addzone
    - printf
    - unit_show_func
    - auth_zones_create
    - sldns_buffer_free
    - regional_destroy
    - auth_zones_delete
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void zonemd_check_test(void)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/unitzonemd.c:264,1
    - Dst: regional_create
      Src: /src/unbound/testcode/unitzonemd.c:265,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitzonemd.c:267,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/unitzonemd.c:268,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitzonemd.c:270,1
    - Dst: config_create
      Src: /src/unbound/testcode/unitzonemd.c:271,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitzonemd.c:273,1
    - Dst: config_auto_slab_values
      Src: /src/unbound/testcode/unitzonemd.c:274,1
    - Dst: cfg_convert_timeval
      Src: /src/unbound/testcode/unitzonemd.c:276,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitzonemd.c:278,1
    - Dst: free
      Src: /src/unbound/testcode/unitzonemd.c:280,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitzonemd.c:281,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitzonemd.c:283,1
    - Dst: cfg_strlist_insert
      Src: /src/unbound/testcode/unitzonemd.c:285,1
    - Dst: strdup
      Src: /src/unbound/testcode/unitzonemd.c:286,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitzonemd.c:287,1
    - Dst: anchors_create
      Src: /src/unbound/testcode/unitzonemd.c:289,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitzonemd.c:291,1
    - Dst: auth_zones_create
      Src: /src/unbound/testcode/unitzonemd.c:292,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitzonemd.c:294,1
    - Dst: modstack_init
      Src: /src/unbound/testcode/unitzonemd.c:295,1
    - Dst: modstack_call_startup
      Src: /src/unbound/testcode/unitzonemd.c:296,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitzonemd.c:297,1
    - Dst: modstack_call_init
      Src: /src/unbound/testcode/unitzonemd.c:298,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitzonemd.c:299,1
    - Dst: mesh_create
      Src: /src/unbound/testcode/unitzonemd.c:300,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitzonemd.c:302,1
    - Dst: authtest_addzone
      Src: /src/unbound/testcode/unitzonemd.c:305,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitzonemd.c:307,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/testcode/unitzonemd.c:310,1
    - Dst: auth_zone_verify_zonemd
      Src: /src/unbound/testcode/unitzonemd.c:312,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitzonemd.c:313,1
    - Dst: printf
      Src: /src/unbound/testcode/unitzonemd.c:315,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitzonemd.c:316,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/unitzonemd.c:320,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:321,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitzonemd.c:321,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitzonemd.c:322,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitzonemd.c:323,1
    - Dst: strcmp
      Src: /src/unbound/testcode/unitzonemd.c:324,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/testcode/unitzonemd.c:325,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:326,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitzonemd.c:327,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/testcode/unitzonemd.c:329,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitzonemd.c:330,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/unitzonemd.c:331,1
    - Dst: free
      Src: /src/unbound/testcode/unitzonemd.c:333,1
    - Dst: mesh_delete
      Src: /src/unbound/testcode/unitzonemd.c:336,1
    - Dst: modstack_call_deinit
      Src: /src/unbound/testcode/unitzonemd.c:337,1
    - Dst: modstack_call_destartup
      Src: /src/unbound/testcode/unitzonemd.c:338,1
    - Dst: modstack_free
      Src: /src/unbound/testcode/unitzonemd.c:339,1
    - Dst: auth_zones_delete
      Src: /src/unbound/testcode/unitzonemd.c:340,1
    - Dst: anchors_delete
      Src: /src/unbound/testcode/unitzonemd.c:341,1
    - Dst: config_delete
      Src: /src/unbound/testcode/unitzonemd.c:342,1
    - Dst: regional_destroy
      Src: /src/unbound/testcode/unitzonemd.c:343,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/unitzonemd.c:344,1
    - Dst: printf
      Src: /src/unbound/testcode/unitzonemd.c:347,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 74
    argCount: 5
    argNames:
    - zname
    - zfile
    - tastr
    - date_override
    - result_wanted
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 254
    functionDepth: 11
    functionLinenumber: 254
    functionLinenumberEnd: 349
    functionName: zonemd_verify_test
    functionSourceFile: /src/unbound/testcode/unitzonemd.c
    functionUses: 0
    functionsReached:
    - mesh_create
    - sldns_buffer_new
    - strcmp
    - modstack_call_destartup
    - regional_create
    - lock_rw_wrlock
    - auth_zone_verify_zonemd
    - config_auto_slab_values
    - auth_zones_create
    - sldns_buffer_free
    - memset
    - modstack_init
    - config_create
    - cfg_strlist_insert
    - printf
    - anchors_create
    - regional_destroy
    - modstack_free
    - lock_rw_unlock
    - cfg_convert_timeval
    - anchors_delete
    - free
    - modstack_call_startup
    - config_delete
    - modstack_call_init
    - lock_rw_rdlock
    - strdup
    - unit_assert
    - mesh_delete
    - fatal_exit
    - authtest_addzone
    - modstack_call_deinit
    - auth_zones_delete
    linkageType: ''
    returnType: void
    signature: "void zonemd_verify_test(char* zname, char* zfile, char* tastr,\n\tchar*
      date_override, char* result_wanted)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_func
      Src: /src/unbound/testcode/unitzonemd.c:354,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:356,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:362,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:368,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:374,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:383,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:391,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:399,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:405,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:412,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:418,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:425,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:431,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:438,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:449,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:461,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:467,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:474,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:485,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:497,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:508,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:517,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:525,1
    - Dst: zonemd_verify_test
      Src: /src/unbound/testcode/unitzonemd.c:532,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 25
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 352
    functionDepth: 12
    functionLinenumber: 352
    functionLinenumberEnd: 537
    functionName: zonemd_verify_tests
    functionSourceFile: /src/unbound/testcode/unitzonemd.c
    functionUses: 0
    functionsReached:
    - unit_show_func
    - zonemd_verify_test
    linkageType: ''
    returnType: void
    signature: void zonemd_verify_tests(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitzonemd.c:542,1
    - Dst: zonemd_generate_tests
      Src: /src/unbound/testcode/unitzonemd.c:543,1
    - Dst: zonemd_check_test
      Src: /src/unbound/testcode/unitzonemd.c:544,1
    - Dst: zonemd_verify_tests
      Src: /src/unbound/testcode/unitzonemd.c:545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 540
    functionDepth: 13
    functionLinenumber: 540
    functionLinenumberEnd: 546
    functionName: zonemd_test
    functionSourceFile: /src/unbound/testcode/unitzonemd.c
    functionUses: 1
    functionsReached:
    - zonemd_verify_tests
    - zonemd_generate_tests
    - zonemd_check_test
    - unit_show_feature
    linkageType: ''
    returnType: void
    signature: void zonemd_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:99,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:100,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:101,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:102,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:103,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:104,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:105,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:106,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:107,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:108,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:109,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 13
    argCount: 1
    argNames:
    - argv
    argTypes:
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 111
    functionName: usage
    functionSourceFile: /src/unbound/testcode/asynclook.c
    functionUses: 14
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(char* argv[])
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:119,1
    - Dst: ub_strerror
      Src: /src/unbound/testcode/asynclook.c:120,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:122,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:124,1
    - Dst: inet_ntop
      Src: /src/unbound/testcode/asynclook.c:125,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:131,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:135,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 1
    argNames:
    - info
    argTypes:
    - struct lookinfo*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 138
      start: 114
    functionDepth: 2
    functionLinenumber: 114
    functionLinenumberEnd: 138
    functionName: print_result
    functionSourceFile: /src/unbound/testcode/asynclook.c
    functionUses: 0
    functionsReached:
    - ub_strerror
    - inet_ntop
    - printf
    linkageType: ''
    returnType: void
    signature: void print_result(struct lookinfo* info)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/unbound/testcode/asynclook.c:146,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - mydata
    - err
    - result
    argTypes:
    - void*
    - int
    - struct ub_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 151
    functionName: lookup_is_done
    functionSourceFile: /src/unbound/testcode/asynclook.c
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void lookup_is_done(void* mydata, int err, struct ub_result* result)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:158,1
    - Dst: ub_strerror
      Src: /src/unbound/testcode/asynclook.c:158,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:159,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - desc
    - err
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 161
      start: 154
    functionDepth: 1
    functionLinenumber: 154
    functionLinenumberEnd: 161
    functionName: checkerr
    functionSourceFile: /src/unbound/testcode/asynclook.c
    functionUses: 0
    functionsReached:
    - ub_strerror
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void checkerr(const char* desc, int err)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: checkerr
      Src: /src/unbound/testcode/asynclook.c:196,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:198,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:199,1
    - Dst: strcmp
      Src: /src/unbound/testcode/asynclook.c:202,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:203,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:204,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:207,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:208,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:211,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:212,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:215,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:216,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:219,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:220,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:223,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:224,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:227,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:228,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:231,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:232,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:235,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:237,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:240,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:241,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:244,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:245,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:248,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:250,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:253,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:255,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:258,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:260,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 64
    argCount: 3
    argNames:
    - desc
    - err
    - result
    argTypes:
    - char*
    - int
    - struct ub_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 193
    functionDepth: 2
    functionLinenumber: 193
    functionLinenumberEnd: 263
    functionName: ext_check_result
    functionSourceFile: /src/unbound/testcode/asynclook.c
    functionUses: 0
    functionsReached:
    - checkerr
    - strcmp
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void ext_check_result(const char* desc, int err, struct ub_result*
      result)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/testcode/asynclook.c:273,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:275,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:277,1
    - Dst: abort
      Src: /src/unbound/testcode/asynclook.c:279,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:280,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/testcode/asynclook.c:282,1
    - Dst: ext_check_result
      Src: /src/unbound/testcode/asynclook.c:284,1
    - Dst: log_assert
      Src: /src/unbound/testcode/asynclook.c:285,1
    - Dst: print_result
      Src: /src/unbound/testcode/asynclook.c:291,1
    - Dst: ub_resolve_free
      Src: /src/unbound/testcode/asynclook.c:293,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - mydata
    - err
    - result
    argTypes:
    - void*
    - int
    - struct ub_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 266
    functionDepth: 3
    functionLinenumber: 266
    functionLinenumberEnd: 294
    functionName: ext_callback
    functionSourceFile: /src/unbound/testcode/asynclook.c
    functionUses: 0
    functionsReached:
    - exit
    - ext_check_result
    - lock_basic_unlock
    - printf
    - print_result
    - log_assert
    - lock_basic_lock
    - ub_resolve_free
    - abort
    linkageType: ''
    returnType: void
    signature: void ext_callback(void* mydata, int err, struct ub_result* result)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: log_thread_set
      Src: /src/unbound/testcode/asynclook.c:304,1
    - Dst: calloc
      Src: /src/unbound/testcode/asynclook.c:306,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:308,1
    - Dst: exit
      Src: /src/unbound/testcode/asynclook.c:309,1
    - Dst: lock_basic_init
      Src: /src/unbound/testcode/asynclook.c:312,1
    - Dst: ub_resolve_async
      Src: /src/unbound/testcode/asynclook.c:318,1
    - Dst: checkerr
      Src: /src/unbound/testcode/asynclook.c:322,1
    - Dst: lock_basic_lock
      Src: /src/unbound/testcode/asynclook.c:324,1
    - Dst: ub_cancel
      Src: /src/unbound/testcode/asynclook.c:325,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/testcode/asynclook.c:328,1
    - Dst: checkerr
      Src: /src/unbound/testcode/asynclook.c:330,1
    - Dst: ub_resolve_async
      Src: /src/unbound/testcode/asynclook.c:334,1
    - Dst: checkerr
      Src: /src/unbound/testcode/asynclook.c:337,1
    - Dst: ub_resolve
      Src: /src/unbound/testcode/asynclook.c:340,1
    - Dst: ext_check_result
      Src: /src/unbound/testcode/asynclook.c:342,1
    - Dst: ub_resolve_free
      Src: /src/unbound/testcode/asynclook.c:343,1
    - Dst: ub_wait
      Src: /src/unbound/testcode/asynclook.c:347,1
    - Dst: checkerr
      Src: /src/unbound/testcode/asynclook.c:348,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 41
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 297
    functionDepth: 15
    functionLinenumber: 297
    functionLinenumberEnd: 355
    functionName: ext_thread
    functionSourceFile: /src/unbound/testcode/asynclook.c
    functionUses: 0
    functionsReached:
    - exit
    - checkerr
    - ub_cancel
    - ext_check_result
    - ub_resolve
    - ub_wait
    - lock_basic_unlock
    - printf
    - lock_basic_init
    - log_thread_set
    - calloc
    - ub_resolve_free
    - lock_basic_lock
    - ub_resolve_async
    linkageType: ''
    returnType: void
    signature: 'void *

      ext_thread(void* arg)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/testcode/asynclook.c:363,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:365,1
    - Dst: ub_thread_create
      Src: /src/unbound/testcode/asynclook.c:374,1
    - Dst: ub_thread_join
      Src: /src/unbound/testcode/asynclook.c:378,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:380,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/testcode/asynclook.c:386,1
    - Dst: free
      Src: /src/unbound/testcode/asynclook.c:388,1
    - Dst: ub_ctx_delete
      Src: /src/unbound/testcode/asynclook.c:391,1
    - Dst: checklock_stop
      Src: /src/unbound/testcode/asynclook.c:392,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 3
    argNames:
    - ctx
    - argc
    - argv
    argTypes:
    - struct ub_ctx*
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 358
    functionDepth: 6
    functionLinenumber: 358
    functionLinenumberEnd: 394
    functionName: ext_test
    functionSourceFile: /src/unbound/testcode/asynclook.c
    functionUses: 0
    functionsReached:
    - strcmp
    - ub_thread_create
    - printf
    - free
    - ub_ctx_delete
    - checklock_stop
    - ub_thread_join
    - lock_basic_destroy
    linkageType: ''
    returnType: int
    signature: int ext_test(struct ub_ctx* ctx, int argc, char** argv)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: checklock_start
      Src: /src/unbound/testcode/asynclook.c:409,1
    - Dst: log_init
      Src: /src/unbound/testcode/asynclook.c:411,1
    - Dst: ub_ctx_create
      Src: /src/unbound/testcode/asynclook.c:415,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:417,1
    - Dst: strerror
      Src: /src/unbound/testcode/asynclook.c:417,1
    - Dst: usage
      Src: /src/unbound/testcode/asynclook.c:423,1
    - Dst: getopt
      Src: /src/unbound/testcode/asynclook.c:425,1
    - Dst: ub_ctx_debuglevel
      Src: /src/unbound/testcode/asynclook.c:428,1
    - Dst: checkerr
      Src: /src/unbound/testcode/asynclook.c:429,1
    - Dst: ub_ctx_async
      Src: /src/unbound/testcode/asynclook.c:432,1
    - Dst: checkerr
      Src: /src/unbound/testcode/asynclook.c:433,1
    - Dst: ub_ctx_resolvconf
      Src: /src/unbound/testcode/asynclook.c:442,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:444,1
    - Dst: ub_strerror
      Src: /src/unbound/testcode/asynclook.c:446,1
    - Dst: strerror
      Src: /src/unbound/testcode/asynclook.c:447,1
    - Dst: ub_ctx_hosts
      Src: /src/unbound/testcode/asynclook.c:452,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:454,1
    - Dst: ub_strerror
      Src: /src/unbound/testcode/asynclook.c:456,1
    - Dst: strerror
      Src: /src/unbound/testcode/asynclook.c:457,1
    - Dst: ub_ctx_set_fwd
      Src: /src/unbound/testcode/asynclook.c:462,1
    - Dst: checkerr
      Src: /src/unbound/testcode/asynclook.c:463,1
    - Dst: usage
      Src: /src/unbound/testcode/asynclook.c:471,1
    - Dst: ERR_load_crypto_strings
      Src: /src/unbound/testcode/asynclook.c:479,1
    - Dst: ERR_load_SSL_strings
      Src: /src/unbound/testcode/asynclook.c:482,1
    - Dst: OpenSSL_add_all_algorithms
      Src: /src/unbound/testcode/asynclook.c:486,1
    - Dst: OPENSSL_init_crypto
      Src: /src/unbound/testcode/asynclook.c:489,1
    - Dst: defined
      Src: /src/unbound/testcode/asynclook.c:492,1
    - Dst: SSL_library_init
      Src: /src/unbound/testcode/asynclook.c:498,1
    - Dst: OPENSSL_init_ssl
      Src: /src/unbound/testcode/asynclook.c:500,1
    - Dst: defined
      Src: /src/unbound/testcode/asynclook.c:501,1
    - Dst: ext_test
      Src: /src/unbound/testcode/asynclook.c:509,1
    - Dst: calloc
      Src: /src/unbound/testcode/asynclook.c:512,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:515,1
    - Dst: fprintf
      Src: /src/unbound/testcode/asynclook.c:524,1
    - Dst: ub_resolve
      Src: /src/unbound/testcode/asynclook.c:525,1
    - Dst: checkerr
      Src: /src/unbound/testcode/asynclook.c:527,1
    - Dst: fprintf
      Src: /src/unbound/testcode/asynclook.c:529,1
    - Dst: ub_resolve_async
      Src: /src/unbound/testcode/asynclook.c:530,1
    - Dst: checkerr
      Src: /src/unbound/testcode/asynclook.c:533,1
    - Dst: fprintf
      Src: /src/unbound/testcode/asynclook.c:540,1
    - Dst: ub_cancel
      Src: /src/unbound/testcode/asynclook.c:541,1
    - Dst: checkerr
      Src: /src/unbound/testcode/asynclook.c:543,1
    - Dst: usleep
      Src: /src/unbound/testcode/asynclook.c:551,1
    - Dst: fprintf
      Src: /src/unbound/testcode/asynclook.c:552,1
    - Dst: ub_process
      Src: /src/unbound/testcode/asynclook.c:553,1
    - Dst: checkerr
      Src: /src/unbound/testcode/asynclook.c:554,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:559,1
    - Dst: printf
      Src: /src/unbound/testcode/asynclook.c:562,1
    - Dst: print_result
      Src: /src/unbound/testcode/asynclook.c:566,1
    - Dst: ub_resolve_free
      Src: /src/unbound/testcode/asynclook.c:567,1
    - Dst: ub_ctx_delete
      Src: /src/unbound/testcode/asynclook.c:570,1
    - Dst: free
      Src: /src/unbound/testcode/asynclook.c:571,1
    - Dst: checklock_stop
      Src: /src/unbound/testcode/asynclook.c:572,1
    CyclomaticComplexity: 33
    EdgeCount: 33
    ICount: 115
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 402
    functionDepth: 15
    functionLinenumber: 402
    functionLinenumberEnd: 574
    functionName: main
    functionSourceFile: /src/unbound/testcode/asynclook.c
    functionUses: 33
    functionsReached:
    - checkerr
    - getopt
    - log_init
    - ext_test
    - ub_cancel
    - ub_ctx_create
    - ERR_load_SSL_strings
    - SSL_library_init
    - printf
    - ub_ctx_delete
    - calloc
    - ub_resolve_free
    - ub_process
    - ub_ctx_async
    - defined
    - OPENSSL_init_ssl
    - free
    - checklock_stop
    - ub_ctx_debuglevel
    - strerror
    - fprintf
    - ub_resolve_async
    - ub_ctx_resolvconf
    - ub_ctx_set_fwd
    - OpenSSL_add_all_algorithms
    - ub_resolve
    - ub_strerror
    - ub_ctx_hosts
    - usleep
    - print_result
    - OPENSSL_init_crypto
    - ERR_load_crypto_strings
    - checklock_start
    - usage
    linkageType: ''
    returnType: int
    signature: int main(int argc, char** argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/signit.c:68,1
    - Dst: printf
      Src: /src/unbound/testcode/signit.c:69,1
    - Dst: printf
      Src: /src/unbound/testcode/signit.c:70,1
    - Dst: printf
      Src: /src/unbound/testcode/signit.c:71,1
    - Dst: printf
      Src: /src/unbound/testcode/signit.c:72,1
    - Dst: printf
      Src: /src/unbound/testcode/signit.c:73,1
    - Dst: exit
      Src: /src/unbound/testcode/signit.c:74,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 75
    functionName: usage
    functionSourceFile: /src/unbound/testcode/signit.c
    functionUses: 15
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/signit.c:82,1
    - Dst: strlen
      Src: /src/unbound/testcode/signit.c:83,1
    - Dst: sscanf
      Src: /src/unbound/testcode/signit.c:85,1
    - Dst: ldns_mktime_from_utc
      Src: /src/unbound/testcode/signit.c:98,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 22
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 100
    functionName: convert_timeval
    functionSourceFile: /src/unbound/testcode/signit.c
    functionUses: 2
    functionsReached:
    - memset
    - sscanf
    - ldns_mktime_from_utc
    - strlen
    linkageType: ''
    returnType: time_t
    signature: time_t convert_timeval(const char* str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/testcode/signit.c:105,1
    - Dst: printf
      Src: /src/unbound/testcode/signit.c:106,1
    - Dst: vprintf
      Src: /src/unbound/testcode/signit.c:107,1
    - Dst: va_end
      Src: /src/unbound/testcode/signit.c:108,1
    - Dst: exit
      Src: /src/unbound/testcode/signit.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 110
    functionName: fatal_exit
    functionSourceFile: /src/unbound/testcode/signit.c
    functionUses: 122
    functionsReached:
    - exit
    - va_start
    - va_end
    - printf
    - vprintf
    linkageType: ''
    returnType: void
    signature: void fatal_exit(const char* format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: convert_timeval
      Src: /src/unbound/testcode/signit.c:116,1
    - Dst: convert_timeval
      Src: /src/unbound/testcode/signit.c:117,1
    - Dst: atoi
      Src: /src/unbound/testcode/signit.c:118,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - argv
    - s
    argTypes:
    - char*[]
    - struct keysets*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 121
    functionName: parse_cmdline
    functionSourceFile: /src/unbound/testcode/signit.c
    functionUses: 0
    functionsReached:
    - convert_timeval
    - atoi
    linkageType: ''
    returnType: void
    signature: void parse_cmdline(char *argv[], struct keysets* s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ldns_key_list_new
      Src: /src/unbound/testcode/signit.c:128,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/signit.c:135,1
    - Dst: printf
      Src: /src/unbound/testcode/signit.c:137,1
    - Dst: fopen
      Src: /src/unbound/testcode/signit.c:138,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/signit.c:139,1
    - Dst: strerror
      Src: /src/unbound/testcode/signit.c:140,1
    - Dst: ldns_key_new_frm_fp
      Src: /src/unbound/testcode/signit.c:141,1
    - Dst: fclose
      Src: /src/unbound/testcode/signit.c:142,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/signit.c:144,1
    - Dst: ldns_get_errorstr_by_id
      Src: /src/unbound/testcode/signit.c:145,1
    - Dst: ldns_key_set_expiration
      Src: /src/unbound/testcode/signit.c:146,1
    - Dst: ldns_key_set_inception
      Src: /src/unbound/testcode/signit.c:147,1
    - Dst: ldns_str2rdf_dname
      Src: /src/unbound/testcode/signit.c:148,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/signit.c:150,1
    - Dst: ldns_get_errorstr_by_id
      Src: /src/unbound/testcode/signit.c:151,1
    - Dst: ldns_key_set_pubkey_owner
      Src: /src/unbound/testcode/signit.c:152,1
    - Dst: ldns_key_set_flags
      Src: /src/unbound/testcode/signit.c:153,1
    - Dst: ldns_key_set_keytag
      Src: /src/unbound/testcode/signit.c:154,1
    - Dst: ldns_key_list_push_key
      Src: /src/unbound/testcode/signit.c:155,1
    - Dst: assert
      Src: /src/unbound/testcode/signit.c:156,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - num
    - names
    - set
    argTypes:
    - int
    - char*[]
    - struct keysets*
    assertStmts:
    - condition: (b)
      pos:
        line_end: 155
        line_start: 155
        source_file: /src/unbound/testcode/signit.c
    constantsTouched: []
    func_position:
      end: 159
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 159
    functionName: read_keys
    functionSourceFile: /src/unbound/testcode/signit.c
    functionUses: 0
    functionsReached:
    - ldns_key_list_new
    - ldns_key_new_frm_fp
    - ldns_str2rdf_dname
    - fclose
    - assert
    - printf
    - fatal_exit
    - ldns_key_set_flags
    - ldns_key_set_expiration
    - fopen
    - strerror
    - ldns_key_set_pubkey_owner
    - ldns_key_set_inception
    - ldns_get_errorstr_by_id
    - ldns_key_set_keytag
    - ldns_key_list_push_key
    linkageType: ''
    returnType: ldns_key_list
    signature: 'ldns_key_list *

      read_keys(int num, char* names[], struct keysets* set)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ldns_rr_list_new
      Src: /src/unbound/testcode/signit.c:175,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/signit.c:176,1
    - Dst: feof
      Src: /src/unbound/testcode/signit.c:178,1
    - Dst: ldns_rr_new_frm_fp_l
      Src: /src/unbound/testcode/signit.c:179,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/signit.c:186,1
    - Dst: ldns_get_errorstr_by_id
      Src: /src/unbound/testcode/signit.c:187,1
    - Dst: ldns_rr_list_push_rr
      Src: /src/unbound/testcode/signit.c:188,1
    - Dst: assert
      Src: /src/unbound/testcode/signit.c:189,1
    - Dst: printf
      Src: /src/unbound/testcode/signit.c:191,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 1
    argNames:
    - in
    argTypes:
    - FILE*
    assertStmts:
    - condition: (b)
      pos:
        line_end: 188
        line_start: 188
        source_file: /src/unbound/testcode/signit.c
    constantsTouched: []
    func_position:
      end: 194
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 194
    functionName: read_rrs
    functionSourceFile: /src/unbound/testcode/signit.c
    functionUses: 0
    functionsReached:
    - ldns_rr_list_push_rr
    - assert
    - ldns_rr_new_frm_fp_l
    - feof
    - fatal_exit
    - printf
    - ldns_get_errorstr_by_id
    - ldns_rr_list_new
    linkageType: ''
    returnType: ldns_rr_list
    signature: 'ldns_rr_list *

      read_rrs(FILE* in)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ldns_rr_list_rr_count
      Src: /src/unbound/testcode/signit.c:203,1
    - Dst: ldns_rr_list_pop_rrset
      Src: /src/unbound/testcode/signit.c:204,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/signit.c:205,1
    - Dst: ldns_sign_public
      Src: /src/unbound/testcode/signit.c:206,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/signit.c:207,1
    - Dst: ldns_rr_list_print
      Src: /src/unbound/testcode/signit.c:208,1
    - Dst: ldns_rr_list_print
      Src: /src/unbound/testcode/signit.c:209,1
    - Dst: printf
      Src: /src/unbound/testcode/signit.c:210,1
    - Dst: ldns_rr_list_free
      Src: /src/unbound/testcode/signit.c:211,1
    - Dst: ldns_rr_list_free
      Src: /src/unbound/testcode/signit.c:212,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - rrs
    - keys
    argTypes:
    - ldns_rr_list*
    - ldns_key_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 214
    functionName: signit
    functionSourceFile: /src/unbound/testcode/signit.c
    functionUses: 0
    functionsReached:
    - ldns_rr_list_pop_rrset
    - ldns_rr_list_free
    - ldns_sign_public
    - ldns_rr_list_rr_count
    - fatal_exit
    - ldns_rr_list_print
    - printf
    linkageType: ''
    returnType: void
    signature: void signit(ldns_rr_list* rrs, ldns_key_list* keys)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/testcode/signit.c:223,1
    - Dst: parse_cmdline
      Src: /src/unbound/testcode/signit.c:225,1
    - Dst: read_keys
      Src: /src/unbound/testcode/signit.c:226,1
    - Dst: read_rrs
      Src: /src/unbound/testcode/signit.c:227,1
    - Dst: signit
      Src: /src/unbound/testcode/signit.c:228,1
    - Dst: ldns_rr_list_deep_free
      Src: /src/unbound/testcode/signit.c:230,1
    - Dst: ldns_key_list_free
      Src: /src/unbound/testcode/signit.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts:
    - condition: (argc == 6)
      pos:
        line_end: 222
        line_start: 222
        source_file: /src/unbound/testcode/signit.c
    constantsTouched: []
    func_position:
      end: 232
      start: 217
    functionDepth: 2
    functionLinenumber: 217
    functionLinenumberEnd: 232
    functionName: process_keys
    functionSourceFile: /src/unbound/testcode/signit.c
    functionUses: 0
    functionsReached:
    - signit
    - assert
    - read_rrs
    - read_keys
    - ldns_key_list_free
    - parse_cmdline
    - ldns_rr_list_deep_free
    linkageType: ''
    returnType: void
    signature: void process_keys(int argc, char* argv[])
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ldns_str2rdf_nsec3_salt
      Src: /src/unbound/testcode/signit.c:242,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/signit.c:244,1
    - Dst: ldns_get_errorstr_by_id
      Src: /src/unbound/testcode/signit.c:245,1
    - Dst: assert
      Src: /src/unbound/testcode/signit.c:246,1
    - Dst: fgets
      Src: /src/unbound/testcode/signit.c:247,1
    - Dst: strlen
      Src: /src/unbound/testcode/signit.c:248,1
    - Dst: strlen
      Src: /src/unbound/testcode/signit.c:249,1
    - Dst: ldns_str2rdf_dname
      Src: /src/unbound/testcode/signit.c:252,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/signit.c:254,1
    - Dst: ldns_get_errorstr_by_id
      Src: /src/unbound/testcode/signit.c:255,1
    - Dst: ldns_rdf_print
      Src: /src/unbound/testcode/signit.c:256,1
    - Dst: printf
      Src: /src/unbound/testcode/signit.c:257,1
    - Dst: ldns_nsec3_hash_name
      Src: /src/unbound/testcode/signit.c:259,1
    - Dst: atoi
      Src: /src/unbound/testcode/signit.c:259,1
    - Dst: atoi
      Src: /src/unbound/testcode/signit.c:260,1
    - Dst: ldns_rdf_data
      Src: /src/unbound/testcode/signit.c:261,1
    - Dst: ldns_rdf_data
      Src: /src/unbound/testcode/signit.c:261,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/signit.c:263,1
    - Dst: ldns_rdf_print
      Src: /src/unbound/testcode/signit.c:264,1
    - Dst: printf
      Src: /src/unbound/testcode/signit.c:265,1
    - Dst: ldns_rdf_deep_free
      Src: /src/unbound/testcode/signit.c:266,1
    - Dst: ldns_rdf_deep_free
      Src: /src/unbound/testcode/signit.c:267,1
    - Dst: ldns_rdf_deep_free
      Src: /src/unbound/testcode/signit.c:269,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts:
    - condition: (argc == 6)
      pos:
        line_end: 245
        line_start: 245
        source_file: /src/unbound/testcode/signit.c
    constantsTouched: []
    func_position:
      end: 270
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 270
    functionName: process_nsec3
    functionSourceFile: /src/unbound/testcode/signit.c
    functionUses: 0
    functionsReached:
    - ldns_str2rdf_nsec3_salt
    - ldns_nsec3_hash_name
    - ldns_str2rdf_dname
    - assert
    - ldns_rdf_print
    - printf
    - fatal_exit
    - ldns_rdf_deep_free
    - atoi
    - strlen
    - ldns_get_errorstr_by_id
    - fgets
    - ldns_rdf_data
    linkageType: ''
    returnType: void
    signature: void process_nsec3(int argc, char* argv[])
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: usage
      Src: /src/unbound/testcode/signit.c:276,1
    - Dst: strcmp
      Src: /src/unbound/testcode/signit.c:278,1
    - Dst: process_nsec3
      Src: /src/unbound/testcode/signit.c:279,1
    - Dst: process_keys
      Src: /src/unbound/testcode/signit.c:282,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 273
    functionDepth: 3
    functionLinenumber: 273
    functionLinenumberEnd: 284
    functionName: main
    functionSourceFile: /src/unbound/testcode/signit.c
    functionUses: 33
    functionsReached:
    - usage
    - strcmp
    - process_keys
    - process_nsec3
    linkageType: ''
    returnType: int
    signature: int main(int argc, char* argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/unbound/testcode/readzone.c:53,1
    - Dst: fprintf
      Src: /src/unbound/testcode/readzone.c:54,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - out
    - progname
    argTypes:
    - FILE*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 56
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 56
    functionName: print_usage
    functionSourceFile: /src/unbound/testcode/readzone.c
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: int
    signature: int print_usage(FILE *out, const char *progname)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/testcode/readzone.c:62,1
    - Dst: getopt
      Src: /src/unbound/testcode/readzone.c:70,1
    - Dst: free
      Src: /src/unbound/testcode/readzone.c:73,1
    - Dst: print_usage
      Src: /src/unbound/testcode/readzone.c:74,1
    - Dst: free
      Src: /src/unbound/testcode/readzone.c:79,1
    - Dst: print_usage
      Src: /src/unbound/testcode/readzone.c:80,1
    - Dst: memset
      Src: /src/unbound/testcode/readzone.c:86,1
    - Dst: sldns_str2wire_dname_buf
      Src: /src/unbound/testcode/readzone.c:91,1
    - Dst: fprintf
      Src: /src/unbound/testcode/readzone.c:94,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/testcode/readzone.c:95,1
    - Dst: free
      Src: /src/unbound/testcode/readzone.c:96,1
    - Dst: fprintf
      Src: /src/unbound/testcode/readzone.c:102,1
    - Dst: strerror
      Src: /src/unbound/testcode/readzone.c:103,1
    - Dst: free
      Src: /src/unbound/testcode/readzone.c:106,1
    - Dst: print_usage
      Src: /src/unbound/testcode/readzone.c:107,1
    - Dst: fopen
      Src: /src/unbound/testcode/readzone.c:110,1
    - Dst: fprintf
      Src: /src/unbound/testcode/readzone.c:111,1
    - Dst: strerror
      Src: /src/unbound/testcode/readzone.c:112,1
    - Dst: feof
      Src: /src/unbound/testcode/readzone.c:113,1
    - Dst: sldns_fp2wire_rr_buf
      Src: /src/unbound/testcode/readzone.c:117,1
    - Dst: fprintf
      Src: /src/unbound/testcode/readzone.c:119,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/testcode/readzone.c:120,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/testcode/readzone.c:121,1
    - Dst: sldns_wire2str_rr_unknown_buf
      Src: /src/unbound/testcode/readzone.c:128,1
    - Dst: sldns_wire2str_rr_buf
      Src: /src/unbound/testcode/readzone.c:131,1
    - Dst: free
      Src: /src/unbound/testcode/readzone.c:137,1
    - Dst: malloc
      Src: /src/unbound/testcode/readzone.c:138,1
    - Dst: fprintf
      Src: /src/unbound/testcode/readzone.c:139,1
    - Dst: strerror
      Src: /src/unbound/testcode/readzone.c:140,1
    - Dst: sldns_wire2str_rr_unknown_buf
      Src: /src/unbound/testcode/readzone.c:145,1
    - Dst: sldns_wire2str_rr_buf
      Src: /src/unbound/testcode/readzone.c:148,1
    - Dst: fprintf
      Src: /src/unbound/testcode/readzone.c:151,1
    - Dst: fclose
      Src: /src/unbound/testcode/readzone.c:154,1
    - Dst: free
      Src: /src/unbound/testcode/readzone.c:155,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 67
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 58
    functionDepth: 8
    functionLinenumber: 58
    functionLinenumberEnd: 157
    functionName: main
    functionSourceFile: /src/unbound/testcode/readzone.c
    functionUses: 33
    functionsReached:
    - getopt
    - sldns_fp2wire_rr_buf
    - fclose
    - feof
    - sldns_wire2str_rr_buf
    - LDNS_WIREPARSE_OFFSET
    - malloc
    - print_usage
    - free
    - sldns_get_errorstr_parse
    - fopen
    - sldns_str2wire_dname_buf
    - strerror
    - sldns_wire2str_rr_unknown_buf
    - memset
    - fprintf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char *const *argv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/lock_verify.c:110,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 111
    functionName: usage
    functionSourceFile: /src/unbound/testcode/lock_verify.c
    functionUses: 17
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: fread
      Src: /src/unbound/testcode/lock_verify.c:127,1
    - Dst: fread
      Src: /src/unbound/testcode/lock_verify.c:128,1
    - Dst: fread
      Src: /src/unbound/testcode/lock_verify.c:129,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/lock_verify.c:130,1
    - Dst: memset
      Src: /src/unbound/testcode/lock_verify.c:136,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/lock_verify.c:138,1
    - Dst: printf
      Src: /src/unbound/testcode/lock_verify.c:142,1
    - Dst: ctime
      Src: /src/unbound/testcode/lock_verify.c:143,1
    - Dst: printf
      Src: /src/unbound/testcode/lock_verify.c:146,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/lock_verify.c:151,1
    - Dst: abs
      Src: /src/unbound/testcode/lock_verify.c:153,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/lock_verify.c:154,1
    - Dst: printf
      Src: /src/unbound/testcode/lock_verify.c:156,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 27
    argCount: 1
    argNames:
    - in
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 159
    functionName: read_header
    functionSourceFile: /src/unbound/testcode/lock_verify.c
    functionUses: 0
    functionsReached:
    - abs
    - ctime
    - printf
    - fatal_exit
    - fread
    - memset
    linkageType: ''
    returnType: int
    signature: int read_header(FILE* in)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fgetc
      Src: /src/unbound/testcode/lock_verify.c:170,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/lock_verify.c:172,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/lock_verify.c:175,1
    - Dst: strdup
      Src: /src/unbound/testcode/lock_verify.c:179,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/lock_verify.c:181,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - str
    - in
    argTypes:
    - char**
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 183
    functionName: readup_str
    functionSourceFile: /src/unbound/testcode/lock_verify.c
    functionUses: 0
    functionsReached:
    - fgetc
    - strdup
    - fatal_exit
    linkageType: ''
    returnType: int
    signature: int readup_str(char** str, FILE* in)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/lock_verify.c:188,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/lock_verify.c:189,1
    - Dst: fread
      Src: /src/unbound/testcode/lock_verify.c:190,1
    - Dst: fread
      Src: /src/unbound/testcode/lock_verify.c:191,1
    - Dst: readup_str
      Src: /src/unbound/testcode/lock_verify.c:192,1
    - Dst: fread
      Src: /src/unbound/testcode/lock_verify.c:193,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/lock_verify.c:194,1
    - Dst: rbtree_create
      Src: /src/unbound/testcode/lock_verify.c:195,1
    - Dst: rbtree_insert
      Src: /src/unbound/testcode/lock_verify.c:197,1
    - Dst: rbtree_search
      Src: /src/unbound/testcode/lock_verify.c:199,1
    - Dst: log_assert
      Src: /src/unbound/testcode/lock_verify.c:201,1
    - Dst: free
      Src: /src/unbound/testcode/lock_verify.c:204,1
    - Dst: free
      Src: /src/unbound/testcode/lock_verify.c:205,1
    - Dst: printf
      Src: /src/unbound/testcode/lock_verify.c:208,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 2
    argNames:
    - all
    - in
    argTypes:
    - rbtree_type*
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 186
    functionDepth: 2
    functionLinenumber: 186
    functionLinenumberEnd: 211
    functionName: read_create
    functionSourceFile: /src/unbound/testcode/lock_verify.c
    functionUses: 10
    functionsReached:
    - printf
    - readup_str
    - fatal_exit
    - free
    - calloc
    - fread
    - log_assert
    - rbtree_create
    - rbtree_insert
    - rbtree_search
    linkageType: ''
    returnType: void
    signature: void read_create(rbtree_type* all, FILE* in)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/lock_verify.c:217,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/lock_verify.c:218,1
    - Dst: rbtree_create
      Src: /src/unbound/testcode/lock_verify.c:219,1
    - Dst: rbtree_insert
      Src: /src/unbound/testcode/lock_verify.c:222,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/lock_verify.c:223,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - all
    - id
    argTypes:
    - rbtree_type*
    - struct order_id*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 225
    functionName: insert_lock
    functionSourceFile: /src/unbound/testcode/lock_verify.c
    functionUses: 0
    functionsReached:
    - rbtree_create
    - rbtree_insert
    - calloc
    - fatal_exit
    linkageType: ''
    returnType: struct order_lock
    signature: "struct order_lock * \ninsert_lock(rbtree_type* all, struct order_id*
      id)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/lock_verify.c:233,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/lock_verify.c:234,1
    - Dst: fread
      Src: /src/unbound/testcode/lock_verify.c:236,1
    - Dst: fread
      Src: /src/unbound/testcode/lock_verify.c:237,1
    - Dst: fread
      Src: /src/unbound/testcode/lock_verify.c:238,1
    - Dst: readup_str
      Src: /src/unbound/testcode/lock_verify.c:239,1
    - Dst: fread
      Src: /src/unbound/testcode/lock_verify.c:240,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/lock_verify.c:241,1
    - Dst: printf
      Src: /src/unbound/testcode/lock_verify.c:242,1
    - Dst: rbtree_search
      Src: /src/unbound/testcode/lock_verify.c:247,1
    - Dst: rbtree_search
      Src: /src/unbound/testcode/lock_verify.c:248,1
    - Dst: insert_lock
      Src: /src/unbound/testcode/lock_verify.c:250,1
    - Dst: insert_lock
      Src: /src/unbound/testcode/lock_verify.c:251,1
    - Dst: rbtree_insert
      Src: /src/unbound/testcode/lock_verify.c:254,1
    - Dst: free
      Src: /src/unbound/testcode/lock_verify.c:255,1
    - Dst: free
      Src: /src/unbound/testcode/lock_verify.c:256,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 21
    argCount: 3
    argNames:
    - all
    - in
    - val
    argTypes:
    - rbtree_type*
    - FILE*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 258
      start: 228
    functionDepth: 2
    functionLinenumber: 228
    functionLinenumberEnd: 258
    functionName: read_lock
    functionSourceFile: /src/unbound/testcode/lock_verify.c
    functionUses: 0
    functionsReached:
    - insert_lock
    - printf
    - readup_str
    - fatal_exit
    - free
    - calloc
    - fread
    - rbtree_insert
    - rbtree_search
    linkageType: ''
    returnType: void
    signature: void read_lock(rbtree_type* all, FILE* in, int val)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/testcode/lock_verify.c:263,1
    - Dst: perror
      Src: /src/unbound/testcode/lock_verify.c:266,1
    - Dst: exit
      Src: /src/unbound/testcode/lock_verify.c:267,1
    - Dst: printf
      Src: /src/unbound/testcode/lock_verify.c:269,1
    - Dst: read_header
      Src: /src/unbound/testcode/lock_verify.c:270,1
    - Dst: fclose
      Src: /src/unbound/testcode/lock_verify.c:271,1
    - Dst: fread
      Src: /src/unbound/testcode/lock_verify.c:274,1
    - Dst: read_create
      Src: /src/unbound/testcode/lock_verify.c:276,1
    - Dst: read_lock
      Src: /src/unbound/testcode/lock_verify.c:277,1
    - Dst: fclose
      Src: /src/unbound/testcode/lock_verify.c:279,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - all
    - file
    argTypes:
    - rbtree_type*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 280
      start: 261
    functionDepth: 3
    functionLinenumber: 261
    functionLinenumberEnd: 280
    functionName: readinput
    functionSourceFile: /src/unbound/testcode/lock_verify.c
    functionUses: 0
    functionsReached:
    - exit
    - perror
    - read_header
    - read_create
    - fclose
    - read_lock
    - printf
    - fopen
    - fread
    linkageType: ''
    returnType: void
    signature: void readinput(rbtree_type* all, char* file)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/lock_verify.c:288,1
    - Dst: printf
      Src: /src/unbound/testcode/lock_verify.c:289,1
    - Dst: printf
      Src: /src/unbound/testcode/lock_verify.c:292,1
    - Dst: printf
      Src: /src/unbound/testcode/lock_verify.c:297,1
    - Dst: printf
      Src: /src/unbound/testcode/lock_verify.c:299,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 2
    argNames:
    - visit
    - level
    argTypes:
    - struct lock_ref*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 283
    functionDepth: 0
    functionLinenumber: 283
    functionLinenumberEnd: 307
    functionName: found_cycle
    functionSourceFile: /src/unbound/testcode/lock_verify.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void found_cycle(struct lock_ref* visit, int level)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - visit
    - from
    argTypes:
    - struct lock_ref*
    - struct lock_ref*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 310
    functionDepth: 0
    functionLinenumber: 310
    functionLinenumberEnd: 319
    functionName: detect_cycle
    functionSourceFile: /src/unbound/testcode/lock_verify.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int detect_cycle(struct lock_ref* visit, struct lock_ref* from)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: detect_cycle
      Src: /src/unbound/testcode/lock_verify.c:333,1
    - Dst: found_cycle
      Src: /src/unbound/testcode/lock_verify.c:334,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/lock_verify.c:335,1
    - Dst: fprintf
      Src: /src/unbound/testcode/lock_verify.c:340,1
    - Dst: search_cycle
      Src: /src/unbound/testcode/lock_verify.c:346,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - visit
    - level
    - from
    argTypes:
    - struct lock_ref*
    - int
    - struct lock_ref*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 328
    functionDepth: 1
    functionLinenumber: 328
    functionLinenumberEnd: 349
    functionName: search_cycle
    functionSourceFile: /src/unbound/testcode/lock_verify.c
    functionUses: 1
    functionsReached:
    - search_cycle
    - detect_cycle
    - fatal_exit
    - fprintf
    - found_cycle
    linkageType: ''
    returnType: void
    signature: "void search_cycle(struct lock_ref* visit, int level, \n\tstruct lock_ref*
      from)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: search_cycle
      Src: /src/unbound/testcode/lock_verify.c:346,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - smaller
    argTypes:
    - visit
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 347
      start: 344
    functionDepth: 2
    functionLinenumber: 344
    functionLinenumberEnd: 347
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/testcode/lock_verify.c
    functionUses: 0
    functionsReached:
    - search_cycle
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(ref, struct lock_ref*, visit->lock->smaller)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/testcode/lock_verify.c:363,1
    - Dst: search_cycle
      Src: /src/unbound/testcode/lock_verify.c:368,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - lock
    argTypes:
    - struct order_lock*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 369
      start: 352
    functionDepth: 2
    functionLinenumber: 352
    functionLinenumberEnd: 369
    functionName: check_order_lock
    functionSourceFile: /src/unbound/testcode/lock_verify.c
    functionUses: 0
    functionsReached:
    - log_err
    - search_cycle
    linkageType: ''
    returnType: void
    signature: void check_order_lock(struct order_lock* lock)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/lock_verify.c:379,1
    - Dst: fprintf
      Src: /src/unbound/testcode/lock_verify.c:385,1
    - Dst: check_order_lock
      Src: /src/unbound/testcode/lock_verify.c:387,1
    - Dst: fprintf
      Src: /src/unbound/testcode/lock_verify.c:389,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - all_locks
    argTypes:
    - rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 390
      start: 372
    functionDepth: 3
    functionLinenumber: 372
    functionLinenumberEnd: 390
    functionName: check_order
    functionSourceFile: /src/unbound/testcode/lock_verify.c
    functionUses: 0
    functionsReached:
    - check_order_lock
    - fprintf
    - printf
    linkageType: ''
    returnType: void
    signature: void check_order(rbtree_type* all_locks)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/lock_verify.c:379,1
    - Dst: fprintf
      Src: /src/unbound/testcode/lock_verify.c:385,1
    - Dst: check_order_lock
      Src: /src/unbound/testcode/lock_verify.c:387,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 377
    functionDepth: 3
    functionLinenumber: 377
    functionLinenumberEnd: 388
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/testcode/lock_verify.c
    functionUses: 0
    functionsReached:
    - check_order_lock
    - fprintf
    - printf
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(lock, struct order_lock*, all_locks)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/testcode/lock_verify.c:397,1
    - Dst: free
      Src: /src/unbound/testcode/lock_verify.c:398,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - node
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 399
      start: 393
    functionDepth: 1
    functionLinenumber: 393
    functionLinenumberEnd: 399
    functionName: dellockref
    functionSourceFile: /src/unbound/testcode/lock_verify.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void dellockref(rbnode_type* node, void* ATTR_UNUSED(arg))
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/testcode/lock_verify.c:406,1
    - Dst: traverse_postorder
      Src: /src/unbound/testcode/lock_verify.c:408,1
    - Dst: free
      Src: /src/unbound/testcode/lock_verify.c:409,1
    - Dst: free
      Src: /src/unbound/testcode/lock_verify.c:411,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - node
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 412
      start: 402
    functionDepth: 1
    functionLinenumber: 402
    functionLinenumberEnd: 412
    functionName: delnode
    functionSourceFile: /src/unbound/testcode/lock_verify.c
    functionUses: 0
    functionsReached:
    - free
    - traverse_postorder
    linkageType: ''
    returnType: void
    signature: void delnode(rbnode_type* node, void* ATTR_UNUSED(arg))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: traverse_postorder
      Src: /src/unbound/testcode/lock_verify.c:419,1
    - Dst: free
      Src: /src/unbound/testcode/lock_verify.c:420,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - all_locks
    argTypes:
    - rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 421
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 421
    functionName: locks_free
    functionSourceFile: /src/unbound/testcode/lock_verify.c
    functionUses: 0
    functionsReached:
    - free
    - traverse_postorder
    linkageType: ''
    returnType: void
    signature: void locks_free(rbtree_type* all_locks)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/unbound/testcode/lock_verify.c:429,1
    - Dst: usage
      Src: /src/unbound/testcode/lock_verify.c:436,1
    - Dst: checklock_start
      Src: /src/unbound/testcode/lock_verify.c:439,1
    - Dst: log_init
      Src: /src/unbound/testcode/lock_verify.c:440,1
    - Dst: log_ident_set
      Src: /src/unbound/testcode/lock_verify.c:441,1
    - Dst: rbtree_create
      Src: /src/unbound/testcode/lock_verify.c:443,1
    - Dst: readinput
      Src: /src/unbound/testcode/lock_verify.c:448,1
    - Dst: check_order
      Src: /src/unbound/testcode/lock_verify.c:452,1
    - Dst: printf
      Src: /src/unbound/testcode/lock_verify.c:455,1
    - Dst: time
      Src: /src/unbound/testcode/lock_verify.c:456,1
    - Dst: locks_free
      Src: /src/unbound/testcode/lock_verify.c:458,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 424
    functionDepth: 4
    functionLinenumber: 424
    functionLinenumberEnd: 461
    functionName: main
    functionSourceFile: /src/unbound/testcode/lock_verify.c
    functionUses: 33
    functionsReached:
    - readinput
    - check_order
    - time
    - printf
    - log_init
    - log_ident_set
    - locks_free
    - rbtree_create
    - usage
    - checklock_start
    linkageType: ''
    returnType: int
    signature: int main(int argc, char* argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:57,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:68,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:69,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:70,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:71,1
    - Dst: regional_alloc
      Src: /src/unbound/testcode/unitregional.c:75,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:76,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:78,1
    - Dst: regional_alloc
      Src: /src/unbound/testcode/unitregional.c:81,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:82,1
    - Dst: memset
      Src: /src/unbound/testcode/unitregional.c:83,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:85,1
    - Dst: regional_alloc
      Src: /src/unbound/testcode/unitregional.c:87,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:88,1
    - Dst: memset
      Src: /src/unbound/testcode/unitregional.c:89,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:91,1
    - Dst: regional_alloc
      Src: /src/unbound/testcode/unitregional.c:93,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:94,1
    - Dst: memset
      Src: /src/unbound/testcode/unitregional.c:95,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:97,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:99,1
    - Dst: regional_alloc
      Src: /src/unbound/testcode/unitregional.c:100,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:101,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:102,1
    - Dst: memset
      Src: /src/unbound/testcode/unitregional.c:103,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:105,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:106,1
    - Dst: regional_alloc
      Src: /src/unbound/testcode/unitregional.c:110,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:111,1
    - Dst: memset
      Src: /src/unbound/testcode/unitregional.c:112,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:114,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:117,1
    - Dst: regional_alloc
      Src: /src/unbound/testcode/unitregional.c:119,1
    - Dst: memset
      Src: /src/unbound/testcode/unitregional.c:120,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:121,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:122,1
    - Dst: regional_alloc
      Src: /src/unbound/testcode/unitregional.c:126,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:127,1
    - Dst: memset
      Src: /src/unbound/testcode/unitregional.c:128,1
    - Dst: regional_alloc
      Src: /src/unbound/testcode/unitregional.c:133,1
    - Dst: memset
      Src: /src/unbound/testcode/unitregional.c:134,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:135,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:136,1
    - Dst: regional_alloc
      Src: /src/unbound/testcode/unitregional.c:138,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:139,1
    - Dst: memset
      Src: /src/unbound/testcode/unitregional.c:140,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:141,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:142,1
    - Dst: regional_alloc
      Src: /src/unbound/testcode/unitregional.c:144,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:145,1
    - Dst: memset
      Src: /src/unbound/testcode/unitregional.c:146,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:147,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:148,1
    - Dst: regional_alloc
      Src: /src/unbound/testcode/unitregional.c:152,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:153,1
    - Dst: memset
      Src: /src/unbound/testcode/unitregional.c:154,1
    - Dst: regional_alloc
      Src: /src/unbound/testcode/unitregional.c:159,1
    - Dst: memset
      Src: /src/unbound/testcode/unitregional.c:160,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:161,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:162,1
    - Dst: regional_alloc
      Src: /src/unbound/testcode/unitregional.c:166,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:167,1
    - Dst: memset
      Src: /src/unbound/testcode/unitregional.c:168,1
    - Dst: regional_alloc
      Src: /src/unbound/testcode/unitregional.c:173,1
    - Dst: memset
      Src: /src/unbound/testcode/unitregional.c:174,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:175,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:176,1
    - Dst: regional_alloc_init
      Src: /src/unbound/testcode/unitregional.c:181,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:182,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:183,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitregional.c:183,1
    - Dst: regional_alloc_zero
      Src: /src/unbound/testcode/unitregional.c:186,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:188,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:189,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitregional.c:189,1
    - Dst: regional_strdup
      Src: /src/unbound/testcode/unitregional.c:193,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:194,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:195,1
    - Dst: memcmp
      Src: /src/unbound/testcode/unitregional.c:195,1
    - Dst: strlen
      Src: /src/unbound/testcode/unitregional.c:195,1
    - Dst: regional_free_all
      Src: /src/unbound/testcode/unitregional.c:197,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 102
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 198
    functionName: corner_cases
    functionSourceFile: /src/unbound/testcode/unitregional.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - regional_strdup
    - regional_alloc
    - regional_alloc_init
    - strlen
    - memcmp
    - memset
    - regional_free_all
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void corner_cases(struct regional* r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regional_create
      Src: /src/unbound/testcode/unitregional.c:204,1
    - Dst: corner_cases
      Src: /src/unbound/testcode/unitregional.c:205,1
    - Dst: regional_destroy
      Src: /src/unbound/testcode/unitregional.c:206,1
    - Dst: regional_create_custom
      Src: /src/unbound/testcode/unitregional.c:207,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:208,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:209,1
    - Dst: regional_get_mem
      Src: /src/unbound/testcode/unitregional.c:209,1
    - Dst: corner_cases
      Src: /src/unbound/testcode/unitregional.c:210,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:211,1
    - Dst: regional_get_mem
      Src: /src/unbound/testcode/unitregional.c:211,1
    - Dst: regional_destroy
      Src: /src/unbound/testcode/unitregional.c:212,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 201
    functionDepth: 2
    functionLinenumber: 201
    functionLinenumberEnd: 213
    functionName: specific_cases
    functionSourceFile: /src/unbound/testcode/unitregional.c
    functionUses: 0
    functionsReached:
    - corner_cases
    - regional_create
    - regional_create_custom
    - regional_get_mem
    - regional_destroy
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void specific_cases(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regional_create_custom
      Src: /src/unbound/testcode/unitregional.c:222,1
    - Dst: random
      Src: /src/unbound/testcode/unitregional.c:224,1
    - Dst: regional_alloc
      Src: /src/unbound/testcode/unitregional.c:225,1
    - Dst: unit_assert
      Src: /src/unbound/testcode/unitregional.c:226,1
    - Dst: memset
      Src: /src/unbound/testcode/unitregional.c:227,1
    - Dst: regional_free_all
      Src: /src/unbound/testcode/unitregional.c:229,1
    - Dst: regional_destroy
      Src: /src/unbound/testcode/unitregional.c:230,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - max
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 216
    functionDepth: 1
    functionLinenumber: 216
    functionLinenumberEnd: 231
    functionName: burden_test
    functionSourceFile: /src/unbound/testcode/unitregional.c
    functionUses: 0
    functionsReached:
    - regional_create_custom
    - regional_alloc
    - random
    - memset
    - regional_free_all
    - regional_destroy
    - unit_assert
    linkageType: ''
    returnType: void
    signature: void burden_test(size_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: burden_test
      Src: /src/unbound/testcode/unitregional.c:240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 234
    functionDepth: 2
    functionLinenumber: 234
    functionLinenumberEnd: 241
    functionName: random_burden
    functionSourceFile: /src/unbound/testcode/unitregional.c
    functionUses: 0
    functionsReached:
    - burden_test
    linkageType: ''
    returnType: void
    signature: void random_burden(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unit_show_feature
      Src: /src/unbound/testcode/unitregional.c:245,1
    - Dst: specific_cases
      Src: /src/unbound/testcode/unitregional.c:246,1
    - Dst: random_burden
      Src: /src/unbound/testcode/unitregional.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 243
    functionDepth: 3
    functionLinenumber: 243
    functionLinenumberEnd: 248
    functionName: regional_test
    functionSourceFile: /src/unbound/testcode/unitregional.c
    functionUses: 1
    functionsReached:
    - specific_cases
    - random_burden
    - unit_show_feature
    linkageType: ''
    returnType: void
    signature: void regional_test(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/memstats.c:71,1
    - Dst: printf
      Src: /src/unbound/testcode/memstats.c:72,1
    - Dst: exit
      Src: /src/unbound/testcode/memstats.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 74
      start: 68
    functionDepth: 0
    functionLinenumber: 68
    functionLinenumberEnd: 74
    functionName: usage
    functionSourceFile: /src/unbound/testcode/memstats.c
    functionUses: 18
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/testcode/memstats.c:86,1
    - Dst: strstr
      Src: /src/unbound/testcode/memstats.c:88,1
    - Dst: strstr
      Src: /src/unbound/testcode/memstats.c:90,1
    - Dst: strstr
      Src: /src/unbound/testcode/memstats.c:92,1
    - Dst: strstr
      Src: /src/unbound/testcode/memstats.c:94,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - line
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 77
    functionDepth: 0
    functionLinenumber: 77
    functionLinenumberEnd: 98
    functionName: match
    functionSourceFile: /src/unbound/testcode/memstats.c
    functionUses: 1
    functionsReached:
    - strstr
    - strlen
    linkageType: ''
    returnType: int
    signature: int match(char* line)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_search
      Src: /src/unbound/testcode/memstats.c:104,1
    - Dst: calloc
      Src: /src/unbound/testcode/memstats.c:106,1
    - Dst: strdup
      Src: /src/unbound/testcode/memstats.c:108,1
    - Dst: free
      Src: /src/unbound/testcode/memstats.c:110,1
    - Dst: strdup
      Src: /src/unbound/testcode/memstats.c:113,1
    - Dst: free
      Src: /src/unbound/testcode/memstats.c:115,1
    - Dst: free
      Src: /src/unbound/testcode/memstats.c:116,1
    - Dst: rbtree_insert
      Src: /src/unbound/testcode/memstats.c:121,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 21
    argCount: 3
    argNames:
    - tree
    - key
    - func
    argTypes:
    - rbtree_type*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 101
    functionDepth: 1
    functionLinenumber: 101
    functionLinenumberEnd: 124
    functionName: get_codeline
    functionSourceFile: /src/unbound/testcode/memstats.c
    functionUses: 0
    functionsReached:
    - free
    - calloc
    - rbtree_insert
    - strdup
    - rbtree_search
    linkageType: ''
    returnType: struct codeline
    signature: 'struct codeline *

      get_codeline(rbtree_type* tree, char* key, char* func)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/unbound/testcode/memstats.c:135,1
    - Dst: sscanf
      Src: /src/unbound/testcode/memstats.c:136,1
    - Dst: printf
      Src: /src/unbound/testcode/memstats.c:137,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/memstats.c:138,1
    - Dst: sscanf
      Src: /src/unbound/testcode/memstats.c:140,1
    - Dst: printf
      Src: /src/unbound/testcode/memstats.c:141,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/memstats.c:142,1
    - Dst: get_codeline
      Src: /src/unbound/testcode/memstats.c:144,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/memstats.c:146,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - line
    - tree
    argTypes:
    - char*
    - rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 149
    functionName: read_malloc_stat
    functionSourceFile: /src/unbound/testcode/memstats.c
    functionUses: 0
    functionsReached:
    - get_codeline
    - printf
    - fatal_exit
    - sscanf
    - strstr
    linkageType: ''
    returnType: void
    signature: void read_malloc_stat(char* line, rbtree_type* tree)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strstr
      Src: /src/unbound/testcode/memstats.c:160,1
    - Dst: sscanf
      Src: /src/unbound/testcode/memstats.c:161,1
    - Dst: printf
      Src: /src/unbound/testcode/memstats.c:162,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/memstats.c:163,1
    - Dst: sscanf
      Src: /src/unbound/testcode/memstats.c:165,1
    - Dst: printf
      Src: /src/unbound/testcode/memstats.c:166,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/memstats.c:167,1
    - Dst: get_codeline
      Src: /src/unbound/testcode/memstats.c:170,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/memstats.c:172,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 2
    argNames:
    - line
    - tree
    argTypes:
    - char*
    - rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 152
    functionDepth: 2
    functionLinenumber: 152
    functionLinenumberEnd: 175
    functionName: read_calloc_stat
    functionSourceFile: /src/unbound/testcode/memstats.c
    functionUses: 0
    functionsReached:
    - get_codeline
    - printf
    - fatal_exit
    - sscanf
    - strstr
    linkageType: ''
    returnType: void
    signature: void read_calloc_stat(char* line, rbtree_type* tree)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/unbound/testcode/memstats.c:182,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/memstats.c:183,1
    - Dst: strerror
      Src: /src/unbound/testcode/memstats.c:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 186
    functionName: get_file_size
    functionSourceFile: /src/unbound/testcode/memstats.c
    functionUses: 0
    functionsReached:
    - strerror
    - fatal_exit
    - stat
    linkageType: ''
    returnType: off_t
    signature: off_t get_file_size(const char* fname)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: get_file_size
      Src: /src/unbound/testcode/memstats.c:192,1
    - Dst: fopen
      Src: /src/unbound/testcode/memstats.c:195,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/memstats.c:198,1
    - Dst: strerror
      Src: /src/unbound/testcode/memstats.c:198,1
    - Dst: printf
      Src: /src/unbound/testcode/memstats.c:199,1
    - Dst: fgets
      Src: /src/unbound/testcode/memstats.c:200,1
    - Dst: strlen
      Src: /src/unbound/testcode/memstats.c:202,1
    - Dst: fprintf
      Src: /src/unbound/testcode/memstats.c:206,1
    - Dst: match
      Src: /src/unbound/testcode/memstats.c:209,1
    - Dst: strstr
      Src: /src/unbound/testcode/memstats.c:211,1
    - Dst: read_malloc_stat
      Src: /src/unbound/testcode/memstats.c:212,1
    - Dst: strstr
      Src: /src/unbound/testcode/memstats.c:213,1
    - Dst: read_calloc_stat
      Src: /src/unbound/testcode/memstats.c:214,1
    - Dst: printf
      Src: /src/unbound/testcode/memstats.c:216,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/memstats.c:217,1
    - Dst: fprintf
      Src: /src/unbound/testcode/memstats.c:220,1
    - Dst: fclose
      Src: /src/unbound/testcode/memstats.c:221,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - tree
    - fname
    argTypes:
    - rbtree_type*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 189
    functionDepth: 3
    functionLinenumber: 189
    functionLinenumberEnd: 222
    functionName: readfile
    functionSourceFile: /src/unbound/testcode/memstats.c
    functionUses: 0
    functionsReached:
    - match
    - fclose
    - printf
    - fatal_exit
    - read_malloc_stat
    - read_calloc_stat
    - fopen
    - strerror
    - strlen
    - get_file_size
    - fgets
    - fprintf
    - strstr
    linkageType: ''
    returnType: void
    signature: void readfile(rbtree_type* tree, const char* fname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/memstats.c:231,1
    - Dst: printf
      Src: /src/unbound/testcode/memstats.c:236,1
    - Dst: printf
      Src: /src/unbound/testcode/memstats.c:237,1
    - Dst: printf
      Src: /src/unbound/testcode/memstats.c:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 1
    argNames:
    - tree
    argTypes:
    - rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 225
    functionDepth: 0
    functionLinenumber: 225
    functionLinenumberEnd: 240
    functionName: printstats
    functionSourceFile: /src/unbound/testcode/memstats.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void printstats(rbtree_type* tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/testcode/memstats.c:231,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 235
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/testcode/memstats.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(cl, struct codeline*, tree)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_init
      Src: /src/unbound/testcode/memstats.c:246,1
    - Dst: usage
      Src: /src/unbound/testcode/memstats.c:248,1
    - Dst: rbtree_create
      Src: /src/unbound/testcode/memstats.c:250,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/memstats.c:252,1
    - Dst: readfile
      Src: /src/unbound/testcode/memstats.c:253,1
    - Dst: printstats
      Src: /src/unbound/testcode/memstats.c:254,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 243
    functionDepth: 4
    functionLinenumber: 243
    functionLinenumberEnd: 256
    functionName: main
    functionSourceFile: /src/unbound/testcode/memstats.c
    functionUses: 33
    functionsReached:
    - fatal_exit
    - log_init
    - printstats
    - readfile
    - rbtree_create
    - usage
    linkageType: ''
    returnType: int
    signature: int main(int argc, const char* argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/testcode/fake_event.c:105,1
    - Dst: getpid
      Src: /src/unbound/testcode/fake_event.c:106,1
    - Dst: snprintf
      Src: /src/unbound/testcode/fake_event.c:108,1
    - Dst: getpid
      Src: /src/unbound/testcode/fake_event.c:109,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - adj
    - id
    - buf
    - len
    argTypes:
    - char*
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 101
    functionDepth: 2
    functionLinenumber: 101
    functionLinenumberEnd: 111
    functionName: fake_temp_file
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 4
    functionsReached:
    - snprintf
    - getpid
    linkageType: ''
    returnType: void
    signature: void fake_temp_file(const char* adj, const char* id, char* buf, size_t
      len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - scen
    argTypes:
    - struct replay_scenario*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 117
    functionName: fake_event_init
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void fake_event_init(struct replay_scenario* scen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: replay_scenario_delete
      Src: /src/unbound/testcode/fake_event.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 124
      start: 119
    functionDepth: 3
    functionLinenumber: 119
    functionLinenumberEnd: 124
    functionName: fake_event_cleanup
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached:
    - replay_scenario_delete
    linkageType: ''
    returnType: void
    signature: void fake_event_cleanup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/testcode/fake_event.c:130,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:132,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:134,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:135,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - desc
    - pkt
    - len
    argTypes:
    - char*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 127
    functionDepth: 2
    functionLinenumber: 127
    functionLinenumberEnd: 137
    functionName: log_pkt
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - free
    - log_info
    - sldns_wire2str_pkt
    - fatal_exit
    linkageType: ''
    returnType: void
    signature: void log_pkt(const char* desc, uint8_t* pkt, size_t len)
  - BBCount: 17
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 35
    argCount: 1
    argNames:
    - t
    argTypes:
    - enum replay_event_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 142
    functionDepth: 0
    functionLinenumber: 142
    functionLinenumberEnd: 163
    functionName: repevt_string
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      repevt_string(enum replay_event_type t)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:171,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/fake_event.c:172,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:173,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:174,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - pend
    argTypes:
    - struct fake_pending*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 166
    functionDepth: 2
    functionLinenumber: 166
    functionLinenumberEnd: 175
    functionName: delete_fake_pending
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - free
    - sldns_buffer_free
    linkageType: ''
    returnType: void
    signature: void delete_fake_pending(struct fake_pending* pend)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/fake_event.c:184,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:185,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:187,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:188,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - a
    argTypes:
    - struct replay_answer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 178
    functionDepth: 2
    functionLinenumber: 178
    functionLinenumberEnd: 189
    functionName: delete_replay_answer
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - free
    - sldns_buffer_free
    linkageType: ''
    returnType: void
    signature: void delete_replay_answer(struct replay_answer* a)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:196,1
    - Dst: log_pkt
      Src: /src/unbound/testcode/fake_event.c:200,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/fake_event.c:200,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:201,1
    - Dst: log_pkt
      Src: /src/unbound/testcode/fake_event.c:204,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - txt
    - reppkt
    argTypes:
    - char*
    - struct reply_packet*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 192
    functionDepth: 3
    functionLinenumber: 192
    functionLinenumberEnd: 205
    functionName: log_testpkt_reply_pkt
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_pkt
    - log_info
    - sldns_buffer_limit
    - sldns_buffer_begin
    linkageType: ''
    returnType: void
    signature: void log_testpkt_reply_pkt(const char* txt, struct reply_packet* reppkt)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sockaddr_cmp
      Src: /src/unbound/testcode/fake_event.c:222,1
    - Dst: find_match
      Src: /src/unbound/testcode/fake_event.c:225,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 13
    argCount: 3
    argNames:
    - runtime
    - entry
    - pend
    argTypes:
    - struct replay_runtime*
    - struct entry**
    - struct fake_pending**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 210
    functionDepth: 11
    functionLinenumber: 210
    functionLinenumberEnd: 233
    functionName: pending_matches_current
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - find_match
    - sockaddr_cmp
    linkageType: ''
    returnType: int
    signature: "int pending_matches_current(struct replay_runtime* runtime,\n\tstruct
      entry** entry, struct fake_pending **pend)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sockaddr_cmp
      Src: /src/unbound/testcode/fake_event.c:250,1
    - Dst: find_match
      Src: /src/unbound/testcode/fake_event.c:252,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:254,1
    - Dst: log_addr
      Src: /src/unbound/testcode/fake_event.c:258,1
    - Dst: log_testpkt_reply_pkt
      Src: /src/unbound/testcode/fake_event.c:259,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 3
    argNames:
    - runtime
    - entry
    - pend
    argTypes:
    - struct replay_runtime*
    - struct entry**
    - struct fake_pending*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 242
    functionDepth: 11
    functionLinenumber: 242
    functionLinenumberEnd: 266
    functionName: pending_find_match
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_info
    - log_testpkt_reply_pkt
    - find_match
    - log_addr
    - sockaddr_cmp
    linkageType: ''
    returnType: int
    signature: "int pending_find_match(struct replay_runtime* runtime, struct entry**
      entry,\n\tstruct fake_pending* pend)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: pending_find_match
      Src: /src/unbound/testcode/fake_event.c:287,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - runtime
    - entry
    - pend
    argTypes:
    - struct replay_runtime*
    - struct entry**
    - struct fake_pending**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 294
      start: 275
    functionDepth: 12
    functionLinenumber: 275
    functionLinenumberEnd: 294
    functionName: pending_matches_range
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - pending_find_match
    linkageType: ''
    returnType: int
    signature: "int pending_matches_range(struct replay_runtime* runtime,\n\tstruct
      entry** entry, struct fake_pending** pend)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: delete_fake_pending
      Src: /src/unbound/testcode/fake_event.c:308,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 2
    argNames:
    - runtime
    - pend
    argTypes:
    - struct replay_runtime*
    - struct fake_pending*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 299
    functionDepth: 3
    functionLinenumber: 299
    functionLinenumberEnd: 315
    functionName: pending_list_delete
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - delete_fake_pending
    linkageType: ''
    returnType: void
    signature: void pending_list_delete(struct replay_runtime* runtime, struct fake_pending*
      pend)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - entry
    argTypes:
    - struct entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 328
      start: 318
    functionDepth: 0
    functionLinenumber: 318
    functionLinenumberEnd: 328
    functionName: count_reply_packets
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int count_reply_packets(struct entry* entry)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:340,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/testcode/fake_event.c:341,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:347,1
    - Dst: log_testpkt_reply_pkt
      Src: /src/unbound/testcode/fake_event.c:348,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/fake_event.c:351,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:352,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:353,1
    - Dst: adjust_packet
      Src: /src/unbound/testcode/fake_event.c:359,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/fake_event.c:360,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:361,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/fake_event.c:363,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 5
    argNames:
    - buffer
    - entry
    - q
    - qlen
    - tcp_pkt_counter
    argTypes:
    - sldns_buffer*
    - struct entry*
    - uint8_t*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 333
    functionDepth: 9
    functionLinenumber: 333
    functionLinenumberEnd: 364
    functionName: fill_buffer_with_reply
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - adjust_packet
    - sldns_buffer_write
    - sldns_buffer_flip
    - sldns_buffer_limit
    - fatal_exit
    - sldns_buffer_clear
    - free
    - log_testpkt_reply_pkt
    - log_assert
    - sldns_buffer_begin
    linkageType: ''
    returnType: void
    signature: "void fill_buffer_with_reply(sldns_buffer* buffer, struct entry* entry,
      uint8_t* q,\n\tsize_t qlen, int tcp_pkt_counter)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/fake_event.c:381,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/fake_event.c:383,1
    - Dst: fill_buffer_with_reply
      Src: /src/unbound/testcode/fake_event.c:390,1
    - Dst: memcpy
      Src: /src/unbound/testcode/fake_event.c:394,1
    - Dst: count_reply_packets
      Src: /src/unbound/testcode/fake_event.c:397,1
    - Dst: pending_list_delete
      Src: /src/unbound/testcode/fake_event.c:401,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:405,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/fake_event.c:407,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 3
    argNames:
    - runtime
    - entry
    - pend
    argTypes:
    - struct replay_runtime*
    - struct entry*
    - struct fake_pending*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 372
    functionDepth: 10
    functionLinenumber: 372
    functionLinenumberEnd: 408
    functionName: answer_callback_from_entry
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - pending_list_delete
    - sldns_buffer_new
    - memcpy
    - fatal_exit
    - sldns_buffer_free
    - fill_buffer_with_reply
    - memset
    - count_reply_packets
    linkageType: ''
    returnType: void
    signature: "void answer_callback_from_entry(struct replay_runtime* runtime,\n
      \       struct entry* entry, struct fake_pending* pend)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:416,1
    - Dst: sockaddr_cmp
      Src: /src/unbound/testcode/fake_event.c:422,1
    - Dst: find_match
      Src: /src/unbound/testcode/fake_event.c:425,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:427,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:429,1
    - Dst: repevt_string
      Src: /src/unbound/testcode/fake_event.c:431,1
    - Dst: delete_replay_answer
      Src: /src/unbound/testcode/fake_event.c:439,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:446,1
    - Dst: repevt_string
      Src: /src/unbound/testcode/fake_event.c:447,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:448,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 1
    argNames:
    - runtime
    argTypes:
    - struct replay_runtime*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 411
    functionDepth: 11
    functionLinenumber: 411
    functionLinenumberEnd: 449
    functionName: answer_check_it
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - delete_replay_answer
    - repevt_string
    - log_info
    - fatal_exit
    - log_assert
    - find_match
    - sockaddr_cmp
    linkageType: ''
    returnType: void
    signature: void answer_check_it(struct replay_runtime* runtime)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/fake_event.c:458,1
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:459,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:461,1
    - Dst: memcpy
      Src: /src/unbound/testcode/fake_event.c:465,1
    - Dst: memcpy
      Src: /src/unbound/testcode/fake_event.c:467,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/fake_event.c:471,1
    - Dst: fill_buffer_with_reply
      Src: /src/unbound/testcode/fake_event.c:478,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:479,1
    - Dst: log_testpkt_reply_pkt
      Src: /src/unbound/testcode/fake_event.c:480,1
    - Dst: comm_point_send_reply
      Src: /src/unbound/testcode/fake_event.c:485,1
    - Dst: memset
      Src: /src/unbound/testcode/fake_event.c:488,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 2
    argNames:
    - runtime
    - todo
    argTypes:
    - struct replay_runtime*
    - struct replay_moment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 454
    functionDepth: 10
    functionLinenumber: 454
    functionLinenumberEnd: 489
    functionName: fake_front_query
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_new
    - memcpy
    - log_info
    - fatal_exit
    - calloc
    - log_testpkt_reply_pkt
    - fill_buffer_with_reply
    - memset
    - comm_point_send_reply
    linkageType: ''
    returnType: void
    signature: void fake_front_query(struct replay_runtime* runtime, struct replay_moment
      *todo)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/testcode/fake_event.c:504,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:505,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/fake_event.c:508,1
    - Dst: fill_buffer_with_reply
      Src: /src/unbound/testcode/fake_event.c:516,1
    - Dst: memcpy
      Src: /src/unbound/testcode/fake_event.c:521,1
    - Dst: count_reply_packets
      Src: /src/unbound/testcode/fake_event.c:524,1
    - Dst: pending_list_delete
      Src: /src/unbound/testcode/fake_event.c:528,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:532,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/fake_event.c:535,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 3
    argNames:
    - runtime
    - todo
    - error
    argTypes:
    - struct replay_runtime*
    - struct replay_moment*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 536
      start: 494
    functionDepth: 10
    functionLinenumber: 494
    functionLinenumberEnd: 536
    functionName: fake_pending_callback
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - pending_list_delete
    - sldns_buffer_new
    - memcpy
    - fatal_exit
    - sldns_buffer_free
    - fill_buffer_with_reply
    - memset
    - count_reply_packets
    linkageType: ''
    returnType: void
    signature: "void fake_pending_callback(struct replay_runtime* runtime,\n\tstruct
      replay_moment* todo, int error)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: macro_process
      Src: /src/unbound/testcode/fake_event.c:542,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:544,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:545,1
    - Dst: macro_assign
      Src: /src/unbound/testcode/fake_event.c:546,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:547,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:548,1
    - Dst: macro_print_debug
      Src: /src/unbound/testcode/fake_event.c:550,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - runtime
    - mom
    argTypes:
    - struct replay_runtime*
    - struct replay_moment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 539
    functionDepth: 5
    functionLinenumber: 539
    functionLinenumberEnd: 551
    functionName: moment_assign
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_info
    - macro_print_debug
    - fatal_exit
    - free
    - macro_assign
    - macro_process
    linkageType: ''
    returnType: void
    signature: void moment_assign(struct replay_runtime* runtime, struct replay_moment*
      mom)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: macro_process
      Src: /src/unbound/testcode/fake_event.c:560,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:562,1
    - Dst: verbose
      Src: /src/unbound/testcode/fake_event.c:563,1
    - Dst: atof
      Src: /src/unbound/testcode/fake_event.c:564,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:565,1
    - Dst: timeval_add
      Src: /src/unbound/testcode/fake_event.c:571,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:574,1
    - Dst: replay_get_oldest_timer
      Src: /src/unbound/testcode/fake_event.c:579,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:581,1
    - Dst: fptr_ok
      Src: /src/unbound/testcode/fake_event.c:582,1
    - Dst: fptr_whitelist_comm_timer
      Src: /src/unbound/testcode/fake_event.c:582,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - runtime
    - mom
    argTypes:
    - struct replay_runtime*
    - struct replay_moment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 554
    functionDepth: 5
    functionLinenumber: 554
    functionLinenumberEnd: 585
    functionName: time_passes
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - verbose
    - log_info
    - fatal_exit
    - timeval_add
    - free
    - replay_get_oldest_timer
    - fptr_ok
    - atof
    - fptr_whitelist_comm_timer
    - macro_process
    linkageType: ''
    returnType: void
    signature: void time_passes(struct replay_runtime* runtime, struct replay_moment*
      mom)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:597,1
    - Dst: fake_temp_file
      Src: /src/unbound/testcode/fake_event.c:598,1
    - Dst: fopen
      Src: /src/unbound/testcode/fake_event.c:599,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:600,1
    - Dst: strerror
      Src: /src/unbound/testcode/fake_event.c:600,1
    - Dst: fgets
      Src: /src/unbound/testcode/fake_event.c:603,1
    - Dst: log_err
      Src: /src/unbound/testcode/fake_event.c:604,1
    - Dst: log_err
      Src: /src/unbound/testcode/fake_event.c:605,1
    - Dst: log_err
      Src: /src/unbound/testcode/fake_event.c:606,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:607,1
    - Dst: strip_end_white
      Src: /src/unbound/testcode/fake_event.c:609,1
    - Dst: macro_process
      Src: /src/unbound/testcode/fake_event.c:610,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:612,1
    - Dst: strcmp
      Src: /src/unbound/testcode/fake_event.c:613,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:614,1
    - Dst: strcmp
      Src: /src/unbound/testcode/fake_event.c:615,1
    - Dst: log_err
      Src: /src/unbound/testcode/fake_event.c:616,1
    - Dst: log_err
      Src: /src/unbound/testcode/fake_event.c:617,1
    - Dst: log_err
      Src: /src/unbound/testcode/fake_event.c:618,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:619,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:623,1
    - Dst: fprintf
      Src: /src/unbound/testcode/fake_event.c:624,1
    - Dst: fgets
      Src: /src/unbound/testcode/fake_event.c:626,1
    - Dst: log_err
      Src: /src/unbound/testcode/fake_event.c:627,1
    - Dst: fprintf
      Src: /src/unbound/testcode/fake_event.c:630,1
    - Dst: fgets
      Src: /src/unbound/testcode/fake_event.c:631,1
    - Dst: fclose
      Src: /src/unbound/testcode/fake_event.c:634,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:636,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:637,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 2
    argNames:
    - runtime
    - mom
    argTypes:
    - struct replay_runtime*
    - struct replay_moment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 588
    functionDepth: 5
    functionLinenumber: 588
    functionLinenumberEnd: 638
    functionName: autotrust_check
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_err
    - strcmp
    - fake_temp_file
    - fclose
    - log_info
    - fatal_exit
    - free
    - strip_end_white
    - fopen
    - log_assert
    - strerror
    - fgets
    - fprintf
    - macro_process
    linkageType: ''
    returnType: void
    signature: void autotrust_check(struct replay_runtime* runtime, struct replay_moment*
      mom)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:650,1
    - Dst: fake_temp_file
      Src: /src/unbound/testcode/fake_event.c:651,1
    - Dst: fopen
      Src: /src/unbound/testcode/fake_event.c:652,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:653,1
    - Dst: strerror
      Src: /src/unbound/testcode/fake_event.c:653,1
    - Dst: fgets
      Src: /src/unbound/testcode/fake_event.c:656,1
    - Dst: log_err
      Src: /src/unbound/testcode/fake_event.c:657,1
    - Dst: log_err
      Src: /src/unbound/testcode/fake_event.c:658,1
    - Dst: log_err
      Src: /src/unbound/testcode/fake_event.c:659,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:660,1
    - Dst: strip_end_white
      Src: /src/unbound/testcode/fake_event.c:662,1
    - Dst: macro_process
      Src: /src/unbound/testcode/fake_event.c:663,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:665,1
    - Dst: strcmp
      Src: /src/unbound/testcode/fake_event.c:666,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:667,1
    - Dst: strcmp
      Src: /src/unbound/testcode/fake_event.c:668,1
    - Dst: log_err
      Src: /src/unbound/testcode/fake_event.c:669,1
    - Dst: log_err
      Src: /src/unbound/testcode/fake_event.c:670,1
    - Dst: log_err
      Src: /src/unbound/testcode/fake_event.c:671,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:672,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:676,1
    - Dst: fprintf
      Src: /src/unbound/testcode/fake_event.c:677,1
    - Dst: fgets
      Src: /src/unbound/testcode/fake_event.c:679,1
    - Dst: log_err
      Src: /src/unbound/testcode/fake_event.c:680,1
    - Dst: fprintf
      Src: /src/unbound/testcode/fake_event.c:683,1
    - Dst: fgets
      Src: /src/unbound/testcode/fake_event.c:684,1
    - Dst: fclose
      Src: /src/unbound/testcode/fake_event.c:687,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:689,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:690,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 2
    argNames:
    - runtime
    - mom
    argTypes:
    - struct replay_runtime*
    - struct replay_moment*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 641
    functionDepth: 5
    functionLinenumber: 641
    functionLinenumberEnd: 691
    functionName: tempfile_check
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_err
    - strcmp
    - fake_temp_file
    - fclose
    - log_info
    - fatal_exit
    - free
    - strip_end_white
    - fopen
    - log_assert
    - strerror
    - fgets
    - fprintf
    - macro_process
    linkageType: ''
    returnType: void
    signature: void tempfile_check(struct replay_runtime* runtime, struct replay_moment*
      mom)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/testcode/fake_event.c:700,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:701,1
    - Dst: infra_rtt_update
      Src: /src/unbound/testcode/fake_event.c:702,1
    - Dst: atoi
      Src: /src/unbound/testcode/fake_event.c:703,1
    - Dst: log_addr
      Src: /src/unbound/testcode/fake_event.c:705,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:706,1
    - Dst: atoi
      Src: /src/unbound/testcode/fake_event.c:707,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:708,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:709,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - runtime
    argTypes:
    - struct replay_runtime*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 694
    functionDepth: 5
    functionLinenumber: 694
    functionLinenumberEnd: 710
    functionName: do_infra_rtt
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - infra_rtt_update
    - log_info
    - fatal_exit
    - free
    - atoi
    - sldns_str2wire_dname
    - log_addr
    linkageType: ''
    returnType: void
    signature: void do_infra_rtt(struct replay_runtime* runtime)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_rr_question_buf
      Src: /src/unbound/testcode/fake_event.c:722,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:724,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:726,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/testcode/fake_event.c:729,1
    - Dst: sldns_wirerr_get_class
      Src: /src/unbound/testcode/fake_event.c:730,1
    - Dst: query_info_hash
      Src: /src/unbound/testcode/fake_event.c:732,1
    - Dst: slabhash_remove
      Src: /src/unbound/testcode/fake_event.c:733,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - runtime
    argTypes:
    - struct replay_runtime*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 713
    functionDepth: 7
    functionLinenumber: 713
    functionLinenumberEnd: 734
    functionName: do_flush_message
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - slabhash_remove
    - log_info
    - fatal_exit
    - query_info_hash
    - sldns_wirerr_get_type
    - sldns_str2wire_rr_question_buf
    - sldns_wirerr_get_class
    linkageType: ''
    returnType: void
    signature: void do_flush_message(struct replay_runtime* runtime)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_str2wire_rr_question_buf
      Src: /src/unbound/testcode/fake_event.c:747,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:749,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:751,1
    - Dst: sldns_wirerr_get_type
      Src: /src/unbound/testcode/fake_event.c:754,1
    - Dst: sldns_wirerr_get_class
      Src: /src/unbound/testcode/fake_event.c:755,1
    - Dst: query_info_hash
      Src: /src/unbound/testcode/fake_event.c:757,1
    - Dst: slabhash_lookup
      Src: /src/unbound/testcode/fake_event.c:759,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/testcode/fake_event.c:768,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 1
    argNames:
    - runtime
    argTypes:
    - struct replay_runtime*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 770
      start: 737
    functionDepth: 7
    functionLinenumber: 737
    functionLinenumberEnd: 770
    functionName: do_expire_message
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - lock_rw_unlock
    - log_info
    - fatal_exit
    - slabhash_lookup
    - query_info_hash
    - sldns_wirerr_get_type
    - sldns_str2wire_rr_question_buf
    - sldns_wirerr_get_class
    linkageType: ''
    returnType: void
    signature: void do_expire_message(struct replay_runtime* runtime)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: infra_host
      Src: /src/unbound/testcode/fake_event.c:781,1
    - Dst: infra_rtt_update
      Src: /src/unbound/testcode/fake_event.c:785,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:787,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - runtime
    argTypes:
    - struct replay_runtime*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 773
    functionDepth: 5
    functionLinenumber: 773
    functionLinenumberEnd: 788
    functionName: expon_timeout_backoff
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - infra_host
    - infra_rtt_update
    - log_info
    linkageType: ''
    returnType: void
    signature: void expon_timeout_backoff(struct replay_runtime* runtime)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - runtime
    argTypes:
    - struct replay_runtime*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 793
    functionDepth: 0
    functionLinenumber: 793
    functionLinenumberEnd: 799
    functionName: advance_moment
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void advance_moment(struct replay_runtime* runtime)
  - BBCount: 19
    BranchProfiles: []
    Callsites:
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:811,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:814,1
    - Dst: repevt_string
      Src: /src/unbound/testcode/fake_event.c:815,1
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:818,1
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:825,1
    - Dst: fake_front_query
      Src: /src/unbound/testcode/fake_event.c:826,1
    - Dst: log_err
      Src: /src/unbound/testcode/fake_event.c:830,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:831,1
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:835,1
    - Dst: expon_timeout_backoff
      Src: /src/unbound/testcode/fake_event.c:836,1
    - Dst: fake_pending_callback
      Src: /src/unbound/testcode/fake_event.c:837,1
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:841,1
    - Dst: fake_pending_callback
      Src: /src/unbound/testcode/fake_event.c:842,1
    - Dst: log_err
      Src: /src/unbound/testcode/fake_event.c:846,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:847,1
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:851,1
    - Dst: fake_pending_callback
      Src: /src/unbound/testcode/fake_event.c:852,1
    - Dst: time_passes
      Src: /src/unbound/testcode/fake_event.c:855,1
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:856,1
    - Dst: autotrust_check
      Src: /src/unbound/testcode/fake_event.c:859,1
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:860,1
    - Dst: tempfile_check
      Src: /src/unbound/testcode/fake_event.c:863,1
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:864,1
    - Dst: moment_assign
      Src: /src/unbound/testcode/fake_event.c:867,1
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:868,1
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:871,1
    - Dst: do_infra_rtt
      Src: /src/unbound/testcode/fake_event.c:874,1
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:875,1
    - Dst: do_flush_message
      Src: /src/unbound/testcode/fake_event.c:878,1
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:879,1
    - Dst: do_expire_message
      Src: /src/unbound/testcode/fake_event.c:882,1
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:883,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:886,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 74
    argCount: 1
    argNames:
    - runtime
    argTypes:
    - struct replay_runtime*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 889
      start: 806
    functionDepth: 11
    functionLinenumber: 806
    functionLinenumberEnd: 889
    functionName: do_moment_and_advance
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_err
    - autotrust_check
    - do_infra_rtt
    - advance_moment
    - do_expire_message
    - repevt_string
    - expon_timeout_backoff
    - log_info
    - time_passes
    - fatal_exit
    - do_flush_message
    - tempfile_check
    - fake_pending_callback
    - fake_front_query
    - moment_assign
    linkageType: ''
    returnType: void
    signature: void do_moment_and_advance(struct replay_runtime* runtime)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:900,1
    - Dst: pending_matches_current
      Src: /src/unbound/testcode/fake_event.c:906,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:907,1
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:909,1
    - Dst: answer_callback_from_entry
      Src: /src/unbound/testcode/fake_event.c:911,1
    - Dst: answer_check_it
      Src: /src/unbound/testcode/fake_event.c:915,1
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:916,1
    - Dst: pending_matches_range
      Src: /src/unbound/testcode/fake_event.c:917,1
    - Dst: answer_callback_from_entry
      Src: /src/unbound/testcode/fake_event.c:920,1
    - Dst: do_moment_and_advance
      Src: /src/unbound/testcode/fake_event.c:922,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:924,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:927,1
    - Dst: log_err
      Src: /src/unbound/testcode/fake_event.c:932,1
    - Dst: log_pkt
      Src: /src/unbound/testcode/fake_event.c:934,1
    - Dst: log_addr
      Src: /src/unbound/testcode/fake_event.c:935,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:937,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:940,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:942,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 38
    argCount: 1
    argNames:
    - runtime
    argTypes:
    - struct replay_runtime*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 944
      start: 892
    functionDepth: 13
    functionLinenumber: 892
    functionLinenumberEnd: 944
    functionName: run_scenario
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_err
    - answer_callback_from_entry
    - pending_matches_range
    - advance_moment
    - log_pkt
    - log_info
    - answer_check_it
    - do_moment_and_advance
    - fatal_exit
    - pending_matches_current
    - log_addr
    linkageType: ''
    returnType: void
    signature: void run_scenario(struct replay_runtime* runtime)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:966,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/fake_event.c:970,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:972,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 19
    argNames:
    - base
    - ATTR_UNUSED(ports)
    - bufsize
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(http_endpoint)
    - ATTR_UNUSED
    - ATTR_UNUSED(tcp_conn_limit)
    - ATTR_UNUSED(dot_sslctx)
    - ATTR_UNUSED(doh_sslctx)
    - ATTR_UNUSED(quic_ssl)
    - ATTR_UNUSED(dtenv)
    - ATTR_UNUSED(table)
    - ATTR_UNUSED(rnd)
    - ATTR_UNUSED(cfg)
    - cb
    - cb_arg
    argTypes:
    - struct comm_base*
    - struct listen_port*
    - size_t
    - int
    - int
    - int
    - uint32_t
    - char*
    - int
    - struct tcl_list*
    - void*
    - void*
    - void*
    - struct dt_env*
    - struct doq_table*
    - struct ub_randstate*
    - struct config_file*
    - comm_point_callback_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 948
    functionDepth: 2
    functionLinenumber: 948
    functionLinenumberEnd: 979
    functionName: listen_create
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached:
    - free
    - sldns_buffer_new
    - calloc
    linkageType: ''
    returnType: struct listen_dnsport
    signature: "struct listen_dnsport *\nlisten_create(struct comm_base* base, struct
      listen_port* ATTR_UNUSED(ports),\n\tsize_t bufsize, int ATTR_UNUSED(tcp_accept_count),\n\tint
      ATTR_UNUSED(tcp_idle_timeout),\n\tint ATTR_UNUSED(harden_large_queries),\n\tuint32_t
      ATTR_UNUSED(http_max_streams),\n\tchar* ATTR_UNUSED(http_endpoint),\n\tint ATTR_UNUSED(http_notls),\n\tstruct
      tcl_list* ATTR_UNUSED(tcp_conn_limit),\n\tvoid* ATTR_UNUSED(dot_sslctx), void*
      ATTR_UNUSED(doh_sslctx),\n\tvoid* ATTR_UNUSED(quic_ssl),\n\tstruct dt_env* ATTR_UNUSED(dtenv),\n\tstruct
      doq_table* ATTR_UNUSED(table),\n\tstruct ub_randstate* ATTR_UNUSED(rnd),\n\tstruct
      config_file* ATTR_UNUSED(cfg),\n\tcomm_point_callback_type* cb, void *cb_arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/fake_event.c:986,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:987,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - listen
    argTypes:
    - struct listen_dnsport*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 981
    functionDepth: 2
    functionLinenumber: 981
    functionLinenumberEnd: 988
    functionName: listen_delete
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 2
    functionsReached:
    - free
    - sldns_buffer_free
    linkageType: ''
    returnType: void
    signature: void listen_delete(struct listen_dnsport* listen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:995,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:997,1
    - Dst: macro_store_create
      Src: /src/unbound/testcode/fake_event.c:999,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:1000,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1002
      start: 990
    functionDepth: 2
    functionLinenumber: 990
    functionLinenumberEnd: 1002
    functionName: comm_base_create
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 3
    functionsReached:
    - macro_store_create
    - calloc
    - fatal_exit
    linkageType: ''
    returnType: struct comm_base
    signature: 'struct comm_base *

      comm_base_create(int ATTR_UNUSED(sigs))'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: delete_fake_pending
      Src: /src/unbound/testcode/fake_event.c:1017,1
    - Dst: delete_replay_answer
      Src: /src/unbound/testcode/fake_event.c:1023,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1029,1
    - Dst: macro_store_delete
      Src: /src/unbound/testcode/fake_event.c:1032,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1033,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 1
    argNames:
    - b
    argTypes:
    - struct comm_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 1004
    functionDepth: 3
    functionLinenumber: 1004
    functionLinenumberEnd: 1034
    functionName: comm_base_delete
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 3
    functionsReached:
    - free
    - delete_replay_answer
    - delete_fake_pending
    - macro_store_delete
    linkageType: ''
    returnType: void
    signature: void comm_base_delete(struct comm_base* b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - b
    - tt
    - tv
    argTypes:
    - struct comm_base*
    - time_t**
    - struct timeval**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1042
      start: 1036
    functionDepth: 0
    functionLinenumber: 1036
    functionLinenumberEnd: 1042
    functionName: comm_base_timept
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void comm_base_timept(struct comm_base* b, time_t** tt, struct timeval**
      tv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: run_scenario
      Src: /src/unbound/testcode/fake_event.c:1048,1
    - Dst: exit
      Src: /src/unbound/testcode/fake_event.c:1051,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - b
    argTypes:
    - struct comm_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1052
      start: 1044
    functionDepth: 14
    functionLinenumber: 1044
    functionLinenumberEnd: 1052
    functionName: comm_base_dispatch
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 3
    functionsReached:
    - run_scenario
    - exit
    linkageType: ''
    returnType: void
    signature: void comm_base_dispatch(struct comm_base* b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:1060,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - b
    argTypes:
    - struct comm_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1062
      start: 1054
    functionDepth: 0
    functionLinenumber: 1054
    functionLinenumberEnd: 1062
    functionName: comm_base_exit
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 9
    functionsReached:
    - fatal_exit
    linkageType: ''
    returnType: void
    signature: void comm_base_exit(struct comm_base* b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:1071,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - base
    - cb_arg
    argTypes:
    - struct comm_base*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 1064
    functionDepth: 1
    functionLinenumber: 1064
    functionLinenumberEnd: 1072
    functionName: comm_signal_create
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached:
    - calloc
    linkageType: ''
    returnType: struct comm_signal
    signature: "struct comm_signal *\ncomm_signal_create(struct comm_base* base,\n
      \       void (*callback)(int, void*), void* cb_arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED(comsig)
    - ATTR_UNUSED
    argTypes:
    - struct comm_signal*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1074
    functionDepth: 0
    functionLinenumber: 1074
    functionLinenumberEnd: 1079
    functionName: comm_signal_bind
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int comm_signal_bind(struct comm_signal* ATTR_UNUSED(comsig), int\n\tATTR_UNUSED(sig))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1084,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - comsig
    argTypes:
    - struct comm_signal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1085
      start: 1081
    functionDepth: 1
    functionLinenumber: 1081
    functionLinenumberEnd: 1085
    functionName: comm_signal_delete
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void comm_signal_delete(struct comm_signal* comsig)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:1090,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1093,1
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1095,1
    - Dst: memcpy
      Src: /src/unbound/testcode/fake_event.c:1096,1
    - Dst: memdup
      Src: /src/unbound/testcode/fake_event.c:1104,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/fake_event.c:1104,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:1105,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:1106,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:1107,1
    - Dst: log_pkt
      Src: /src/unbound/testcode/fake_event.c:1108,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 1
    argNames:
    - repinfo
    argTypes:
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1087
    functionDepth: 3
    functionLinenumber: 1087
    functionLinenumberEnd: 1109
    functionName: comm_point_send_reply
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 3
    functionsReached:
    - memcpy
    - log_pkt
    - log_info
    - sldns_buffer_limit
    - fatal_exit
    - calloc
    - log_assert
    - sldns_buffer_begin
    - memdup
    linkageType: ''
    returnType: void
    signature: void comm_point_send_reply(struct comm_reply* repinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1114,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/fake_event.c:1116,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1117,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - repinfo
    argTypes:
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1111
    functionDepth: 2
    functionLinenumber: 1111
    functionLinenumberEnd: 1119
    functionName: comm_point_drop_reply
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 7
    functionsReached:
    - free
    - log_info
    - sldns_buffer_free
    linkageType: ''
    returnType: void
    signature: void comm_point_drop_reply(struct comm_reply* repinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:1141,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/fake_event.c:1148,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1150,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 25
    argNames:
    - base
    - bufsize
    - ATTR_UNUSED
    - ATTR_UNUSED(ifs)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - infra
    - ATTR_UNUSED(rnd)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(unwanted_param)
    - ATTR_UNUSED
    - ATTR_UNUSED(sslctx)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(dtenv)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(shared_ports)
    argTypes:
    - struct comm_base*
    - size_t
    - size_t
    - char**
    - int
    - int
    - int
    - size_t
    - int
    - struct infra_cache*
    - struct ub_randstate*
    - int
    - size_t
    - int
    - void*
    - int
    - void*
    - int
    - int
    - struct dt_env*
    - int
    - int
    - int
    - int
    - struct shared_ports*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1154
      start: 1121
    functionDepth: 2
    functionLinenumber: 1121
    functionLinenumberEnd: 1154
    functionName: outside_network_create
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 2
    functionsReached:
    - free
    - sldns_buffer_new
    - calloc
    linkageType: ''
    returnType: struct outside_network
    signature: "struct outside_network *\noutside_network_create(struct comm_base*
      base, size_t bufsize,\n\tsize_t ATTR_UNUSED(num_ports), char** ATTR_UNUSED(ifs),\n\tint
      ATTR_UNUSED(num_ifs), int ATTR_UNUSED(do_ip4),\n\tint ATTR_UNUSED(do_ip6), size_t
      ATTR_UNUSED(num_tcp),\n\tint ATTR_UNUSED(dscp),\n\tstruct infra_cache* infra,\n\tstruct
      ub_randstate* ATTR_UNUSED(rnd),\n\tint ATTR_UNUSED(use_caps_for_id),\n\tsize_t
      ATTR_UNUSED(unwanted_threshold),\n\tint ATTR_UNUSED(outgoing_tcp_mss),\n\tvoid
      (*unwanted_action)(void*), void* ATTR_UNUSED(unwanted_param),\n\tint ATTR_UNUSED(do_udp),
      void* ATTR_UNUSED(sslctx),\n\tint ATTR_UNUSED(delayclose), int ATTR_UNUSED(tls_use_sni),\n\tstruct
      dt_env* ATTR_UNUSED(dtenv), int ATTR_UNUSED(udp_connect),\n\tint ATTR_UNUSED(max_reuse_tcp_queries),
      int ATTR_UNUSED(tcp_reuse_timeout),\n\tint ATTR_UNUSED(tcp_auth_query_timeout),\n\tstruct
      shared_ports* ATTR_UNUSED(shared_ports))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/fake_event.c:1161,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1162,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - outnet
    argTypes:
    - struct outside_network*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1163
      start: 1156
    functionDepth: 2
    functionLinenumber: 1156
    functionLinenumberEnd: 1163
    functionName: outside_network_delete
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 3
    functionsReached:
    - free
    - sldns_buffer_free
    linkageType: ''
    returnType: void
    signature: void outside_network_delete(struct outside_network* outnet)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED(outnet)
    argTypes:
    - struct outside_network*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1168
      start: 1165
    functionDepth: 0
    functionLinenumber: 1165
    functionLinenumberEnd: 1168
    functionName: outside_network_quit_prepare
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void outside_network_quit_prepare(struct outside_network* ATTR_UNUSED(outnet))
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:1176,1
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1178,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/fake_event.c:1179,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/testcode/fake_event.c:1179,1
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1180,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/fake_event.c:1181,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/fake_event.c:1181,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:1182,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/fake_event.c:1183,1
    - Dst: memcpy
      Src: /src/unbound/testcode/fake_event.c:1184,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:1194,1
    - Dst: memdup
      Src: /src/unbound/testcode/fake_event.c:1195,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/fake_event.c:1195,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:1196,1
    - Dst: log_pkt
      Src: /src/unbound/testcode/fake_event.c:1197,1
    - Dst: sockaddr_cmp
      Src: /src/unbound/testcode/fake_event.c:1201,1
    - Dst: find_match
      Src: /src/unbound/testcode/fake_event.c:1204,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1206,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1208,1
    - Dst: repevt_string
      Src: /src/unbound/testcode/fake_event.c:1209,1
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:1210,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1213,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 5
    argNames:
    - sq
    - packet
    - timeout
    - callback
    - callback_arg
    argTypes:
    - struct serviced_query*
    - sldns_buffer*
    - int
    - comm_point_callback_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1170
    functionDepth: 11
    functionLinenumber: 1170
    functionLinenumberEnd: 1218
    functionName: pending_udp_query
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached:
    - sldns_buffer_capacity
    - sldns_buffer_new
    - memcpy
    - sldns_buffer_write
    - advance_moment
    - repevt_string
    - log_pkt
    - log_info
    - sldns_buffer_flip
    - sldns_buffer_limit
    - fatal_exit
    - calloc
    - log_assert
    - sldns_buffer_begin
    - find_match
    - memdup
    - sockaddr_cmp
    linkageType: ''
    returnType: struct pending
    signature: "struct pending *\npending_udp_query(struct serviced_query* sq, sldns_buffer*
      packet,\n\tint timeout, comm_point_callback_type* callback, void* callback_arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:1226,1
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1228,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/fake_event.c:1229,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/testcode/fake_event.c:1229,1
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1230,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/fake_event.c:1231,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/fake_event.c:1231,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:1232,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/fake_event.c:1233,1
    - Dst: memcpy
      Src: /src/unbound/testcode/fake_event.c:1234,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:1244,1
    - Dst: memdup
      Src: /src/unbound/testcode/fake_event.c:1245,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/fake_event.c:1245,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:1246,1
    - Dst: log_pkt
      Src: /src/unbound/testcode/fake_event.c:1247,1
    - Dst: sockaddr_cmp
      Src: /src/unbound/testcode/fake_event.c:1251,1
    - Dst: find_match
      Src: /src/unbound/testcode/fake_event.c:1254,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1256,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1258,1
    - Dst: repevt_string
      Src: /src/unbound/testcode/fake_event.c:1259,1
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:1260,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1263,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 30
    argCount: 5
    argNames:
    - sq
    - packet
    - timeout
    - callback
    - callback_arg
    argTypes:
    - struct serviced_query*
    - sldns_buffer*
    - int
    - comm_point_callback_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1268
      start: 1220
    functionDepth: 11
    functionLinenumber: 1220
    functionLinenumberEnd: 1268
    functionName: pending_tcp_query
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 2
    functionsReached:
    - sldns_buffer_capacity
    - sldns_buffer_new
    - memcpy
    - sldns_buffer_write
    - advance_moment
    - repevt_string
    - log_pkt
    - log_info
    - sldns_buffer_flip
    - sldns_buffer_limit
    - fatal_exit
    - calloc
    - log_assert
    - sldns_buffer_begin
    - find_match
    - memdup
    - sockaddr_cmp
    linkageType: ''
    returnType: struct waiting_tcp
    signature: "struct waiting_tcp *\npending_tcp_query(struct serviced_query* sq,
      sldns_buffer* packet,\n\tint timeout, comm_point_callback_type* callback, void*
      callback_arg)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:1283,1
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1286,1
    - Dst: log_nametypeclass
      Src: /src/unbound/testcode/fake_event.c:1287,1
    - Dst: dname_str
      Src: /src/unbound/testcode/fake_event.c:1289,1
    - Dst: verbose
      Src: /src/unbound/testcode/fake_event.c:1290,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/fake_event.c:1295,1
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1296,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/fake_event.c:1297,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/fake_event.c:1298,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/fake_event.c:1299,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/fake_event.c:1300,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/fake_event.c:1301,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/fake_event.c:1302,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/testcode/fake_event.c:1303,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/fake_event.c:1304,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/testcode/fake_event.c:1305,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/testcode/fake_event.c:1306,1
    - Dst: edns_opt_copy_region
      Src: /src/unbound/testcode/fake_event.c:1316,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1319,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:1320,1
    - Dst: inplace_cb_query_call
      Src: /src/unbound/testcode/fake_event.c:1324,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1326,1
    - Dst: edns_string_addr_lookup
      Src: /src/unbound/testcode/fake_event.c:1333,1
    - Dst: edns_opt_list_append
      Src: /src/unbound/testcode/fake_event.c:1336,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/testcode/fake_event.c:1355,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:1356,1
    - Dst: calc_edns_field_size
      Src: /src/unbound/testcode/fake_event.c:1357,1
    - Dst: attach_edns_record
      Src: /src/unbound/testcode/fake_event.c:1358,1
    - Dst: verbose
      Src: /src/unbound/testcode/fake_event.c:1360,1
    - Dst: memcpy
      Src: /src/unbound/testcode/fake_event.c:1363,1
    - Dst: memdup
      Src: /src/unbound/testcode/fake_event.c:1365,1
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1368,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:1376,1
    - Dst: memdup
      Src: /src/unbound/testcode/fake_event.c:1377,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/fake_event.c:1377,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:1378,1
    - Dst: sockaddr_cmp
      Src: /src/unbound/testcode/fake_event.c:1383,1
    - Dst: find_match
      Src: /src/unbound/testcode/fake_event.c:1386,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1388,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1390,1
    - Dst: repevt_string
      Src: /src/unbound/testcode/fake_event.c:1391,1
    - Dst: advance_moment
      Src: /src/unbound/testcode/fake_event.c:1392,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1395,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 80
    argCount: 21
    argNames:
    - outnet
    - qinfo
    - flags
    - dnssec
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - tcp_upstream
    - ATTR_UNUSED
    - ATTR_UNUSED(tls_auth_name)
    - addr
    - addrlen
    - zone
    - zonelen
    - qstate
    - callback
    - callback_arg
    - ATTR_UNUSED(buff)
    - env
    - ATTR_UNUSED(was_ratelimited)
    - ATTR_UNUSED(ratelimit_incremented)
    argTypes:
    - struct outside_network*
    - struct query_info*
    - uint16_t
    - int
    - int
    - int
    - int
    - int
    - int
    - char*
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - struct module_qstate*
    - comm_point_callback_type*
    - void*
    - sldns_buffer*
    - struct module_env*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1400
      start: 1270
    functionDepth: 11
    functionLinenumber: 1270
    functionLinenumberEnd: 1400
    functionName: outnet_serviced_query
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 2
    functionsReached:
    - edns_opt_list_append
    - sldns_buffer_new
    - log_nametypeclass
    - attach_edns_record
    - log_info
    - inplace_cb_query_call
    - calloc
    - sldns_buffer_begin
    - find_match
    - calc_edns_field_size
    - memcpy
    - sldns_buffer_write
    - advance_moment
    - verbose
    - repevt_string
    - edns_string_addr_lookup
    - sldns_buffer_write_u16
    - free
    - log_assert
    - edns_opt_copy_region
    - sldns_buffer_capacity
    - sldns_buffer_flip
    - sldns_buffer_limit
    - dname_str
    - fatal_exit
    - memdup
    - sockaddr_cmp
    linkageType: ''
    returnType: struct serviced_query
    signature: "struct serviced_query * outnet_serviced_query(struct outside_network*
      outnet,\n\tstruct query_info* qinfo, uint16_t flags, int dnssec,\n\tint ATTR_UNUSED(want_dnssec),
      int ATTR_UNUSED(nocaps),\n\tint ATTR_UNUSED(check_ratelimit),\n\tint tcp_upstream,
      int ATTR_UNUSED(ssl_upstream),\n\tchar* ATTR_UNUSED(tls_auth_name), struct sockaddr_storage*
      addr,\n\tsocklen_t addrlen, uint8_t* zone, size_t zonelen,\n\tstruct module_qstate*
      qstate, comm_point_callback_type* callback,\n\tvoid* callback_arg, sldns_buffer*
      ATTR_UNUSED(buff),\n\tstruct module_env* env, int* ATTR_UNUSED(was_ratelimited),\n\tint*
      ATTR_UNUSED(ratelimit_incremented))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1410,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1412,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/testcode/fake_event.c:1416,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1417,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1418,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1419,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1425,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 2
    argNames:
    - sq
    - cb_arg
    argTypes:
    - struct serviced_query*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1426
      start: 1402
    functionDepth: 2
    functionLinenumber: 1402
    functionLinenumberEnd: 1426
    functionName: outnet_serviced_query_stop
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 2
    functionsReached:
    - free
    - sldns_buffer_free
    - log_info
    - log_assert
    linkageType: ''
    returnType: void
    signature: void outnet_serviced_query_stop(struct serviced_query* sq, void* cb_arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ATTR_UNUSED(ifs)
    - ATTR_UNUSED
    - ATTR_UNUSED(list)
    - ATTR_UNUSED(resif)
    - ATTR_UNUSED(num_resif)
    argTypes:
    - char**
    - int
    - struct config_strlist*
    - char***
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1433
      start: 1428
    functionDepth: 0
    functionLinenumber: 1428
    functionLinenumberEnd: 1433
    functionName: resolve_interface_names
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int resolve_interface_names(char** ATTR_UNUSED(ifs), int ATTR_UNUSED(num_ifs),\n\tstruct
      config_strlist* ATTR_UNUSED(list), char*** ATTR_UNUSED(resif),\n\tint* ATTR_UNUSED(num_resif))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:1439,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ATTR_UNUSED(cfg)
    - ATTR_UNUSED(ifs)
    - ATTR_UNUSED
    - ATTR_UNUSED(reuseport)
    argTypes:
    - struct config_file*
    - char**
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1440
      start: 1435
    functionDepth: 1
    functionLinenumber: 1435
    functionLinenumberEnd: 1440
    functionName: listening_ports_open
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached:
    - calloc
    linkageType: ''
    returnType: struct listen_port
    signature: "struct listen_port * listening_ports_open(struct config_file* ATTR_UNUSED(cfg),\n\tchar**
      ATTR_UNUSED(ifs), int ATTR_UNUSED(num_ifs),\n\tint* ATTR_UNUSED(reuseport))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1444,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct listen_port*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1445
      start: 1442
    functionDepth: 1
    functionLinenumber: 1442
    functionLinenumberEnd: 1445
    functionName: listening_ports_free
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 4
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void listening_ports_free(struct listen_port* list)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:1452,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - ATTR_UNUSED(base)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(callback)
    - ATTR_UNUSED(callback_arg)
    argTypes:
    - struct comm_base*
    - int
    - size_t
    - comm_point_callback_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1457
      start: 1447
    functionDepth: 1
    functionLinenumber: 1447
    functionLinenumberEnd: 1457
    functionName: comm_point_create_local
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - calloc
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point * comm_point_create_local(struct comm_base* ATTR_UNUSED(base),\n
      \       int ATTR_UNUSED(fd), size_t ATTR_UNUSED(bufsize),\n        comm_point_callback_type*
      ATTR_UNUSED(callback),\n\tvoid* ATTR_UNUSED(callback_arg))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:1465,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 5
    argNames:
    - ATTR_UNUSED(base)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(callback)
    - ATTR_UNUSED(callback_arg)
    argTypes:
    - struct comm_base*
    - int
    - int
    - comm_point_callback_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1470
      start: 1459
    functionDepth: 1
    functionLinenumber: 1459
    functionLinenumberEnd: 1470
    functionName: comm_point_create_raw
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 2
    functionsReached:
    - calloc
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point * comm_point_create_raw(struct comm_base* ATTR_UNUSED(base),\n
      \       int ATTR_UNUSED(fd), int ATTR_UNUSED(writing),\n        comm_point_callback_type*
      ATTR_UNUSED(callback),\n\tvoid* ATTR_UNUSED(callback_arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct comm_point*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1476
      start: 1472
    functionDepth: 0
    functionLinenumber: 1472
    functionLinenumberEnd: 1476
    functionName: comm_point_start_listening
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void comm_point_start_listening(struct comm_point* ATTR_UNUSED(c),\n\tint
      ATTR_UNUSED(newfd), int ATTR_UNUSED(sec))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED(c)
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1481
      start: 1478
    functionDepth: 0
    functionLinenumber: 1478
    functionLinenumberEnd: 1481
    functionName: comm_point_stop_listening
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void comm_point_stop_listening(struct comm_point* ATTR_UNUSED(c))
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1488,1
    - Dst: pending_list_delete
      Src: /src/unbound/testcode/fake_event.c:1491,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1493,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1494
      start: 1484
    functionDepth: 4
    functionLinenumber: 1484
    functionLinenumberEnd: 1494
    functionName: comm_point_delete
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 19
    functionsReached:
    - free
    - pending_list_delete
    - log_assert
    linkageType: ''
    returnType: void
    signature: void comm_point_delete(struct comm_point* c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(listen)
    argTypes:
    - struct listen_dnsport*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1499
      start: 1496
    functionDepth: 0
    functionLinenumber: 1496
    functionLinenumberEnd: 1499
    functionName: listen_get_mem
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t listen_get_mem(struct listen_dnsport* ATTR_UNUSED(listen))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(outnet)
    argTypes:
    - struct outside_network*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1504
      start: 1501
    functionDepth: 0
    functionLinenumber: 1501
    functionLinenumberEnd: 1504
    functionName: outnet_get_mem
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t outnet_get_mem(struct outside_network* ATTR_UNUSED(outnet))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(c)
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1509
      start: 1506
    functionDepth: 0
    functionLinenumber: 1506
    functionLinenumberEnd: 1509
    functionName: comm_point_get_mem
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t comm_point_get_mem(struct comm_point* ATTR_UNUSED(c))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(timer)
    argTypes:
    - struct comm_timer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1514
      start: 1511
    functionDepth: 0
    functionLinenumber: 1511
    functionLinenumberEnd: 1514
    functionName: comm_timer_get_mem
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t comm_timer_get_mem(struct comm_timer* ATTR_UNUSED(timer))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(c)
    argTypes:
    - struct serviced_query*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1519
      start: 1516
    functionDepth: 0
    functionLinenumber: 1516
    functionLinenumberEnd: 1519
    functionName: serviced_get_mem
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t serviced_get_mem(struct serviced_query* ATTR_UNUSED(c))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1526,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(reply_info)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1528
      start: 1522
    functionDepth: 1
    functionLinenumber: 1522
    functionLinenumberEnd: 1528
    functionName: outnet_udp_cb
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int outnet_udp_cb(struct comm_point* ATTR_UNUSED(c),\n\tvoid* ATTR_UNUSED(arg),
      int ATTR_UNUSED(error),\n        struct comm_reply *ATTR_UNUSED(reply_info))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1534,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(reply_info)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1536
      start: 1530
    functionDepth: 1
    functionLinenumber: 1530
    functionLinenumberEnd: 1536
    functionName: outnet_tcp_cb
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int outnet_tcp_cb(struct comm_point* ATTR_UNUSED(c),\n\tvoid* ATTR_UNUSED(arg),
      int ATTR_UNUSED(error),\n        struct comm_reply *ATTR_UNUSED(reply_info))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1540,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1541
      start: 1538
    functionDepth: 1
    functionLinenumber: 1538
    functionLinenumberEnd: 1541
    functionName: pending_udp_timer_cb
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void pending_udp_timer_cb(void *ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1545,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1546
      start: 1543
    functionDepth: 1
    functionLinenumber: 1543
    functionLinenumberEnd: 1546
    functionName: serviced_timer_cb
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void serviced_timer_cb(void *ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1550,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1548
    functionDepth: 1
    functionLinenumber: 1548
    functionLinenumberEnd: 1551
    functionName: pending_udp_timer_delay_cb
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void pending_udp_timer_delay_cb(void *ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1555,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1556
      start: 1553
    functionDepth: 1
    functionLinenumber: 1553
    functionLinenumberEnd: 1556
    functionName: outnet_tcptimer
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void outnet_tcptimer(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1561,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1562
      start: 1558
    functionDepth: 1
    functionLinenumber: 1558
    functionLinenumberEnd: 1562
    functionName: comm_point_udp_callback
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void comm_point_udp_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(event),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1567,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1568
      start: 1564
    functionDepth: 1
    functionLinenumber: 1564
    functionLinenumberEnd: 1568
    functionName: comm_point_udp_ancil_callback
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void comm_point_udp_ancil_callback(int ATTR_UNUSED(fd),\n\tshort ATTR_UNUSED(event),
      void* ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1573,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1574
      start: 1570
    functionDepth: 1
    functionLinenumber: 1570
    functionLinenumberEnd: 1574
    functionName: comm_point_tcp_accept_callback
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void comm_point_tcp_accept_callback(int ATTR_UNUSED(fd),\n\tshort
      ATTR_UNUSED(event), void* ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1579,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1580
      start: 1576
    functionDepth: 1
    functionLinenumber: 1576
    functionLinenumberEnd: 1580
    functionName: comm_point_tcp_handle_callback
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void comm_point_tcp_handle_callback(int ATTR_UNUSED(fd),\n\tshort
      ATTR_UNUSED(event), void* ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1585,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1586
      start: 1582
    functionDepth: 1
    functionLinenumber: 1582
    functionLinenumberEnd: 1586
    functionName: comm_timer_callback
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void comm_timer_callback(int ATTR_UNUSED(fd),\n\tshort ATTR_UNUSED(event),
      void* ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1591,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1592
      start: 1588
    functionDepth: 1
    functionLinenumber: 1588
    functionLinenumberEnd: 1592
    functionName: comm_signal_callback
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void comm_signal_callback(int ATTR_UNUSED(fd),\n\tshort ATTR_UNUSED(event),
      void* ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1598
      start: 1594
    functionDepth: 1
    functionLinenumber: 1594
    functionLinenumberEnd: 1598
    functionName: comm_point_http_handle_callback
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void comm_point_http_handle_callback(int ATTR_UNUSED(fd),\n\tshort
      ATTR_UNUSED(event), void* ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1603,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1604
      start: 1600
    functionDepth: 1
    functionLinenumber: 1600
    functionLinenumberEnd: 1604
    functionName: comm_point_local_handle_callback
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void comm_point_local_handle_callback(int ATTR_UNUSED(fd),\n\tshort
      ATTR_UNUSED(event), void* ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1609,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1610
      start: 1606
    functionDepth: 1
    functionLinenumber: 1606
    functionLinenumberEnd: 1610
    functionName: comm_point_raw_handle_callback
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void comm_point_raw_handle_callback(int ATTR_UNUSED(fd),\n\tshort
      ATTR_UNUSED(event), void* ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1615,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1616
      start: 1612
    functionDepth: 1
    functionLinenumber: 1612
    functionLinenumberEnd: 1616
    functionName: comm_base_handle_slow_accept
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void comm_base_handle_slow_accept(int ATTR_UNUSED(fd),\n\tshort ATTR_UNUSED(event),
      void* ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1622,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(reply_info)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1624
      start: 1618
    functionDepth: 1
    functionLinenumber: 1618
    functionLinenumberEnd: 1624
    functionName: serviced_udp_callback
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int serviced_udp_callback(struct comm_point* ATTR_UNUSED(c),\n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(reply_info))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1630,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(reply_info)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1632
      start: 1626
    functionDepth: 1
    functionLinenumber: 1626
    functionLinenumberEnd: 1632
    functionName: serviced_tcp_callback
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int serviced_tcp_callback(struct comm_point* ATTR_UNUSED(c),\n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(reply_info))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1636,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED(a)
    - ATTR_UNUSED(b)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1638
      start: 1634
    functionDepth: 1
    functionLinenumber: 1634
    functionLinenumberEnd: 1638
    functionName: pending_cmp
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int pending_cmp(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1642,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED(a)
    - ATTR_UNUSED(b)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1644
      start: 1640
    functionDepth: 1
    functionLinenumber: 1640
    functionLinenumberEnd: 1644
    functionName: serviced_cmp
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int serviced_cmp(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1648,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED(a)
    - ATTR_UNUSED(b)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1650
      start: 1646
    functionDepth: 1
    functionLinenumber: 1646
    functionLinenumberEnd: 1650
    functionName: reuse_cmp
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int reuse_cmp(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1654,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED(a)
    - ATTR_UNUSED(b)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1656
      start: 1652
    functionDepth: 1
    functionLinenumber: 1652
    functionLinenumberEnd: 1656
    functionName: reuse_id_cmp
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int reuse_id_cmp(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:1663,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:1665,1
    - Dst: fptr_ok
      Src: /src/unbound/testcode/fake_event.c:1668,1
    - Dst: fptr_whitelist_comm_timer
      Src: /src/unbound/testcode/fake_event.c:1668,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - base
    - cb_arg
    argTypes:
    - struct comm_base*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1673
      start: 1659
    functionDepth: 1
    functionLinenumber: 1659
    functionLinenumberEnd: 1673
    functionName: comm_timer_create
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 11
    functionsReached:
    - fptr_whitelist_comm_timer
    - calloc
    - fatal_exit
    - fptr_ok
    linkageType: ''
    returnType: struct comm_timer
    signature: "struct comm_timer * comm_timer_create(struct comm_base* base,\n\tvoid
      (*cb)(void*), void* cb_arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1678,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - timer
    argTypes:
    - struct comm_timer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1680
      start: 1675
    functionDepth: 1
    functionLinenumber: 1675
    functionLinenumberEnd: 1680
    functionName: comm_timer_disable
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 5
    functionsReached:
    - log_info
    linkageType: ''
    returnType: void
    signature: void comm_timer_disable(struct comm_timer* timer)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1687,1
    - Dst: timeval_add
      Src: /src/unbound/testcode/fake_event.c:1689,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - timer
    - tv
    argTypes:
    - struct comm_timer*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1690
      start: 1682
    functionDepth: 1
    functionLinenumber: 1682
    functionLinenumberEnd: 1690
    functionName: comm_timer_set
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 17
    functionsReached:
    - log_info
    - timeval_add
    linkageType: ''
    returnType: void
    signature: void comm_timer_set(struct comm_timer* timer, struct timeval* tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - timer
    argTypes:
    - struct comm_timer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1696
      start: 1692
    functionDepth: 0
    functionLinenumber: 1692
    functionLinenumberEnd: 1696
    functionName: comm_timer_is_set
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int comm_timer_is_set(struct comm_timer* timer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1717,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 1
    argNames:
    - timer
    argTypes:
    - struct comm_timer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1718
      start: 1698
    functionDepth: 1
    functionLinenumber: 1698
    functionLinenumberEnd: 1718
    functionName: comm_timer_delete
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 16
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void comm_timer_delete(struct comm_timer* timer)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED(b)
    - ATTR_UNUSED(arg)
    argTypes:
    - struct comm_base*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1727
      start: 1720
    functionDepth: 0
    functionLinenumber: 1720
    functionLinenumberEnd: 1727
    functionName: comm_base_set_slow_accept_handlers
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void comm_base_set_slow_accept_handlers(struct comm_base* ATTR_UNUSED(b),\n\tvoid
      (*stop_acc)(void*), void (*start_acc)(void*),\n\tvoid* ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(b)
    argTypes:
    - struct comm_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1733
      start: 1729
    functionDepth: 0
    functionLinenumber: 1729
    functionLinenumberEnd: 1733
    functionName: comm_base_internal
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: struct ub_event_base
    signature: struct ub_event_base * comm_base_internal(struct comm_base* ATTR_UNUSED(b))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED(worker)
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1737
      start: 1735
    functionDepth: 0
    functionLinenumber: 1735
    functionLinenumberEnd: 1737
    functionName: daemon_remote_exec
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void daemon_remote_exec(struct worker* ATTR_UNUSED(worker))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED(listen)
    argTypes:
    - struct listen_dnsport*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1741
      start: 1739
    functionDepth: 0
    functionLinenumber: 1739
    functionLinenumberEnd: 1741
    functionName: listen_start_accept
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void listen_start_accept(struct listen_dnsport* ATTR_UNUSED(listen))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED(listen)
    argTypes:
    - struct listen_dnsport*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1745
      start: 1743
    functionDepth: 0
    functionLinenumber: 1743
    functionLinenumberEnd: 1745
    functionName: listen_stop_accept
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void listen_stop_accept(struct listen_dnsport* ATTR_UNUSED(listen))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED(rc)
    argTypes:
    - struct daemon_remote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1749
      start: 1747
    functionDepth: 0
    functionLinenumber: 1747
    functionLinenumberEnd: 1749
    functionName: daemon_remote_start_accept
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void daemon_remote_start_accept(struct daemon_remote* ATTR_UNUSED(rc))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED(rc)
    argTypes:
    - struct daemon_remote*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1753
      start: 1751
    functionDepth: 0
    functionLinenumber: 1751
    functionLinenumberEnd: 1753
    functionName: daemon_remote_stop_accept
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void daemon_remote_stop_accept(struct daemon_remote* ATTR_UNUSED(rc))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 15
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(addr)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(inuse)
    - ATTR_UNUSED(noproto)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(reuseport)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - int
    - int
    - struct sockaddr*
    - socklen_t
    - int
    - int*
    - int*
    - int
    - int
    - int
    - int*
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1765
      start: 1755
    functionDepth: 0
    functionLinenumber: 1755
    functionLinenumberEnd: 1765
    functionName: create_udp_sock
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int create_udp_sock(int ATTR_UNUSED(family), int ATTR_UNUSED(socktype),\n\tstruct
      sockaddr* ATTR_UNUSED(addr), socklen_t ATTR_UNUSED(addrlen),\n\tint ATTR_UNUSED(v6only),
      int* ATTR_UNUSED(inuse),\n\tint* ATTR_UNUSED(noproto), int ATTR_UNUSED(rcv),
      int ATTR_UNUSED(snd),\n\tint ATTR_UNUSED(listen), int* ATTR_UNUSED(reuseport),\n\tint
      ATTR_UNUSED(transparent), int ATTR_UNUSED(freebind),\n\tint ATTR_UNUSED(use_systemd),
      int ATTR_UNUSED(dscp))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 7
    argNames:
    - ATTR_UNUSED(base)
    - ATTR_UNUSED
    - ATTR_UNUSED(buffer)
    - ATTR_UNUSED
    - ATTR_UNUSED(callback)
    - ATTR_UNUSED(callback_arg)
    - ATTR_UNUSED(socket)
    argTypes:
    - struct comm_base*
    - int
    - sldns_buffer*
    - int
    - comm_point_callback_type*
    - void*
    - struct unbound_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1776
      start: 1767
    functionDepth: 1
    functionLinenumber: 1767
    functionLinenumberEnd: 1776
    functionName: comm_point_create_udp
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 3
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point * comm_point_create_udp(struct comm_base *ATTR_UNUSED(base),\n\tint
      ATTR_UNUSED(fd), sldns_buffer* ATTR_UNUSED(buffer),\n\tint ATTR_UNUSED(pp2_enabled),\n\tcomm_point_callback_type*
      ATTR_UNUSED(callback),\n\tvoid* ATTR_UNUSED(callback_arg),\n\tstruct unbound_socket*
      ATTR_UNUSED(socket))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1783,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(base)
    - ATTR_UNUSED
    - ATTR_UNUSED(callback)
    - ATTR_UNUSED(callback_arg)
    argTypes:
    - struct comm_base*
    - size_t
    - comm_point_callback_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1785
      start: 1778
    functionDepth: 1
    functionLinenumber: 1778
    functionLinenumberEnd: 1785
    functionName: comm_point_create_tcp_out
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 2
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point * comm_point_create_tcp_out(struct comm_base*\n\tATTR_UNUSED(base),
      size_t ATTR_UNUSED(bufsize),\n\tcomm_point_callback_type* ATTR_UNUSED(callback),\n\tvoid*
      ATTR_UNUSED(callback_arg))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:1794,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 5
    argNames:
    - outnet
    - cb
    - cb_arg
    - ATTR_UNUSED(to_addr)
    - ATTR_UNUSED
    argTypes:
    - struct outside_network*
    - comm_point_callback_type*
    - void*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1804
      start: 1787
    functionDepth: 1
    functionLinenumber: 1787
    functionLinenumberEnd: 1804
    functionName: outnet_comm_point_for_udp
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached:
    - calloc
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point * outnet_comm_point_for_udp(struct outside_network*
      outnet,\n\tcomm_point_callback_type* cb, void* cb_arg,\n\tstruct sockaddr_storage*
      ATTR_UNUSED(to_addr),\n\tsocklen_t ATTR_UNUSED(to_addrlen))"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:1814,1
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:1816,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1819,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1820,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/fake_event.c:1832,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:1832,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1834,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1835,1
    - Dst: sldns_buffer_copy
      Src: /src/unbound/testcode/fake_event.c:1838,1
    - Dst: memcpy
      Src: /src/unbound/testcode/fake_event.c:1839,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/fake_event.c:1843,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/fake_event.c:1843,1
    - Dst: sldns_wire2str_rrquestion_buf
      Src: /src/unbound/testcode/fake_event.c:1846,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/testcode/fake_event.c:1846,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:1846,1
    - Dst: addr_to_str
      Src: /src/unbound/testcode/fake_event.c:1847,1
    - Dst: strip_end_white
      Src: /src/unbound/testcode/fake_event.c:1850,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1851,1
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1853,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:1853,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/testcode/fake_event.c:1854,1
    - Dst: dname_valid
      Src: /src/unbound/testcode/fake_event.c:1856,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/testcode/fake_event.c:1856,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:1857,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:1866,1
    - Dst: memdup
      Src: /src/unbound/testcode/fake_event.c:1867,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/fake_event.c:1867,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:1868,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1870,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 48
    argCount: 9
    argNames:
    - outnet
    - cb
    - cb_arg
    - to_addr
    - to_addrlen
    - query
    - timeout
    - ATTR_UNUSED
    - ATTR_UNUSED(host)
    argTypes:
    - struct outside_network*
    - comm_point_callback_type*
    - void*
    - struct sockaddr_storage*
    - socklen_t
    - struct sldns_buffer*
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1877
      start: 1806
    functionDepth: 4
    functionLinenumber: 1806
    functionLinenumberEnd: 1877
    functionName: outnet_comm_point_for_tcp
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached:
    - sldns_wire2str_rrquestion_buf
    - sldns_buffer_new
    - memcpy
    - sldns_buffer_at
    - addr_to_str
    - memdup
    - LDNS_QDCOUNT
    - log_info
    - sldns_buffer_limit
    - fatal_exit
    - free
    - strip_end_white
    - calloc
    - log_assert
    - dname_valid
    - sldns_buffer_begin
    - sldns_buffer_copy
    - sldns_buffer_read_u16_at
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point * outnet_comm_point_for_tcp(struct outside_network*
      outnet,\n\tcomm_point_callback_type* cb, void* cb_arg,\n\tstruct sockaddr_storage*
      to_addr, socklen_t to_addrlen,\n\tstruct sldns_buffer* query, int timeout, int
      ATTR_UNUSED(ssl),\n\tchar* ATTR_UNUSED(host))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:1886,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 17
    argCount: 10
    argNames:
    - outnet
    - cb
    - cb_arg
    - to_addr
    - to_addrlen
    - timeout
    - ssl
    - host
    - path
    - cfg
    argTypes:
    - struct outside_network*
    - comm_point_callback_type*
    - void*
    - struct sockaddr_storage*
    - socklen_t
    - int
    - int
    - char*
    - char*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1908
      start: 1879
    functionDepth: 1
    functionLinenumber: 1879
    functionLinenumberEnd: 1908
    functionName: outnet_comm_point_for_http
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached:
    - calloc
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point * outnet_comm_point_for_http(struct outside_network*
      outnet,\n\tcomm_point_callback_type* cb, void* cb_arg,\n\tstruct sockaddr_storage*
      to_addr, socklen_t to_addrlen, int timeout,\n\tint ssl, char* host, char* path,
      struct config_file* cfg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:1915,1
    - Dst: log_err
      Src: /src/unbound/testcode/fake_event.c:1918,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/testcode/fake_event.c:1924,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:1924,1
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1926,1
    - Dst: sldns_buffer_copy
      Src: /src/unbound/testcode/fake_event.c:1929,1
    - Dst: memcpy
      Src: /src/unbound/testcode/fake_event.c:1930,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/testcode/fake_event.c:1934,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/fake_event.c:1934,1
    - Dst: sldns_wire2str_rrquestion_buf
      Src: /src/unbound/testcode/fake_event.c:1937,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/testcode/fake_event.c:1937,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:1937,1
    - Dst: addr_to_str
      Src: /src/unbound/testcode/fake_event.c:1938,1
    - Dst: strip_end_white
      Src: /src/unbound/testcode/fake_event.c:1941,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1942,1
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1944,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:1944,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/testcode/fake_event.c:1945,1
    - Dst: dname_valid
      Src: /src/unbound/testcode/fake_event.c:1947,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/testcode/fake_event.c:1947,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:1948,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/testcode/fake_event.c:1957,1
    - Dst: memdup
      Src: /src/unbound/testcode/fake_event.c:1958,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/testcode/fake_event.c:1958,1
    - Dst: fatal_exit
      Src: /src/unbound/testcode/fake_event.c:1959,1
    - Dst: log_info
      Src: /src/unbound/testcode/fake_event.c:1961,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 41
    argCount: 5
    argNames:
    - c
    - packet
    - addr
    - addrlen
    - ATTR_UNUSED
    argTypes:
    - struct comm_point*
    - sldns_buffer*
    - struct sockaddr*
    - socklen_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1968
      start: 1910
    functionDepth: 4
    functionLinenumber: 1910
    functionLinenumberEnd: 1968
    functionName: comm_point_send_udp_msg
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 2
    functionsReached:
    - sldns_buffer_new
    - log_info
    - log_err
    - calloc
    - sldns_buffer_begin
    - sldns_buffer_read_u16_at
    - sldns_wire2str_rrquestion_buf
    - memcpy
    - free
    - log_assert
    - sldns_buffer_copy
    - sldns_buffer_at
    - addr_to_str
    - LDNS_QDCOUNT
    - sldns_buffer_limit
    - fatal_exit
    - strip_end_white
    - dname_valid
    - memdup
    linkageType: ''
    returnType: int
    signature: "int comm_point_send_udp_msg(struct comm_point *c, sldns_buffer* packet,\n\tstruct
      sockaddr* addr, socklen_t addrlen, int ATTR_UNUSED(is_connected))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1974,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ATTR_UNUSED(addr)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    argTypes:
    - struct sockaddr_storage*
    - socklen_t
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1976
      start: 1970
    functionDepth: 1
    functionLinenumber: 1970
    functionLinenumberEnd: 1976
    functionName: outnet_get_tcp_fd
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 2
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int outnet_get_tcp_fd(struct sockaddr_storage* ATTR_UNUSED(addr),\n\tsocklen_t
      ATTR_UNUSED(addrlen), int ATTR_UNUSED(tcp_mss),\n\tint ATTR_UNUSED(dscp), int
      ATTR_UNUSED(nodelay))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:1981,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED(addr)
    - ATTR_UNUSED
    argTypes:
    - int
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1983
      start: 1978
    functionDepth: 1
    functionLinenumber: 1978
    functionLinenumberEnd: 1983
    functionName: outnet_tcp_connect
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 2
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int outnet_tcp_connect(int ATTR_UNUSED(s), struct sockaddr_storage*
      ATTR_UNUSED(addr),\n\tsocklen_t ATTR_UNUSED(addrlen))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/testcode/fake_event.c:1990,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ATTR_UNUSED(ifs)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(availports)
    - ATTR_UNUSED
    argTypes:
    - char**
    - int
    - int
    - int
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1991
      start: 1985
    functionDepth: 1
    functionLinenumber: 1985
    functionLinenumberEnd: 1991
    functionName: shared_ports_create
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 4
    functionsReached:
    - calloc
    linkageType: ''
    returnType: struct shared_ports
    signature: "struct shared_ports * shared_ports_create(char** ATTR_UNUSED(ifs),\n\tint
      ATTR_UNUSED(num_ifs), int ATTR_UNUSED(do_ip4),\n        int ATTR_UNUSED(do_ip6),
      int* ATTR_UNUSED(availports),\n\tint ATTR_UNUSED(numavailports))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/testcode/fake_event.c:1996,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - shp
    argTypes:
    - struct shared_ports*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1997
      start: 1993
    functionDepth: 1
    functionLinenumber: 1993
    functionLinenumberEnd: 1997
    functionName: shared_ports_delete
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 5
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void shared_ports_delete(struct shared_ports* shp)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:2002,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - ATTR_UNUSED(req)
    - ATTR_UNUSED(mesh)
    - ATTR_UNUSED(m)
    argTypes:
    - struct tcp_req_info*
    - struct mesh_area*
    - struct mesh_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2004
      start: 1999
    functionDepth: 1
    functionLinenumber: 1999
    functionLinenumberEnd: 2004
    functionName: tcp_req_info_add_meshstate
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int tcp_req_info_add_meshstate(struct tcp_req_info* ATTR_UNUSED(req),\n
      \       struct mesh_area* ATTR_UNUSED(mesh), struct mesh_state* ATTR_UNUSED(m))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:2010,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED(req)
    - ATTR_UNUSED(m)
    argTypes:
    - struct tcp_req_info*
    - struct mesh_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2011
      start: 2006
    functionDepth: 1
    functionLinenumber: 2006
    functionLinenumberEnd: 2011
    functionName: tcp_req_info_remove_mesh_state
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 2
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void tcp_req_info_remove_mesh_state(struct tcp_req_info* ATTR_UNUSED(req),\n\tstruct
      mesh_state* ATTR_UNUSED(m))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2017
      start: 2013
    functionDepth: 0
    functionLinenumber: 2013
    functionLinenumberEnd: 2017
    functionName: tcp_req_info_get_stream_buffer_size
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t tcp_req_info_get_stream_buffer_size(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2023
      start: 2019
    functionDepth: 0
    functionLinenumber: 2019
    functionLinenumberEnd: 2023
    functionName: http2_get_query_buffer_size
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t http2_get_query_buffer_size(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2029
      start: 2025
    functionDepth: 0
    functionLinenumber: 2025
    functionLinenumberEnd: 2029
    functionName: http2_get_response_buffer_size
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t http2_get_response_buffer_size(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ATTR_UNUSED(h2_stream)
    - ATTR_UNUSED(mesh)
    - ATTR_UNUSED(m)
    argTypes:
    - struct http2_stream*
    - struct mesh_area*
    - struct mesh_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2034
      start: 2031
    functionDepth: 0
    functionLinenumber: 2031
    functionLinenumberEnd: 2034
    functionName: http2_stream_add_meshstate
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void http2_stream_add_meshstate(struct http2_stream* ATTR_UNUSED(h2_stream),\n\tstruct
      mesh_area* ATTR_UNUSED(mesh), struct mesh_state* ATTR_UNUSED(m))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED(h2_stream)
    argTypes:
    - struct http2_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2038
      start: 2036
    functionDepth: 0
    functionLinenumber: 2036
    functionLinenumberEnd: 2038
    functionName: http2_stream_remove_mesh_state
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void http2_stream_remove_mesh_state(struct http2_stream* ATTR_UNUSED(h2_stream))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 3
    argNames:
    - ATTR_UNUSED(stream)
    - ATTR_UNUSED(mesh)
    - ATTR_UNUSED(m)
    argTypes:
    - struct doq_stream*
    - struct mesh_area*
    - struct mesh_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2043
      start: 2040
    functionDepth: 0
    functionLinenumber: 2040
    functionLinenumberEnd: 2043
    functionName: doq_stream_add_meshstate
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void doq_stream_add_meshstate(struct doq_stream* ATTR_UNUSED(stream),\n\tstruct
      mesh_area* ATTR_UNUSED(mesh), struct mesh_state* ATTR_UNUSED(m))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED(stream)
    argTypes:
    - struct doq_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2047
      start: 2045
    functionDepth: 0
    functionLinenumber: 2045
    functionLinenumberEnd: 2047
    functionName: doq_stream_remove_mesh_state
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doq_stream_remove_mesh_state(struct doq_stream* ATTR_UNUSED(stream))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:2052,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2053
      start: 2049
    functionDepth: 1
    functionLinenumber: 2049
    functionLinenumberEnd: 2053
    functionName: fast_reload_service_cb
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void fast_reload_service_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(event),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 1
    argCount: 1
    argNames:
    - ATTR_UNUSED(fast_reload_thread)
    argTypes:
    - struct fast_reload_thread*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2059
      start: 2055
    functionDepth: 0
    functionLinenumber: 2055
    functionLinenumberEnd: 2059
    functionName: fast_reload_thread_stop
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void fast_reload_thread_stop(\n\tstruct fast_reload_thread* ATTR_UNUSED(fast_reload_thread))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/testcode/fake_event.c:2065,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2067
      start: 2061
    functionDepth: 1
    functionLinenumber: 2061
    functionLinenumberEnd: 2067
    functionName: fast_reload_client_callback
    functionSourceFile: /src/unbound/testcode/fake_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int fast_reload_client_callback(struct comm_point* ATTR_UNUSED(c),\n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 46
      start: 45
    functionDepth: 0
    functionLinenumber: 45
    functionLinenumberEnd: 46
    functionName: timeval_isset
    functionSourceFile: /src/unbound/util/timeval_func.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: timeval_isset(tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - tv
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 49
    functionName: timeval_clear
    functionSourceFile: /src/unbound/util/timeval_func.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: timeval_clear(tv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/util/rbtree.c:83,1
    - Dst: rbtree_init
      Src: /src/unbound/util/rbtree.c:89,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 92
    functionName: rbtree_create
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 11
    functionsReached:
    - malloc
    - rbtree_init
    linkageType: ''
    returnType: rbtree_type
    signature: 'rbtree_type *

      rbtree_create (int (*cmpf)(const void *, const void *))'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - rbtree
    argTypes:
    - rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 101
    functionName: rbtree_init
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 31
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rbtree_init(rbtree_type *rbtree, int (*cmpf)(const void *, const
      void *))
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - rbtree
    - node
    argTypes:
    - rbtree_type*
    - rbnode_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 107
    functionDepth: 0
    functionLinenumber: 107
    functionLinenumberEnd: 128
    functionName: rbtree_rotate_left
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rbtree_rotate_left(rbtree_type *rbtree, rbnode_type *node)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - rbtree
    - node
    argTypes:
    - rbtree_type*
    - rbnode_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 155
    functionName: rbtree_rotate_right
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rbtree_rotate_right(rbtree_type *rbtree, rbnode_type *node)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_rotate_left
      Src: /src/unbound/util/rbtree.c:183,1
    - Dst: rbtree_rotate_right
      Src: /src/unbound/util/rbtree.c:188,1
    - Dst: rbtree_rotate_right
      Src: /src/unbound/util/rbtree.c:208,1
    - Dst: rbtree_rotate_left
      Src: /src/unbound/util/rbtree.c:213,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 2
    argNames:
    - rbtree
    - node
    argTypes:
    - rbtree_type*
    - rbnode_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 218
    functionName: rbtree_insert_fixup
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 0
    functionsReached:
    - rbtree_rotate_right
    - rbtree_rotate_left
    linkageType: ''
    returnType: void
    signature: void rbtree_insert_fixup(rbtree_type *rbtree, rbnode_type *node)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/rbtree.c:237,1
    - Dst: fptr_whitelist_rbtree_cmp
      Src: /src/unbound/util/rbtree.c:237,1
    - Dst: rbtree_type*::cmp
      Src: /src/unbound/util/rbtree.c:241,1
    - Dst: rbtree_insert_fixup
      Src: /src/unbound/util/rbtree.c:271,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 28
    argCount: 2
    argNames:
    - rbtree
    - data
    argTypes:
    - rbtree_type*
    - rbnode_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 274
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 274
    functionName: rbtree_insert
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 35
    functionsReached:
    - rbtree_insert_fixup
    - rbtree_type*::cmp
    - fptr_whitelist_rbtree_cmp
    - fptr_ok
    linkageType: ''
    returnType: rbnode_type
    signature: 'rbnode_type *

      rbtree_insert (rbtree_type *rbtree, rbnode_type *data)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_find_less_equal
      Src: /src/unbound/util/rbtree.c:285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rbtree
    - key
    argTypes:
    - rbtree_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 280
    functionDepth: 1
    functionLinenumber: 280
    functionLinenumberEnd: 290
    functionName: rbtree_search
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 40
    functionsReached:
    - rbtree_find_less_equal
    linkageType: ''
    returnType: rbnode_type
    signature: 'rbnode_type *

      rbtree_search (rbtree_type *rbtree, const void *key)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 296
    functionName: swap_int8
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void swap_int8(uint8_t* x, uint8_t* y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - rbnode_type**
    - rbnode_type**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 299
    functionDepth: 0
    functionLinenumber: 299
    functionLinenumberEnd: 302
    functionName: swap_np
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void swap_np(rbnode_type** x, rbnode_type** y)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/rbtree.c:310,1
    - Dst: log_assert
      Src: /src/unbound/util/rbtree.c:314,1
    - Dst: parent::parent
      Src: /src/unbound/util/rbtree.c:315,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 12
    argCount: 4
    argNames:
    - rbtree
    - parent
    - old
    - new
    argTypes:
    - rbtree_type*
    - rbnode_type*
    - rbnode_type*
    - rbnode_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 305
    functionDepth: 1
    functionLinenumber: 305
    functionLinenumberEnd: 318
    functionName: change_parent_ptr
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 0
    functionsReached:
    - parent::parent
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void change_parent_ptr(rbtree_type* rbtree, rbnode_type* parent,\n\trbnode_type*
      old, rbnode_type* new)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/rbtree.c:324,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 3
    argNames:
    - child
    - old
    - new
    argTypes:
    - rbnode_type*
    - rbnode_type*
    - rbnode_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 320
    functionDepth: 1
    functionLinenumber: 320
    functionLinenumberEnd: 326
    functionName: change_child_ptr
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void change_child_ptr(rbnode_type* child, rbnode_type* old,\n\trbnode_type*
      new)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_search
      Src: /src/unbound/util/rbtree.c:333,1
    - Dst: swap_int8
      Src: /src/unbound/util/rbtree.c:349,1
    - Dst: change_parent_ptr
      Src: /src/unbound/util/rbtree.c:352,1
    - Dst: change_parent_ptr
      Src: /src/unbound/util/rbtree.c:354,1
    - Dst: change_child_ptr
      Src: /src/unbound/util/rbtree.c:357,1
    - Dst: change_child_ptr
      Src: /src/unbound/util/rbtree.c:358,1
    - Dst: change_child_ptr
      Src: /src/unbound/util/rbtree.c:359,1
    - Dst: change_child_ptr
      Src: /src/unbound/util/rbtree.c:360,1
    - Dst: change_child_ptr
      Src: /src/unbound/util/rbtree.c:361,1
    - Dst: change_child_ptr
      Src: /src/unbound/util/rbtree.c:363,1
    - Dst: swap_np
      Src: /src/unbound/util/rbtree.c:372,1
    - Dst: swap_np
      Src: /src/unbound/util/rbtree.c:373,1
    - Dst: swap_np
      Src: /src/unbound/util/rbtree.c:374,1
    - Dst: log_assert
      Src: /src/unbound/util/rbtree.c:378,1
    - Dst: change_parent_ptr
      Src: /src/unbound/util/rbtree.c:384,1
    - Dst: change_child_ptr
      Src: /src/unbound/util/rbtree.c:385,1
    - Dst: rbtree_delete_fixup
      Src: /src/unbound/util/rbtree.c:396,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 44
    argCount: 2
    argNames:
    - rbtree
    - key
    argTypes:
    - rbtree_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 404
      start: 328
    functionDepth: 2
    functionLinenumber: 328
    functionLinenumberEnd: 404
    functionName: rbtree_delete
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 46
    functionsReached:
    - change_child_ptr
    - swap_int8
    - rbtree_delete_fixup
    - log_assert
    - swap_np
    - change_parent_ptr
    - rbtree_search
    linkageType: ''
    returnType: rbnode_type
    signature: "rbnode_type * \nrbtree_delete(rbtree_type *rbtree, const void *key)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_rotate_right
      Src: /src/unbound/util/rbtree.c:429,1
    - Dst: rbtree_rotate_left
      Src: /src/unbound/util/rbtree.c:430,1
    - Dst: log_assert
      Src: /src/unbound/util/rbtree.c:464,1
    - Dst: rbtree_rotate_left
      Src: /src/unbound/util/rbtree.c:475,1
    - Dst: rbtree_rotate_right
      Src: /src/unbound/util/rbtree.c:487,1
    - Dst: log_assert
      Src: /src/unbound/util/rbtree.c:498,1
    - Dst: rbtree_rotate_right
      Src: /src/unbound/util/rbtree.c:500,1
    - Dst: log_assert
      Src: /src/unbound/util/rbtree.c:504,1
    - Dst: rbtree_rotate_left
      Src: /src/unbound/util/rbtree.c:506,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 63
    argCount: 3
    argNames:
    - rbtree
    - child
    - child_parent
    argTypes:
    - rbtree_type*
    - rbnode_type*
    - rbnode_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 508
      start: 406
    functionDepth: 1
    functionLinenumber: 406
    functionLinenumberEnd: 508
    functionName: rbtree_delete_fixup
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 1
    functionsReached:
    - rbtree_rotate_right
    - log_assert
    - rbtree_rotate_left
    linkageType: ''
    returnType: void
    signature: "void rbtree_delete_fixup(rbtree_type* rbtree, rbnode_type* child,\n\trbnode_type*
      child_parent)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/rbtree.c:517,1
    - Dst: fptr_ok
      Src: /src/unbound/util/rbtree.c:523,1
    - Dst: fptr_whitelist_rbtree_cmp
      Src: /src/unbound/util/rbtree.c:523,1
    - Dst: rbtree_type*::cmp
      Src: /src/unbound/util/rbtree.c:527,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 3
    argNames:
    - rbtree
    - key
    - result
    argTypes:
    - rbtree_type*
    - void*
    - rbnode_type**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 510
    functionDepth: 1
    functionLinenumber: 510
    functionLinenumberEnd: 542
    functionName: rbtree_find_less_equal
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 12
    functionsReached:
    - rbtree_type*::cmp
    - log_assert
    - fptr_whitelist_rbtree_cmp
    - fptr_ok
    linkageType: ''
    returnType: int
    signature: "int rbtree_find_less_equal(rbtree_type *rbtree, const void *key,\n\trbnode_type
      **result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rbtree
    argTypes:
    - rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 555
      start: 548
    functionDepth: 0
    functionLinenumber: 548
    functionLinenumberEnd: 555
    functionName: rbtree_first
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: rbnode_type
    signature: 'rbnode_type *

      rbtree_first (rbtree_type *rbtree)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rbtree
    argTypes:
    - rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 564
      start: 557
    functionDepth: 0
    functionLinenumber: 557
    functionLinenumberEnd: 564
    functionName: rbtree_last
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: rbnode_type
    signature: 'rbnode_type *

      rbtree_last (rbtree_type *rbtree)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - node
    argTypes:
    - rbnode_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 587
      start: 570
    functionDepth: 0
    functionLinenumber: 570
    functionLinenumberEnd: 587
    functionName: rbtree_next
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: rbnode_type
    signature: 'rbnode_type *

      rbtree_next (rbnode_type *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - node
    argTypes:
    - rbnode_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 606
      start: 589
    functionDepth: 0
    functionLinenumber: 589
    functionLinenumberEnd: 606
    functionName: rbtree_previous
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: rbnode_type
    signature: 'rbnode_type *

      rbtree_previous(rbnode_type *node)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: traverse_post
      Src: /src/unbound/util/rbtree.c:615,1
    - Dst: traverse_post
      Src: /src/unbound/util/rbtree.c:616,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - arg
    - node
    argTypes:
    - void*
    - rbnode_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 619
      start: 609
    functionDepth: 1
    functionLinenumber: 609
    functionLinenumberEnd: 619
    functionName: traverse_post
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 1
    functionsReached:
    - traverse_post
    linkageType: ''
    returnType: void
    signature: void traverse_post(void (*func)(rbnode_type*, void*), void* arg, rbnode_type*
      node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: traverse_post
      Src: /src/unbound/util/rbtree.c:625,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - tree
    - arg
    argTypes:
    - rbtree_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 621
    functionDepth: 2
    functionLinenumber: 621
    functionLinenumberEnd: 626
    functionName: traverse_postorder
    functionSourceFile: /src/unbound/util/rbtree.c
    functionUses: 28
    functionsReached:
    - traverse_post
    linkageType: ''
    returnType: void
    signature: "void traverse_postorder(rbtree_type* tree, void (*func)(rbnode_type*,
      void*),\n\tvoid* arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/tcp_conn_limit.c:53,1
    - Dst: regional_create
      Src: /src/unbound/util/tcp_conn_limit.c:57,1
    - Dst: tcl_list_delete
      Src: /src/unbound/util/tcp_conn_limit.c:59,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 50
    functionDepth: 1
    functionLinenumber: 50
    functionLinenumberEnd: 63
    functionName: tcl_list_create
    functionSourceFile: /src/unbound/util/tcp_conn_limit.c
    functionUses: 2
    functionsReached:
    - regional_create
    - calloc
    - tcl_list_delete
    linkageType: ''
    returnType: struct tcl_list
    signature: 'struct tcl_list *

      tcl_list_create(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_destroy
      Src: /src/unbound/util/tcp_conn_limit.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - node
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 65
    functionDepth: 0
    functionLinenumber: 65
    functionLinenumberEnd: 73
    functionName: tcl_list_free_node
    functionSourceFile: /src/unbound/util/tcp_conn_limit.c
    functionUses: 0
    functionsReached:
    - lock_quick_destroy
    linkageType: ''
    returnType: void
    signature: void tcl_list_free_node(rbnode_type* node, void* ATTR_UNUSED(arg))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: traverse_postorder
      Src: /src/unbound/util/tcp_conn_limit.c:80,1
    - Dst: regional_destroy
      Src: /src/unbound/util/tcp_conn_limit.c:81,1
    - Dst: free
      Src: /src/unbound/util/tcp_conn_limit.c:82,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - tcl
    argTypes:
    - struct tcl_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 75
    functionDepth: 3
    functionLinenumber: 75
    functionLinenumberEnd: 83
    functionName: tcl_list_delete
    functionSourceFile: /src/unbound/util/tcp_conn_limit.c
    functionUses: 4
    functionsReached:
    - free
    - traverse_postorder
    - regional_destroy
    linkageType: ''
    returnType: void
    signature: void tcl_list_delete(struct tcl_list* tcl)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_zero
      Src: /src/unbound/util/tcp_conn_limit.c:91,1
    - Dst: lock_quick_init
      Src: /src/unbound/util/tcp_conn_limit.c:95,1
    - Dst: addr_tree_insert
      Src: /src/unbound/util/tcp_conn_limit.c:97,1
    - Dst: verbose
      Src: /src/unbound/util/tcp_conn_limit.c:99,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 6
    argNames:
    - tcl
    - addr
    - addrlen
    - net
    - limit
    - complain_duplicates
    argTypes:
    - struct tcl_list*
    - struct sockaddr_storage*
    - socklen_t
    - int
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 86
    functionDepth: 1
    functionLinenumber: 86
    functionLinenumberEnd: 102
    functionName: tcl_list_insert
    functionSourceFile: /src/unbound/util/tcp_conn_limit.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - verbose
    - lock_quick_init
    - addr_tree_insert
    linkageType: ''
    returnType: struct tcl_addr
    signature: "struct tcl_addr *\ntcl_list_insert(struct tcl_list* tcl, struct sockaddr_storage*
      addr,\n\tsocklen_t addrlen, int net, uint32_t limit,\n\tint complain_duplicates)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: atoi
      Src: /src/unbound/util/tcp_conn_limit.c:113,1
    - Dst: log_err
      Src: /src/unbound/util/tcp_conn_limit.c:114,1
    - Dst: atoi
      Src: /src/unbound/util/tcp_conn_limit.c:117,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/util/tcp_conn_limit.c:118,1
    - Dst: log_err
      Src: /src/unbound/util/tcp_conn_limit.c:119,1
    - Dst: tcl_list_insert
      Src: /src/unbound/util/tcp_conn_limit.c:122,1
    - Dst: log_err
      Src: /src/unbound/util/tcp_conn_limit.c:124,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - tcl
    - str
    - s2
    - complain_duplicates
    argTypes:
    - struct tcl_list*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 128
      start: 105
    functionDepth: 2
    functionLinenumber: 105
    functionLinenumberEnd: 128
    functionName: tcl_list_str_cfg
    functionSourceFile: /src/unbound/util/tcp_conn_limit.c
    functionUses: 0
    functionsReached:
    - atoi
    - tcl_list_insert
    - netblockstrtoaddr
    - log_err
    linkageType: ''
    returnType: int
    signature: "int tcl_list_str_cfg(struct tcl_list* tcl, const char* str, const
      char* s2,\n\tint complain_duplicates)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/tcp_conn_limit.c:136,1
    - Dst: tcl_list_str_cfg
      Src: /src/unbound/util/tcp_conn_limit.c:137,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - tcl
    - cfg
    argTypes:
    - struct tcl_list*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 141
      start: 131
    functionDepth: 3
    functionLinenumber: 131
    functionLinenumberEnd: 141
    functionName: read_tcl_list
    functionSourceFile: /src/unbound/util/tcp_conn_limit.c
    functionUses: 0
    functionsReached:
    - tcl_list_str_cfg
    - log_assert
    linkageType: ''
    returnType: int
    signature: int read_tcl_list(struct tcl_list* tcl, struct config_file* cfg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_free_all
      Src: /src/unbound/util/tcp_conn_limit.c:146,1
    - Dst: addr_tree_init
      Src: /src/unbound/util/tcp_conn_limit.c:147,1
    - Dst: read_tcl_list
      Src: /src/unbound/util/tcp_conn_limit.c:148,1
    - Dst: addr_tree_init_parents
      Src: /src/unbound/util/tcp_conn_limit.c:150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - tcl
    - cfg
    argTypes:
    - struct tcl_list*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 143
    functionDepth: 4
    functionLinenumber: 143
    functionLinenumberEnd: 152
    functionName: tcl_list_apply_cfg
    functionSourceFile: /src/unbound/util/tcp_conn_limit.c
    functionUses: 2
    functionsReached:
    - read_tcl_list
    - regional_free_all
    - addr_tree_init_parents
    - addr_tree_init
    linkageType: ''
    returnType: int
    signature: int tcl_list_apply_cfg(struct tcl_list* tcl, struct config_file* cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_lock
      Src: /src/unbound/util/tcp_conn_limit.c:159,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/tcp_conn_limit.c:164,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - tcl
    argTypes:
    - struct tcl_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 154
    functionDepth: 0
    functionLinenumber: 154
    functionLinenumberEnd: 168
    functionName: tcl_new_connection
    functionSourceFile: /src/unbound/util/tcp_conn_limit.c
    functionUses: 0
    functionsReached:
    - lock_quick_unlock
    - lock_quick_lock
    linkageType: ''
    returnType: int
    signature: int tcl_new_connection(struct tcl_addr* tcl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_lock
      Src: /src/unbound/util/tcp_conn_limit.c:174,1
    - Dst: log_assert
      Src: /src/unbound/util/tcp_conn_limit.c:175,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/tcp_conn_limit.c:177,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - tcl
    argTypes:
    - struct tcl_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 179
    functionName: tcl_close_connection
    functionSourceFile: /src/unbound/util/tcp_conn_limit.c
    functionUses: 0
    functionsReached:
    - lock_quick_unlock
    - log_assert
    - lock_quick_lock
    linkageType: ''
    returnType: void
    signature: void tcl_close_connection(struct tcl_addr* tcl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addr_tree_lookup
      Src: /src/unbound/util/tcp_conn_limit.c:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tcl
    - addr
    - addrlen
    argTypes:
    - struct tcl_list*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 187
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 187
    functionName: tcl_addr_lookup
    functionSourceFile: /src/unbound/util/tcp_conn_limit.c
    functionUses: 0
    functionsReached:
    - addr_tree_lookup
    linkageType: ''
    returnType: struct tcl_addr
    signature: "struct tcl_addr *\ntcl_addr_lookup(struct tcl_list* tcl, struct sockaddr_storage*
      addr,\n        socklen_t addrlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_get_mem
      Src: /src/unbound/util/tcp_conn_limit.c:193,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - tcl
    argTypes:
    - struct tcl_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 189
    functionDepth: 1
    functionLinenumber: 189
    functionLinenumberEnd: 194
    functionName: tcl_list_get_mem
    functionSourceFile: /src/unbound/util/tcp_conn_limit.c
    functionUses: 1
    functionsReached:
    - regional_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t tcl_list_get_mem(struct tcl_list* tcl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - tcl
    - data
    argTypes:
    - struct tcl_list*
    - struct tcl_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 205
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 205
    functionName: tcl_list_swap_tree
    functionSourceFile: /src/unbound/util/tcp_conn_limit.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void tcl_list_swap_tree(struct tcl_list* tcl, struct tcl_list* data)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/config_file.c:103,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:136,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:138,1
    - Dst: calloc
      Src: /src/unbound/util/config_file.c:198,1
    - Dst: init_outgoing_availports
      Src: /src/unbound/util/config_file.c:200,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:201,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:203,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:205,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:206,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:207,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:208,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:329,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:331,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:333,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:335,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:338,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:340,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:342,1
    - Dst: memset
      Src: /src/unbound/util/config_file.c:393,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:397,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:398,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:402,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:403,1
    - Dst: config_delete
      Src: /src/unbound/util/config_file.c:435,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 343
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 437
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 437
    functionName: config_create
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 6
    functionsReached:
    - init_outgoing_availports
    - calloc
    - config_delete
    - memset
    - strdup
    linkageType: ''
    returnType: struct config_file
    signature: 'struct config_file *

      config_create(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: config_create
      Src: /src/unbound/util/config_file.c:441,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:444,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 27
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 439
    functionDepth: 2
    functionLinenumber: 439
    functionLinenumberEnd: 471
    functionName: config_create_forlib
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - free
    - config_create
    linkageType: ''
    returnType: struct config_file
    signature: struct config_file * config_create_forlib(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 486
    functionDepth: 0
    functionLinenumber: 486
    functionLinenumberEnd: 488
    functionName: S_NUMBER_OR_ZERO
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_NUMBER_OR_ZERO(str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 491
      start: 489
    functionDepth: 0
    functionLinenumber: 489
    functionLinenumberEnd: 491
    functionName: S_NUMBER_NONZERO
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_NUMBER_NONZERO(str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 492
    functionDepth: 0
    functionLinenumber: 492
    functionLinenumberEnd: 494
    functionName: S_UNSIGNED_OR_ZERO
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_UNSIGNED_OR_ZERO(str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 495
    functionDepth: 0
    functionLinenumber: 495
    functionLinenumberEnd: 497
    functionName: S_SIZET_OR_ZERO
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_SIZET_OR_ZERO(str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 500
      start: 498
    functionDepth: 0
    functionLinenumber: 498
    functionLinenumberEnd: 500
    functionName: S_SIZET_NONZERO
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_SIZET_NONZERO(str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 503
      start: 501
    functionDepth: 0
    functionLinenumber: 501
    functionLinenumberEnd: 503
    functionName: S_YNO
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_YNO(str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 506
      start: 504
    functionDepth: 0
    functionLinenumber: 504
    functionLinenumberEnd: 506
    functionName: S_MEMSIZE
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_MEMSIZE(str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 509
      start: 507
    functionDepth: 0
    functionLinenumber: 507
    functionLinenumberEnd: 509
    functionName: S_POW2
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_POW2(str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 510
    functionDepth: 0
    functionLinenumber: 510
    functionLinenumberEnd: 512
    functionName: S_STR
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_STR(str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 515
      start: 513
    functionDepth: 0
    functionLinenumber: 513
    functionLinenumberEnd: 515
    functionName: S_STRLIST
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_STRLIST(str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 519
      start: 516
    functionDepth: 0
    functionLinenumber: 516
    functionLinenumberEnd: 519
    functionName: S_STRLIST_UNIQ
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_STRLIST_UNIQ(str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 520
    functionDepth: 0
    functionLinenumber: 520
    functionLinenumberEnd: 522
    functionName: S_STRLIST_APPEND
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: S_STRLIST_APPEND(str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - useful_server_top_timeout
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 525
    functionDepth: 0
    functionLinenumber: 525
    functionLinenumberEnd: 531
    functionName: probe_maxrto
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int probe_maxrto(int useful_server_top_timeout)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: INT_MAX
      Src: /src/unbound/util/config_file.c:538,1
    - Dst: probe_maxrto
      Src: /src/unbound/util/config_file.c:542,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - max_rtt
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 534
    functionDepth: 1
    functionLinenumber: 534
    functionLinenumberEnd: 544
    functionName: config_apply_max_rtt
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 2
    functionsReached:
    - probe_maxrto
    - INT_MAX
    linkageType: ''
    returnType: int
    signature: int config_apply_max_rtt(int max_rtt)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:551,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:551,1
    - Dst: snprintf
      Src: /src/unbound/util/config_file.c:552,1
    - Dst: S_NUMBER_OR_ZERO
      Src: /src/unbound/util/config_file.c:555,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:556,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:557,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:557,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:559,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:561,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:562,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:565,1
    - Dst: cfg_mark_ports
      Src: /src/unbound/util/config_file.c:566,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:568,1
    - Dst: cfg_mark_ports
      Src: /src/unbound/util/config_file.c:569,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:571,1
    - Dst: cfg_parse_local_zone
      Src: /src/unbound/util/config_file.c:572,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:573,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:574,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:574,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:576,1
    - Dst: cfg_convert_timeval
      Src: /src/unbound/util/config_file.c:577,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:580,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:581,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:583,1
    - Dst: cfg_ptr_reverse
      Src: /src/unbound/util/config_file.c:584,1
    - Dst: cfg_strlist_insert
      Src: /src/unbound/util/config_file.c:585,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:586,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:588,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:589,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:591,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:592,1
    - Dst: log_set_time_asc
      Src: /src/unbound/util/config_file.c:593,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:594,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:595,1
    - Dst: log_set_time_iso
      Src: /src/unbound/util/config_file.c:596,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:643,1
    - Dst: cfg_tls_protocols_is_valid
      Src: /src/unbound/util/config_file.c:644,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:645,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:646,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:683,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:684,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:685,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:686,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:687,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:688,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:689,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:690,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:691,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:692,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:695,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:696,1
    - Dst: config_apply_max_rtt
      Src: /src/unbound/util/config_file.c:697,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:716,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:717,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:718,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:722,1
    - Dst: cfg_parse_nsid
      Src: /src/unbound/util/config_file.c:727,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:771,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:772,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:774,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:775,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:776,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:777,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:779,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:780,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:796,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:797,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:873,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:874,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:877,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:878,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:881,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:882,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:908,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:909,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:918,1
    - Dst: config_add_tag
      Src: /src/unbound/util/config_file.c:919,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:922,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:923,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:924,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:925,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:926,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:927,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:928,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:929,1
    - Dst: reallocarray
      Src: /src/unbound/util/config_file.c:931,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:932,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:932,1
    - Dst: memmove
      Src: /src/unbound/util/config_file.c:934,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:935,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 149
    argCount: 3
    argNames:
    - cfg
    - opt
    - val
    argTypes:
    - struct config_file*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 956
      start: 546
    functionDepth: 2
    functionLinenumber: 546
    functionLinenumberEnd: 956
    functionName: config_set_option
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 2
    functionsReached:
    - strcmp
    - log_set_time_iso
    - snprintf
    - cfg_parse_local_zone
    - atoi
    - cfg_mark_ports
    - config_apply_max_rtt
    - cfg_strlist_insert
    - config_add_tag
    - S_NUMBER_OR_ZERO
    - strlen
    - cfg_ptr_reverse
    - cfg_convert_timeval
    - free
    - cfg_parse_nsid
    - strdup
    - memmove
    - log_set_time_asc
    - cfg_tls_protocols_is_valid
    - reallocarray
    linkageType: ''
    returnType: int
    signature: "int config_set_option(struct config_file* cfg, const char* opt,\n\tconst
      char* val)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/unbound/util/config_file.c:961,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - line
    - arg
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 962
      start: 958
    functionDepth: 0
    functionLinenumber: 958
    functionLinenumberEnd: 962
    functionName: config_print_func
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - fprintf
    linkageType: ''
    returnType: void
    signature: void config_print_func(char* line, void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: cfg_strlist_append
      Src: /src/unbound/util/config_file.c:977,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:977,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - line
    - arg
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 979
      start: 972
    functionDepth: 1
    functionLinenumber: 972
    functionLinenumberEnd: 979
    functionName: config_collate_func
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - cfg_strlist_append
    - strdup
    linkageType: ''
    returnType: void
    signature: void config_collate_func(char* line, void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/util/config_file.c:985,1
    - Dst: config_get_option
      Src: /src/unbound/util/config_file.c:987,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:990,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - cfg
    - opt
    - list
    argTypes:
    - struct config_file*
    - char*
    - struct config_strlist**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 995
      start: 981
    functionDepth: 1
    functionLinenumber: 981
    functionLinenumberEnd: 995
    functionName: config_get_option_list
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - memset
    - config_delstrlist
    - config_get_option
    linkageType: ''
    returnType: int
    signature: "int config_get_option_list(struct config_file* cfg, const char* opt,\n\tstruct
      config_strlist** list)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: config_get_option_list
      Src: /src/unbound/util/config_file.c:1003,1
    - Dst: config_collate_cat
      Src: /src/unbound/util/config_file.c:1005,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1006,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 3
    argNames:
    - cfg
    - opt
    - str
    argTypes:
    - struct config_file*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1009
      start: 997
    functionDepth: 2
    functionLinenumber: 997
    functionLinenumberEnd: 1009
    functionName: config_get_option_collate
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - config_delstrlist
    - config_collate_cat
    - config_get_option_list
    linkageType: ''
    returnType: int
    signature: int config_get_option_collate(struct config_file* cfg, const char*
      opt, char** str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:1018,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:1020,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:1023,1
    - Dst: malloc
      Src: /src/unbound/util/config_file.c:1025,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:1030,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1032,1
    - Dst: snprintf
      Src: /src/unbound/util/config_file.c:1035,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:1036,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct config_strlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1041
      start: 1011
    functionDepth: 2
    functionLinenumber: 1011
    functionLinenumberEnd: 1041
    functionName: config_collate_cat
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - snprintf
    - malloc
    - free
    - strlen
    - strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      config_collate_cat(struct config_strlist* list)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - opt
    - ','
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1047
      start: 1044
    functionDepth: 0
    functionLinenumber: 1044
    functionLinenumberEnd: 1047
    functionName: O_DEC
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: O_DEC(opt, str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - opt
    - ','
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1048
    functionDepth: 0
    functionLinenumber: 1048
    functionLinenumberEnd: 1051
    functionName: O_UNS
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: O_UNS(opt, str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - opt
    - ','
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1054
      start: 1052
    functionDepth: 0
    functionLinenumber: 1052
    functionLinenumberEnd: 1054
    functionName: O_YNO
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: O_YNO(opt, str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - opt
    - ','
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1057
      start: 1055
    functionDepth: 0
    functionLinenumber: 1055
    functionLinenumberEnd: 1057
    functionName: O_STR
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: O_STR(opt, str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - opt
    - ','
    - str
    - ','
    - num
    - ','
    - arr
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1060
      start: 1058
    functionDepth: 0
    functionLinenumber: 1058
    functionLinenumberEnd: 1060
    functionName: O_IFC
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: O_IFC(opt, str, num, arr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - opt
    - ','
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 1061
    functionDepth: 0
    functionLinenumber: 1061
    functionLinenumberEnd: 1067
    functionName: O_MEM
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: O_MEM(opt, str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - opt
    - ','
    - name
    - ','
    - lst
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1073
      start: 1068
    functionDepth: 0
    functionLinenumber: 1068
    functionLinenumberEnd: 1073
    functionName: O_LST
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: O_LST(opt, name, lst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - opt
    - ','
    - name
    - ','
    - lst
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1081
      start: 1074
    functionDepth: 0
    functionLinenumber: 1074
    functionLinenumberEnd: 1081
    functionName: O_LS2
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: O_LS2(opt, name, lst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - opt
    - ','
    - name
    - ','
    - lst
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1082
    functionDepth: 0
    functionLinenumber: 1082
    functionLinenumberEnd: 1089
    functionName: O_LS3
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: O_LS3(opt, name, lst)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - opt
    - ','
    - name
    - ','
    - lst
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1102
      start: 1090
    functionDepth: 0
    functionLinenumber: 1090
    functionLinenumberEnd: 1102
    functionName: O_LTG
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: O_LTG(opt, name, lst)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:1110,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:1110,1
    - Dst: memmove
      Src: /src/unbound/util/config_file.c:1111,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:1111,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:1112,1
    - Dst: fptr_ok
      Src: /src/unbound/util/config_file.c:1115,1
    - Dst: fptr_whitelist_print_func
      Src: /src/unbound/util/config_file.c:1115,1
    - Dst: O_DEC
      Src: /src/unbound/util/config_file.c:1116,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - cfg
    - opt
    - arg
    argTypes:
    - struct config_file*
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1465
      start: 1103
    functionDepth: 1
    functionLinenumber: 1103
    functionLinenumberEnd: 1465
    functionName: config_get_option
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 2
    functionsReached:
    - memmove
    - O_DEC
    - fptr_ok
    - fptr_whitelist_print_func
    - strlen
    linkageType: ''
    returnType: int
    signature: "int config_get_option(struct config_file* cfg, const char* opt,\n\tvoid
      (*func)(char*,void*), void* arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: init_cfg_parse
      Src: /src/unbound/util/config_file.c:1479,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 3
    argNames:
    - cfg
    - filename
    - chroot
    argTypes:
    - struct config_file*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1480
      start: 1468
    functionDepth: 0
    functionLinenumber: 1468
    functionLinenumberEnd: 1480
    functionName: create_cfg_parser
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - init_cfg_parse
    linkageType: ''
    returnType: void
    signature: void create_cfg_parser(struct config_file* cfg, char* filename, const
      char* chroot)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/config_file.c:1502,1
    - Dst: SET_AUTO_SLAB
      Src: /src/unbound/util/config_file.c:1505,1
    - Dst: SET_AUTO_SLAB
      Src: /src/unbound/util/config_file.c:1506,1
    - Dst: SET_AUTO_SLAB
      Src: /src/unbound/util/config_file.c:1507,1
    - Dst: SET_AUTO_SLAB
      Src: /src/unbound/util/config_file.c:1508,1
    - Dst: SET_AUTO_SLAB
      Src: /src/unbound/util/config_file.c:1509,1
    - Dst: SET_AUTO_SLAB
      Src: /src/unbound/util/config_file.c:1510,1
    - Dst: SET_AUTO_SLAB
      Src: /src/unbound/util/config_file.c:1511,1
    - Dst: SET_AUTO_SLAB
      Src: /src/unbound/util/config_file.c:1513,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1515
      start: 1482
    functionDepth: 1
    functionLinenumber: 1482
    functionLinenumberEnd: 1515
    functionName: config_auto_slab_values
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 5
    functionsReached:
    - log_assert
    - SET_AUTO_SLAB
    linkageType: ''
    returnType: void
    signature: void config_auto_slab_values(struct config_file* cfg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - var
    - ','
    - name
    - ','
    - val
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1492
      start: 1485
    functionDepth: 0
    functionLinenumber: 1485
    functionLinenumberEnd: 1492
    functionName: SET_AUTO_SLAB
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: SET_AUTO_SLAB(var, name, val)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/util/config_file.c:1532,1
    - Dst: strchr
      Src: /src/unbound/util/config_file.c:1532,1
    - Dst: strchr
      Src: /src/unbound/util/config_file.c:1532,1
    - Dst: strchr
      Src: /src/unbound/util/config_file.c:1533,1
    - Dst: strchr
      Src: /src/unbound/util/config_file.c:1533,1
    - Dst: verbose
      Src: /src/unbound/util/config_file.c:1534,1
    - Dst: memset
      Src: /src/unbound/util/config_file.c:1549,1
    - Dst: glob
      Src: /src/unbound/util/config_file.c:1550,1
    - Dst: globfree
      Src: /src/unbound/util/config_file.c:1553,1
    - Dst: verbose
      Src: /src/unbound/util/config_file.c:1555,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:1559,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:1562,1
    - Dst: strerror
      Src: /src/unbound/util/config_file.c:1563,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:1565,1
    - Dst: strerror
      Src: /src/unbound/util/config_file.c:1566,1
    - Dst: config_read
      Src: /src/unbound/util/config_file.c:1573,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:1574,1
    - Dst: globfree
      Src: /src/unbound/util/config_file.c:1576,1
    - Dst: globfree
      Src: /src/unbound/util/config_file.c:1580,1
    - Dst: config_auto_slab_values
      Src: /src/unbound/util/config_file.c:1581,1
    - Dst: init_cookie_secret
      Src: /src/unbound/util/config_file.c:1582,1
    - Dst: fopen
      Src: /src/unbound/util/config_file.c:1588,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:1590,1
    - Dst: strerror
      Src: /src/unbound/util/config_file.c:1590,1
    - Dst: create_cfg_parser
      Src: /src/unbound/util/config_file.c:1593,1
    - Dst: ub_c_parse
      Src: /src/unbound/util/config_file.c:1595,1
    - Dst: fclose
      Src: /src/unbound/util/config_file.c:1596,1
    - Dst: fprintf
      Src: /src/unbound/util/config_file.c:1601,1
    - Dst: config_auto_slab_values
      Src: /src/unbound/util/config_file.c:1607,1
    - Dst: init_cookie_secret
      Src: /src/unbound/util/config_file.c:1608,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 57
    argCount: 3
    argNames:
    - cfg
    - filename
    - chroot
    argTypes:
    - struct config_file*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1611
      start: 1517
    functionDepth: 2
    functionLinenumber: 1517
    functionLinenumberEnd: 1611
    functionName: config_read
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 5
    functionsReached:
    - init_cookie_secret
    - glob
    - log_err
    - globfree
    - verbose
    - fclose
    - create_cfg_parser
    - config_auto_slab_values
    - fprintf
    - fopen
    - strerror
    - ub_c_parse
    - strchr
    - memset
    - config_read
    linkageType: ''
    returnType: int
    signature: int config_read(struct config_file* cfg, const char* filename, const
      char* chroot)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:1617,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - pp
    - nm
    argTypes:
    - struct config_stub***
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1623
      start: 1613
    functionDepth: 0
    functionLinenumber: 1613
    functionLinenumberEnd: 1623
    functionName: cfg_stub_find
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct config_stub
    signature: struct config_stub * cfg_stub_find(struct config_stub*** pp, const
      char* nm)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/config_file.c:1631,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1632,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct config_strlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1635
      start: 1625
    functionDepth: 1
    functionLinenumber: 1625
    functionLinenumberEnd: 1635
    functionName: config_delstrlist
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 12
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void config_delstrlist(struct config_strlist* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/config_file.c:1643,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1644,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1645,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct config_str2list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1648
      start: 1637
    functionDepth: 1
    functionLinenumber: 1637
    functionLinenumberEnd: 1648
    functionName: config_deldblstrlist
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 5
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void config_deldblstrlist(struct config_str2list* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/config_file.c:1656,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1657,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1658,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1659,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct config_str3list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1662
      start: 1650
    functionDepth: 1
    functionLinenumber: 1650
    functionLinenumberEnd: 1662
    functionName: config_deltrplstrlist
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 4
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void config_deltrplstrlist(struct config_str3list* p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/config_file.c:1668,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1669,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1670,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1671,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1672,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1673,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1674,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1675,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1676,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1677,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct config_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1678
      start: 1664
    functionDepth: 2
    functionLinenumber: 1664
    functionLinenumberEnd: 1678
    functionName: config_delauth
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - free
    - config_delstrlist
    linkageType: ''
    returnType: void
    signature: void config_delauth(struct config_auth* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_delauth
      Src: /src/unbound/util/config_file.c:1686,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct config_auth*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1689
      start: 1680
    functionDepth: 3
    functionLinenumber: 1680
    functionLinenumberEnd: 1689
    functionName: config_delauths
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - config_delauth
    linkageType: ''
    returnType: void
    signature: void config_delauths(struct config_auth* p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/config_file.c:1695,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1696,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1697,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1698,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct config_stub*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1699
      start: 1691
    functionDepth: 2
    functionLinenumber: 1691
    functionLinenumberEnd: 1699
    functionName: config_delstub
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - free
    - config_delstrlist
    linkageType: ''
    returnType: void
    signature: void config_delstub(struct config_stub* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_delstub
      Src: /src/unbound/util/config_file.c:1707,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct config_stub*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1710
      start: 1701
    functionDepth: 3
    functionLinenumber: 1701
    functionLinenumberEnd: 1710
    functionName: config_delstubs
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - config_delstub
    linkageType: ''
    returnType: void
    signature: void config_delstubs(struct config_stub* p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/config_file.c:1716,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/util/config_file.c:1717,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1718,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1720,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1722,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1723,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct config_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1724
      start: 1712
    functionDepth: 2
    functionLinenumber: 1712
    functionLinenumberEnd: 1724
    functionName: config_delview
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - free
    - config_delstrlist
    - config_deldblstrlist
    linkageType: ''
    returnType: void
    signature: void config_delview(struct config_view* p)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_delview
      Src: /src/unbound/util/config_file.c:1732,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct config_view*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1735
      start: 1726
    functionDepth: 3
    functionLinenumber: 1726
    functionLinenumberEnd: 1735
    functionName: config_delviews
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - config_delview
    linkageType: ''
    returnType: void
    signature: void config_delviews(struct config_view* p)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/config_file.c:1744,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1746,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - array
    - num
    argTypes:
    - char**
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1747
      start: 1737
    functionDepth: 1
    functionLinenumber: 1737
    functionLinenumberEnd: 1747
    functionName: config_del_strarray
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 8
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void config_del_strarray(char** array, int num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/config_file.c:1755,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1756,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1757,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct config_strbytelist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1760
      start: 1749
    functionDepth: 1
    functionLinenumber: 1749
    functionLinenumberEnd: 1760
    functionName: config_del_strbytelist
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 3
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void config_del_strbytelist(struct config_strbytelist* p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/config_file.c:1766,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1767,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1768,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1769,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1770,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1771,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1772,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1773,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1774,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1775,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1776,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1777,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1778,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1779,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1780,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1781,1
    - Dst: log_ident_revert_to_default
      Src: /src/unbound/util/config_file.c:1783,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1784,1
    - Dst: config_del_strarray
      Src: /src/unbound/util/config_file.c:1786,1
    - Dst: config_del_strarray
      Src: /src/unbound/util/config_file.c:1787,1
    - Dst: config_delstubs
      Src: /src/unbound/util/config_file.c:1788,1
    - Dst: config_delstubs
      Src: /src/unbound/util/config_file.c:1789,1
    - Dst: config_delauths
      Src: /src/unbound/util/config_file.c:1790,1
    - Dst: config_delviews
      Src: /src/unbound/util/config_file.c:1791,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1792,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1793,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1795,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1796,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1798,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1799,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1800,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1801,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1802,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1803,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1804,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1805,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1806,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1807,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1808,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1809,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1810,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1811,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1812,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/util/config_file.c:1813,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/util/config_file.c:1814,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1815,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/util/config_file.c:1816,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1817,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1819,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1821,1
    - Dst: config_deltrplstrlist
      Src: /src/unbound/util/config_file.c:1822,1
    - Dst: config_del_strarray
      Src: /src/unbound/util/config_file.c:1823,1
    - Dst: config_del_strbytelist
      Src: /src/unbound/util/config_file.c:1824,1
    - Dst: config_del_strbytelist
      Src: /src/unbound/util/config_file.c:1825,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/util/config_file.c:1826,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/util/config_file.c:1827,1
    - Dst: config_del_strbytelist
      Src: /src/unbound/util/config_file.c:1828,1
    - Dst: config_deltrplstrlist
      Src: /src/unbound/util/config_file.c:1829,1
    - Dst: config_deltrplstrlist
      Src: /src/unbound/util/config_file.c:1830,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/util/config_file.c:1831,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/util/config_file.c:1832,1
    - Dst: config_del_strbytelist
      Src: /src/unbound/util/config_file.c:1833,1
    - Dst: config_deltrplstrlist
      Src: /src/unbound/util/config_file.c:1834,1
    - Dst: config_deltrplstrlist
      Src: /src/unbound/util/config_file.c:1835,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1836,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/util/config_file.c:1837,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/util/config_file.c:1838,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1839,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1840,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1841,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1842,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1843,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1844,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1845,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1846,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1847,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1848,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1849,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1850,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1851,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1852,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1853,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/util/config_file.c:1854,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/util/config_file.c:1855,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1856,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1857,1
    - Dst: config_deldblstrlist
      Src: /src/unbound/util/config_file.c:1858,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1859,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1861,1
    - Dst: config_delstrlist
      Src: /src/unbound/util/config_file.c:1862,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1864,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1866,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1867,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1869,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1870,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1871,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1872,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1873,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1874,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1878,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1879,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:1881,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 107
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1882
      start: 1762
    functionDepth: 4
    functionLinenumber: 1762
    functionLinenumberEnd: 1882
    functionName: config_delete
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 15
    functionsReached:
    - config_delauths
    - config_delviews
    - config_del_strbytelist
    - free
    - log_ident_revert_to_default
    - config_del_strarray
    - config_deltrplstrlist
    - config_deldblstrlist
    - config_delstrlist
    - config_delstubs
    linkageType: ''
    returnType: void
    signature: void config_delete(struct config_file* cfg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ub_initstate
      Src: /src/unbound/util/config_file.c:1897,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:1899,1
    - Dst: ub_random
      Src: /src/unbound/util/config_file.c:1906,1
    - Dst: ub_randfree
      Src: /src/unbound/util/config_file.c:1909,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1911
      start: 1884
    functionDepth: 1
    functionLinenumber: 1884
    functionLinenumberEnd: 1911
    functionName: init_cookie_secret
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - ub_initstate
    - ub_randfree
    - ub_random
    - log_err
    linkageType: ''
    returnType: int
    signature: int init_cookie_secret(struct config_file* cfg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - a
    - num
    argTypes:
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1935
      start: 1913
    functionDepth: 0
    functionLinenumber: 1913
    functionLinenumberEnd: 1935
    functionName: init_outgoing_availports
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void init_outgoing_availports(int* a, int num)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:1942,1
    - Dst: strtol
      Src: /src/unbound/util/config_file.c:1946,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:1948,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:1953,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:1957,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:1958,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:1963,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 2
    argNames:
    - str
    - max_port
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1968
      start: 1937
    functionDepth: 1
    functionLinenumber: 1937
    functionLinenumberEnd: 1968
    functionName: extract_port_from_str
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - log_err
    - strcmp
    - strtol
    linkageType: ''
    returnType: int
    signature: int extract_port_from_str(const char* str, int max_port)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/util/config_file.c:1973,1
    - Dst: log_warn
      Src: /src/unbound/util/config_file.c:1975,1
    - Dst: extract_port_from_str
      Src: /src/unbound/util/config_file.c:1980,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:1982,1
    - Dst: extract_port_from_str
      Src: /src/unbound/util/config_file.c:1990,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:1992,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:1997,1
    - Dst: memcpy
      Src: /src/unbound/util/config_file.c:2002,1
    - Dst: extract_port_from_str
      Src: /src/unbound/util/config_file.c:2004,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2006,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2011,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 4
    argNames:
    - str
    - allow
    - avail
    - num
    argTypes:
    - char*
    - int
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2021
      start: 1970
    functionDepth: 2
    functionLinenumber: 1970
    functionLinenumberEnd: 2021
    functionName: cfg_mark_ports
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - log_err
    - memcpy
    - extract_port_from_str
    - log_warn
    - strchr
    linkageType: ''
    returnType: int
    signature: int cfg_mark_ports(const char* str, int allow, int* avail, int num)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - avail
    - num
    argTypes:
    - int*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2033
      start: 2023
    functionDepth: 0
    functionLinenumber: 2023
    functionLinenumberEnd: 2033
    functionName: cfg_scan_ports
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int cfg_scan_ports(int* avail, int num)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: cfg_scan_ports
      Src: /src/unbound/util/config_file.c:2037,1
    - Dst: reallocarray
      Src: /src/unbound/util/config_file.c:2042,1
    - Dst: log_assert
      Src: /src/unbound/util/config_file.c:2049,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 2
    argNames:
    - cfg
    - avail
    argTypes:
    - struct config_file*
    - int**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2051
      start: 2035
    functionDepth: 2
    functionLinenumber: 2035
    functionLinenumberEnd: 2051
    functionName: cfg_condense_ports
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - cfg_scan_ports
    - log_assert
    - reallocarray
    linkageType: ''
    returnType: int
    signature: int cfg_condense_ports(struct config_file* cfg, int** avail)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/util/config_file.c:2060,1
    - Dst: fscanf
      Src: /src/unbound/util/config_file.c:2063,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2071,1
    - Dst: fclose
      Src: /src/unbound/util/config_file.c:2074,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2076,1
    - Dst: strerror
      Src: /src/unbound/util/config_file.c:2078,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 2
    argNames:
    - cfg
    - num
    argTypes:
    - struct config_file*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2082
      start: 2053
    functionDepth: 1
    functionLinenumber: 2053
    functionLinenumberEnd: 2082
    functionName: cfg_apply_local_port_policy
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - log_err
    - fscanf
    - fclose
    - fopen
    - strerror
    linkageType: ''
    returnType: void
    signature: void cfg_apply_local_port_policy(struct config_file* cfg, int num)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/unbound/util/config_file.c:2088,1
    - Dst: vfprintf
      Src: /src/unbound/util/config_file.c:2090,1
    - Dst: fprintf
      Src: /src/unbound/util/config_file.c:2091,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - fmt
    - args
    argTypes:
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2092
      start: 2085
    functionDepth: 0
    functionLinenumber: 2085
    functionLinenumberEnd: 2092
    functionName: ub_c_error_va_list
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - fprintf
    - vfprintf
    linkageType: ''
    returnType: void
    signature: void ub_c_error_va_list(const char *fmt, va_list args)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/util/config_file.c:2098,1
    - Dst: ub_c_error_va_list
      Src: /src/unbound/util/config_file.c:2099,1
    - Dst: va_end
      Src: /src/unbound/util/config_file.c:2100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - fmt
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2101
      start: 2095
    functionDepth: 1
    functionLinenumber: 2095
    functionLinenumberEnd: 2101
    functionName: ub_c_error_msg
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - ub_c_error_va_list
    - va_end
    - va_start
    linkageType: ''
    returnType: void
    signature: void ub_c_error_msg(const char* fmt, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:2106,1
    - Dst: fprintf
      Src: /src/unbound/util/config_file.c:2109,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2111
      start: 2103
    functionDepth: 0
    functionLinenumber: 2103
    functionLinenumberEnd: 2111
    functionName: ub_c_error
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - fprintf
    - strcmp
    linkageType: ''
    returnType: void
    signature: void ub_c_error(const char *str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2116
      start: 2113
    functionDepth: 0
    functionLinenumber: 2113
    functionLinenumberEnd: 2116
    functionName: ub_c_wrap
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int ub_c_wrap(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/config_file.c:2122,1
    - Dst: calloc
      Src: /src/unbound/util/config_file.c:2125,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:2127,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - list
    - item
    argTypes:
    - struct config_strlist_head*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2138
      start: 2118
    functionDepth: 1
    functionLinenumber: 2118
    functionLinenumberEnd: 2138
    functionName: cfg_strlist_append
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 4
    functionsReached:
    - free
    - calloc
    linkageType: ''
    returnType: int
    signature: int cfg_strlist_append(struct config_strlist_head* list, char* item)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_zero
      Src: /src/unbound/util/config_file.c:2147,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - region
    - head
    - item
    argTypes:
    - struct regional*
    - struct config_strlist**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2155
      start: 2140
    functionDepth: 1
    functionLinenumber: 2140
    functionLinenumberEnd: 2155
    functionName: cfg_region_strlist_insert
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - regional_alloc_zero
    linkageType: ''
    returnType: int
    signature: "int cfg_region_strlist_insert(struct regional* region,\n\tstruct config_strlist**
      head, char* item)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:2165,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - head
    - item
    argTypes:
    - struct config_strlist*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2171
      start: 2157
    functionDepth: 0
    functionLinenumber: 2157
    functionLinenumberEnd: 2171
    functionName: cfg_strlist_find
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: struct config_strlist
    signature: 'struct config_strlist *

      cfg_strlist_find(struct config_strlist* head, const char *item)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/config_file.c:2178,1
    - Dst: calloc
      Src: /src/unbound/util/config_file.c:2181,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:2183,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - head
    - item
    argTypes:
    - struct config_strlist**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2190
      start: 2173
    functionDepth: 1
    functionLinenumber: 2173
    functionLinenumberEnd: 2190
    functionName: cfg_strlist_insert
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 13
    functionsReached:
    - free
    - calloc
    linkageType: ''
    returnType: int
    signature: int cfg_strlist_insert(struct config_strlist** head, char* item)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/config_file.c:2198,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - head
    - item
    argTypes:
    - struct config_strlist**
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2215
      start: 2192
    functionDepth: 1
    functionLinenumber: 2192
    functionLinenumberEnd: 2215
    functionName: cfg_strlist_append_ex
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - calloc
    linkageType: ''
    returnType: int
    signature: int cfg_strlist_append_ex(struct config_strlist** head, char* item)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/config_file.c:2222,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:2223,1
    - Dst: calloc
      Src: /src/unbound/util/config_file.c:2226,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:2228,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:2229,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 3
    argNames:
    - head
    - item
    - i2
    argTypes:
    - struct config_str2list**
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2237
      start: 2217
    functionDepth: 1
    functionLinenumber: 2217
    functionLinenumberEnd: 2237
    functionName: cfg_str2list_insert
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 4
    functionsReached:
    - free
    - calloc
    linkageType: ''
    returnType: int
    signature: int cfg_str2list_insert(struct config_str2list** head, char* item,
      char* i2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/config_file.c:2246,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 4
    argNames:
    - head
    - item
    - i2
    - i3
    argTypes:
    - struct config_str3list**
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2255
      start: 2239
    functionDepth: 1
    functionLinenumber: 2239
    functionLinenumberEnd: 2255
    functionName: cfg_str3list_insert
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - calloc
    linkageType: ''
    returnType: int
    signature: "int cfg_str3list_insert(struct config_str3list** head, char* item,
      char* i2,\n\tchar* i3)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/config_file.c:2264,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 4
    argNames:
    - head
    - item
    - i2
    - i2len
    argTypes:
    - struct config_strbytelist**
    - char*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2273
      start: 2257
    functionDepth: 1
    functionLinenumber: 2257
    functionLinenumberEnd: 2273
    functionName: cfg_strbytelist_insert
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - calloc
    linkageType: ''
    returnType: int
    signature: "int cfg_strbytelist_insert(struct config_strbytelist** head, char*
      item,\n\tuint8_t* i2, size_t i2len)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/util/config_file.c:2280,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2281,1
    - Dst: sscanf
      Src: /src/unbound/util/config_file.c:2283,1
    - Dst: sldns_mktime_from_utc
      Src: /src/unbound/util/config_file.c:2296,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 22
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2298
      start: 2275
    functionDepth: 3
    functionLinenumber: 2275
    functionLinenumberEnd: 2298
    functionName: cfg_convert_timeval
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 3
    functionsReached:
    - memset
    - sscanf
    - sldns_mktime_from_utc
    - strlen
    linkageType: ''
    returnType: time_t
    signature: time_t cfg_convert_timeval(const char* str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/util/config_file.c:2308,1
    - Dst: isdigit
      Src: /src/unbound/util/config_file.c:2316,1
    - Dst: isdigit
      Src: /src/unbound/util/config_file.c:2318,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 17
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2323
      start: 2300
    functionDepth: 0
    functionLinenumber: 2300
    functionLinenumberEnd: 2323
    functionName: cfg_count_numbers
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 2
    functionsReached:
    - isdigit
    - isspace
    linkageType: ''
    returnType: int
    signature: int cfg_count_numbers(const char* s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: isdigit
      Src: /src/unbound/util/config_file.c:2330,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - str
    - l
    argTypes:
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2333
      start: 2326
    functionDepth: 0
    functionLinenumber: 2326
    functionLinenumberEnd: 2333
    functionName: isalldigit
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - isdigit
    linkageType: ''
    returnType: int
    signature: int isalldigit(const char* str, size_t l)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2340,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2341,1
    - Dst: isalldigit
      Src: /src/unbound/util/config_file.c:2344,1
    - Dst: atol
      Src: /src/unbound/util/config_file.c:2345,1
    - Dst: tolower
      Src: /src/unbound/util/config_file.c:2356,1
    - Dst: tolower
      Src: /src/unbound/util/config_file.c:2358,1
    - Dst: tolower
      Src: /src/unbound/util/config_file.c:2360,1
    - Dst: isdigit
      Src: /src/unbound/util/config_file.c:2362,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2365,1
    - Dst: isalldigit
      Src: /src/unbound/util/config_file.c:2371,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2372,1
    - Dst: atol
      Src: /src/unbound/util/config_file.c:2375,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 34
    argCount: 2
    argNames:
    - str
    - res
    argTypes:
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2377
      start: 2335
    functionDepth: 1
    functionLinenumber: 2335
    functionLinenumberEnd: 2377
    functionName: cfg_parse_memsize
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 3
    functionsReached:
    - log_err
    - isalldigit
    - atol
    - isdigit
    - tolower
    - strlen
    linkageType: ''
    returnType: int
    signature: int cfg_parse_memsize(const char* str, size_t* res)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:2384,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - cfg
    - tag
    argTypes:
    - struct config_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2388
      start: 2379
    functionDepth: 0
    functionLinenumber: 2379
    functionLinenumberEnd: 2388
    functionName: find_tag_id
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 2
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int find_tag_id(struct config_file* cfg, const char* tag)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: find_tag_id
      Src: /src/unbound/util/config_file.c:2395,1
    - Dst: malloc
      Src: /src/unbound/util/config_file.c:2397,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:2400,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:2402,1
    - Dst: memcpy
      Src: /src/unbound/util/config_file.c:2406,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:2407,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - cfg
    - tag
    argTypes:
    - struct config_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2412
      start: 2390
    functionDepth: 1
    functionLinenumber: 2390
    functionLinenumberEnd: 2412
    functionName: config_add_tag
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - memcpy
    - malloc
    - free
    - find_tag_id
    - strdup
    linkageType: ''
    returnType: int
    signature: int config_add_tag(struct config_file* cfg, const char* tag)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/config_file.c:2419,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - bitlist
    - len
    - id
    argTypes:
    - uint8_t*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2422
      start: 2415
    functionDepth: 1
    functionLinenumber: 2415
    functionLinenumberEnd: 2422
    functionName: cfg_set_bit
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void cfg_set_bit(uint8_t* bitlist, size_t len, int id)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2433,1
    - Dst: calloc
      Src: /src/unbound/util/config_file.c:2437,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2439,1
    - Dst: strsep
      Src: /src/unbound/util/config_file.c:2445,1
    - Dst: find_tag_id
      Src: /src/unbound/util/config_file.c:2447,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2450,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:2451,1
    - Dst: cfg_set_bit
      Src: /src/unbound/util/config_file.c:2454,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - cfg
    - str
    - listlen
    argTypes:
    - struct config_file*
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2460
      start: 2424
    functionDepth: 2
    functionLinenumber: 2424
    functionLinenumberEnd: 2460
    functionName: config_parse_taglist
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - log_err
    - free
    - calloc
    - cfg_set_bit
    - find_tag_id
    - strsep
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t * config_parse_taglist(struct config_file* cfg, char* str,\n
      \       size_t* listlen)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strncasecmp
      Src: /src/unbound/util/config_file.c:2466,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:2467,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2468,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2470,1
    - Dst: calloc
      Src: /src/unbound/util/config_file.c:2474,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2474,1
    - Dst: isxdigit
      Src: /src/unbound/util/config_file.c:2479,1
    - Dst: isxdigit
      Src: /src/unbound/util/config_file.c:2479,1
    - Dst: sldns_hexdigit_to_int
      Src: /src/unbound/util/config_file.c:2481,1
    - Dst: sldns_hexdigit_to_int
      Src: /src/unbound/util/config_file.c:2482,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:2485,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2488,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 2
    argNames:
    - str
    - nsid_len
    argTypes:
    - char*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2491
      start: 2462
    functionDepth: 1
    functionLinenumber: 2462
    functionLinenumberEnd: 2491
    functionName: cfg_parse_nsid
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - sldns_hexdigit_to_int
    - isxdigit
    - free
    - calloc
    - strlen
    - strncasecmp
    - strdup
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t * cfg_parse_nsid(const char* str, uint16_t* nsid_len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/util/config_file.c:2506,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2508,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:2512,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 3
    argNames:
    - cfg
    - taglist
    - taglen
    argTypes:
    - struct config_file*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2513
      start: 2494
    functionDepth: 2
    functionLinenumber: 2494
    functionLinenumberEnd: 2513
    functionName: config_taglist2str
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - snprintf
    - strdup
    - strlen
    linkageType: ''
    returnType: char
    signature: "char * config_taglist2str(struct config_file* cfg, uint8_t* taglist,\n
      \       size_t taglen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 4
    argNames:
    - list1
    - list1len
    - list2
    - list2len
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2526
      start: 2515
    functionDepth: 0
    functionLinenumber: 2515
    functionLinenumberEnd: 2526
    functionName: taglist_intersect
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int taglist_intersect(uint8_t* list1, size_t list1len, const uint8_t*
      list2,\n\tsize_t list2len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: config_apply_max_rtt
      Src: /src/unbound/util/config_file.c:2541,1
    - Dst: log_set_time_asc
      Src: /src/unbound/util/config_file.c:2548,1
    - Dst: log_set_time_iso
      Src: /src/unbound/util/config_file.c:2549,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 24
    argCount: 1
    argNames:
    - config
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2554
      start: 2528
    functionDepth: 2
    functionLinenumber: 2528
    functionLinenumberEnd: 2554
    functionName: config_apply
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 3
    functionsReached:
    - log_set_time_asc
    - config_apply_max_rtt
    - log_set_time_iso
    linkageType: ''
    returnType: void
    signature: void config_apply(struct config_file* config)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: getpwnam
      Src: /src/unbound/util/config_file.c:2562,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2570
      start: 2556
    functionDepth: 0
    functionLinenumber: 2556
    functionLinenumberEnd: 2570
    functionName: config_lookup_uid
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - getpwnam
    linkageType: ''
    returnType: void
    signature: void config_lookup_uid(struct config_file* cfg)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/unbound/util/config_file.c:2587,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2587,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2589,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2594,1
    - Dst: strncmp
      Src: /src/unbound/util/config_file.c:2610,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2611,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2612,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2612,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2613,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2619,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 24
    argCount: 3
    argNames:
    - fname
    - cfg
    - use_chdir
    argTypes:
    - char*
    - struct config_file*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2621
      start: 2581
    functionDepth: 0
    functionLinenumber: 2581
    functionLinenumberEnd: 2621
    functionName: strlen_after_chroot
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - strncmp
    - strlen
    linkageType: ''
    returnType: size_t
    signature: size_t strlen_after_chroot(const char* fname, struct config_file* cfg,
      int use_chdir)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: strlen_after_chroot
      Src: /src/unbound/util/config_file.c:2626,1
    - Dst: malloc
      Src: /src/unbound/util/config_file.c:2628,1
    - Dst: strncmp
      Src: /src/unbound/util/config_file.c:2634,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2634,1
    - Dst: strlcpy
      Src: /src/unbound/util/config_file.c:2636,1
    - Dst: strlcpy
      Src: /src/unbound/util/config_file.c:2643,1
    - Dst: strlcat
      Src: /src/unbound/util/config_file.c:2657,1
    - Dst: strncmp
      Src: /src/unbound/util/config_file.c:2660,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2661,1
    - Dst: strlcat
      Src: /src/unbound/util/config_file.c:2662,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2662,1
    - Dst: strlcat
      Src: /src/unbound/util/config_file.c:2664,1
    - Dst: strlcat
      Src: /src/unbound/util/config_file.c:2669,1
    - Dst: strlcat
      Src: /src/unbound/util/config_file.c:2670,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 30
    argCount: 3
    argNames:
    - fname
    - cfg
    - use_chdir
    argTypes:
    - char*
    - struct config_file*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2673
      start: 2623
    functionDepth: 1
    functionLinenumber: 2623
    functionLinenumberEnd: 2673
    functionName: fname_after_chroot
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 2
    functionsReached:
    - strlcat
    - strlcpy
    - strncmp
    - malloc
    - strlen
    - strlen_after_chroot
    linkageType: ''
    returnType: char
    signature: 'char *

      fname_after_chroot(const char* fname, struct config_file* cfg, int use_chdir)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/util/config_file.c:2678,1
    - Dst: strchr
      Src: /src/unbound/util/config_file.c:2679,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2685
      start: 2676
    functionDepth: 0
    functionLinenumber: 2676
    functionLinenumberEnd: 2685
    functionName: next_space_pos
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - strchr
    linkageType: ''
    returnType: char
    signature: char * next_space_pos(const char* str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strrchr
      Src: /src/unbound/util/config_file.c:2690,1
    - Dst: strrchr
      Src: /src/unbound/util/config_file.c:2691,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2697
      start: 2688
    functionDepth: 0
    functionLinenumber: 2688
    functionLinenumberEnd: 2697
    functionName: last_space_pos
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - strrchr
    linkageType: ''
    returnType: char
    signature: char * last_space_pos(const char* str)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/util/config_file.c:2707,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2710,1
    - Dst: next_space_pos
      Src: /src/unbound/util/config_file.c:2713,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2715,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2719,1
    - Dst: strlcpy
      Src: /src/unbound/util/config_file.c:2722,1
    - Dst: last_space_pos
      Src: /src/unbound/util/config_file.c:2725,1
    - Dst: isspace
      Src: /src/unbound/util/config_file.c:2726,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2729,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:2733,1
    - Dst: cfg_strlist_insert
      Src: /src/unbound/util/config_file.c:2734,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:2735,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:2737,1
    - Dst: cfg_strlist_insert
      Src: /src/unbound/util/config_file.c:2738,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:2739,1
    - Dst: cfg_str2list_insert
      Src: /src/unbound/util/config_file.c:2742,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:2742,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:2743,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 34
    argCount: 2
    argNames:
    - cfg
    - val
    argTypes:
    - struct config_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2745
      start: 2699
    functionDepth: 2
    functionLinenumber: 2699
    functionLinenumberEnd: 2745
    functionName: cfg_parse_local_zone
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - log_err
    - strcmp
    - isspace
    - cfg_str2list_insert
    - cfg_strlist_insert
    - last_space_pos
    - strdup
    - next_space_pos
    linkageType: ''
    returnType: int
    signature: int cfg_parse_local_zone(struct config_file* cfg, const char* val)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/util/config_file.c:2758,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2761,1
    - Dst: next_space_pos
      Src: /src/unbound/util/config_file.c:2764,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2766,1
    - Dst: last_space_pos
      Src: /src/unbound/util/config_file.c:2770,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2772,1
    - Dst: sscanf
      Src: /src/unbound/util/config_file.c:2776,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/util/config_file.c:2779,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2780,1
    - Dst: addr_is_ip6
      Src: /src/unbound/util/config_file.c:2788,1
    - Dst: memmove
      Src: /src/unbound/util/config_file.c:2793,1
    - Dst: snprintf
      Src: /src/unbound/util/config_file.c:2802,1
    - Dst: memmove
      Src: /src/unbound/util/config_file.c:2805,1
    - Dst: snprintf
      Src: /src/unbound/util/config_file.c:2807,1
    - Dst: isspace
      Src: /src/unbound/util/config_file.c:2813,1
    - Dst: snprintf
      Src: /src/unbound/util/config_file.c:2816,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2816,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2816,1
    - Dst: snprintf
      Src: /src/unbound/util/config_file.c:2819,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2819,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2819,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:2821,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2823,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 49
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2827
      start: 2747
    functionDepth: 2
    functionLinenumber: 2747
    functionLinenumberEnd: 2827
    functionName: cfg_ptr_reverse
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - log_err
    - isspace
    - memmove
    - sscanf
    - snprintf
    - ipstrtoaddr
    - addr_is_ip6
    - strlen
    - last_space_pos
    - strdup
    - next_space_pos
    linkageType: ''
    returnType: char
    signature: char * cfg_ptr_reverse(char* str)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: RegOpenKeyEx
      Src: /src/unbound/util/config_file.c:2839,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2843,1
    - Dst: RegQueryValueEx
      Src: /src/unbound/util/config_file.c:2846,1
    - Dst: RegCloseKey
      Src: /src/unbound/util/config_file.c:2847,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2848,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2852,1
    - Dst: strdup
      Src: /src/unbound/util/config_file.c:2858,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2859,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 2
    argNames:
    - key
    - name
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2862
      start: 2830
    functionDepth: 1
    functionLinenumber: 2830
    functionLinenumberEnd: 2862
    functionName: w_lookup_reg_str
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - log_err
    - RegCloseKey
    - RegOpenKeyEx
    - RegQueryValueEx
    - strdup
    linkageType: ''
    returnType: char
    signature: 'char *

      w_lookup_reg_str(const char* key, const char* name)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:2868,1
    - Dst: GetModuleFileName
      Src: /src/unbound/util/config_file.c:2872,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2873,1
    - Dst: strrchr
      Src: /src/unbound/util/config_file.c:2874,1
    - Dst: strrchr
      Src: /src/unbound/util/config_file.c:2875,1
    - Dst: log_err
      Src: /src/unbound/util/config_file.c:2876,1
    - Dst: free
      Src: /src/unbound/util/config_file.c:2879,1
    - Dst: memdup
      Src: /src/unbound/util/config_file.c:2880,1
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2880,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2884
      start: 2864
    functionDepth: 1
    functionLinenumber: 2864
    functionLinenumberEnd: 2884
    functionName: w_config_adjust_directory
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 2
    functionsReached:
    - log_err
    - GetModuleFileName
    - strcmp
    - strrchr
    - free
    - strlen
    - memdup
    linkageType: ''
    returnType: void
    signature: void w_config_adjust_directory(struct config_file* cfg)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2894
      start: 2887
    functionDepth: 0
    functionLinenumber: 2887
    functionLinenumberEnd: 2894
    functionName: options_remote_is_address
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int options_remote_is_address(struct config_file* cfg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/util/config_file.c:2901,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:2903,1
    - Dst: atoi
      Src: /src/unbound/util/config_file.c:2909,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 4
    argNames:
    - ifname
    - default_port
    - port
    - additional_ports
    argTypes:
    - char*
    - int
    - int
    - struct config_strlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2912
      start: 2896
    functionDepth: 0
    functionLinenumber: 2896
    functionLinenumberEnd: 2912
    functionName: if_listens_on
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - strchr
    - atoi
    linkageType: ''
    returnType: int
    signature: "int if_listens_on(const char* ifname, int default_port, int port,\n\tstruct
      config_strlist* additional_ports)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_listens_on
      Src: /src/unbound/util/config_file.c:2918,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - ifname
    - default_port
    - ssl_port
    - tls_additional_port
    argTypes:
    - char*
    - int
    - int
    - struct config_strlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2920
      start: 2914
    functionDepth: 1
    functionLinenumber: 2914
    functionLinenumberEnd: 2920
    functionName: if_is_ssl
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - if_listens_on
    linkageType: ''
    returnType: int
    signature: "int if_is_ssl(const char* ifname, int default_port, int ssl_port,\n\tstruct
      config_strlist* tls_additional_port)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_listens_on
      Src: /src/unbound/util/config_file.c:2926,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ifname
    - default_port
    - proxy_protocol_port
    argTypes:
    - char*
    - int
    - struct config_strlist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2927
      start: 2922
    functionDepth: 1
    functionLinenumber: 2922
    functionLinenumberEnd: 2927
    functionName: if_is_pp2
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - if_listens_on
    linkageType: ''
    returnType: int
    signature: "int if_is_pp2(const char* ifname, int default_port,\n\tstruct config_strlist*
      proxy_protocol_port)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_listens_on
      Src: /src/unbound/util/config_file.c:2932,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ifname
    - default_port
    - https_port
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2933
      start: 2929
    functionDepth: 1
    functionLinenumber: 2929
    functionLinenumberEnd: 2933
    functionName: if_is_https
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - if_listens_on
    linkageType: ''
    returnType: int
    signature: int if_is_https(const char* ifname, int default_port, int https_port)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_listens_on
      Src: /src/unbound/util/config_file.c:2939,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ifname
    - default_port
    - dnscrypt_port
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2946
      start: 2935
    functionDepth: 1
    functionLinenumber: 2935
    functionLinenumberEnd: 2946
    functionName: if_is_dnscrypt
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - if_listens_on
    linkageType: ''
    returnType: int
    signature: int if_is_dnscrypt(const char* ifname, int default_port, int dnscrypt_port)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/util/config_file.c:2952,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2953
      start: 2948
    functionDepth: 0
    functionLinenumber: 2948
    functionLinenumberEnd: 2953
    functionName: getmem_str
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 11
    functionsReached:
    - strlen
    linkageType: ''
    returnType: size_t
    signature: size_t getmem_str(char* str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: if_listens_on
      Src: /src/unbound/util/config_file.c:2959,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 3
    argNames:
    - ifname
    - default_port
    - quic_port
    argTypes:
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2966
      start: 2955
    functionDepth: 1
    functionLinenumber: 2955
    functionLinenumberEnd: 2966
    functionName: if_is_quic
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - if_listens_on
    linkageType: ''
    returnType: int
    signature: int if_is_quic(const char* ifname, int default_port, int quic_port)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/util/config_file.c:2974,1
    - Dst: strtol
      Src: /src/unbound/util/config_file.c:2979,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 17
    argCount: 2
    argNames:
    - ports
    - p
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2989
      start: 2968
    functionDepth: 0
    functionLinenumber: 2968
    functionLinenumberEnd: 2989
    functionName: cfg_ports_list_contains
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - isspace
    - strtol
    linkageType: ''
    returnType: int
    signature: int cfg_ports_list_contains(char* ports, int p)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_is_https
      Src: /src/unbound/util/config_file.c:2996,1
    - Dst: cfg_ports_list_contains
      Src: /src/unbound/util/config_file.c:2999,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3002
      start: 2991
    functionDepth: 2
    functionLinenumber: 2991
    functionLinenumberEnd: 3002
    functionName: cfg_has_https
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 3
    functionsReached:
    - if_is_https
    - cfg_ports_list_contains
    linkageType: ''
    returnType: int
    signature: int cfg_has_https(struct config_file* cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: if_is_quic
      Src: /src/unbound/util/config_file.c:3010,1
    - Dst: cfg_ports_list_contains
      Src: /src/unbound/util/config_file.c:3013,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3020
      start: 3004
    functionDepth: 2
    functionLinenumber: 3004
    functionLinenumberEnd: 3020
    functionName: cfg_has_quic
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 4
    functionsReached:
    - if_is_quic
    - cfg_ports_list_contains
    linkageType: ''
    returnType: int
    signature: int cfg_has_quic(struct config_file* cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/util/config_file.c:3026,1
    - Dst: isspace
      Src: /src/unbound/util/config_file.c:3027,1
    - Dst: strncmp
      Src: /src/unbound/util/config_file.c:3028,1
    - Dst: strncmp
      Src: /src/unbound/util/config_file.c:3029,1
    - Dst: isspace
      Src: /src/unbound/util/config_file.c:3031,1
    - Dst: isspace
      Src: /src/unbound/util/config_file.c:3035,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 16
    argCount: 1
    argNames:
    - tls_protocols
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3042
      start: 3022
    functionDepth: 0
    functionLinenumber: 3022
    functionLinenumberEnd: 3042
    functionName: cfg_tls_protocols_is_valid
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 1
    functionsReached:
    - strncmp
    - isspace
    linkageType: ''
    returnType: int
    signature: int cfg_tls_protocols_is_valid(const char* tls_protocols)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/util/config_file.c:3051,1
    - Dst: isspace
      Src: /src/unbound/util/config_file.c:3052,1
    - Dst: strncmp
      Src: /src/unbound/util/config_file.c:3053,1
    - Dst: strncmp
      Src: /src/unbound/util/config_file.c:3056,1
    - Dst: isspace
      Src: /src/unbound/util/config_file.c:3062,1
    - Dst: isspace
      Src: /src/unbound/util/config_file.c:3065,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 22
    argCount: 3
    argNames:
    - tls_protocols
    - allow12
    - allow13
    argTypes:
    - char*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3068
      start: 3044
    functionDepth: 0
    functionLinenumber: 3044
    functionLinenumberEnd: 3068
    functionName: cfg_tls_protocols_allowed
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - strncmp
    - isspace
    linkageType: ''
    returnType: void
    signature: void cfg_tls_protocols_allowed(const char* tls_protocols, int* allow12,
      int* allow13)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/unbound/util/config_file.c:3074,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - file
    - mtime
    - ns
    - nonexist
    argTypes:
    - char*
    - time_t*
    - long*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3092
      start: 3070
    functionDepth: 0
    functionLinenumber: 3070
    functionLinenumberEnd: 3092
    functionName: file_get_mtime
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 3
    functionsReached:
    - stat
    linkageType: ''
    returnType: int
    signature: int file_get_mtime(const char* file, time_t* mtime, long* ns, int*
      nonexist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3096,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3096,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3097,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3097,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3098,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3098,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3099,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3100,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3101,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3102,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3103,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3104,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3105,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3106,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3107,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3108,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3109,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3110,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3111,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3111,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3112,1
    - Dst: strcmp
      Src: /src/unbound/util/config_file.c:3113,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3116
      start: 3094
    functionDepth: 0
    functionLinenumber: 3094
    functionLinenumberEnd: 3116
    functionName: cfg_local_zone_type_value_check
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int cfg_local_zone_type_value_check(const char* str)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3129
      start: 3118
    functionDepth: 0
    functionLinenumber: 3118
    functionLinenumberEnd: 3129
    functionName: cfg_local_zone_type_list
    functionSourceFile: /src/unbound/util/config_file.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * cfg_local_zone_type_list(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 226
    functionDepth: 0
    functionLinenumber: 226
    functionLinenumberEnd: 227
    functionName: log_assert
    functionSourceFile: /src/unbound/util/log.h
    functionUses: 415
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_assert(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 233
    functionName: log_assert
    functionSourceFile: /src/unbound/util/log.h
    functionUses: 415
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: log_assert(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 58
    functionDepth: 0
    functionLinenumber: 58
    functionLinenumberEnd: 59
    functionName: alloc_special_clean
    functionSourceFile: /src/unbound/util/alloc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: alloc_special_clean(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 60
    functionDepth: 0
    functionLinenumber: 60
    functionLinenumberEnd: 61
    functionName: alloc_special_next
    functionSourceFile: /src/unbound/util/alloc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: alloc_special_next(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 64
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 64
    functionName: alloc_set_special_next
    functionSourceFile: /src/unbound/util/alloc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: alloc_set_special_next(x, y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 194
    functionName: malloc
    functionSourceFile: /src/unbound/util/alloc.h
    functionUses: 87
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: malloc(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - n
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 195
    functionName: calloc
    functionSourceFile: /src/unbound/util/alloc.h
    functionUses: 176
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: calloc(n,s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 195
    functionDepth: 0
    functionLinenumber: 195
    functionLinenumberEnd: 196
    functionName: free
    functionSourceFile: /src/unbound/util/alloc.h
    functionUses: 583
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: free(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 197
    functionName: realloc
    functionSourceFile: /src/unbound/util/alloc.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: realloc(p,s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 209
    functionName: strdup
    functionSourceFile: /src/unbound/util/alloc.h
    functionUses: 109
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: strdup(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rr
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 213
    functionName: sldns_rr2str
    functionSourceFile: /src/unbound/util/alloc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sldns_rr2str(rr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rdf
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 214
    functionName: sldns_rdf2str
    functionSourceFile: /src/unbound/util/alloc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sldns_rdf2str(rdf)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - t
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 215
    functionName: sldns_rr_type2str
    functionSourceFile: /src/unbound/util/alloc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sldns_rr_type2str(t)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 216
    functionName: sldns_rr_class2str
    functionSourceFile: /src/unbound/util/alloc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sldns_rr_class2str(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 217
    functionName: sldns_rr_list2str
    functionSourceFile: /src/unbound/util/alloc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sldns_rr_list2str(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 218
    functionName: sldns_pkt2str
    functionSourceFile: /src/unbound/util/alloc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sldns_pkt2str(p)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 219
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 219
    functionName: sldns_pkt_rcode2str
    functionSourceFile: /src/unbound/util/alloc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sldns_pkt_rcode2str(r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - r
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 220
    functionName: sldns_pkt2wire
    functionSourceFile: /src/unbound/util/alloc.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: sldns_pkt2wire(a, r, s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - d
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 222
    functionName: i2d_DSA_SIG
    functionSourceFile: /src/unbound/util/alloc.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: i2d_DSA_SIG(d, s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 52
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 52
    functionName: ALIGN_UP
    functionSourceFile: /src/unbound/util/regional.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ALIGN_UP(x, s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regional_create_custom
      Src: /src/unbound/util/regional.c:68,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 69
      start: 65
    functionDepth: 1
    functionLinenumber: 65
    functionLinenumberEnd: 69
    functionName: regional_create
    functionSourceFile: /src/unbound/util/regional.c
    functionUses: 25
    functionsReached:
    - regional_create_custom
    linkageType: ''
    returnType: struct regional
    signature: "struct regional * \nregional_create(void)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ALIGN_UP
      Src: /src/unbound/util/regional.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 72
    functionDepth: 1
    functionLinenumber: 72
    functionLinenumberEnd: 81
    functionName: regional_init
    functionSourceFile: /src/unbound/util/regional.c
    functionUses: 0
    functionsReached:
    - ALIGN_UP
    linkageType: ''
    returnType: void
    signature: void regional_init(struct regional* r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ALIGN_UP
      Src: /src/unbound/util/regional.c:93,1
    - Dst: malloc
      Src: /src/unbound/util/regional.c:94,1
    - Dst: log_assert
      Src: /src/unbound/util/regional.c:95,1
    - Dst: regional_init
      Src: /src/unbound/util/regional.c:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - size
    - large_object_size
    argTypes:
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 89
    functionDepth: 2
    functionLinenumber: 89
    functionLinenumberEnd: 101
    functionName: regional_create_custom_large_object
    functionSourceFile: /src/unbound/util/regional.c
    functionUses: 0
    functionsReached:
    - malloc
    - ALIGN_UP
    - log_assert
    - regional_init
    linkageType: ''
    returnType: struct regional
    signature: 'struct regional *

      regional_create_custom_large_object(size_t size, size_t large_object_size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_create_custom_large_object
      Src: /src/unbound/util/regional.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 103
    functionDepth: 3
    functionLinenumber: 103
    functionLinenumberEnd: 110
    functionName: regional_create_custom
    functionSourceFile: /src/unbound/util/regional.c
    functionUses: 6
    functionsReached:
    - regional_create_custom_large_object
    linkageType: ''
    returnType: struct regional
    signature: 'struct regional *

      regional_create_custom(size_t size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regional_create_custom_large_object
      Src: /src/unbound/util/regional.c:115,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 112
    functionDepth: 3
    functionLinenumber: 112
    functionLinenumberEnd: 116
    functionName: regional_create_nochunk
    functionSourceFile: /src/unbound/util/regional.c
    functionUses: 1
    functionsReached:
    - regional_create_custom_large_object
    linkageType: ''
    returnType: struct regional
    signature: 'struct regional *

      regional_create_nochunk(size_t size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/regional.c:124,1
    - Dst: free
      Src: /src/unbound/util/regional.c:130,1
    - Dst: regional_init
      Src: /src/unbound/util/regional.c:133,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 134
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 134
    functionName: regional_free_all
    functionSourceFile: /src/unbound/util/regional.c
    functionUses: 39
    functionsReached:
    - free
    - regional_init
    linkageType: ''
    returnType: void
    signature: void regional_free_all(struct regional *r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_free_all
      Src: /src/unbound/util/regional.c:140,1
    - Dst: free
      Src: /src/unbound/util/regional.c:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 136
    functionDepth: 3
    functionLinenumber: 136
    functionLinenumberEnd: 142
    functionName: regional_destroy
    functionSourceFile: /src/unbound/util/regional.c
    functionUses: 30
    functionsReached:
    - free
    - regional_free_all
    linkageType: ''
    returnType: void
    signature: void regional_destroy(struct regional *r)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/util/regional.c:187,1
    - Dst: memmove
      Src: /src/unbound/util/regional.c:189,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - r
    - init
    - size
    argTypes:
    - struct regional*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 191
      start: 184
    functionDepth: 1
    functionLinenumber: 184
    functionLinenumberEnd: 191
    functionName: regional_alloc_init
    functionSourceFile: /src/unbound/util/regional.c
    functionUses: 44
    functionsReached:
    - regional_alloc
    - memmove
    linkageType: ''
    returnType: void
    signature: 'void *

      regional_alloc_init(struct regional* r, const void *init, size_t size)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/util/regional.c:196,1
    - Dst: memset
      Src: /src/unbound/util/regional.c:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - r
    - size
    argTypes:
    - struct regional*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 200
    functionName: regional_alloc_zero
    functionSourceFile: /src/unbound/util/regional.c
    functionUses: 35
    functionsReached:
    - memset
    - regional_alloc
    linkageType: ''
    returnType: void
    signature: 'void *

      regional_alloc_zero(struct regional *r, size_t size)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_init
      Src: /src/unbound/util/regional.c:205,1
    - Dst: strlen
      Src: /src/unbound/util/regional.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - r
    - string
    argTypes:
    - struct regional*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 202
    functionDepth: 2
    functionLinenumber: 202
    functionLinenumberEnd: 206
    functionName: regional_strdup
    functionSourceFile: /src/unbound/util/regional.c
    functionUses: 14
    functionsReached:
    - strlen
    - regional_alloc_init
    linkageType: ''
    returnType: char
    signature: 'char *

      regional_strdup(struct regional *r, const char *string)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 212
    functionDepth: 0
    functionLinenumber: 212
    functionLinenumberEnd: 222
    functionName: count_chunks
    functionSourceFile: /src/unbound/util/regional.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t count_chunks(struct regional* r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 237
    functionName: count_large
    functionSourceFile: /src/unbound/util/regional.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t count_large(struct regional* r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/regional.c:243,1
    - Dst: log_assert
      Src: /src/unbound/util/regional.c:244,1
    - Dst: log_assert
      Src: /src/unbound/util/regional.c:245,1
    - Dst: log_assert
      Src: /src/unbound/util/regional.c:246,1
    - Dst: log_info
      Src: /src/unbound/util/regional.c:248,1
    - Dst: count_chunks
      Src: /src/unbound/util/regional.c:249,1
    - Dst: count_large
      Src: /src/unbound/util/regional.c:249,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 250
    functionName: regional_log_stats
    functionSourceFile: /src/unbound/util/regional.c
    functionUses: 0
    functionsReached:
    - count_chunks
    - count_large
    - log_info
    - log_assert
    linkageType: ''
    returnType: void
    signature: void regional_log_stats(struct regional *r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: count_chunks
      Src: /src/unbound/util/regional.c:255,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - r
    argTypes:
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 252
    functionDepth: 1
    functionLinenumber: 252
    functionLinenumberEnd: 257
    functionName: regional_get_mem
    functionSourceFile: /src/unbound/util/regional.c
    functionUses: 13
    functionsReached:
    - count_chunks
    linkageType: ''
    returnType: size_t
    signature: size_t regional_get_mem(struct regional* r)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - v
    argTypes:
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 68
    functionName: timestwo
    functionSourceFile: /src/unbound/util/timehist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void timestwo(struct timeval* v)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/util/timehist.c:76,1
    - Dst: timestwo
      Src: /src/unbound/util/timehist.c:79,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - hist
    argTypes:
    - struct timehist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 71
    functionDepth: 1
    functionLinenumber: 71
    functionLinenumberEnd: 83
    functionName: dosetup
    functionSourceFile: /src/unbound/util/timehist.c
    functionUses: 0
    functionsReached:
    - memset
    - timestwo
    linkageType: ''
    returnType: void
    signature: void dosetup(struct timehist* hist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/timehist.c:87,1
    - Dst: calloc
      Src: /src/unbound/util/timehist.c:92,1
    - Dst: free
      Src: /src/unbound/util/timehist.c:95,1
    - Dst: dosetup
      Src: /src/unbound/util/timehist.c:99,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 101
    functionName: timehist_setup
    functionSourceFile: /src/unbound/util/timehist.c
    functionUses: 2
    functionsReached:
    - free
    - calloc
    - dosetup
    linkageType: ''
    returnType: struct timehist
    signature: struct timehist * timehist_setup(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/timehist.c:107,1
    - Dst: free
      Src: /src/unbound/util/timehist.c:108,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - hist
    argTypes:
    - struct timehist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 103
    functionDepth: 1
    functionLinenumber: 103
    functionLinenumberEnd: 109
    functionName: timehist_delete
    functionSourceFile: /src/unbound/util/timehist.c
    functionUses: 2
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void timehist_delete(struct timehist* hist)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - hist
    argTypes:
    - struct timehist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 116
    functionName: timehist_clear
    functionSourceFile: /src/unbound/util/timehist.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void timehist_clear(struct timehist* hist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timeval_smaller
      Src: /src/unbound/util/timehist.c:122,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - hist
    - tv
    argTypes:
    - struct timehist*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 118
    functionDepth: 1
    functionLinenumber: 118
    functionLinenumberEnd: 129
    functionName: timehist_insert
    functionSourceFile: /src/unbound/util/timehist.c
    functionUses: 1
    functionsReached:
    - timeval_smaller
    linkageType: ''
    returnType: void
    signature: void timehist_insert(struct timehist* hist, struct timeval* tv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/util/timehist.c:137,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - hist
    argTypes:
    - struct timehist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 146
    functionName: timehist_print
    functionSourceFile: /src/unbound/util/timehist.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void timehist_print(struct timehist* hist)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/util/timehist.c:152,1
    - Dst: timehist_quartile
      Src: /src/unbound/util/timehist.c:153,1
    - Dst: timehist_quartile
      Src: /src/unbound/util/timehist.c:154,1
    - Dst: timehist_quartile
      Src: /src/unbound/util/timehist.c:155,1
    - Dst: log_info
      Src: /src/unbound/util/timehist.c:157,1
    - Dst: log_info
      Src: /src/unbound/util/timehist.c:160,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - hist
    - name
    argTypes:
    - struct timehist*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 169
      start: 148
    functionDepth: 1
    functionLinenumber: 148
    functionLinenumberEnd: 169
    functionName: timehist_log
    functionSourceFile: /src/unbound/util/timehist.c
    functionUses: 1
    functionsReached:
    - log_info
    - timehist_quartile
    linkageType: ''
    returnType: void
    signature: void timehist_log(struct timehist* hist, const char* name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - hist
    argTypes:
    - struct timehist*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 172
    functionDepth: 0
    functionLinenumber: 172
    functionLinenumberEnd: 179
    functionName: timehist_count
    functionSourceFile: /src/unbound/util/timehist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t timehist_count(struct timehist* hist)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: timehist_count
      Src: /src/unbound/util/timehist.c:190,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - hist
    - q
    argTypes:
    - struct timehist*
    - double
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 209
    functionName: timehist_quartile
    functionSourceFile: /src/unbound/util/timehist.c
    functionUses: 2
    functionsReached:
    - timehist_count
    linkageType: ''
    returnType: double
    signature: double timehist_quartile(struct timehist* hist, double q)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - hist
    - array
    - sz
    argTypes:
    - struct timehist*
    - long long*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 220
    functionName: timehist_export
    functionSourceFile: /src/unbound/util/timehist.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void timehist_export(struct timehist* hist, long long* array, size_t
      sz)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 3
    argNames:
    - hist
    - array
    - sz
    argTypes:
    - struct timehist*
    - long long*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 231
    functionName: timehist_import
    functionSourceFile: /src/unbound/util/timehist.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void timehist_import(struct timehist* hist, long long* array, size_t
      sz)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 9
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 57
      start: 44
    functionDepth: 0
    functionLinenumber: 44
    functionLinenumberEnd: 57
    functionName: compare_1982
    functionSourceFile: /src/unbound/util/rfc_1982.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int compare_1982(uint32_t a, uint32_t b)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - uint32_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 59
    functionDepth: 0
    functionLinenumber: 59
    functionLinenumberEnd: 75
    functionName: subtract_1982
    functionSourceFile: /src/unbound/util/rfc_1982.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t subtract_1982(uint32_t a, uint32_t b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 75
    functionName: FLAGS_GET_RCODE
    functionSourceFile: /src/unbound/util/net_help.h
    functionUses: 35
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FLAGS_GET_RCODE(f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - f
    - ','
    - r
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 77
    functionName: FLAGS_SET_RCODE
    functionSourceFile: /src/unbound/util/net_help.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: FLAGS_SET_RCODE(f, r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - rnd
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 98
    functionName: GET_RANDOM_ID
    functionSourceFile: /src/unbound/util/net_help.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: GET_RANDOM_ID(rnd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/random.c:90,1
    - Dst: log_err
      Src: /src/unbound/util/random.c:92,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ATTR_UNUSED(from)
    argTypes:
    - struct ub_randstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 88
    functionDepth: 1
    functionLinenumber: 88
    functionLinenumberEnd: 96
    functionName: ub_initstate
    functionSourceFile: /src/unbound/util/random.c
    functionUses: 9
    functionsReached:
    - log_err
    - calloc
    linkageType: ''
    returnType: struct ub_randstate
    signature: struct ub_randstate * ub_initstate(struct ub_randstate* ATTR_UNUSED(from))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - state
    argTypes:
    - struct ub_randstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 102
    functionName: ub_random
    functionSourceFile: /src/unbound/util/random.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: long int
    signature: long int ub_random(struct ub_randstate* state)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - x
    argTypes:
    - struct ub_randstate*
    - long int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 109
    functionName: ub_random_max
    functionSourceFile: /src/unbound/util/random.c
    functionUses: 18
    functionsReached: []
    linkageType: ''
    returnType: long int
    signature: long int ub_random_max(struct ub_randstate* state, long int x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/util/random.c:116,1
    - Dst: log_err
      Src: /src/unbound/util/random.c:118,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ATTR_UNUSED(from)
    argTypes:
    - struct ub_randstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 122
    functionName: ub_initstate
    functionSourceFile: /src/unbound/util/random.c
    functionUses: 9
    functionsReached:
    - malloc
    - log_err
    linkageType: ''
    returnType: struct ub_randstate
    signature: "struct ub_randstate * \nub_initstate(struct ub_randstate* ATTR_UNUSED(from))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arc4random
      Src: /src/unbound/util/random.c:128,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(s)
    argTypes:
    - struct ub_randstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 129
      start: 124
    functionDepth: 7
    functionLinenumber: 124
    functionLinenumberEnd: 129
    functionName: ub_random
    functionSourceFile: /src/unbound/util/random.c
    functionUses: 7
    functionsReached:
    - arc4random
    linkageType: ''
    returnType: long int
    signature: long int ub_random(struct ub_randstate* ATTR_UNUSED(s))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: arc4random_uniform
      Src: /src/unbound/util/random.c:136,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - state
    - x
    argTypes:
    - struct ub_randstate*
    - long int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 137
      start: 131
    functionDepth: 2
    functionLinenumber: 131
    functionLinenumberEnd: 137
    functionName: ub_random_max
    functionSourceFile: /src/unbound/util/random.c
    functionUses: 18
    functionsReached:
    - arc4random_uniform
    linkageType: ''
    returnType: long int
    signature: long int ub_random_max(struct ub_randstate* state, long int x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/random.c:148,1
    - Dst: log_err
      Src: /src/unbound/util/random.c:150,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - ATTR_UNUSED(from)
    argTypes:
    - struct ub_randstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 146
    functionDepth: 1
    functionLinenumber: 146
    functionLinenumberEnd: 154
    functionName: ub_initstate
    functionSourceFile: /src/unbound/util/random.c
    functionUses: 9
    functionsReached:
    - log_err
    - calloc
    linkageType: ''
    returnType: struct ub_randstate
    signature: struct ub_randstate * ub_initstate(struct ub_randstate* ATTR_UNUSED(from))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PK11_GenerateRandom
      Src: /src/unbound/util/random.c:160,1
    - Dst: fatal_exit
      Src: /src/unbound/util/random.c:164,1
    - Dst: PORT_ErrorToString
      Src: /src/unbound/util/random.c:165,1
    - Dst: PORT_GetError
      Src: /src/unbound/util/random.c:165,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ATTR_UNUSED(state)
    argTypes:
    - struct ub_randstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 156
    functionDepth: 0
    functionLinenumber: 156
    functionLinenumberEnd: 168
    functionName: ub_random
    functionSourceFile: /src/unbound/util/random.c
    functionUses: 7
    functionsReached:
    - fatal_exit
    - PORT_ErrorToString
    - PK11_GenerateRandom
    - PORT_GetError
    linkageType: ''
    returnType: long int
    signature: long int ub_random(struct ub_randstate* ATTR_UNUSED(state))
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/random.c:183,1
    - Dst: log_err
      Src: /src/unbound/util/random.c:186,1
    - Dst: yarrow256_init
      Src: /src/unbound/util/random.c:190,1
    - Dst: getentropy
      Src: /src/unbound/util/random.c:192,1
    - Dst: yarrow256_seed
      Src: /src/unbound/util/random.c:194,1
    - Dst: yarrow256_is_seeded
      Src: /src/unbound/util/random.c:195,1
    - Dst: log_err
      Src: /src/unbound/util/random.c:197,1
    - Dst: strerror
      Src: /src/unbound/util/random.c:198,1
    - Dst: free
      Src: /src/unbound/util/random.c:199,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - ATTR_UNUSED(from)
    argTypes:
    - struct ub_randstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 204
    functionName: ub_initstate
    functionSourceFile: /src/unbound/util/random.c
    functionUses: 9
    functionsReached:
    - getentropy
    - log_err
    - yarrow256_is_seeded
    - yarrow256_seed
    - yarrow256_init
    - free
    - calloc
    - strerror
    linkageType: ''
    returnType: struct ub_randstate
    signature: struct ub_randstate * ub_initstate(struct ub_randstate* ATTR_UNUSED(from))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/util/random.c:211,1
    - Dst: yarrow256_random
      Src: /src/unbound/util/random.c:213,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct ub_randstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 206
    functionDepth: 1
    functionLinenumber: 206
    functionLinenumberEnd: 216
    functionName: ub_random
    functionSourceFile: /src/unbound/util/random.c
    functionUses: 7
    functionsReached:
    - log_err
    - yarrow256_random
    linkageType: ''
    returnType: long int
    signature: long int ub_random(struct ub_randstate* s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ub_random
      Src: /src/unbound/util/random.c:227,1
    - Dst: ub_random
      Src: /src/unbound/util/random.c:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - state
    - x
    argTypes:
    - struct ub_randstate*
    - long int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 221
    functionDepth: 1
    functionLinenumber: 221
    functionLinenumberEnd: 231
    functionName: ub_random_max
    functionSourceFile: /src/unbound/util/random.c
    functionUses: 18
    functionsReached:
    - ub_random
    linkageType: ''
    returnType: long int
    signature: long int ub_random_max(struct ub_randstate* state, long int x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/random.c:239,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct ub_randstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 236
    functionDepth: 1
    functionLinenumber: 236
    functionLinenumberEnd: 241
    functionName: ub_randfree
    functionSourceFile: /src/unbound/util/random.c
    functionUses: 11
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void ub_randfree(struct ub_randstate* s)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ev
    - ','
    - tv
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 234
    functionName: evtimer_add
    functionSourceFile: /src/unbound/util/winsock_event.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: evtimer_add(ev, tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ev
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 234
    functionDepth: 0
    functionLinenumber: 234
    functionLinenumberEnd: 235
    functionName: evtimer_del
    functionSourceFile: /src/unbound/util/winsock_event.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: evtimer_del(ev)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ev
    - ','
    - x
    - ','
    - cb
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 243
    functionName: signal_set
    functionSourceFile: /src/unbound/util/winsock_event.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: signal_set(ev, x, cb, arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 78
    functionName: pp_init
    functionSourceFile: /src/unbound/util/proxy_protocol.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void pp_init(void (*write_uint16)(void* buf, uint16_t data),\n\tvoid
      (*write_uint32)(void* buf, uint32_t data))"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - error
    argTypes:
    - enum pp_parse_errors
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 83
    functionName: pp_lookup_error
    functionSourceFile: /src/unbound/util/proxy_protocol.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      pp_lookup_error(enum pp_parse_errors error)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/util/proxy_protocol.c:103,1
    - Dst: memcpy
      Src: /src/unbound/util/proxy_protocol.c:118,1
    - Dst: memcpy
      Src: /src/unbound/util/proxy_protocol.c:125,1
    - Dst: memcpy
      Src: /src/unbound/util/proxy_protocol.c:142,1
    - Dst: memset
      Src: /src/unbound/util/proxy_protocol.c:146,1
    - Dst: memcpy
      Src: /src/unbound/util/proxy_protocol.c:149,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 42
    argCount: 5
    argNames:
    - buf
    - buflen
    - src
    - src
    - stream
    argTypes:
    - uint8_t*
    - size_t
    - INET6*
    - struct sockaddr_in*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 85
    functionDepth: 0
    functionLinenumber: 85
    functionLinenumberEnd: 162
    functionName: pp2_write_to_buf
    functionSourceFile: /src/unbound/util/proxy_protocol.c
    functionUses: 1
    functionsReached:
    - memset
    - memcpy
    linkageType: ''
    returnType: size_t
    signature: "size_t pp2_write_to_buf(uint8_t* buf, size_t buflen,\n#ifdef INET6\n\tstruct
      sockaddr_storage* src,\n#else\n\tstruct sockaddr_in* src,\n#endif\n\tint stream)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/util/proxy_protocol.c:174,1
    - Dst: ntohs
      Src: /src/unbound/util/proxy_protocol.c:179,1
    - Dst: ntohs
      Src: /src/unbound/util/proxy_protocol.c:195,1
    - Dst: ntohs
      Src: /src/unbound/util/proxy_protocol.c:200,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 31
    argCount: 2
    argNames:
    - buf
    - buflen
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 164
    functionDepth: 1
    functionLinenumber: 164
    functionLinenumberEnd: 209
    functionName: pp2_read_header
    functionSourceFile: /src/unbound/util/proxy_protocol.c
    functionUses: 0
    functionsReached:
    - ntohs
    - memcmp
    linkageType: ''
    returnType: int
    signature: int pp2_read_header(uint8_t* buf, size_t buflen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/edns.c:56,1
    - Dst: regional_create
      Src: /src/unbound/util/edns.c:60,1
    - Dst: edns_strings_delete
      Src: /src/unbound/util/edns.c:61,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 65
      start: 54
    functionDepth: 2
    functionLinenumber: 54
    functionLinenumberEnd: 65
    functionName: edns_strings_create
    functionSourceFile: /src/unbound/util/edns.c
    functionUses: 3
    functionsReached:
    - regional_create
    - edns_strings_delete
    - calloc
    linkageType: ''
    returnType: struct edns_strings
    signature: struct edns_strings * edns_strings_create(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_destroy
      Src: /src/unbound/util/edns.c:71,1
    - Dst: free
      Src: /src/unbound/util/edns.c:72,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - edns_strings
    argTypes:
    - struct edns_strings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 67
    functionDepth: 4
    functionLinenumber: 67
    functionLinenumberEnd: 73
    functionName: edns_strings_delete
    functionSourceFile: /src/unbound/util/edns.c
    functionUses: 5
    functionsReached:
    - free
    - regional_destroy
    linkageType: ''
    returnType: void
    signature: void edns_strings_delete(struct edns_strings* edns_strings)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_zero
      Src: /src/unbound/util/edns.c:80,1
    - Dst: strlen
      Src: /src/unbound/util/edns.c:84,1
    - Dst: regional_alloc_init
      Src: /src/unbound/util/edns.c:85,1
    - Dst: addr_tree_insert
      Src: /src/unbound/util/edns.c:89,1
    - Dst: verbose
      Src: /src/unbound/util/edns.c:91,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 5
    argNames:
    - edns_strings
    - addr
    - addrlen
    - net
    - string
    argTypes:
    - struct edns_strings*
    - struct sockaddr_storage*
    - socklen_t
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 94
      start: 75
    functionDepth: 2
    functionLinenumber: 75
    functionLinenumberEnd: 94
    functionName: edns_strings_client_insert
    functionSourceFile: /src/unbound/util/edns.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - verbose
    - regional_alloc_init
    - addr_tree_insert
    - strlen
    linkageType: ''
    returnType: int
    signature: "int edns_strings_client_insert(struct edns_strings* edns_strings,\n\tstruct
      sockaddr_storage* addr, socklen_t addrlen, int net,\n\tconst char* string)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_free_all
      Src: /src/unbound/util/edns.c:100,1
    - Dst: addr_tree_init
      Src: /src/unbound/util/edns.c:101,1
    - Dst: log_assert
      Src: /src/unbound/util/edns.c:107,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/util/edns.c:109,1
    - Dst: log_err
      Src: /src/unbound/util/edns.c:111,1
    - Dst: edns_strings_client_insert
      Src: /src/unbound/util/edns.c:115,1
    - Dst: log_err
      Src: /src/unbound/util/edns.c:117,1
    - Dst: addr_tree_init_parents
      Src: /src/unbound/util/edns.c:123,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 17
    argCount: 2
    argNames:
    - edns_strings
    - config
    argTypes:
    - struct edns_strings*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 96
    functionDepth: 3
    functionLinenumber: 96
    functionLinenumberEnd: 125
    functionName: edns_strings_apply_cfg
    functionSourceFile: /src/unbound/util/edns.c
    functionUses: 3
    functionsReached:
    - log_err
    - addr_tree_init_parents
    - netblockstrtoaddr
    - edns_strings_client_insert
    - addr_tree_init
    - log_assert
    - regional_free_all
    linkageType: ''
    returnType: int
    signature: "int edns_strings_apply_cfg(struct edns_strings* edns_strings,\n\tstruct
      config_file* config)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addr_tree_lookup
      Src: /src/unbound/util/edns.c:131,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - tree
    - addr
    - addrlen
    argTypes:
    - rbtree_type*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 127
    functionDepth: 1
    functionLinenumber: 127
    functionLinenumberEnd: 132
    functionName: edns_string_addr_lookup
    functionSourceFile: /src/unbound/util/edns.c
    functionUses: 2
    functionsReached:
    - addr_tree_lookup
    linkageType: ''
    returnType: struct edns_string_addr
    signature: "struct edns_string_addr *\nedns_string_addr_lookup(rbtree_type* tree,
      struct sockaddr_storage* addr,\n\tsocklen_t addrlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_get_mem
      Src: /src/unbound/util/edns.c:138,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - edns_strings
    argTypes:
    - struct edns_strings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 134
    functionDepth: 2
    functionLinenumber: 134
    functionLinenumberEnd: 139
    functionName: edns_strings_get_mem
    functionSourceFile: /src/unbound/util/edns.c
    functionUses: 1
    functionsReached:
    - regional_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t edns_strings_get_mem(struct edns_strings* edns_strings)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - edns_strings
    - data
    argTypes:
    - struct edns_strings*
    - struct edns_strings*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 141
    functionDepth: 0
    functionLinenumber: 141
    functionLinenumberEnd: 155
    functionName: edns_strings_swap_tree
    functionSourceFile: /src/unbound/util/edns.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void edns_strings_swap_tree(struct edns_strings* edns_strings,\n\tstruct
      edns_strings* data)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: siphash
      Src: /src/unbound/util/edns.c:161,1
    - Dst: siphash
      Src: /src/unbound/util/edns.c:161,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - in
    - secret
    - v4
    - hash
    argTypes:
    - uint8_t*
    - uint8_t*
    - int
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 163
      start: 157
    functionDepth: 1
    functionLinenumber: 157
    functionLinenumberEnd: 163
    functionName: edns_cookie_server_hash
    functionSourceFile: /src/unbound/util/edns.c
    functionUses: 0
    functionsReached:
    - siphash
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t *\nedns_cookie_server_hash(const uint8_t* in, const uint8_t*
      secret, int v4,\n\tuint8_t* hash)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_write_uint32
      Src: /src/unbound/util/edns.c:174,1
    - Dst: edns_cookie_server_hash
      Src: /src/unbound/util/edns.c:175,1
    - Dst: memcpy
      Src: /src/unbound/util/edns.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - buf
    - secret
    - v4
    - timestamp
    argTypes:
    - uint8_t*
    - uint8_t*
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 165
    functionDepth: 2
    functionLinenumber: 165
    functionLinenumberEnd: 177
    functionName: edns_cookie_server_write
    functionSourceFile: /src/unbound/util/edns.c
    functionUses: 6
    functionsReached:
    - sldns_write_uint32
    - edns_cookie_server_hash
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void edns_cookie_server_write(uint8_t* buf, const uint8_t* secret,
      int v4,\n\tuint32_t timestamp)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint32
      Src: /src/unbound/util/edns.c:194,1
    - Dst: compare_1982
      Src: /src/unbound/util/edns.c:195,1
    - Dst: subtract_1982
      Src: /src/unbound/util/edns.c:196,1
    - Dst: subtract_1982
      Src: /src/unbound/util/edns.c:199,1
    - Dst: memcmp
      Src: /src/unbound/util/edns.c:203,1
    - Dst: edns_cookie_server_hash
      Src: /src/unbound/util/edns.c:203,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 15
    argCount: 7
    argNames:
    - cookie
    - cookie_len
    - secret
    - secret_len
    - v4
    - hash_input
    - now
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    - int
    - uint8_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 212
    functionName: edns_cookie_server_validate
    functionSourceFile: /src/unbound/util/edns.c
    functionUses: 6
    functionsReached:
    - compare_1982
    - edns_cookie_server_hash
    - subtract_1982
    - memcmp
    - sldns_read_uint32
    linkageType: ''
    returnType: enum edns_cookie_val_status
    signature: "enum edns_cookie_val_status edns_cookie_server_validate(const uint8_t*
      cookie, size_t cookie_len,\n\tconst uint8_t* secret, size_t secret_len, int
      v4,\n\tconst uint8_t* hash_input, uint32_t now)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/edns.c:217,1
    - Dst: lock_basic_init
      Src: /src/unbound/util/edns.c:221,1
    - Dst: lock_protect
      Src: /src/unbound/util/edns.c:222,1
    - Dst: lock_protect
      Src: /src/unbound/util/edns.c:224,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 227
    functionName: cookie_secrets_create
    functionSourceFile: /src/unbound/util/edns.c
    functionUses: 2
    functionsReached:
    - lock_protect
    - calloc
    - lock_basic_init
    linkageType: ''
    returnType: struct cookie_secrets
    signature: 'struct cookie_secrets *

      cookie_secrets_create(void)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_destroy
      Src: /src/unbound/util/edns.c:234,1
    - Dst: explicit_bzero
      Src: /src/unbound/util/edns.c:235,1
    - Dst: free
      Src: /src/unbound/util/edns.c:237,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - cookie_secrets
    argTypes:
    - struct cookie_secrets*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 229
    functionDepth: 2
    functionLinenumber: 229
    functionLinenumberEnd: 238
    functionName: cookie_secrets_delete
    functionSourceFile: /src/unbound/util/edns.c
    functionUses: 1
    functionsReached:
    - free
    - lock_basic_destroy
    - explicit_bzero
    linkageType: ''
    returnType: void
    signature: void cookie_secrets_delete(struct cookie_secrets* cookie_secrets)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/edns.c:250,1
    - Dst: fopen
      Src: /src/unbound/util/edns.c:252,1
    - Dst: log_err
      Src: /src/unbound/util/edns.c:256,1
    - Dst: strerror
      Src: /src/unbound/util/edns.c:257,1
    - Dst: fgets
      Src: /src/unbound/util/edns.c:266,1
    - Dst: strlen
      Src: /src/unbound/util/edns.c:267,1
    - Dst: log_assert
      Src: /src/unbound/util/edns.c:269,1
    - Dst: hex_pton
      Src: /src/unbound/util/edns.c:274,1
    - Dst: fclose
      Src: /src/unbound/util/edns.c:279,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 2
    argNames:
    - cookie_secrets
    - cookie_secret_file
    argTypes:
    - struct cookie_secrets*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 281
    functionName: cookie_secret_file_read
    functionSourceFile: /src/unbound/util/edns.c
    functionUses: 0
    functionsReached:
    - log_err
    - hex_pton
    - fclose
    - fopen
    - log_assert
    - strerror
    - strlen
    - fgets
    linkageType: ''
    returnType: int
    signature: "int cookie_secret_file_read(struct cookie_secrets* cookie_secrets,\n\tchar*
      cookie_secret_file)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/util/edns.c:290,1
    - Dst: cookie_secret_file_read
      Src: /src/unbound/util/edns.c:293,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - cookie_secrets
    - cookie_secret_file
    argTypes:
    - struct cookie_secrets*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 296
      start: 283
    functionDepth: 2
    functionLinenumber: 283
    functionLinenumberEnd: 296
    functionName: cookie_secrets_apply_cfg
    functionSourceFile: /src/unbound/util/edns.c
    functionUses: 1
    functionsReached:
    - log_err
    - cookie_secret_file_read
    linkageType: ''
    returnType: int
    signature: "int cookie_secrets_apply_cfg(struct cookie_secrets* cookie_secrets,\n\tchar*
      cookie_secret_file)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/util/edns.c:308,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/edns.c:310,1
    - Dst: edns_cookie_server_validate
      Src: /src/unbound/util/edns.c:314,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/edns.c:320,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/edns.c:330,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 21
    argCount: 6
    argNames:
    - cookie
    - cookie_len
    - cookie_secrets
    - v4
    - hash_input
    - now
    argTypes:
    - uint8_t*
    - size_t
    - struct cookie_secrets*
    - int
    - uint8_t*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 332
      start: 298
    functionDepth: 3
    functionLinenumber: 298
    functionLinenumberEnd: 332
    functionName: cookie_secrets_server_validate
    functionSourceFile: /src/unbound/util/edns.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    - edns_cookie_server_validate
    linkageType: ''
    returnType: enum edns_cookie_val_status
    signature: "enum edns_cookie_val_status cookie_secrets_server_validate(const uint8_t*
      cookie, size_t cookie_len,\n\tstruct cookie_secrets* cookie_secrets, int v4,\n\tconst
      uint8_t* hash_input, uint32_t now)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/edns.c:337,1
    - Dst: memcpy
      Src: /src/unbound/util/edns.c:348,1
    - Dst: explicit_bzero
      Src: /src/unbound/util/edns.c:351,1
    - Dst: memmove
      Src: /src/unbound/util/edns.c:355,1
    - Dst: memcpy
      Src: /src/unbound/util/edns.c:358,1
    - Dst: explicit_bzero
      Src: /src/unbound/util/edns.c:362,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - cookie_secrets
    - secret
    - secret_len
    argTypes:
    - struct cookie_secrets*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 363
      start: 334
    functionDepth: 2
    functionLinenumber: 334
    functionLinenumberEnd: 363
    functionName: add_cookie_secret
    functionSourceFile: /src/unbound/util/edns.c
    functionUses: 2
    functionsReached:
    - explicit_bzero
    - memcpy
    - log_assert
    - memmove
    linkageType: ''
    returnType: void
    signature: "void add_cookie_secret(struct cookie_secrets* cookie_secrets,\n\tuint8_t*
      secret, size_t secret_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/util/edns.c:378,1
    - Dst: memmove
      Src: /src/unbound/util/edns.c:380,1
    - Dst: memcpy
      Src: /src/unbound/util/edns.c:382,1
    - Dst: explicit_bzero
      Src: /src/unbound/util/edns.c:384,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - cookie_secrets
    argTypes:
    - struct cookie_secrets*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 385
      start: 365
    functionDepth: 2
    functionLinenumber: 365
    functionLinenumberEnd: 385
    functionName: activate_cookie_secret
    functionSourceFile: /src/unbound/util/edns.c
    functionUses: 2
    functionsReached:
    - explicit_bzero
    - memcpy
    - memmove
    linkageType: ''
    returnType: void
    signature: void activate_cookie_secret(struct cookie_secrets* cookie_secrets)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: explicit_bzero
      Src: /src/unbound/util/edns.c:395,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - cookie_secrets
    argTypes:
    - struct cookie_secrets*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 387
    functionDepth: 2
    functionLinenumber: 387
    functionLinenumberEnd: 398
    functionName: drop_cookie_secret
    functionSourceFile: /src/unbound/util/edns.c
    functionUses: 2
    functionsReached:
    - explicit_bzero
    linkageType: ''
    returnType: void
    signature: void drop_cookie_secret(struct cookie_secrets* cookie_secrets)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - node
    - ','
    - type
    - ','
    - rbtree
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 177
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/util/rbtree.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: RBTREE_FOR(node, type, rbtree)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 39
      start: 38
    functionDepth: 0
    functionLinenumber: 38
    functionLinenumberEnd: 39
    functionName: ROTL
    functionSourceFile: /src/unbound/util/siphash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ROTL(x, b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 45
      start: 40
    functionDepth: 0
    functionLinenumber: 40
    functionLinenumberEnd: 45
    functionName: U32TO8_LE
    functionSourceFile: /src/unbound/util/siphash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: U32TO8_LE(p, v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - p
    - ','
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 49
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 49
    functionName: U64TO8_LE
    functionSourceFile: /src/unbound/util/siphash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: U64TO8_LE(p, v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - p
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 55
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 55
    functionName: U8TO64_LE
    functionSourceFile: /src/unbound/util/siphash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: U8TO64_LE(p)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: U8TO64_LE
      Src: /src/unbound/util/siphash.c:97,1
    - Dst: U8TO64_LE
      Src: /src/unbound/util/siphash.c:98,1
    - Dst: assert
      Src: /src/unbound/util/siphash.c:107,1
    - Dst: U8TO64_LE
      Src: /src/unbound/util/siphash.c:117,1
    - Dst: U64TO8_LE
      Src: /src/unbound/util/siphash.c:183,1
    - Dst: U64TO8_LE
      Src: /src/unbound/util/siphash.c:195,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 45
    argCount: 5
    argNames:
    - in
    - inlen
    - k
    - out
    - outlen
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    - uint8_t*
    - size_t
    assertStmts:
    - condition: ((outlen == 8) || (outlen == 16))
      pos:
        line_end: 106
        line_start: 106
        source_file: /src/unbound/util/siphash.c
    constantsTouched: []
    func_position:
      end: 198
      start: 90
    functionDepth: 1
    functionLinenumber: 90
    functionLinenumberEnd: 198
    functionName: siphash
    functionSourceFile: /src/unbound/util/siphash.c
    functionUses: 1
    functionsReached:
    - U8TO64_LE
    - assert
    - U64TO8_LE
    linkageType: ''
    returnType: int
    signature: "int siphash(const uint8_t *in, const size_t inlen, const uint8_t *k,\n
      \           uint8_t *out, const size_t outlen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sigfillset
      Src: /src/unbound/util/locks.c:58,1
    - Dst: pthread_sigmask
      Src: /src/unbound/util/locks.c:60,1
    - Dst: fatal_exit
      Src: /src/unbound/util/locks.c:61,1
    - Dst: strerror
      Src: /src/unbound/util/locks.c:61,1
    - Dst: thr_sigsetmask
      Src: /src/unbound/util/locks.c:64,1
    - Dst: fatal_exit
      Src: /src/unbound/util/locks.c:65,1
    - Dst: strerror
      Src: /src/unbound/util/locks.c:65,1
    - Dst: sigprocmask
      Src: /src/unbound/util/locks.c:68,1
    - Dst: fatal_exit
      Src: /src/unbound/util/locks.c:69,1
    - Dst: strerror
      Src: /src/unbound/util/locks.c:69,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 50
    functionDepth: 0
    functionLinenumber: 50
    functionLinenumberEnd: 73
    functionName: ub_thread_blocksigs
    functionSourceFile: /src/unbound/util/locks.c
    functionUses: 1
    functionsReached:
    - thr_sigsetmask
    - sigfillset
    - fatal_exit
    - strerror
    - sigprocmask
    - pthread_sigmask
    linkageType: ''
    returnType: void
    signature: void ub_thread_blocksigs(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sigemptyset
      Src: /src/unbound/util/locks.c:83,1
    - Dst: sigaddset
      Src: /src/unbound/util/locks.c:84,1
    - Dst: pthread_sigmask
      Src: /src/unbound/util/locks.c:86,1
    - Dst: fatal_exit
      Src: /src/unbound/util/locks.c:87,1
    - Dst: strerror
      Src: /src/unbound/util/locks.c:87,1
    - Dst: thr_sigsetmask
      Src: /src/unbound/util/locks.c:90,1
    - Dst: fatal_exit
      Src: /src/unbound/util/locks.c:91,1
    - Dst: strerror
      Src: /src/unbound/util/locks.c:91,1
    - Dst: sigprocmask
      Src: /src/unbound/util/locks.c:94,1
    - Dst: fatal_exit
      Src: /src/unbound/util/locks.c:95,1
    - Dst: strerror
      Src: /src/unbound/util/locks.c:95,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 1
    argNames:
    - sig
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 76
    functionDepth: 0
    functionLinenumber: 76
    functionLinenumberEnd: 101
    functionName: ub_thread_sig_unblock
    functionSourceFile: /src/unbound/util/locks.c
    functionUses: 1
    functionsReached:
    - thr_sigsetmask
    - sigaddset
    - fatal_exit
    - strerror
    - sigemptyset
    - sigprocmask
    - pthread_sigmask
    linkageType: ''
    returnType: void
    signature: void ub_thread_sig_unblock(int sig)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fork
      Src: /src/unbound/util/locks.c:115,1
    - Dst: getpid
      Src: /src/unbound/util/locks.c:121,1
    - Dst: exit
      Src: /src/unbound/util/locks.c:123,1
    - Dst: fatal_exit
      Src: /src/unbound/util/locks.c:125,1
    - Dst: strerror
      Src: /src/unbound/util/locks.c:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - thr
    - (*func)(void*)
    - arg
    argTypes:
    - ub_thread_type*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 127
    functionName: ub_thr_fork_create
    functionSourceFile: /src/unbound/util/locks.c
    functionUses: 0
    functionsReached:
    - exit
    - fatal_exit
    - getpid
    - strerror
    - fork
    linkageType: ''
    returnType: void
    signature: void ub_thr_fork_create(ub_thread_type* thr, void* (*func)(void*),
      void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: waitpid
      Src: /src/unbound/util/locks.c:137,1
    - Dst: log_err
      Src: /src/unbound/util/locks.c:138,1
    - Dst: strerror
      Src: /src/unbound/util/locks.c:138,1
    - Dst: log_warn
      Src: /src/unbound/util/locks.c:140,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - thread
    argTypes:
    - ub_thread_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 142
      start: 134
    functionDepth: 1
    functionLinenumber: 134
    functionLinenumberEnd: 142
    functionName: ub_thr_fork_wait
    functionSourceFile: /src/unbound/util/locks.c
    functionUses: 0
    functionsReached:
    - log_err
    - strerror
    - waitpid
    - log_warn
    linkageType: ''
    returnType: void
    signature: void ub_thr_fork_wait(ub_thread_type thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: LOCKRET
      Src: /src/unbound/util/locks.c:149,1
    - Dst: thr_getspecific
      Src: /src/unbound/util/locks.c:149,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - key
    argTypes:
    - ub_thread_key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 151
    functionName: ub_thread_key_get
    functionSourceFile: /src/unbound/util/locks.c
    functionUses: 0
    functionsReached:
    - thr_getspecific
    - LOCKRET
    linkageType: ''
    returnType: void
    signature: void * ub_thread_key_get(ub_thread_key_type key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: FormatMessage
      Src: /src/unbound/util/locks.c:159,1
    - Dst: log_err
      Src: /src/unbound/util/locks.c:163,1
    - Dst: log_err
      Src: /src/unbound/util/locks.c:166,1
    - Dst: LocalFree
      Src: /src/unbound/util/locks.c:167,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - str
    - err
    argTypes:
    - char*
    - DWORD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 168
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 168
    functionName: log_win_err
    functionSourceFile: /src/unbound/util/locks.c
    functionUses: 0
    functionsReached:
    - log_err
    - FormatMessage
    - LocalFree
    linkageType: ''
    returnType: void
    signature: void log_win_err(const char* str, DWORD err)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InterlockedExchange
      Src: /src/unbound/util/locks.c:174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lock
    argTypes:
    - lock_basic_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 170
    functionDepth: 0
    functionLinenumber: 170
    functionLinenumberEnd: 175
    functionName: lock_basic_init
    functionSourceFile: /src/unbound/util/locks.c
    functionUses: 22
    functionsReached:
    - InterlockedExchange
    linkageType: ''
    returnType: void
    signature: void lock_basic_init(lock_basic_type* lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InterlockedExchange
      Src: /src/unbound/util/locks.c:179,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lock
    argTypes:
    - lock_basic_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 180
    functionName: lock_basic_destroy
    functionSourceFile: /src/unbound/util/locks.c
    functionUses: 28
    functionsReached:
    - InterlockedExchange
    linkageType: ''
    returnType: void
    signature: void lock_basic_destroy(lock_basic_type* lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InterlockedExchange
      Src: /src/unbound/util/locks.c:186,1
    - Dst: Sleep
      Src: /src/unbound/util/locks.c:188,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - lock
    argTypes:
    - lock_basic_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 182
    functionDepth: 0
    functionLinenumber: 182
    functionLinenumberEnd: 192
    functionName: lock_basic_lock
    functionSourceFile: /src/unbound/util/locks.c
    functionUses: 153
    functionsReached:
    - InterlockedExchange
    - Sleep
    linkageType: ''
    returnType: void
    signature: void lock_basic_lock(lock_basic_type* lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: InterlockedExchange
      Src: /src/unbound/util/locks.c:197,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - lock
    argTypes:
    - lock_basic_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 194
    functionDepth: 0
    functionLinenumber: 194
    functionLinenumberEnd: 198
    functionName: lock_basic_unlock
    functionSourceFile: /src/unbound/util/locks.c
    functionUses: 173
    functionsReached:
    - InterlockedExchange
    linkageType: ''
    returnType: void
    signature: void lock_basic_unlock(lock_basic_type* lock)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TlsAlloc
      Src: /src/unbound/util/locks.c:202,1
    - Dst: log_win_err
      Src: /src/unbound/util/locks.c:205,1
    - Dst: GetLastError
      Src: /src/unbound/util/locks.c:205,1
    - Dst: ub_thread_key_set
      Src: /src/unbound/util/locks.c:207,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - key
    - f
    argTypes:
    - ub_thread_key_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 200
    functionDepth: 2
    functionLinenumber: 200
    functionLinenumberEnd: 208
    functionName: ub_thread_key_create
    functionSourceFile: /src/unbound/util/locks.c
    functionUses: 0
    functionsReached:
    - GetLastError
    - ub_thread_key_set
    - log_win_err
    - TlsAlloc
    linkageType: ''
    returnType: void
    signature: void ub_thread_key_create(ub_thread_key_type* key, void* f)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TlsSetValue
      Src: /src/unbound/util/locks.c:212,1
    - Dst: log_win_err
      Src: /src/unbound/util/locks.c:213,1
    - Dst: GetLastError
      Src: /src/unbound/util/locks.c:213,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - key
    - v
    argTypes:
    - ub_thread_key_type
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 210
    functionDepth: 2
    functionLinenumber: 210
    functionLinenumberEnd: 215
    functionName: ub_thread_key_set
    functionSourceFile: /src/unbound/util/locks.c
    functionUses: 1
    functionsReached:
    - GetLastError
    - TlsSetValue
    - log_win_err
    linkageType: ''
    returnType: void
    signature: void ub_thread_key_set(ub_thread_key_type key, void* v)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: TlsGetValue
      Src: /src/unbound/util/locks.c:219,1
    - Dst: GetLastError
      Src: /src/unbound/util/locks.c:220,1
    - Dst: log_win_err
      Src: /src/unbound/util/locks.c:221,1
    - Dst: GetLastError
      Src: /src/unbound/util/locks.c:221,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - key
    argTypes:
    - ub_thread_key_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 217
    functionDepth: 2
    functionLinenumber: 217
    functionLinenumberEnd: 224
    functionName: ub_thread_key_get
    functionSourceFile: /src/unbound/util/locks.c
    functionUses: 0
    functionsReached:
    - GetLastError
    - TlsGetValue
    - log_win_err
    linkageType: ''
    returnType: void
    signature: void * ub_thread_key_get(ub_thread_key_type key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CreateThread
      Src: /src/unbound/util/locks.c:229,1
    - Dst: _beginthreadex
      Src: /src/unbound/util/locks.c:236,1
    - Dst: log_win_err
      Src: /src/unbound/util/locks.c:239,1
    - Dst: GetLastError
      Src: /src/unbound/util/locks.c:239,1
    - Dst: fatal_exit
      Src: /src/unbound/util/locks.c:240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - thr
    - (*func)(void*)
    - arg
    argTypes:
    - ub_thread_type*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 226
    functionDepth: 2
    functionLinenumber: 226
    functionLinenumberEnd: 242
    functionName: ub_thread_create
    functionSourceFile: /src/unbound/util/locks.c
    functionUses: 8
    functionsReached:
    - GetLastError
    - _beginthreadex
    - CreateThread
    - fatal_exit
    - log_win_err
    linkageType: ''
    returnType: void
    signature: void ub_thread_create(ub_thread_type* thr, void* (*func)(void*), void*
      arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: GetCurrentThread
      Src: /src/unbound/util/locks.c:246,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 247
      start: 244
    functionDepth: 0
    functionLinenumber: 244
    functionLinenumberEnd: 247
    functionName: ub_thread_self
    functionSourceFile: /src/unbound/util/locks.c
    functionUses: 4
    functionsReached:
    - GetCurrentThread
    linkageType: ''
    returnType: ub_thread_type
    signature: ub_thread_type ub_thread_self(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: WaitForSingleObject
      Src: /src/unbound/util/locks.c:251,1
    - Dst: log_win_err
      Src: /src/unbound/util/locks.c:253,1
    - Dst: GetLastError
      Src: /src/unbound/util/locks.c:254,1
    - Dst: log_win_err
      Src: /src/unbound/util/locks.c:256,1
    - Dst: GetLastError
      Src: /src/unbound/util/locks.c:257,1
    - Dst: CloseHandle
      Src: /src/unbound/util/locks.c:260,1
    - Dst: log_win_err
      Src: /src/unbound/util/locks.c:261,1
    - Dst: GetLastError
      Src: /src/unbound/util/locks.c:261,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - thr
    argTypes:
    - ub_thread_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 249
    functionDepth: 2
    functionLinenumber: 249
    functionLinenumberEnd: 263
    functionName: ub_thread_join
    functionSourceFile: /src/unbound/util/locks.c
    functionUses: 8
    functionsReached:
    - WaitForSingleObject
    - GetLastError
    - log_win_err
    - CloseHandle
    linkageType: ''
    returnType: void
    signature: void ub_thread_join(ub_thread_type thr)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 55
    functionDepth: 0
    functionLinenumber: 55
    functionLinenumberEnd: 72
    functionName: mini_ev_cmp
    functionSourceFile: /src/unbound/util/mini_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mini_ev_cmp(const void* a, const void* b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/unbound/util/mini_event.c:78,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 85
    functionName: settime
    functionSourceFile: /src/unbound/util/mini_event.c
    functionUses: 0
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: int
    signature: int settime(struct event_base* base)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/util/mini_event.c:90,1
    - Dst: memset
      Src: /src/unbound/util/mini_event.c:94,1
    - Dst: settime
      Src: /src/unbound/util/mini_event.c:97,1
    - Dst: event_base_free
      Src: /src/unbound/util/mini_event.c:98,1
    - Dst: rbtree_create
      Src: /src/unbound/util/mini_event.c:101,1
    - Dst: event_base_free
      Src: /src/unbound/util/mini_event.c:103,1
    - Dst: calloc
      Src: /src/unbound/util/mini_event.c:111,1
    - Dst: event_base_free
      Src: /src/unbound/util/mini_event.c:114,1
    - Dst: calloc
      Src: /src/unbound/util/mini_event.c:117,1
    - Dst: event_base_free
      Src: /src/unbound/util/mini_event.c:119,1
    - Dst: FD_ZERO
      Src: /src/unbound/util/mini_event.c:123,1
    - Dst: FD_ZERO
      Src: /src/unbound/util/mini_event.c:124,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 31
    argCount: 2
    argNames:
    - time_secs
    - time_tv
    argTypes:
    - time_t*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 88
    functionDepth: 2
    functionLinenumber: 88
    functionLinenumberEnd: 127
    functionName: event_init
    functionSourceFile: /src/unbound/util/mini_event.c
    functionUses: 1
    functionsReached:
    - event_base_free
    - rbtree_create
    - FD_ZERO
    - malloc
    - calloc
    - settime
    - memset
    linkageType: ''
    returnType: void
    signature: void *event_init(time_t* time_secs, struct timeval* time_tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 133
    functionName: event_get_version
    functionSourceFile: /src/unbound/util/mini_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *event_get_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 136
    functionDepth: 0
    functionLinenumber: 136
    functionLinenumberEnd: 139
    functionName: event_get_method
    functionSourceFile: /src/unbound/util/mini_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *event_get_method(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_first
      Src: /src/unbound/util/mini_event.c:150,1
    - Dst: rbtree_delete
      Src: /src/unbound/util/mini_event.c:170,1
    - Dst: fptr_ok
      Src: /src/unbound/util/mini_event.c:172,1
    - Dst: fptr_whitelist_event
      Src: /src/unbound/util/mini_event.c:172,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 3
    argNames:
    - base
    - now
    - wait
    argTypes:
    - struct event_base*
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 142
    functionDepth: 3
    functionLinenumber: 142
    functionLinenumberEnd: 175
    functionName: handle_timeouts
    functionSourceFile: /src/unbound/util/mini_event.c
    functionUses: 0
    functionsReached:
    - rbtree_delete
    - rbtree_first
    - fptr_whitelist_event
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: "void handle_timeouts(struct event_base* base, struct timeval* now,
      \n\tstruct timeval* wait)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/util/mini_event.c:187,1
    - Dst: memmove
      Src: /src/unbound/util/mini_event.c:188,1
    - Dst: memmove
      Src: /src/unbound/util/mini_event.c:189,1
    - Dst: select
      Src: /src/unbound/util/mini_event.c:191,1
    - Dst: settime
      Src: /src/unbound/util/mini_event.c:193,1
    - Dst: settime
      Src: /src/unbound/util/mini_event.c:200,1
    - Dst: FD_ISSET
      Src: /src/unbound/util/mini_event.c:205,1
    - Dst: FD_ISSET
      Src: /src/unbound/util/mini_event.c:208,1
    - Dst: FD_ISSET
      Src: /src/unbound/util/mini_event.c:212,1
    - Dst: fptr_ok
      Src: /src/unbound/util/mini_event.c:218,1
    - Dst: fptr_whitelist_event
      Src: /src/unbound/util/mini_event.c:218,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 38
    argCount: 2
    argNames:
    - base
    - wait
    argTypes:
    - struct event_base*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 227
    functionName: handle_select
    functionSourceFile: /src/unbound/util/mini_event.c
    functionUses: 0
    functionsReached:
    - select
    - memmove
    - fptr_ok
    - FD_ISSET
    - fptr_whitelist_event
    - settime
    linkageType: ''
    returnType: int
    signature: int handle_select(struct event_base* base, struct timeval* wait)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: settime
      Src: /src/unbound/util/mini_event.c:233,1
    - Dst: handle_timeouts
      Src: /src/unbound/util/mini_event.c:238,1
    - Dst: handle_select
      Src: /src/unbound/util/mini_event.c:242,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 249
    functionName: event_base_dispatch
    functionSourceFile: /src/unbound/util/mini_event.c
    functionUses: 4
    functionsReached:
    - settime
    - handle_timeouts
    - handle_select
    linkageType: ''
    returnType: int
    signature: int event_base_dispatch(struct event_base* base)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - base
    - ATTR_UNUSED(tv)
    argTypes:
    - struct event_base*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 257
    functionName: event_base_loopexit
    functionSourceFile: /src/unbound/util/mini_event.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int event_base_loopexit(struct event_base* base, \n\tstruct timeval*
      ATTR_UNUSED(tv))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/mini_event.c:264,1
    - Dst: free
      Src: /src/unbound/util/mini_event.c:265,1
    - Dst: free
      Src: /src/unbound/util/mini_event.c:266,1
    - Dst: free
      Src: /src/unbound/util/mini_event.c:267,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 260
    functionDepth: 1
    functionLinenumber: 260
    functionLinenumberEnd: 268
    functionName: event_base_free
    functionSourceFile: /src/unbound/util/mini_event.c
    functionUses: 7
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void event_base_free(struct event_base* base)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/mini_event.c:278,1
    - Dst: fptr_whitelist_event
      Src: /src/unbound/util/mini_event.c:278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 4
    argNames:
    - ev
    - fd
    - bits
    - arg
    argTypes:
    - struct event*
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 281
      start: 271
    functionDepth: 1
    functionLinenumber: 271
    functionLinenumberEnd: 281
    functionName: event_set
    functionSourceFile: /src/unbound/util/mini_event.c
    functionUses: 0
    functionsReached:
    - fptr_whitelist_event
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: "void event_set(struct event* ev, int fd, short bits, \n\tvoid (*cb)(int,
      short, void *), void* arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - base
    - ev
    argTypes:
    - struct event_base*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 289
      start: 284
    functionDepth: 0
    functionLinenumber: 284
    functionLinenumberEnd: 289
    functionName: event_base_set
    functionSourceFile: /src/unbound/util/mini_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int event_base_set(struct event_base* base, struct event* ev)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: event_del
      Src: /src/unbound/util/mini_event.c:295,1
    - Dst: rbtree_insert
      Src: /src/unbound/util/mini_event.c:321,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 29
    argCount: 2
    argNames:
    - ev
    - tv
    argTypes:
    - struct event*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 292
    functionDepth: 3
    functionLinenumber: 292
    functionLinenumberEnd: 325
    functionName: event_add
    functionSourceFile: /src/unbound/util/mini_event.c
    functionUses: 13
    functionsReached:
    - rbtree_insert
    - event_del
    linkageType: ''
    returnType: int
    signature: int event_add(struct event* ev, struct timeval* tv)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_delete
      Src: /src/unbound/util/mini_event.c:333,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 22
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 328
    functionDepth: 3
    functionLinenumber: 328
    functionLinenumberEnd: 352
    functionName: event_del
    functionSourceFile: /src/unbound/util/mini_event.c
    functionUses: 16
    functionsReached:
    - rbtree_delete
    linkageType: ''
    returnType: int
    signature: int event_del(struct event* ev)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/mini_event.c:365,1
    - Dst: fptr_whitelist_event
      Src: /src/unbound/util/mini_event.c:365,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - sig
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 367
      start: 357
    functionDepth: 1
    functionLinenumber: 357
    functionLinenumberEnd: 367
    functionName: sigh
    functionSourceFile: /src/unbound/util/mini_event.c
    functionUses: 0
    functionsReached:
    - fptr_whitelist_event
    - fptr_ok
    linkageType: ''
    returnType: RETSIGTYPE
    signature: RETSIGTYPE sigh(int sig)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/unbound/util/mini_event.c:377,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ev
    - ATTR_UNUSED(tv)
    argTypes:
    - struct event*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 381
      start: 370
    functionDepth: 0
    functionLinenumber: 370
    functionLinenumberEnd: 381
    functionName: signal_add
    functionSourceFile: /src/unbound/util/mini_event.c
    functionUses: 0
    functionsReached:
    - signal
    linkageType: ''
    returnType: int
    signature: int signal_add(struct event* ev, struct timeval* ATTR_UNUSED(tv))
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 384
    functionDepth: 0
    functionLinenumber: 384
    functionLinenumberEnd: 391
    functionName: signal_del
    functionSourceFile: /src/unbound/util/mini_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int signal_del(struct event* ev)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED(a)
    - ATTR_UNUSED(b)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 395
    functionDepth: 0
    functionLinenumber: 395
    functionLinenumberEnd: 398
    functionName: mini_ev_cmp
    functionSourceFile: /src/unbound/util/mini_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mini_ev_cmp(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b))
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - s
    argTypes:
    - enum module_ext_state
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 61
      start: 48
    functionDepth: 0
    functionLinenumber: 48
    functionLinenumberEnd: 61
    functionName: strextstate
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char * \nstrextstate(enum module_ext_state s)"
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 1
    argNames:
    - e
    argTypes:
    - enum module_ev
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 76
      start: 63
    functionDepth: 0
    functionLinenumber: 63
    functionLinenumberEnd: 76
    functionName: strmodulevent
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char * \nstrmodulevent(enum module_ev e)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: errinf_ede
      Src: /src/unbound/util/module.c:80,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - qstate
    - str
    argTypes:
    - struct module_qstate*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 78
    functionDepth: 1
    functionLinenumber: 78
    functionLinenumberEnd: 81
    functionName: errinf
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 25
    functionsReached:
    - errinf_ede
    linkageType: ''
    returnType: void
    signature: void errinf(struct module_qstate* qstate, const char* str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/util/module.c:91,1
    - Dst: log_err
      Src: /src/unbound/util/module.c:93,1
    - Dst: regional_strdup
      Src: /src/unbound/util/module.c:97,1
    - Dst: log_err
      Src: /src/unbound/util/module.c:100,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 22
    argCount: 3
    argNames:
    - qstate
    - str
    - reason_bogus
    argTypes:
    - struct module_qstate*
    - char*
    - sldns_ede_code
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 83
    functionDepth: 3
    functionLinenumber: 83
    functionLinenumberEnd: 110
    functionName: errinf_ede
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 10
    functionsReached:
    - log_err
    - regional_alloc
    - regional_strdup
    linkageType: ''
    returnType: void
    signature: "void errinf_ede(struct module_qstate* qstate,\n\tconst char* str,
      sldns_ede_code reason_bogus)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/util/module.c:120,1
    - Dst: snprintf
      Src: /src/unbound/util/module.c:121,1
    - Dst: snprintf
      Src: /src/unbound/util/module.c:123,1
    - Dst: strlen
      Src: /src/unbound/util/module.c:123,1
    - Dst: strlen
      Src: /src/unbound/util/module.c:123,1
    - Dst: addr_to_str
      Src: /src/unbound/util/module.c:126,1
    - Dst: strlen
      Src: /src/unbound/util/module.c:126,1
    - Dst: strlen
      Src: /src/unbound/util/module.c:127,1
    - Dst: errinf
      Src: /src/unbound/util/module.c:128,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - qstate
    - origin
    argTypes:
    - struct module_qstate*
    - struct sock_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 112
    functionDepth: 2
    functionLinenumber: 112
    functionLinenumberEnd: 130
    functionName: errinf_origin
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 6
    functionsReached:
    - snprintf
    - addr_to_str
    - errinf
    - strlen
    linkageType: ''
    returnType: void
    signature: void errinf_origin(struct module_qstate* qstate, struct sock_list *origin)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/util/module.c:140,1
    - Dst: sldns_wire2str_class_buf
      Src: /src/unbound/util/module.c:141,1
    - Dst: dname_str
      Src: /src/unbound/util/module.c:142,1
    - Dst: snprintf
      Src: /src/unbound/util/module.c:143,1
    - Dst: strlen
      Src: /src/unbound/util/module.c:144,1
    - Dst: strlen
      Src: /src/unbound/util/module.c:144,1
    - Dst: snprintf
      Src: /src/unbound/util/module.c:146,1
    - Dst: snprintf
      Src: /src/unbound/util/module.c:148,1
    - Dst: strlen
      Src: /src/unbound/util/module.c:149,1
    - Dst: strlen
      Src: /src/unbound/util/module.c:149,1
    - Dst: regional_strdup
      Src: /src/unbound/util/module.c:152,1
    - Dst: strdup
      Src: /src/unbound/util/module.c:154,1
    - Dst: log_err
      Src: /src/unbound/util/module.c:156,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - qstate
    - region
    argTypes:
    - struct module_qstate*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 132
    functionDepth: 3
    functionLinenumber: 132
    functionLinenumberEnd: 158
    functionName: errinf_to_str_bogus
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 2
    functionsReached:
    - log_err
    - regional_strdup
    - snprintf
    - sldns_wire2str_type_buf
    - dname_str
    - sldns_wire2str_class_buf
    - strlen
    - strdup
    linkageType: ''
    returnType: char
    signature: char * errinf_to_str_bogus(struct module_qstate* qstate, struct regional*
      region)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 9
    argCount: 1
    argNames:
    - qstate
    argTypes:
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 173
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 173
    functionName: errinf_to_reason_bogus
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: sldns_ede_code
    signature: sldns_ede_code errinf_to_reason_bogus(struct module_qstate* qstate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/util/module.c:183,1
    - Dst: sldns_wire2str_class_buf
      Src: /src/unbound/util/module.c:184,1
    - Dst: dname_str
      Src: /src/unbound/util/module.c:185,1
    - Dst: snprintf
      Src: /src/unbound/util/module.c:186,1
    - Dst: strlen
      Src: /src/unbound/util/module.c:187,1
    - Dst: strlen
      Src: /src/unbound/util/module.c:187,1
    - Dst: snprintf
      Src: /src/unbound/util/module.c:189,1
    - Dst: snprintf
      Src: /src/unbound/util/module.c:191,1
    - Dst: strlen
      Src: /src/unbound/util/module.c:192,1
    - Dst: strlen
      Src: /src/unbound/util/module.c:192,1
    - Dst: regional_strdup
      Src: /src/unbound/util/module.c:194,1
    - Dst: log_err
      Src: /src/unbound/util/module.c:196,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - qstate
    argTypes:
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 198
      start: 175
    functionDepth: 3
    functionLinenumber: 175
    functionLinenumberEnd: 198
    functionName: errinf_to_str_servfail
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 1
    functionsReached:
    - log_err
    - regional_strdup
    - snprintf
    - sldns_wire2str_type_buf
    - dname_str
    - sldns_wire2str_class_buf
    - strlen
    linkageType: ''
    returnType: char
    signature: char * errinf_to_str_servfail(struct module_qstate* qstate)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/util/module.c:207,1
    - Dst: snprintf
      Src: /src/unbound/util/module.c:209,1
    - Dst: strlen
      Src: /src/unbound/util/module.c:210,1
    - Dst: strlen
      Src: /src/unbound/util/module.c:210,1
    - Dst: regional_strdup
      Src: /src/unbound/util/module.c:212,1
    - Dst: log_err
      Src: /src/unbound/util/module.c:214,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - qstate
    argTypes:
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 200
    functionDepth: 3
    functionLinenumber: 200
    functionLinenumberEnd: 216
    functionName: errinf_to_str_misc
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 5
    functionsReached:
    - snprintf
    - regional_strdup
    - strlen
    - log_err
    linkageType: ''
    returnType: char
    signature: char * errinf_to_str_misc(struct module_qstate* qstate)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/util/module.c:225,1
    - Dst: ntohs
      Src: /src/unbound/util/module.c:225,1
    - Dst: sldns_wire2str_class_buf
      Src: /src/unbound/util/module.c:226,1
    - Dst: ntohs
      Src: /src/unbound/util/module.c:226,1
    - Dst: dname_str
      Src: /src/unbound/util/module.c:227,1
    - Dst: snprintf
      Src: /src/unbound/util/module.c:228,1
    - Dst: errinf
      Src: /src/unbound/util/module.c:229,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - qstate
    - rr
    argTypes:
    - struct module_qstate*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 218
    functionDepth: 2
    functionLinenumber: 218
    functionLinenumberEnd: 230
    functionName: errinf_rrset
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 1
    functionsReached:
    - snprintf
    - sldns_wire2str_type_buf
    - dname_str
    - sldns_wire2str_class_buf
    - errinf
    - ntohs
    linkageType: ''
    returnType: void
    signature: void errinf_rrset(struct module_qstate* qstate, struct ub_packed_rrset_key
      *rr)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dname_str
      Src: /src/unbound/util/module.c:238,1
    - Dst: snprintf
      Src: /src/unbound/util/module.c:239,1
    - Dst: errinf
      Src: /src/unbound/util/module.c:240,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 3
    argNames:
    - qstate
    - str
    - dname
    argTypes:
    - struct module_qstate*
    - char*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 232
    functionDepth: 2
    functionLinenumber: 232
    functionLinenumberEnd: 241
    functionName: errinf_dname
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 11
    functionsReached:
    - snprintf
    - errinf
    - dname_str
    linkageType: ''
    returnType: void
    signature: void errinf_dname(struct module_qstate* qstate, const char* str, uint8_t*
      dname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/module.c:247,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - env
    argTypes:
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 243
    functionDepth: 1
    functionLinenumber: 243
    functionLinenumberEnd: 251
    functionName: edns_known_options_init
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 2
    functionsReached:
    - calloc
    linkageType: ''
    returnType: int
    signature: int edns_known_options_init(struct module_env* env)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/module.c:256,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - env
    argTypes:
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 259
    functionName: edns_known_options_delete
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 5
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void edns_known_options_delete(struct module_env* env)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/util/module.c:267,1
    - Dst: log_err
      Src: /src/unbound/util/module.c:284,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 4
    argNames:
    - opt_code
    - bypass_cache_stage
    - no_aggregation
    - env
    argTypes:
    - uint16_t
    - int
    - int
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 261
    functionDepth: 1
    functionLinenumber: 261
    functionLinenumberEnd: 293
    functionName: edns_register_option
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 2
    functionsReached:
    - log_err
    linkageType: ''
    returnType: int
    signature: "int edns_register_option(uint16_t opt_code, int bypass_cache_stage,\n\tint
      no_aggregation, struct module_env* env)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/util/module.c:302,1
    - Dst: calloc
      Src: /src/unbound/util/module.c:307,1
    - Dst: log_err
      Src: /src/unbound/util/module.c:309,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 19
    argCount: 5
    argNames:
    - cb
    - type
    - cbarg
    - env
    - id
    argTypes:
    - void*
    - enum inplace_cb_list_type
    - void*
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 323
    functionName: inplace_cb_register
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 2
    functionsReached:
    - log_err
    - calloc
    linkageType: ''
    returnType: int
    signature: "int inplace_cb_register(void* cb, enum inplace_cb_list_type type,
      void* cbarg,\n\tstruct module_env* env, int id)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/module.c:336,1
    - Dst: free
      Src: /src/unbound/util/module.c:341,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - env
    - type
    - id
    argTypes:
    - struct module_env*
    - enum inplace_cb_list_type
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 350
      start: 325
    functionDepth: 1
    functionLinenumber: 325
    functionLinenumberEnd: 350
    functionName: inplace_cb_delete
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 2
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: "void inplace_cb_delete(struct module_env* env, enum inplace_cb_list_type
      type,\n\tint id)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - opt_code
    - env
    argTypes:
    - uint16_t
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 360
      start: 352
    functionDepth: 0
    functionLinenumber: 352
    functionLinenumberEnd: 360
    functionName: edns_option_is_known
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct edns_known_option
    signature: 'struct edns_known_option *

      edns_option_is_known(uint16_t opt_code, struct module_env* env)'
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 6
    argCount: 2
    argNames:
    - list
    - env
    argTypes:
    - struct edns_option*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 362
    functionDepth: 0
    functionLinenumber: 362
    functionLinenumberEnd: 372
    functionName: edns_bypass_cache_stage
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int edns_bypass_cache_stage(struct edns_option* list, struct module_env*
      env)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - list
    - env
    argTypes:
    - struct edns_option*
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 374
    functionDepth: 0
    functionLinenumber: 374
    functionLinenumberEnd: 386
    functionName: unique_mesh_state
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int unique_mesh_state(struct edns_option* list, struct module_env*
      env)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/module.c:395,1
    - Dst: verbose
      Src: /src/unbound/util/module.c:396,1
    - Dst: sldns_wire2str_edns_option_code_print
      Src: /src/unbound/util/module.c:400,1
    - Dst: verbose
      Src: /src/unbound/util/module.c:402,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - level
    - env
    argTypes:
    - enum verbosity_value
    - struct module_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 388
    functionDepth: 4
    functionLinenumber: 388
    functionLinenumberEnd: 407
    functionName: log_edns_known_options
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 2
    functionsReached:
    - verbose
    - sldns_wire2str_edns_option_code_print
    linkageType: ''
    returnType: void
    signature: void log_edns_known_options(enum verbosity_value level, struct module_env*
      env)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - qstate
    - ATTR_UNUSED
    - super
    argTypes:
    - struct module_qstate*
    - int
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 417
      start: 409
    functionDepth: 0
    functionLinenumber: 409
    functionLinenumberEnd: 417
    functionName: copy_state_to_super
    functionSourceFile: /src/unbound/util/module.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void copy_state_to_super(struct module_qstate* qstate, int ATTR_UNUSED(id),\n\tstruct
      module_qstate* super)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ev
    - ','
    - tv
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 180
    functionName: evtimer_add
    functionSourceFile: /src/unbound/util/mini_event.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: evtimer_add(ev, tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ev
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 182
    functionName: evtimer_del
    functionSourceFile: /src/unbound/util/mini_event.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: evtimer_del(ev)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - ev
    - ','
    - x
    - ','
    - cb
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 190
      start: 188
    functionDepth: 0
    functionLinenumber: 188
    functionLinenumberEnd: 190
    functionName: signal_set
    functionSourceFile: /src/unbound/util/mini_event.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: signal_set(ev, x, cb, arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - rtt
    argTypes:
    - struct rtt_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 62
      start: 52
    functionDepth: 0
    functionLinenumber: 52
    functionLinenumberEnd: 62
    functionName: calc_rto
    functionSourceFile: /src/unbound/util/rtt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int calc_rto(const struct rtt_info* rtt)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calc_rto
      Src: /src/unbound/util/rtt.c:69,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - rtt
    argTypes:
    - struct rtt_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 64
    functionDepth: 1
    functionLinenumber: 64
    functionLinenumberEnd: 72
    functionName: rtt_init
    functionSourceFile: /src/unbound/util/rtt.c
    functionUses: 4
    functionsReached:
    - calc_rto
    linkageType: ''
    returnType: void
    signature: void rtt_init(struct rtt_info* rtt)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rtt
    argTypes:
    - struct rtt_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 74
    functionDepth: 0
    functionLinenumber: 74
    functionLinenumberEnd: 78
    functionName: rtt_timeout
    functionSourceFile: /src/unbound/util/rtt.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int rtt_timeout(const struct rtt_info* rtt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calc_rto
      Src: /src/unbound/util/rtt.c:83,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - rtt
    argTypes:
    - struct rtt_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 80
    functionDepth: 1
    functionLinenumber: 80
    functionLinenumberEnd: 89
    functionName: rtt_unclamped
    functionSourceFile: /src/unbound/util/rtt.c
    functionUses: 2
    functionsReached:
    - calc_rto
    linkageType: ''
    returnType: int
    signature: int rtt_unclamped(const struct rtt_info* rtt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calc_rto
      Src: /src/unbound/util/rtt.c:99,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - rtt
    - ms
    argTypes:
    - struct rtt_info*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 100
    functionName: rtt_update
    functionSourceFile: /src/unbound/util/rtt.c
    functionUses: 8
    functionsReached:
    - calc_rto
    linkageType: ''
    returnType: void
    signature: void rtt_update(struct rtt_info* rtt, int ms)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - rtt
    - orig
    argTypes:
    - struct rtt_info*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 120
    functionName: rtt_lost
    functionSourceFile: /src/unbound/util/rtt.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void rtt_lost(struct rtt_info* rtt, int orig)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: calc_rto
      Src: /src/unbound/util/rtt.c:124,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rtt
    argTypes:
    - struct rtt_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 122
    functionDepth: 1
    functionLinenumber: 122
    functionLinenumberEnd: 125
    functionName: rtt_notimeout
    functionSourceFile: /src/unbound/util/rtt.c
    functionUses: 4
    functionsReached:
    - calc_rto
    linkageType: ''
    returnType: int
    signature: int rtt_notimeout(const struct rtt_info* rtt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/util/net_help.c:133,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 136
    functionName: str_is_ip6
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 10
    functionsReached:
    - strchr
    linkageType: ''
    returnType: int
    signature: int str_is_ip6(const char* str)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/unbound/util/net_help.c:143,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:144,1
    - Dst: strerror
      Src: /src/unbound/util/net_help.c:144,1
    - Dst: fcntl
      Src: /src/unbound/util/net_help.c:148,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:149,1
    - Dst: strerror
      Src: /src/unbound/util/net_help.c:149,1
    - Dst: ioctlsocket
      Src: /src/unbound/util/net_help.c:154,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:155,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/net_help.c:156,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/net_help.c:156,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - s
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 160
    functionName: fd_set_nonblock
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 14
    functionsReached:
    - ioctlsocket
    - log_err
    - wsa_strerror
    - WSAGetLastError
    - strerror
    - fcntl
    linkageType: ''
    returnType: int
    signature: int fd_set_nonblock(int s)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fcntl
      Src: /src/unbound/util/net_help.c:167,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:168,1
    - Dst: strerror
      Src: /src/unbound/util/net_help.c:168,1
    - Dst: fcntl
      Src: /src/unbound/util/net_help.c:172,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:173,1
    - Dst: strerror
      Src: /src/unbound/util/net_help.c:173,1
    - Dst: ioctlsocket
      Src: /src/unbound/util/net_help.c:178,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/net_help.c:179,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:180,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/net_help.c:181,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/net_help.c:181,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 15
    argCount: 1
    argNames:
    - s
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 162
    functionDepth: 1
    functionLinenumber: 162
    functionLinenumberEnd: 185
    functionName: fd_set_block
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 3
    functionsReached:
    - ioctlsocket
    - log_err
    - wsa_strerror
    - WSAGetLastError
    - strerror
    - fcntl
    linkageType: ''
    returnType: int
    signature: int fd_set_block(int s)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - num
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 187
    functionDepth: 0
    functionLinenumber: 187
    functionLinenumberEnd: 192
    functionName: is_pow2
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int is_pow2(size_t num)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/util/net_help.c:200,1
    - Dst: memcpy
      Src: /src/unbound/util/net_help.c:202,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - data
    - len
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 204
    functionName: memdup
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 63
    functionsReached:
    - malloc
    - memcpy
    linkageType: ''
    returnType: void
    signature: "void * \nmemdup(void* data, size_t len)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/unbound/util/net_help.c:224,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:226,1
    - Dst: inet_ntop
      Src: /src/unbound/util/net_help.c:230,1
    - Dst: strlcpy
      Src: /src/unbound/util/net_help.c:231,1
    - Dst: ntohs
      Src: /src/unbound/util/net_help.c:234,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:236,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:238,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 4
    argNames:
    - v
    - str
    - addr
    - addrlen
    argTypes:
    - enum verbosity_value
    - char*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 206
    functionDepth: 2
    functionLinenumber: 206
    functionLinenumberEnd: 239
    functionName: log_addr
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 25
    functionsReached:
    - strlcpy
    - verbose
    - inet_ntop
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void log_addr(enum verbosity_value v, const char* str, \n\tstruct
      sockaddr_storage* addr, socklen_t addrlen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/util/net_help.c:246,1
    - Dst: strlcpy
      Src: /src/unbound/util/net_help.c:251,1
    - Dst: atoi
      Src: /src/unbound/util/net_help.c:253,1
    - Dst: strcmp
      Src: /src/unbound/util/net_help.c:254,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/util/net_help.c:257,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/util/net_help.c:259,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 4
    argNames:
    - str
    - addr
    - addrlen
    - port
    argTypes:
    - char*
    - struct sockaddr_storage*
    - socklen_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 260
      start: 241
    functionDepth: 1
    functionLinenumber: 241
    functionLinenumberEnd: 260
    functionName: extstrtoaddr
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 21
    functionsReached:
    - strlcpy
    - strcmp
    - ipstrtoaddr
    - atoi
    - strchr
    linkageType: ''
    returnType: int
    signature: "int extstrtoaddr(const char* str, struct sockaddr_storage* addr,\n\tsocklen_t*
      addrlen, int port)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_is_ip6
      Src: /src/unbound/util/net_help.c:269,1
    - Dst: memset
      Src: /src/unbound/util/net_help.c:274,1
    - Dst: htons
      Src: /src/unbound/util/net_help.c:276,1
    - Dst: strchr
      Src: /src/unbound/util/net_help.c:277,1
    - Dst: strlcpy
      Src: /src/unbound/util/net_help.c:280,1
    - Dst: if_nametoindex
      Src: /src/unbound/util/net_help.c:283,1
    - Dst: atoi
      Src: /src/unbound/util/net_help.c:285,1
    - Dst: inet_pton
      Src: /src/unbound/util/net_help.c:288,1
    - Dst: memset
      Src: /src/unbound/util/net_help.c:294,1
    - Dst: htons
      Src: /src/unbound/util/net_help.c:296,1
    - Dst: inet_pton
      Src: /src/unbound/util/net_help.c:297,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 4
    argNames:
    - ip
    - port
    - addr
    - addrlen
    argTypes:
    - char*
    - int
    - struct sockaddr_storage*
    - socklen_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 262
    functionDepth: 2
    functionLinenumber: 262
    functionLinenumberEnd: 302
    functionName: ipstrtoaddr
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 14
    functionsReached:
    - strlcpy
    - htons
    - if_nametoindex
    - atoi
    - str_is_ip6
    - memset
    - inet_pton
    - strchr
    linkageType: ''
    returnType: int
    signature: "int ipstrtoaddr(const char* ip, int port, struct sockaddr_storage*
      addr,\n\tsocklen_t* addrlen)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: str_is_ip6
      Src: /src/unbound/util/net_help.c:310,1
    - Dst: strchr
      Src: /src/unbound/util/net_help.c:311,1
    - Dst: atoi
      Src: /src/unbound/util/net_help.c:312,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:313,1
    - Dst: atoi
      Src: /src/unbound/util/net_help.c:316,1
    - Dst: strcmp
      Src: /src/unbound/util/net_help.c:317,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:318,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:322,1
    - Dst: strlcpy
      Src: /src/unbound/util/net_help.c:326,1
    - Dst: strchr
      Src: /src/unbound/util/net_help.c:327,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/util/net_help.c:331,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:332,1
    - Dst: addr_mask
      Src: /src/unbound/util/net_help.c:336,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 5
    argNames:
    - str
    - port
    - addr
    - addrlen
    - net
    argTypes:
    - char*
    - int
    - struct sockaddr_storage*
    - socklen_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 304
    functionDepth: 3
    functionLinenumber: 304
    functionLinenumberEnd: 339
    functionName: netblockstrtoaddr
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 17
    functionsReached:
    - log_err
    - strlcpy
    - strcmp
    - ipstrtoaddr
    - atoi
    - str_is_ip6
    - strchr
    - addr_mask
    linkageType: ''
    returnType: int
    signature: "int netblockstrtoaddr(const char* str, int port, struct sockaddr_storage*
      addr,\n        socklen_t* addrlen, int* net)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/util/net_help.c:346,1
    - Dst: dname_has_label
      Src: /src/unbound/util/net_help.c:359,1
    - Dst: memset
      Src: /src/unbound/util/net_help.c:368,1
    - Dst: memset
      Src: /src/unbound/util/net_help.c:374,1
    - Dst: memcmp
      Src: /src/unbound/util/net_help.c:385,1
    - Dst: memcpy
      Src: /src/unbound/util/net_help.c:394,1
    - Dst: strtol
      Src: /src/unbound/util/net_help.c:396,1
    - Dst: log_assert
      Src: /src/unbound/util/net_help.c:400,1
    - Dst: log_assert
      Src: /src/unbound/util/net_help.c:404,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 54
    argCount: 5
    argNames:
    - dname
    - dnamelen
    - addr
    - addrlen
    - af
    argTypes:
    - uint8_t*
    - size_t
    - struct sockaddr_storage*
    - socklen_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 419
    functionName: ipdnametoaddr
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 0
    functionsReached:
    - memcpy
    - dname_has_label
    - log_assert
    - memcmp
    - memset
    - dname_count_labels
    - strtol
    linkageType: ''
    returnType: int
    signature: "int ipdnametoaddr(uint8_t* dname, size_t dnamelen,\n\tstruct sockaddr_storage*
      addr, socklen_t* addrlen, int* af)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/util/net_help.c:434,1
    - Dst: atoi
      Src: /src/unbound/util/net_help.c:436,1
    - Dst: strcmp
      Src: /src/unbound/util/net_help.c:437,1
    - Dst: ipdnametoaddr
      Src: /src/unbound/util/net_help.c:443,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 20
    argCount: 6
    argNames:
    - dname
    - dnamelen
    - addr
    - addrlen
    - net
    - af
    argTypes:
    - uint8_t*
    - size_t
    - struct sockaddr_storage*
    - socklen_t*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 421
    functionDepth: 2
    functionLinenumber: 421
    functionLinenumberEnd: 448
    functionName: netblockdnametoaddr
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 6
    functionsReached:
    - atoi
    - memcpy
    - strcmp
    - ipdnametoaddr
    linkageType: ''
    returnType: int
    signature: "int netblockdnametoaddr(uint8_t* dname, size_t dnamelen,\n\tstruct
      sockaddr_storage* addr, socklen_t* addrlen, int* net, int* af)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/util/net_help.c:455,1
    - Dst: strchr
      Src: /src/unbound/util/net_help.c:458,1
    - Dst: strlcpy
      Src: /src/unbound/util/net_help.c:467,1
    - Dst: atoi
      Src: /src/unbound/util/net_help.c:469,1
    - Dst: strcmp
      Src: /src/unbound/util/net_help.c:471,1
    - Dst: strncmp
      Src: /src/unbound/util/net_help.c:473,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/util/net_help.c:476,1
    - Dst: strchr
      Src: /src/unbound/util/net_help.c:478,1
    - Dst: strlcpy
      Src: /src/unbound/util/net_help.c:484,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/util/net_help.c:488,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/util/net_help.c:491,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 33
    argCount: 4
    argNames:
    - str
    - addr
    - addrlen
    - auth_name
    argTypes:
    - char*
    - struct sockaddr_storage*
    - socklen_t*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 450
    functionDepth: 3
    functionLinenumber: 450
    functionLinenumberEnd: 492
    functionName: authextstrtoaddr
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 5
    functionsReached:
    - strlcpy
    - strncmp
    - strcmp
    - ipstrtoaddr
    - atoi
    - strchr
    linkageType: ''
    returnType: int
    signature: "int authextstrtoaddr(char* str, struct sockaddr_storage* addr, \n\tsocklen_t*
      addrlen, char** auth_name)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/util/net_help.c:501,1
    - Dst: strchr
      Src: /src/unbound/util/net_help.c:504,1
    - Dst: strlcpy
      Src: /src/unbound/util/net_help.c:513,1
    - Dst: atoi
      Src: /src/unbound/util/net_help.c:515,1
    - Dst: strcmp
      Src: /src/unbound/util/net_help.c:517,1
    - Dst: strncmp
      Src: /src/unbound/util/net_help.c:519,1
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/util/net_help.c:522,1
    - Dst: strchr
      Src: /src/unbound/util/net_help.c:523,1
    - Dst: strlcpy
      Src: /src/unbound/util/net_help.c:529,1
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/util/net_help.c:533,1
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/util/net_help.c:535,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 36
    argCount: 3
    argNames:
    - str
    - port
    - auth_name
    argTypes:
    - char*
    - int*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 494
    functionDepth: 4
    functionLinenumber: 494
    functionLinenumberEnd: 538
    functionName: authextstrtodname
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 3
    functionsReached:
    - strlcpy
    - strncmp
    - strcmp
    - atoi
    - sldns_str2wire_dname
    - strchr
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t * authextstrtodname(char* str, int* port, char** auth_name)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: addr_is_ip6
      Src: /src/unbound/util/net_help.c:544,1
    - Dst: htons
      Src: /src/unbound/util/net_help.c:546,1
    - Dst: htons
      Src: /src/unbound/util/net_help.c:549,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - addr
    - addrlen
    - port
    argTypes:
    - struct sockaddr_storage*
    - socklen_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 541
    functionDepth: 1
    functionLinenumber: 541
    functionLinenumberEnd: 551
    functionName: sockaddr_store_port
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 3
    functionsReached:
    - htons
    - addr_is_ip6
    linkageType: ''
    returnType: void
    signature: void sockaddr_store_port(struct sockaddr_storage* addr, socklen_t addrlen,
      int port)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dname_str
      Src: /src/unbound/util/net_help.c:562,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/net_help.c:569,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/net_help.c:569,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/net_help.c:570,1
    - Dst: snprintf
      Src: /src/unbound/util/net_help.c:572,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/util/net_help.c:575,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/util/net_help.c:576,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/util/net_help.c:577,1
    - Dst: snprintf
      Src: /src/unbound/util/net_help.c:579,1
    - Dst: log_info
      Src: /src/unbound/util/net_help.c:582,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 5
    argNames:
    - v
    - str
    - name
    - type
    - dclass
    argTypes:
    - enum verbosity_value
    - char*
    - uint8_t*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 583
      start: 553
    functionDepth: 2
    functionLinenumber: 553
    functionLinenumberEnd: 583
    functionName: log_nametypeclass
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 63
    functionsReached:
    - sldns_rr_descript
    - snprintf
    - log_info
    - dname_str
    - sldns_lookup_by_id
    linkageType: ''
    returnType: void
    signature: "void log_nametypeclass(enum verbosity_value v, const char* str, uint8_t*
      name, \n\tuint16_t type, uint16_t dclass)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: dname_str
      Src: /src/unbound/util/net_help.c:591,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/net_help.c:598,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/net_help.c:598,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/net_help.c:599,1
    - Dst: snprintf
      Src: /src/unbound/util/net_help.c:601,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/util/net_help.c:604,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/util/net_help.c:605,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/util/net_help.c:606,1
    - Dst: snprintf
      Src: /src/unbound/util/net_help.c:608,1
    - Dst: log_query
      Src: /src/unbound/util/net_help.c:612,1
    - Dst: log_info
      Src: /src/unbound/util/net_help.c:613,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 27
    argCount: 4
    argNames:
    - str
    - name
    - type
    - dclass
    argTypes:
    - char*
    - uint8_t*
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 614
      start: 585
    functionDepth: 2
    functionLinenumber: 585
    functionLinenumberEnd: 614
    functionName: log_query_in
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 1
    functionsReached:
    - log_query
    - sldns_rr_descript
    - snprintf
    - log_info
    - dname_str
    - sldns_lookup_by_id
    linkageType: ''
    returnType: void
    signature: void log_query_in(const char* str, uint8_t* name, uint16_t type, uint16_t
      dclass)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/unbound/util/net_help.c:635,1
    - Dst: strlcpy
      Src: /src/unbound/util/net_help.c:636,1
    - Dst: ntohs
      Src: /src/unbound/util/net_help.c:639,1
    - Dst: dname_str
      Src: /src/unbound/util/net_help.c:640,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:642,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:644,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 26
    argCount: 5
    argNames:
    - v
    - str
    - zone
    - addr
    - addrlen
    argTypes:
    - enum verbosity_value
    - char*
    - uint8_t*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 616
    functionDepth: 2
    functionLinenumber: 616
    functionLinenumberEnd: 646
    functionName: log_name_addr
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 4
    functionsReached:
    - strlcpy
    - inet_ntop
    - verbose
    - dname_str
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void log_name_addr(enum verbosity_value v, const char* str, uint8_t*
      zone, \n\tstruct sockaddr_storage* addr, socklen_t addrlen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/unbound/util/net_help.c:657,1
    - Dst: strlcpy
      Src: /src/unbound/util/net_help.c:658,1
    - Dst: ntohs
      Src: /src/unbound/util/net_help.c:661,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:663,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:665,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - str
    - err
    - addr
    - addrlen
    argTypes:
    - char*
    - char*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 648
    functionDepth: 2
    functionLinenumber: 648
    functionLinenumberEnd: 666
    functionName: log_err_addr
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 6
    functionsReached:
    - strlcpy
    - inet_ntop
    - log_err
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void log_err_addr(const char* str, const char* err,\n\tstruct sockaddr_storage*
      addr, socklen_t addrlen)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/net_help.c:680,1
    - Dst: log_assert
      Src: /src/unbound/util/net_help.c:685,1
    - Dst: log_assert
      Src: /src/unbound/util/net_help.c:693,1
    - Dst: memcmp
      Src: /src/unbound/util/net_help.c:694,1
    - Dst: log_assert
      Src: /src/unbound/util/net_help.c:701,1
    - Dst: memcmp
      Src: /src/unbound/util/net_help.c:702,1
    - Dst: memcmp
      Src: /src/unbound/util/net_help.c:706,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 4
    argNames:
    - addr1
    - len1
    - addr2
    - len2
    argTypes:
    - struct sockaddr_storage*
    - socklen_t
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 708
      start: 668
    functionDepth: 1
    functionLinenumber: 668
    functionLinenumberEnd: 708
    functionName: sockaddr_cmp
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 13
    functionsReached:
    - log_assert
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int sockaddr_cmp(struct sockaddr_storage* addr1, socklen_t len1, \n\tstruct
      sockaddr_storage* addr2, socklen_t len2)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/net_help.c:722,1
    - Dst: log_assert
      Src: /src/unbound/util/net_help.c:727,1
    - Dst: memcmp
      Src: /src/unbound/util/net_help.c:730,1
    - Dst: memcmp
      Src: /src/unbound/util/net_help.c:732,1
    - Dst: memcmp
      Src: /src/unbound/util/net_help.c:736,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 4
    argNames:
    - addr1
    - len1
    - addr2
    - len2
    argTypes:
    - struct sockaddr_storage*
    - socklen_t
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 710
    functionDepth: 1
    functionLinenumber: 710
    functionLinenumberEnd: 738
    functionName: sockaddr_cmp_addr
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 5
    functionsReached:
    - log_assert
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int sockaddr_cmp_addr(struct sockaddr_storage* addr1, socklen_t len1,
      \n\tstruct sockaddr_storage* addr2, socklen_t len2)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/net_help.c:752,1
    - Dst: log_assert
      Src: /src/unbound/util/net_help.c:757,1
    - Dst: log_assert
      Src: /src/unbound/util/net_help.c:765,1
    - Dst: memcmp
      Src: /src/unbound/util/net_help.c:766,1
    - Dst: log_assert
      Src: /src/unbound/util/net_help.c:777,1
    - Dst: memcmp
      Src: /src/unbound/util/net_help.c:778,1
    - Dst: memcmp
      Src: /src/unbound/util/net_help.c:782,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 33
    argCount: 4
    argNames:
    - addr1
    - len1
    - addr2
    - len2
    argTypes:
    - struct sockaddr_storage*
    - socklen_t
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 740
    functionDepth: 1
    functionLinenumber: 740
    functionLinenumberEnd: 784
    functionName: sockaddr_cmp_scopeid
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 0
    functionsReached:
    - log_assert
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int sockaddr_cmp_scopeid(struct sockaddr_storage* addr1, socklen_t
      len1,\n\tstruct sockaddr_storage* addr2, socklen_t len2)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - addr
    - len
    argTypes:
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 793
      start: 786
    functionDepth: 0
    functionLinenumber: 786
    functionLinenumberEnd: 793
    functionName: addr_is_ip6
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 29
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int addr_is_ip6(const struct sockaddr_storage* addr, socklen_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: addr_is_ip6
      Src: /src/unbound/util/net_help.c:801,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 14
    argCount: 3
    argNames:
    - addr
    - len
    - net
    argTypes:
    - struct sockaddr_storage*
    - socklen_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 814
      start: 795
    functionDepth: 1
    functionLinenumber: 795
    functionLinenumberEnd: 814
    functionName: addr_mask
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 2
    functionsReached:
    - addr_is_ip6
    linkageType: ''
    returnType: void
    signature: void addr_mask(struct sockaddr_storage* addr, socklen_t len, int net)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: addr_is_ip6
      Src: /src/unbound/util/net_help.c:824,1
    - Dst: log_assert
      Src: /src/unbound/util/net_help.c:839,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 5
    argNames:
    - addr1
    - net1
    - addr2
    - net2
    - addrlen
    argTypes:
    - struct sockaddr_storage*
    - int
    - struct sockaddr_storage*
    - int
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 849
      start: 816
    functionDepth: 1
    functionLinenumber: 816
    functionLinenumberEnd: 849
    functionName: addr_in_common
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 3
    functionsReached:
    - log_assert
    - addr_is_ip6
    linkageType: ''
    returnType: int
    signature: "int addr_in_common(struct sockaddr_storage* addr1, int net1,\n\tstruct
      sockaddr_storage* addr2, int net2, socklen_t addrlen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: addr_is_ip6
      Src: /src/unbound/util/net_help.c:857,1
    - Dst: inet_ntop
      Src: /src/unbound/util/net_help.c:859,1
    - Dst: snprintf
      Src: /src/unbound/util/net_help.c:860,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - addr
    - addrlen
    - buf
    - len
    argTypes:
    - struct sockaddr_storage*
    - socklen_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 862
      start: 851
    functionDepth: 2
    functionLinenumber: 851
    functionLinenumberEnd: 862
    functionName: addr_to_str
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 29
    functionsReached:
    - snprintf
    - inet_ntop
    - addr_is_ip6
    linkageType: ''
    returnType: void
    signature: "void addr_to_str(struct sockaddr_storage* addr, socklen_t addrlen,\n\tchar*
      buf, size_t len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 2
    argCount: 1
    argNames:
    - prefixnet
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 870
      start: 864
    functionDepth: 0
    functionLinenumber: 864
    functionLinenumberEnd: 870
    functionName: prefixnet_is_nat64
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int prefixnet_is_nat64(int prefixnet)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/net_help.c:884,1
    - Dst: log_assert
      Src: /src/unbound/util/net_help.c:887,1
    - Dst: prefixnet_is_nat64
      Src: /src/unbound/util/net_help.c:887,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 6
    argNames:
    - addr
    - nat64_prefix
    - nat64_prefixlen
    - nat64_prefixnet
    - nat64_addr
    - nat64_addrlen
    argTypes:
    - struct sockaddr_storage*
    - struct sockaddr_storage*
    - socklen_t
    - int
    - struct sockaddr_storage*
    - socklen_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 906
      start: 872
    functionDepth: 1
    functionLinenumber: 872
    functionLinenumberEnd: 906
    functionName: addr_to_nat64
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 1
    functionsReached:
    - prefixnet_is_nat64
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void addr_to_nat64(const struct sockaddr_storage* addr,\n\tconst struct
      sockaddr_storage* nat64_prefix,\n\tsocklen_t nat64_prefixlen, int nat64_prefixnet,\n\tstruct
      sockaddr_storage* nat64_addr, socklen_t* nat64_addrlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: addr_is_ip6
      Src: /src/unbound/util/net_help.c:915,1
    - Dst: memcmp
      Src: /src/unbound/util/net_help.c:919,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - addr
    - addrlen
    argTypes:
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 920
      start: 908
    functionDepth: 1
    functionLinenumber: 908
    functionLinenumberEnd: 920
    functionName: addr_is_ip4mapped
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 1
    functionsReached:
    - addr_is_ip6
    - memcmp
    linkageType: ''
    returnType: int
    signature: int addr_is_ip4mapped(struct sockaddr_storage* addr, socklen_t addrlen)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memmove
      Src: /src/unbound/util/net_help.c:931,1
    - Dst: memcmp
      Src: /src/unbound/util/net_help.c:933,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - addr
    - addrlen
    argTypes:
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 934
      start: 922
    functionDepth: 1
    functionLinenumber: 922
    functionLinenumberEnd: 934
    functionName: addr_is_ip6linklocal
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 1
    functionsReached:
    - memcmp
    - memmove
    linkageType: ''
    returnType: int
    signature: int addr_is_ip6linklocal(struct sockaddr_storage* addr, socklen_t addrlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/util/net_help.c:941,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - addr
    - addrlen
    argTypes:
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 942
      start: 936
    functionDepth: 1
    functionLinenumber: 936
    functionLinenumberEnd: 942
    functionName: addr_is_broadcast
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 0
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int addr_is_broadcast(struct sockaddr_storage* addr, socklen_t addrlen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/util/net_help.c:950,1
    - Dst: memcmp
      Src: /src/unbound/util/net_help.c:953,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 6
    argCount: 2
    argNames:
    - addr
    - addrlen
    argTypes:
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 957
      start: 944
    functionDepth: 1
    functionLinenumber: 944
    functionLinenumberEnd: 957
    functionName: addr_is_any
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 2
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int addr_is_any(struct sockaddr_storage* addr, socklen_t addrlen)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/util/net_help.c:962,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:965,1
    - Dst: log_assert
      Src: /src/unbound/util/net_help.c:968,1
    - Dst: memmove
      Src: /src/unbound/util/net_help.c:972,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - list
    - addr
    - len
    - region
    argTypes:
    - struct sock_list**
    - struct sockaddr_storage*
    - socklen_t
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 973
      start: 959
    functionDepth: 1
    functionLinenumber: 959
    functionLinenumberEnd: 973
    functionName: sock_list_insert
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 5
    functionsReached:
    - log_err
    - log_assert
    - regional_alloc
    - memmove
    linkageType: ''
    returnType: void
    signature: "void sock_list_insert(struct sock_list** list, struct sockaddr_storage*
      addr,\n\tsocklen_t len, struct regional* region)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - list
    - add
    argTypes:
    - struct sock_list**
    - struct sock_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 984
      start: 975
    functionDepth: 0
    functionLinenumber: 975
    functionLinenumberEnd: 984
    functionName: sock_list_prepend
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void sock_list_prepend(struct sock_list** list, struct sock_list* add)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sockaddr_cmp_addr
      Src: /src/unbound/util/net_help.c:991,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 3
    argNames:
    - list
    - addr
    - len
    argTypes:
    - struct sock_list*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 998
      start: 986
    functionDepth: 2
    functionLinenumber: 986
    functionLinenumberEnd: 998
    functionName: sock_list_find
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 1
    functionsReached:
    - sockaddr_cmp_addr
    linkageType: ''
    returnType: int
    signature: "int sock_list_find(struct sock_list* list, struct sockaddr_storage*
      addr,\n        socklen_t len)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sock_list_find
      Src: /src/unbound/util/net_help.c:1005,1
    - Dst: sock_list_insert
      Src: /src/unbound/util/net_help.c:1006,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 3
    argNames:
    - list
    - region
    - add
    argTypes:
    - struct sock_list**
    - struct regional*
    - struct sock_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1008
      start: 1000
    functionDepth: 3
    functionLinenumber: 1000
    functionLinenumberEnd: 1008
    functionName: sock_list_merge
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 2
    functionsReached:
    - sock_list_insert
    - sock_list_find
    linkageType: ''
    returnType: void
    signature: "void sock_list_merge(struct sock_list** list, struct regional* region,\n\tstruct
      sock_list* add)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_crypto_err_code
      Src: /src/unbound/util/net_help.c:1014,1
    - Dst: ERR_get_error
      Src: /src/unbound/util/net_help.c:1014,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1018
      start: 1010
    functionDepth: 1
    functionLinenumber: 1010
    functionLinenumberEnd: 1018
    functionName: log_crypto_err
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 10
    functionsReached:
    - log_crypto_err_code
    - ERR_get_error
    linkageType: ''
    returnType: void
    signature: void log_crypto_err(const char* str)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ERR_error_string_n
      Src: /src/unbound/util/net_help.c:1026,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1027,1
    - Dst: ERR_get_error
      Src: /src/unbound/util/net_help.c:1028,1
    - Dst: ERR_error_string_n
      Src: /src/unbound/util/net_help.c:1029,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1030,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - str
    - err
    argTypes:
    - char*
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1036
      start: 1020
    functionDepth: 1
    functionLinenumber: 1020
    functionLinenumberEnd: 1036
    functionName: log_crypto_err_code
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 3
    functionsReached:
    - log_err
    - ERR_get_error
    - ERR_error_string_n
    linkageType: ''
    returnType: void
    signature: void log_crypto_err_code(const char* str, unsigned long err)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/util/net_help.c:1099,1
    - Dst: strerror
      Src: /src/unbound/util/net_help.c:1100,1
    - Dst: log_crypto_err_code
      Src: /src/unbound/util/net_help.c:1102,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1103,1
    - Dst: log_crypto_err_code
      Src: /src/unbound/util/net_help.c:1106,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1107,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1112,1
    - Dst: strerror
      Src: /src/unbound/util/net_help.c:1113,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1114,1
    - Dst: strerror
      Src: /src/unbound/util/net_help.c:1114,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1116,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 65
    argCount: 4
    argNames:
    - str
    - r
    - err
    - err_present
    argTypes:
    - char*
    - int
    - unsigned long
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1119
      start: 1040
    functionDepth: 2
    functionLinenumber: 1040
    functionLinenumberEnd: 1119
    functionName: log_crypto_err_io_code_arg
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 0
    functionsReached:
    - log_err
    - log_crypto_err_code
    - snprintf
    - strerror
    - log_crypto_err
    linkageType: ''
    returnType: void
    signature: "void log_crypto_err_io_code_arg(const char* str, int r,\n\tunsigned
      long err, int err_present)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_crypto_err_io_code_arg
      Src: /src/unbound/util/net_help.c:1125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - str
    - r
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1130
      start: 1122
    functionDepth: 3
    functionLinenumber: 1122
    functionLinenumberEnd: 1130
    functionName: log_crypto_err_io
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 15
    functionsReached:
    - log_crypto_err_io_code_arg
    linkageType: ''
    returnType: void
    signature: void log_crypto_err_io(const char* str, int r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_crypto_err_io_code_arg
      Src: /src/unbound/util/net_help.c:1135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 3
    argNames:
    - str
    - r
    - err
    argTypes:
    - char*
    - int
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1141
      start: 1132
    functionDepth: 3
    functionLinenumber: 1132
    functionLinenumberEnd: 1141
    functionName: log_crypto_err_io_code
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 1
    functionsReached:
    - log_crypto_err_io_code_arg
    linkageType: ''
    returnType: void
    signature: void log_crypto_err_io_code(const char* str, int r, unsigned long err)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: BIO_new
      Src: /src/unbound/util/net_help.c:1153,1
    - Dst: BIO_s_mem
      Src: /src/unbound/util/net_help.c:1153,1
    - Dst: X509_print_ex
      Src: /src/unbound/util/net_help.c:1155,1
    - Dst: BIO_write
      Src: /src/unbound/util/net_help.c:1160,1
    - Dst: BIO_get_mem_data
      Src: /src/unbound/util/net_help.c:1161,1
    - Dst: strstr
      Src: /src/unbound/util/net_help.c:1165,1
    - Dst: memmove
      Src: /src/unbound/util/net_help.c:1166,1
    - Dst: strlen
      Src: /src/unbound/util/net_help.c:1166,1
    - Dst: strstr
      Src: /src/unbound/util/net_help.c:1167,1
    - Dst: memmove
      Src: /src/unbound/util/net_help.c:1168,1
    - Dst: strlen
      Src: /src/unbound/util/net_help.c:1168,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:1169,1
    - Dst: BIO_free
      Src: /src/unbound/util/net_help.c:1171,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 3
    argNames:
    - level
    - str
    - cert
    argTypes:
    - unsigned
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1145
    functionDepth: 1
    functionLinenumber: 1145
    functionLinenumberEnd: 1172
    functionName: log_cert
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 2
    functionsReached:
    - BIO_free
    - BIO_write
    - BIO_s_mem
    - BIO_get_mem_data
    - memmove
    - verbose
    - BIO_new
    - strlen
    - strstr
    - X509_print_ex
    linkageType: ''
    returnType: void
    signature: void log_cert(unsigned level, const char* str, void* cert)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_select_next_proto
      Src: /src/unbound/util/net_help.c:1184,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 6
    argNames:
    - ATTR_UNUSED(ssl)
    - out
    - outlen
    - in
    - inlen
    - ATTR_UNUSED(arg)
    argTypes:
    - SSL*
    - unsigned char**
    - unsigned char*
    - unsigned char*
    - unsigned int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1193
      start: 1176
    functionDepth: 0
    functionLinenumber: 1176
    functionLinenumberEnd: 1193
    functionName: dot_alpn_select_cb
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 0
    functionsReached:
    - SSL_select_next_proto
    linkageType: ''
    returnType: int
    signature: "int dot_alpn_select_cb(SSL* ATTR_UNUSED(ssl), const unsigned char**
      out,\n\tunsigned char* outlen, const unsigned char* in, unsigned int inlen,\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_select_next_protocol
      Src: /src/unbound/util/net_help.c:1201,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 6
    argNames:
    - ATTR_UNUSED(ssl)
    - out
    - outlen
    - in
    - inlen
    - ATTR_UNUSED(arg)
    argTypes:
    - SSL*
    - unsigned char**
    - unsigned char*
    - unsigned char*
    - unsigned int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1197
    functionDepth: 0
    functionLinenumber: 1197
    functionLinenumberEnd: 1208
    functionName: doh_alpn_select_cb
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 0
    functionsReached:
    - nghttp2_select_next_protocol
    linkageType: ''
    returnType: int
    signature: "int doh_alpn_select_cb(SSL* ATTR_UNUSED(ssl), const unsigned char**
      out,\n\tunsigned char* outlen, const unsigned char* in, unsigned int inlen,\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_tlsext_ticket_key_evp_cb
      Src: /src/unbound/util/net_help.c:1217,1
    - Dst: SSL_CTX_set_tlsext_ticket_key_cb
      Src: /src/unbound/util/net_help.c:1221,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - sslctx
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1226
      start: 1213
    functionDepth: 0
    functionLinenumber: 1213
    functionLinenumberEnd: 1226
    functionName: setup_ticket_keys_cb
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 0
    functionsReached:
    - SSL_CTX_set_tlsext_ticket_key_cb
    - SSL_CTX_set_tlsext_ticket_key_evp_cb
    linkageType: ''
    returnType: int
    signature: int setup_ticket_keys_cb(void* sslctx)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: cfg_tls_protocols_allowed
      Src: /src/unbound/util/net_help.c:1235,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/util/net_help.c:1239,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1241,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/util/net_help.c:1245,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1247,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/util/net_help.c:1252,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1254,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/util/net_help.c:1260,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1262,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/util/net_help.c:1269,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1271,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/util/net_help.c:1279,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1281,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/util/net_help.c:1288,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1290,1
    - Dst: access
      Src: /src/unbound/util/net_help.c:1296,1
    - Dst: SSL_CTX_set_cipher_list
      Src: /src/unbound/util/net_help.c:1298,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1299,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/util/net_help.c:1306,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1308,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/util/net_help.c:1313,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1316,1
    - Dst: SSL_CTX_set_security_level
      Src: /src/unbound/util/net_help.c:1321,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 50
    argCount: 2
    argNames:
    - ctxt
    - tls_protocols
    argTypes:
    - void*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1327
      start: 1229
    functionDepth: 2
    functionLinenumber: 1229
    functionLinenumberEnd: 1327
    functionName: listen_sslctx_setup
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 1
    functionsReached:
    - SSL_CTX_set_options
    - SSL_CTX_set_security_level
    - access
    - log_crypto_err
    - cfg_tls_protocols_allowed
    - SSL_CTX_set_cipher_list
    linkageType: ''
    returnType: int
    signature: int listen_sslctx_setup(void* ctxt, const char* tls_protocols)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_set_ecdh_auto
      Src: /src/unbound/util/net_help.c:1336,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1337,1
    - Dst: EC_KEY_new_by_curve_name
      Src: /src/unbound/util/net_help.c:1341,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1343,1
    - Dst: SSL_CTX_set_tmp_ecdh
      Src: /src/unbound/util/net_help.c:1345,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1346,1
    - Dst: EC_KEY_free
      Src: /src/unbound/util/net_help.c:1348,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - ctxt
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1329
    functionDepth: 2
    functionLinenumber: 1329
    functionLinenumberEnd: 1355
    functionName: listen_sslctx_setup_2
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 1
    functionsReached:
    - SSL_CTX_set_tmp_ecdh
    - EC_KEY_new_by_curve_name
    - SSL_CTX_set_ecdh_auto
    - EC_KEY_free
    - log_crypto_err
    linkageType: ''
    returnType: void
    signature: void listen_sslctx_setup_2(void* ctxt)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_new
      Src: /src/unbound/util/net_help.c:1363,1
    - Dst: SSLv23_server_method
      Src: /src/unbound/util/net_help.c:1363,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1365,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1369,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1370,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1374,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1375,1
    - Dst: listen_sslctx_setup
      Src: /src/unbound/util/net_help.c:1378,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1379,1
    - Dst: SSL_CTX_use_certificate_chain_file
      Src: /src/unbound/util/net_help.c:1382,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1383,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1384,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1385,1
    - Dst: SSL_CTX_use_PrivateKey_file
      Src: /src/unbound/util/net_help.c:1388,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1389,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1390,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1391,1
    - Dst: SSL_CTX_check_private_key
      Src: /src/unbound/util/net_help.c:1394,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1395,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1396,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1397,1
    - Dst: listen_sslctx_setup_2
      Src: /src/unbound/util/net_help.c:1400,1
    - Dst: SSL_CTX_load_verify_locations
      Src: /src/unbound/util/net_help.c:1402,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1403,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1404,1
    - Dst: SSL_CTX_set_client_CA_list
      Src: /src/unbound/util/net_help.c:1407,1
    - Dst: SSL_load_client_CA_file
      Src: /src/unbound/util/net_help.c:1407,1
    - Dst: SSL_CTX_set_verify
      Src: /src/unbound/util/net_help.c:1409,1
    - Dst: SSL_CTX_set_cipher_list
      Src: /src/unbound/util/net_help.c:1412,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1413,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1415,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1416,1
    - Dst: SSL_CTX_set_ciphersuites
      Src: /src/unbound/util/net_help.c:1422,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1423,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1425,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1426,1
    - Dst: setup_ticket_keys_cb
      Src: /src/unbound/util/net_help.c:1434,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1435,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1436,1
    - Dst: SSL_CTX_set_alpn_select_cb
      Src: /src/unbound/util/net_help.c:1443,1
    - Dst: SSL_CTX_set_alpn_select_cb
      Src: /src/unbound/util/net_help.c:1446,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 90
    argCount: 9
    argNames:
    - key
    - pem
    - verifypem
    - tls_ciphers
    - tls_ciphersuites
    - set_ticket_keys_cb
    - is_dot
    - is_doh
    - tls_protocols
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    - int
    - int
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1460
      start: 1357
    functionDepth: 3
    functionLinenumber: 1357
    functionLinenumberEnd: 1460
    functionName: listen_sslctx_create
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 3
    functionsReached:
    - SSL_CTX_check_private_key
    - log_err
    - SSL_CTX_load_verify_locations
    - SSL_CTX_free
    - SSL_CTX_use_certificate_chain_file
    - SSL_CTX_new
    - SSL_CTX_use_PrivateKey_file
    - setup_ticket_keys_cb
    - SSLv23_server_method
    - SSL_CTX_set_alpn_select_cb
    - SSL_CTX_set_client_CA_list
    - log_crypto_err
    - SSL_load_client_CA_file
    - SSL_CTX_set_cipher_list
    - listen_sslctx_setup_2
    - listen_sslctx_setup
    - SSL_CTX_set_ciphersuites
    - SSL_CTX_set_verify
    linkageType: ''
    returnType: void
    signature: "void * listen_sslctx_create(const char* key, const char* pem,\n\tconst
      char* verifypem, const char* tls_ciphers,\n\tconst char* tls_ciphersuites, int
      set_ticket_keys_cb,\n\tint is_dot, int is_doh, const char* tls_protocols)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:1473,1
    - Dst: CertOpenStore
      Src: /src/unbound/util/net_help.c:1482,1
    - Dst: SSL_CTX_get_cert_store
      Src: /src/unbound/util/net_help.c:1494,1
    - Dst: CertEnumCertificatesInStore
      Src: /src/unbound/util/net_help.c:1499,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:1501,1
    - Dst: d2i_X509
      Src: /src/unbound/util/net_help.c:1507,1
    - Dst: ERR_get_error
      Src: /src/unbound/util/net_help.c:1511,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:1513,1
    - Dst: ERR_error_string
      Src: /src/unbound/util/net_help.c:1515,1
    - Dst: X509_STORE_add_cert
      Src: /src/unbound/util/net_help.c:1520,1
    - Dst: ERR_peek_last_error
      Src: /src/unbound/util/net_help.c:1521,1
    - Dst: ERR_GET_LIB
      Src: /src/unbound/util/net_help.c:1525,1
    - Dst: ERR_GET_REASON
      Src: /src/unbound/util/net_help.c:1526,1
    - Dst: ERR_get_error
      Src: /src/unbound/util/net_help.c:1527,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:1528,1
    - Dst: ERR_error_string
      Src: /src/unbound/util/net_help.c:1530,1
    - Dst: X509_free
      Src: /src/unbound/util/net_help.c:1531,1
    - Dst: X509_free
      Src: /src/unbound/util/net_help.c:1535,1
    - Dst: CertEnumCertificatesInStore
      Src: /src/unbound/util/net_help.c:1537,1
    - Dst: CertFreeCertificateContext
      Src: /src/unbound/util/net_help.c:1542,1
    - Dst: CertCloseStore
      Src: /src/unbound/util/net_help.c:1545,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:1549,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 38
    argCount: 1
    argNames:
    - tls_ctx
    argTypes:
    - SSL_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1551
      start: 1466
    functionDepth: 1
    functionLinenumber: 1466
    functionLinenumberEnd: 1551
    functionName: add_WIN_cacerts_to_openssl_store
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 0
    functionsReached:
    - ERR_error_string
    - SSL_CTX_get_cert_store
    - d2i_X509
    - ERR_peek_last_error
    - verbose
    - ERR_get_error
    - CertFreeCertificateContext
    - ERR_GET_REASON
    - X509_free
    - X509_STORE_add_cert
    - CertEnumCertificatesInStore
    - CertCloseStore
    - CertOpenStore
    - ERR_GET_LIB
    linkageType: ''
    returnType: int
    signature: int add_WIN_cacerts_to_openssl_store(SSL_CTX* tls_ctx)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_new
      Src: /src/unbound/util/net_help.c:1557,1
    - Dst: SSLv23_client_method
      Src: /src/unbound/util/net_help.c:1557,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1559,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/util/net_help.c:1563,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1565,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1566,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/util/net_help.c:1570,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1572,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1573,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/util/net_help.c:1578,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1580,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1581,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/util/net_help.c:1589,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1591,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1592,1
    - Dst: SSL_CTX_use_certificate_chain_file
      Src: /src/unbound/util/net_help.c:1597,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1598,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1599,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1600,1
    - Dst: SSL_CTX_use_PrivateKey_file
      Src: /src/unbound/util/net_help.c:1603,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1604,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1605,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1606,1
    - Dst: SSL_CTX_check_private_key
      Src: /src/unbound/util/net_help.c:1609,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1610,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1611,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1612,1
    - Dst: SSL_CTX_load_verify_locations
      Src: /src/unbound/util/net_help.c:1618,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1619,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1620,1
    - Dst: add_WIN_cacerts_to_openssl_store
      Src: /src/unbound/util/net_help.c:1626,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1627,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1628,1
    - Dst: SSL_CTX_set_default_verify_paths
      Src: /src/unbound/util/net_help.c:1634,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1635,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/util/net_help.c:1636,1
    - Dst: SSL_CTX_set_verify
      Src: /src/unbound/util/net_help.c:1641,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 75
    argCount: 4
    argNames:
    - key
    - pem
    - verifypem
    - wincert
    argTypes:
    - char*
    - char*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1648
      start: 1554
    functionDepth: 2
    functionLinenumber: 1554
    functionLinenumberEnd: 1648
    functionName: connect_sslctx_create
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 6
    functionsReached:
    - SSL_CTX_check_private_key
    - log_err
    - SSL_CTX_load_verify_locations
    - SSL_CTX_free
    - SSL_CTX_set_options
    - SSL_CTX_new
    - SSL_CTX_use_certificate_chain_file
    - SSL_CTX_use_PrivateKey_file
    - SSL_CTX_set_default_verify_paths
    - SSLv23_client_method
    - log_crypto_err
    - add_WIN_cacerts_to_openssl_store
    - SSL_CTX_set_verify
    linkageType: ''
    returnType: void
    signature: void * connect_sslctx_create(char* key, char* pem, char* verifypem,
      int wincert)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_new
      Src: /src/unbound/util/net_help.c:1653,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1655,1
    - Dst: SSL_set_accept_state
      Src: /src/unbound/util/net_help.c:1658,1
    - Dst: SSL_set_mode
      Src: /src/unbound/util/net_help.c:1659,1
    - Dst: SSL_set_fd
      Src: /src/unbound/util/net_help.c:1660,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1661,1
    - Dst: SSL_free
      Src: /src/unbound/util/net_help.c:1662,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - sslctx
    - fd
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1670
      start: 1650
    functionDepth: 2
    functionLinenumber: 1650
    functionLinenumberEnd: 1670
    functionName: incoming_ssl_fd
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 1
    functionsReached:
    - SSL_set_accept_state
    - SSL_set_mode
    - SSL_free
    - log_crypto_err
    - SSL_new
    - SSL_set_fd
    linkageType: ''
    returnType: void
    signature: void * incoming_ssl_fd(void* sslctx, int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_new
      Src: /src/unbound/util/net_help.c:1675,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1677,1
    - Dst: SSL_set_connect_state
      Src: /src/unbound/util/net_help.c:1680,1
    - Dst: SSL_set_mode
      Src: /src/unbound/util/net_help.c:1681,1
    - Dst: SSL_set_fd
      Src: /src/unbound/util/net_help.c:1682,1
    - Dst: log_crypto_err
      Src: /src/unbound/util/net_help.c:1683,1
    - Dst: SSL_free
      Src: /src/unbound/util/net_help.c:1684,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - sslctx
    - fd
    argTypes:
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1692
      start: 1672
    functionDepth: 2
    functionLinenumber: 1672
    functionLinenumberEnd: 1692
    functionName: outgoing_ssl_fd
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 4
    functionsReached:
    - SSL_set_mode
    - SSL_free
    - SSL_set_connect_state
    - log_crypto_err
    - SSL_new
    - SSL_set_fd
    linkageType: ''
    returnType: void
    signature: void * outgoing_ssl_fd(void* sslctx, int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1698,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - auth_name
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1705
      start: 1694
    functionDepth: 1
    functionLinenumber: 1694
    functionLinenumberEnd: 1705
    functionName: check_auth_name_for_ssl
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 1
    functionsReached:
    - log_err
    linkageType: ''
    returnType: int
    signature: int check_auth_name_for_ssl(char* auth_name)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: SSL_set_tlsext_host_name
      Src: /src/unbound/util/net_help.c:1717,1
    - Dst: SSL_set_verify
      Src: /src/unbound/util/net_help.c:1724,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/util/net_help.c:1725,1
    - Dst: SSL_set1_ipaddr
      Src: /src/unbound/util/net_help.c:1726,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1727,1
    - Dst: SSL_set1_dnsname
      Src: /src/unbound/util/net_help.c:1731,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1732,1
    - Dst: SSL_set_verify
      Src: /src/unbound/util/net_help.c:1737,1
    - Dst: SSL_set1_host
      Src: /src/unbound/util/net_help.c:1741,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1742,1
    - Dst: SSL_get0_param
      Src: /src/unbound/util/net_help.c:1749,1
    - Dst: X509_VERIFY_PARAM_set_hostflags
      Src: /src/unbound/util/net_help.c:1751,1
    - Dst: X509_VERIFY_PARAM_set1_host
      Src: /src/unbound/util/net_help.c:1753,1
    - Dst: strlen
      Src: /src/unbound/util/net_help.c:1753,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1754,1
    - Dst: SSL_set_verify
      Src: /src/unbound/util/net_help.c:1757,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:1760,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 3
    argNames:
    - ssl
    - auth_name
    - use_sni
    argTypes:
    - void*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1763
      start: 1708
    functionDepth: 3
    functionLinenumber: 1708
    functionLinenumberEnd: 1763
    functionName: set_auth_name_on_ssl
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 1
    functionsReached:
    - log_err
    - verbose
    - SSL_set_verify
    - ipstrtoaddr
    - SSL_set_tlsext_host_name
    - SSL_set1_ipaddr
    - SSL_set1_dnsname
    - SSL_set1_host
    - X509_VERIFY_PARAM_set1_host
    - SSL_get0_param
    - strlen
    - X509_VERIFY_PARAM_set_hostflags
    linkageType: ''
    returnType: int
    signature: int set_auth_name_on_ssl(void* ssl, char* auth_name, int use_sni)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: CRYPTO_THREADID_set_numeric
      Src: /src/unbound/util/net_help.c:1774,1
    - Dst: log_thread_get
      Src: /src/unbound/util/net_help.c:1774,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - id
    argTypes:
    - CRYPTO_THREADID*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1775
      start: 1771
    functionDepth: 1
    functionLinenumber: 1771
    functionLinenumberEnd: 1775
    functionName: ub_crypto_id_cb
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 0
    functionsReached:
    - CRYPTO_THREADID_set_numeric
    - log_thread_get
    linkageType: ''
    returnType: void
    signature: void ub_crypto_id_cb(CRYPTO_THREADID *id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_thread_get
      Src: /src/unbound/util/net_help.c:1780,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1781
      start: 1777
    functionDepth: 1
    functionLinenumber: 1777
    functionLinenumberEnd: 1781
    functionName: ub_crypto_id_cb
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 0
    functionsReached:
    - log_thread_get
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long ub_crypto_id_cb(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/util/net_help.c:1789,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/net_help.c:1791,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 4
    argNames:
    - mode
    - type
    - ATTR_UNUSED(file)
    - ATTR_UNUSED
    argTypes:
    - int
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1793
      start: 1784
    functionDepth: 0
    functionLinenumber: 1784
    functionLinenumberEnd: 1793
    functionName: ub_crypto_lock_cb
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: "void ub_crypto_lock_cb(int mode, int type, const char *ATTR_UNUSED(file),\n\tint
      ATTR_UNUSED(line))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: reallocarray
      Src: /src/unbound/util/net_help.c:1800,1
    - Dst: CRYPTO_num_locks
      Src: /src/unbound/util/net_help.c:1801,1
    - Dst: CRYPTO_num_locks
      Src: /src/unbound/util/net_help.c:1804,1
    - Dst: lock_basic_init
      Src: /src/unbound/util/net_help.c:1805,1
    - Dst: CRYPTO_THREADID_set_callback
      Src: /src/unbound/util/net_help.c:1808,1
    - Dst: CRYPTO_set_id_callback
      Src: /src/unbound/util/net_help.c:1810,1
    - Dst: CRYPTO_set_locking_callback
      Src: /src/unbound/util/net_help.c:1812,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 11
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1815
      start: 1796
    functionDepth: 2
    functionLinenumber: 1796
    functionLinenumberEnd: 1815
    functionName: ub_openssl_lock_init
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 1
    functionsReached:
    - CRYPTO_set_id_callback
    - CRYPTO_THREADID_set_callback
    - CRYPTO_set_locking_callback
    - lock_basic_init
    - reallocarray
    - CRYPTO_num_locks
    linkageType: ''
    returnType: int
    signature: int ub_openssl_lock_init(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CRYPTO_THREADID_set_callback
      Src: /src/unbound/util/net_help.c:1824,1
    - Dst: CRYPTO_set_id_callback
      Src: /src/unbound/util/net_help.c:1826,1
    - Dst: CRYPTO_set_locking_callback
      Src: /src/unbound/util/net_help.c:1828,1
    - Dst: CRYPTO_num_locks
      Src: /src/unbound/util/net_help.c:1829,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/util/net_help.c:1830,1
    - Dst: free
      Src: /src/unbound/util/net_help.c:1832,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1834
      start: 1817
    functionDepth: 1
    functionLinenumber: 1817
    functionLinenumberEnd: 1834
    functionName: ub_openssl_lock_delete
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 1
    functionsReached:
    - CRYPTO_set_id_callback
    - CRYPTO_THREADID_set_callback
    - CRYPTO_set_locking_callback
    - lock_basic_destroy
    - free
    - CRYPTO_num_locks
    linkageType: ''
    returnType: void
    signature: void ub_openssl_lock_delete(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/net_help.c:1844,1
    - Dst: memset
      Src: /src/unbound/util/net_help.c:1847,1
    - Dst: malloc
      Src: /src/unbound/util/net_help.c:1856,1
    - Dst: strncmp
      Src: /src/unbound/util/net_help.c:1861,1
    - Dst: strlen
      Src: /src/unbound/util/net_help.c:1861,1
    - Dst: strlen
      Src: /src/unbound/util/net_help.c:1862,1
    - Dst: fopen
      Src: /src/unbound/util/net_help.c:1863,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1865,1
    - Dst: strerror
      Src: /src/unbound/util/net_help.c:1865,1
    - Dst: free
      Src: /src/unbound/util/net_help.c:1866,1
    - Dst: fread
      Src: /src/unbound/util/net_help.c:1869,1
    - Dst: fclose
      Src: /src/unbound/util/net_help.c:1870,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1873,1
    - Dst: free
      Src: /src/unbound/util/net_help.c:1874,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:1877,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 40
    argCount: 2
    argNames:
    - tls_session_ticket_keys
    - chroot
    argTypes:
    - struct config_strlist*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1891
      start: 1836
    functionDepth: 1
    functionLinenumber: 1836
    functionLinenumberEnd: 1891
    functionName: listen_sslctx_setup_ticket_keys
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 1
    functionsReached:
    - log_err
    - strncmp
    - verbose
    - fclose
    - malloc
    - free
    - calloc
    - fopen
    - strerror
    - strlen
    - fread
    - memset
    linkageType: ''
    returnType: int
    signature: int listen_sslctx_setup_ticket_keys(struct config_strlist* tls_session_ticket_keys,
      char* chroot)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: EVP_sha256
      Src: /src/unbound/util/net_help.c:1912,1
    - Dst: EVP_aes_256_cbc
      Src: /src/unbound/util/net_help.c:1914,1
    - Dst: EVP_CIPHER_iv_length
      Src: /src/unbound/util/net_help.c:1915,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:1918,1
    - Dst: memcpy
      Src: /src/unbound/util/net_help.c:1919,1
    - Dst: RAND_bytes
      Src: /src/unbound/util/net_help.c:1920,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:1921,1
    - Dst: EVP_EncryptInit_ex
      Src: /src/unbound/util/net_help.c:1924,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:1925,1
    - Dst: OSSL_PARAM_construct_octet_string
      Src: /src/unbound/util/net_help.c:1929,1
    - Dst: OSSL_PARAM_construct_utf8_string
      Src: /src/unbound/util/net_help.c:1931,1
    - Dst: OSSL_PARAM_construct_end
      Src: /src/unbound/util/net_help.c:1933,1
    - Dst: EVP_MAC_CTX_set_params
      Src: /src/unbound/util/net_help.c:1935,1
    - Dst: EVP_MAC_set_ctx_params
      Src: /src/unbound/util/net_help.c:1937,1
    - Dst: HMAC_Init_ex
      Src: /src/unbound/util/net_help.c:1940,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:1941,1
    - Dst: HMAC_Init_ex
      Src: /src/unbound/util/net_help.c:1945,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:1951,1
    - Dst: memcmp
      Src: /src/unbound/util/net_help.c:1953,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:1954,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:1959,1
    - Dst: OSSL_PARAM_construct_octet_string
      Src: /src/unbound/util/net_help.c:1964,1
    - Dst: OSSL_PARAM_construct_utf8_string
      Src: /src/unbound/util/net_help.c:1966,1
    - Dst: OSSL_PARAM_construct_end
      Src: /src/unbound/util/net_help.c:1968,1
    - Dst: EVP_MAC_CTX_set_params
      Src: /src/unbound/util/net_help.c:1970,1
    - Dst: EVP_MAC_set_ctx_params
      Src: /src/unbound/util/net_help.c:1972,1
    - Dst: HMAC_Init_ex
      Src: /src/unbound/util/net_help.c:1975,1
    - Dst: verbose
      Src: /src/unbound/util/net_help.c:1976,1
    - Dst: HMAC_Init_ex
      Src: /src/unbound/util/net_help.c:1980,1
    - Dst: EVP_DecryptInit_ex
      Src: /src/unbound/util/net_help.c:1982,1
    - Dst: log_err
      Src: /src/unbound/util/net_help.c:1983,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 62
    argCount: 7
    argNames:
    - ATTR_UNUSED(sslctx)
    - key_name
    - iv
    - evp_sctx
    - EVP_MAC_CTX *hmac_ctx
    - hmac_ctx
    - enc
    argTypes:
    - SSL*
    - unsigned char*
    - unsigned char*
    - EVP_CIPHER_CTX*
    - HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB
    - HMAC_CTX*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1998
      start: 1894
    functionDepth: 1
    functionLinenumber: 1894
    functionLinenumberEnd: 1998
    functionName: tls_session_ticket_key_cb
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 0
    functionsReached:
    - log_err
    - memcpy
    - EVP_aes_256_cbc
    - verbose
    - RAND_bytes
    - EVP_MAC_CTX_set_params
    - EVP_sha256
    - EVP_DecryptInit_ex
    - OSSL_PARAM_construct_octet_string
    - OSSL_PARAM_construct_utf8_string
    - EVP_MAC_set_ctx_params
    - OSSL_PARAM_construct_end
    - memcmp
    - HMAC_Init_ex
    - EVP_EncryptInit_ex
    - EVP_CIPHER_iv_length
    linkageType: ''
    returnType: int
    signature: "int tls_session_ticket_key_cb(SSL *ATTR_UNUSED(sslctx), unsigned char*
      key_name,\n\tunsigned char* iv, EVP_CIPHER_CTX *evp_sctx,\n#ifdef HAVE_SSL_CTX_SET_TLSEXT_TICKET_KEY_EVP_CB\n\tEVP_MAC_CTX
      *hmac_ctx,\n#else\n\tHMAC_CTX* hmac_ctx,\n#endif\n\tint enc)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: explicit_bzero
      Src: /src/unbound/util/net_help.c:2010,1
    - Dst: memset
      Src: /src/unbound/util/net_help.c:2012,1
    - Dst: free
      Src: /src/unbound/util/net_help.c:2014,1
    - Dst: free
      Src: /src/unbound/util/net_help.c:2016,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2018
      start: 2002
    functionDepth: 2
    functionLinenumber: 2002
    functionLinenumberEnd: 2018
    functionName: listen_sslctx_delete_ticket_keys
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 1
    functionsReached:
    - free
    - memset
    - explicit_bzero
    linkageType: ''
    returnType: void
    signature: void listen_sslctx_delete_ticket_keys(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strerror
      Src: /src/unbound/util/net_help.c:2025,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - errn
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2026
      start: 2022
    functionDepth: 0
    functionLinenumber: 2022
    functionLinenumberEnd: 2026
    functionName: sock_strerror
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 42
    functionsReached:
    - strerror
    linkageType: ''
    returnType: char
    signature: 'char *

      sock_strerror(int errn)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/unbound/util/net_help.c:2031,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - socket
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2032
      start: 2028
    functionDepth: 0
    functionLinenumber: 2028
    functionLinenumberEnd: 2032
    functionName: sock_close
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 24
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void sock_close(int socket)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: wsa_strerror
      Src: /src/unbound/util/net_help.c:2038,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/net_help.c:2038,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2039
      start: 2035
    functionDepth: 1
    functionLinenumber: 2035
    functionLinenumberEnd: 2039
    functionName: sock_strerror
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 42
    functionsReached:
    - wsa_strerror
    - WSAGetLastError
    linkageType: ''
    returnType: char
    signature: 'char *

      sock_strerror(int ATTR_UNUSED(errn))'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: closesocket
      Src: /src/unbound/util/net_help.c:2044,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - socket
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2045
      start: 2041
    functionDepth: 0
    functionLinenumber: 2041
    functionLinenumberEnd: 2045
    functionName: sock_close
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 24
    functionsReached:
    - closesocket
    linkageType: ''
    returnType: void
    signature: void sock_close(int socket)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 4
    argNames:
    - src
    - srclength
    - target
    - targsize
    argTypes:
    - uint8_t*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2067
      start: 2048
    functionDepth: 0
    functionLinenumber: 2048
    functionLinenumberEnd: 2067
    functionName: hex_ntop
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t hex_ntop(uint8_t const *src, size_t srclength, char *target,
      size_t targsize)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/util/net_help.c:2073,1
    - Dst: strlen
      Src: /src/unbound/util/net_help.c:2073,1
    - Dst: isxdigit
      Src: /src/unbound/util/net_help.c:2077,1
    - Dst: isxdigit
      Src: /src/unbound/util/net_help.c:2078,1
    - Dst: sldns_hexdigit_to_int
      Src: /src/unbound/util/net_help.c:2080,1
    - Dst: sldns_hexdigit_to_int
      Src: /src/unbound/util/net_help.c:2081,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 3
    argNames:
    - src
    - target
    - targsize
    argTypes:
    - char*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2085
      start: 2069
    functionDepth: 1
    functionLinenumber: 2069
    functionLinenumberEnd: 2085
    functionName: hex_pton
    functionSourceFile: /src/unbound/util/net_help.c
    functionUses: 2
    functionsReached:
    - sldns_hexdigit_to_int
    - isxdigit
    - strlen
    linkageType: ''
    returnType: ssize_t
    signature: ssize_t hex_pton(const char* src, uint8_t* target, size_t targsize)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ub_thread_key_create
      Src: /src/unbound/util/log.c:99,1
    - Dst: lock_basic_init
      Src: /src/unbound/util/log.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 97
    functionDepth: 0
    functionLinenumber: 97
    functionLinenumberEnd: 102
    functionName: log_lock_init_once
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 0
    functionsReached:
    - ub_thread_key_create
    - lock_basic_init
    linkageType: ''
    returnType: void
    signature: void log_lock_init_once(void)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: pthread_once
      Src: /src/unbound/util/log.c:110,1
    - Dst: ub_thread_key_create
      Src: /src/unbound/util/log.c:114,1
    - Dst: lock_basic_init
      Src: /src/unbound/util/log.c:115,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/log.c:118,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/log.c:124,1
    - Dst: verbose
      Src: /src/unbound/util/log.c:125,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/log.c:127,1
    - Dst: fclose
      Src: /src/unbound/util/log.c:133,1
    - Dst: closelog
      Src: /src/unbound/util/log.c:137,1
    - Dst: openlog
      Src: /src/unbound/util/log.c:145,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/log.c:147,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/log.c:156,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/log.c:162,1
    - Dst: strncmp
      Src: /src/unbound/util/log.c:166,1
    - Dst: strlen
      Src: /src/unbound/util/log.c:167,1
    - Dst: strlen
      Src: /src/unbound/util/log.c:168,1
    - Dst: fopen
      Src: /src/unbound/util/log.c:169,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/log.c:171,1
    - Dst: log_err
      Src: /src/unbound/util/log.c:172,1
    - Dst: strerror
      Src: /src/unbound/util/log.c:173,1
    - Dst: setvbuf
      Src: /src/unbound/util/log.c:178,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/log.c:181,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 50
    argCount: 3
    argNames:
    - filename
    - use_syslog
    - chrootdir
    argTypes:
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 105
    functionDepth: 1
    functionLinenumber: 105
    functionLinenumberEnd: 182
    functionName: log_init
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 24
    functionsReached:
    - log_err
    - strncmp
    - lock_basic_unlock
    - verbose
    - fclose
    - openlog
    - setvbuf
    - lock_basic_init
    - pthread_once
    - closelog
    - fopen
    - lock_basic_lock
    - ub_thread_key_create
    - strlen
    - strerror
    linkageType: ''
    returnType: void
    signature: void log_init(const char* filename, int use_syslog, const char* chrootdir)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/util/log.c:186,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/log.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - f
    argTypes:
    - FILE*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 184
    functionDepth: 0
    functionLinenumber: 184
    functionLinenumberEnd: 189
    functionName: log_file
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 3
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: void
    signature: void log_file(FILE *f)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ub_thread_key_set
      Src: /src/unbound/util/log.c:193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - num
    argTypes:
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 191
    functionDepth: 0
    functionLinenumber: 191
    functionLinenumberEnd: 194
    functionName: log_thread_set
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 10
    functionsReached:
    - ub_thread_key_set
    linkageType: ''
    returnType: void
    signature: void log_thread_set(int* num)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_thread_key_get
      Src: /src/unbound/util/log.c:200,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 196
    functionDepth: 0
    functionLinenumber: 196
    functionLinenumberEnd: 202
    functionName: log_thread_get
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 2
    functionsReached:
    - ub_thread_key_get
    linkageType: ''
    returnType: int
    signature: int log_thread_get(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - id
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: log_ident_set
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 10
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void log_ident_set(const char* id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - id
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 209
    functionDepth: 0
    functionLinenumber: 209
    functionLinenumberEnd: 212
    functionName: log_ident_set_default
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void log_ident_set_default(const char* id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 217
    functionName: log_ident_revert_to_default
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void log_ident_revert_to_default(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_ident_set
      Src: /src/unbound/util/log.c:222,1
    - Dst: log_ident_set
      Src: /src/unbound/util/log.c:224,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - identity
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 219
    functionDepth: 1
    functionLinenumber: 219
    functionLinenumberEnd: 225
    functionName: log_ident_set_or_default
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 2
    functionsReached:
    - log_ident_set
    linkageType: ''
    returnType: void
    signature: void log_ident_set_or_default(const char* identity)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - use_asc
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 230
    functionName: log_set_time_asc
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void log_set_time_asc(int use_asc)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - use_iso
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 232
    functionDepth: 0
    functionLinenumber: 232
    functionLinenumberEnd: 235
    functionName: log_set_time_iso
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void log_set_time_iso(int use_iso)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 246
    functionName: log_get_lock
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void * log_get_lock(void)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: log_thread_get
      Src: /src/unbound/util/log.c:253,1
    - Dst: vsnprintf
      Src: /src/unbound/util/log.c:262,1
    - Dst: syslog
      Src: /src/unbound/util/log.c:265,1
    - Dst: getpid
      Src: /src/unbound/util/log.c:266,1
    - Dst: strcmp
      Src: /src/unbound/util/log.c:276,1
    - Dst: strcmp
      Src: /src/unbound/util/log.c:279,1
    - Dst: strcmp
      Src: /src/unbound/util/log.c:282,1
    - Dst: strcmp
      Src: /src/unbound/util/log.c:283,1
    - Dst: snprintf
      Src: /src/unbound/util/log.c:287,1
    - Dst: RegisterEventSource
      Src: /src/unbound/util/log.c:289,1
    - Dst: ReportEvent
      Src: /src/unbound/util/log.c:291,1
    - Dst: DeregisterEventSource
      Src: /src/unbound/util/log.c:292,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/log.c:296,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/log.c:298,1
    - Dst: gettimeofday
      Src: /src/unbound/util/log.c:306,1
    - Dst: memset
      Src: /src/unbound/util/log.c:307,1
    - Dst: localtime_r
      Src: /src/unbound/util/log.c:309,1
    - Dst: strftime
      Src: /src/unbound/util/log.c:310,1
    - Dst: strftime
      Src: /src/unbound/util/log.c:311,1
    - Dst: fprintf
      Src: /src/unbound/util/log.c:318,1
    - Dst: getpid
      Src: /src/unbound/util/log.c:320,1
    - Dst: fflush
      Src: /src/unbound/util/log.c:323,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/log.c:325,1
    - Dst: time
      Src: /src/unbound/util/log.c:329,1
    - Dst: strftime
      Src: /src/unbound/util/log.c:331,1
    - Dst: localtime_r
      Src: /src/unbound/util/log.c:332,1
    - Dst: fprintf
      Src: /src/unbound/util/log.c:334,1
    - Dst: getpid
      Src: /src/unbound/util/log.c:335,1
    - Dst: GetTimeFormat
      Src: /src/unbound/util/log.c:338,1
    - Dst: GetDateFormat
      Src: /src/unbound/util/log.c:339,1
    - Dst: fprintf
      Src: /src/unbound/util/log.c:341,1
    - Dst: getpid
      Src: /src/unbound/util/log.c:342,1
    - Dst: fprintf
      Src: /src/unbound/util/log.c:345,1
    - Dst: getpid
      Src: /src/unbound/util/log.c:346,1
    - Dst: fflush
      Src: /src/unbound/util/log.c:349,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/log.c:351,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 60
    argCount: 4
    argNames:
    - pri
    - type
    - format
    - args
    argTypes:
    - int
    - char*
    - char*
    - va_list
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 352
      start: 248
    functionDepth: 5
    functionLinenumber: 248
    functionLinenumberEnd: 352
    functionName: log_vmsg
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 0
    functionsReached:
    - strcmp
    - strftime
    - log_thread_get
    - syslog
    - snprintf
    - getpid
    - lock_basic_lock
    - memset
    - GetDateFormat
    - vsnprintf
    - RegisterEventSource
    - GetTimeFormat
    - ReportEvent
    - time
    - gettimeofday
    - fprintf
    - fflush
    - lock_basic_unlock
    - localtime_r
    - DeregisterEventSource
    linkageType: ''
    returnType: void
    signature: "void log_vmsg(int pri, const char* type,\n\tconst char *format, va_list
      args)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/util/log.c:362,1
    - Dst: log_vmsg
      Src: /src/unbound/util/log.c:363,1
    - Dst: va_end
      Src: /src/unbound/util/log.c:364,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 358
    functionDepth: 6
    functionLinenumber: 358
    functionLinenumberEnd: 365
    functionName: log_info
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 82
    functionsReached:
    - va_end
    - log_vmsg
    - va_start
    linkageType: ''
    returnType: void
    signature: void log_info(const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/util/log.c:375,1
    - Dst: log_vmsg
      Src: /src/unbound/util/log.c:376,1
    - Dst: va_end
      Src: /src/unbound/util/log.c:377,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 371
    functionDepth: 6
    functionLinenumber: 371
    functionLinenumberEnd: 378
    functionName: log_err
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 543
    functionsReached:
    - va_end
    - log_vmsg
    - va_start
    linkageType: ''
    returnType: void
    signature: void log_err(const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/util/log.c:388,1
    - Dst: log_vmsg
      Src: /src/unbound/util/log.c:389,1
    - Dst: va_end
      Src: /src/unbound/util/log.c:390,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 391
      start: 384
    functionDepth: 6
    functionLinenumber: 384
    functionLinenumberEnd: 391
    functionName: log_warn
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 56
    functionsReached:
    - va_end
    - log_vmsg
    - va_start
    linkageType: ''
    returnType: void
    signature: void log_warn(const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/util/log.c:401,1
    - Dst: log_vmsg
      Src: /src/unbound/util/log.c:402,1
    - Dst: va_end
      Src: /src/unbound/util/log.c:403,1
    - Dst: exit
      Src: /src/unbound/util/log.c:404,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 397
    functionDepth: 6
    functionLinenumber: 397
    functionLinenumberEnd: 405
    functionName: fatal_exit
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 166
    functionsReached:
    - exit
    - va_end
    - log_vmsg
    - va_start
    linkageType: ''
    returnType: void
    signature: void fatal_exit(const char *format, ...)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/util/log.c:416,1
    - Dst: log_vmsg
      Src: /src/unbound/util/log.c:419,1
    - Dst: log_vmsg
      Src: /src/unbound/util/log.c:421,1
    - Dst: log_vmsg
      Src: /src/unbound/util/log.c:422,1
    - Dst: va_end
      Src: /src/unbound/util/log.c:424,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - level
    - format
    argTypes:
    - enum verbosity_value
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 425
      start: 412
    functionDepth: 6
    functionLinenumber: 412
    functionLinenumberEnd: 425
    functionName: verbose
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 439
    functionsReached:
    - va_end
    - log_vmsg
    - va_start
    linkageType: ''
    returnType: void
    signature: void verbose(enum verbosity_value level, const char* format, ...)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/log.c:439,1
    - Dst: verbose
      Src: /src/unbound/util/log.c:452,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 4
    argNames:
    - v
    - msg
    - data
    - length
    argTypes:
    - enum verbosity_value
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 428
    functionDepth: 7
    functionLinenumber: 428
    functionLinenumberEnd: 455
    functionName: log_hex_f
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 0
    functionsReached:
    - verbose
    linkageType: ''
    returnType: void
    signature: void log_hex_f(enum verbosity_value v, const char* msg, void* data,
      size_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_hex_f
      Src: /src/unbound/util/log.c:460,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - msg
    - data
    - length
    argTypes:
    - char*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 457
    functionDepth: 8
    functionLinenumber: 457
    functionLinenumberEnd: 461
    functionName: log_hex
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 6
    functionsReached:
    - log_hex_f
    linkageType: ''
    returnType: void
    signature: void log_hex(const char* msg, void* data, size_t length)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/util/log.c:467,1
    - Dst: log_vmsg
      Src: /src/unbound/util/log.c:468,1
    - Dst: va_end
      Src: /src/unbound/util/log.c:469,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 463
    functionDepth: 6
    functionLinenumber: 463
    functionLinenumberEnd: 470
    functionName: log_query
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 1
    functionsReached:
    - va_end
    - log_vmsg
    - va_start
    linkageType: ''
    returnType: void
    signature: void log_query(const char *format, ...)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: va_start
      Src: /src/unbound/util/log.c:476,1
    - Dst: log_vmsg
      Src: /src/unbound/util/log.c:477,1
    - Dst: va_end
      Src: /src/unbound/util/log.c:478,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - format
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 479
      start: 472
    functionDepth: 6
    functionLinenumber: 472
    functionLinenumberEnd: 479
    functionName: log_reply
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 0
    functionsReached:
    - va_end
    - log_vmsg
    - va_start
    linkageType: ''
    returnType: void
    signature: void log_reply(const char *format, ...)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_hex_f
      Src: /src/unbound/util/log.c:485,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/log.c:485,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/log.c:485,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 3
    argNames:
    - level
    - msg
    - buf
    argTypes:
    - enum verbosity_value
    - char*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 481
    functionDepth: 8
    functionLinenumber: 481
    functionLinenumberEnd: 486
    functionName: log_buf
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 5
    functionsReached:
    - log_hex_f
    - sldns_buffer_limit
    - sldns_buffer_begin
    linkageType: ''
    returnType: void
    signature: void log_buf(enum verbosity_value level, const char* msg, sldns_buffer*
      buf)
  - BBCount: 96
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/util/log.c:590,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 194
    argCount: 1
    argNames:
    - err
    argTypes:
    - DWORD
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 489
    functionDepth: 2
    functionLinenumber: 489
    functionLinenumberEnd: 594
    functionName: wsa_strerror
    functionSourceFile: /src/unbound/util/log.c
    functionUses: 17
    functionsReached:
    - snprintf
    linkageType: ''
    returnType: char
    signature: char * wsa_strerror(DWORD err)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - func
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 73
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 73
    functionName: LOCKRET
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LOCKRET(func)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 88
    functionDepth: 0
    functionLinenumber: 88
    functionLinenumberEnd: 89
    functionName: lock_get_mem
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_get_mem(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 102
      start: 101
    functionDepth: 0
    functionLinenumber: 101
    functionLinenumberEnd: 102
    functionName: lock_basic_init
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 25
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_basic_init(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 103
      start: 102
    functionDepth: 0
    functionLinenumber: 102
    functionLinenumberEnd: 103
    functionName: lock_basic_destroy
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 29
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_basic_destroy(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 104
    functionName: lock_basic_lock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 157
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_basic_lock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 105
      start: 104
    functionDepth: 0
    functionLinenumber: 104
    functionLinenumberEnd: 105
    functionName: lock_basic_unlock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 177
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_basic_unlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 110
    functionName: lock_rw_init
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_init(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 111
    functionName: lock_rw_destroy
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_destroy(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 112
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 112
    functionName: lock_rw_rdlock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 70
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_rdlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 113
    functionName: lock_rw_wrlock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 77
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_wrlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 113
    functionDepth: 0
    functionLinenumber: 113
    functionLinenumberEnd: 114
    functionName: lock_rw_unlock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 222
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_unlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 119
    functionName: lock_rw_init
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_init(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 120
    functionName: lock_rw_destroy
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_destroy(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 120
    functionDepth: 0
    functionLinenumber: 120
    functionLinenumberEnd: 121
    functionName: lock_rw_rdlock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 70
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_rdlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 122
      start: 121
    functionDepth: 0
    functionLinenumber: 121
    functionLinenumberEnd: 122
    functionName: lock_rw_wrlock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 77
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_wrlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 122
    functionDepth: 0
    functionLinenumber: 122
    functionLinenumberEnd: 123
    functionName: lock_rw_unlock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 222
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_unlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 130
    functionName: lock_quick_init
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_init(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 131
    functionName: lock_quick_destroy
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_destroy(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 131
    functionDepth: 0
    functionLinenumber: 131
    functionLinenumberEnd: 132
    functionName: lock_quick_lock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_lock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 133
      start: 132
    functionDepth: 0
    functionLinenumber: 132
    functionLinenumberEnd: 133
    functionName: lock_quick_unlock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_unlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 144
    functionDepth: 0
    functionLinenumber: 144
    functionLinenumberEnd: 145
    functionName: lock_quick_init
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_init(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 146
    functionName: lock_quick_destroy
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_destroy(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 147
      start: 146
    functionDepth: 0
    functionLinenumber: 146
    functionLinenumberEnd: 147
    functionName: lock_quick_lock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_lock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 148
    functionName: lock_quick_unlock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_unlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - thr
    - ','
    - stackrequired
    - ','
    - func
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 170
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 170
    functionName: PTHREADCREATE
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PTHREADCREATE(thr, stackrequired, func, arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - thr
    - ','
    - func
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 171
    functionDepth: 0
    functionLinenumber: 171
    functionLinenumberEnd: 172
    functionName: ub_thread_create
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_create(thr, func, arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 174
    functionName: ub_thread_self
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_self()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - thread
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 175
    functionDepth: 0
    functionLinenumber: 175
    functionLinenumberEnd: 176
    functionName: ub_thread_join
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_join(thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - key
    - ','
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 178
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 178
    functionName: ub_thread_key_create
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_key_create(key, f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - key
    - ','
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 178
    functionDepth: 0
    functionLinenumber: 178
    functionLinenumberEnd: 179
    functionName: ub_thread_key_set
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_key_set(key, v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 179
    functionDepth: 0
    functionLinenumber: 179
    functionLinenumberEnd: 180
    functionName: ub_thread_key_get
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_key_get(key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - thread
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 188
      start: 185
    functionDepth: 0
    functionLinenumber: 185
    functionLinenumberEnd: 188
    functionName: ub_thread_setname
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_setname(thread, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - thread
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 189
    functionDepth: 0
    functionLinenumber: 189
    functionLinenumberEnd: 192
    functionName: ub_thread_setname
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_setname(thread, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - thread
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 196
    functionName: ub_thread_setname
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_setname(thread, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - thread
    - ','
    - name
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 197
    functionDepth: 0
    functionLinenumber: 197
    functionLinenumberEnd: 200
    functionName: ub_thread_setname
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_setname(thread, name)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 214
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 214
    functionName: lock_rw_init
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_init(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 215
      start: 214
    functionDepth: 0
    functionLinenumber: 214
    functionLinenumberEnd: 215
    functionName: lock_rw_destroy
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_destroy(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 216
    functionName: lock_rw_rdlock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 70
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_rdlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 217
    functionName: lock_rw_wrlock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 77
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_wrlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 218
    functionName: lock_rw_unlock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 222
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_unlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 221
    functionDepth: 0
    functionLinenumber: 221
    functionLinenumberEnd: 222
    functionName: lock_basic_init
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 25
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_basic_init(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 223
    functionName: lock_basic_destroy
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 29
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_basic_destroy(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 223
    functionDepth: 0
    functionLinenumber: 223
    functionLinenumberEnd: 224
    functionName: lock_basic_lock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 157
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_basic_lock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 224
    functionDepth: 0
    functionLinenumber: 224
    functionLinenumberEnd: 225
    functionName: lock_basic_unlock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 177
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_basic_unlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 228
    functionDepth: 0
    functionLinenumber: 228
    functionLinenumberEnd: 229
    functionName: lock_quick_init
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_init(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 229
    functionDepth: 0
    functionLinenumber: 229
    functionLinenumberEnd: 230
    functionName: lock_quick_destroy
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_destroy(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 231
    functionName: lock_quick_lock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_lock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 232
      start: 231
    functionDepth: 0
    functionLinenumber: 231
    functionLinenumberEnd: 232
    functionName: lock_quick_unlock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_unlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - thr
    - ','
    - func
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 236
    functionName: ub_thread_create
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_create(thr, func, arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 237
    functionName: ub_thread_self
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_self()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - thread
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 238
      start: 237
    functionDepth: 0
    functionLinenumber: 237
    functionLinenumberEnd: 238
    functionName: ub_thread_join
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_join(thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - key
    - ','
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 239
    functionDepth: 0
    functionLinenumber: 239
    functionLinenumberEnd: 240
    functionName: ub_thread_key_create
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_key_create(key, f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - key
    - ','
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 241
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 241
    functionName: ub_thread_key_set
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_key_set(key, v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 253
      start: 252
    functionDepth: 0
    functionLinenumber: 252
    functionLinenumberEnd: 253
    functionName: lock_rw_init
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 20
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_init(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 254
    functionName: lock_rw_destroy
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 22
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_destroy(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 254
    functionDepth: 0
    functionLinenumber: 254
    functionLinenumberEnd: 255
    functionName: lock_rw_rdlock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 70
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_rdlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 256
      start: 255
    functionDepth: 0
    functionLinenumber: 255
    functionLinenumberEnd: 256
    functionName: lock_rw_wrlock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 77
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_wrlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 257
      start: 256
    functionDepth: 0
    functionLinenumber: 256
    functionLinenumberEnd: 257
    functionName: lock_rw_unlock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 222
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_rw_unlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 267
    functionDepth: 0
    functionLinenumber: 267
    functionLinenumberEnd: 268
    functionName: lock_quick_init
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_init(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 269
    functionName: lock_quick_destroy
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_destroy(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 269
    functionDepth: 0
    functionLinenumber: 269
    functionLinenumberEnd: 270
    functionName: lock_quick_lock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_lock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - lock
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 271
    functionName: lock_quick_unlock
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: lock_quick_unlock(lock)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - thr
    - ','
    - func
    - ','
    - arg
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 313
    functionDepth: 0
    functionLinenumber: 313
    functionLinenumberEnd: 315
    functionName: ub_thread_create
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_create(thr, func, arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 2
    argNames:
    - (
    - )
    argTypes:
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 316
      start: 315
    functionDepth: 0
    functionLinenumber: 315
    functionLinenumberEnd: 316
    functionName: ub_thread_self
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_self()
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - thread
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 317
      start: 316
    functionDepth: 0
    functionLinenumber: 316
    functionLinenumberEnd: 317
    functionName: ub_thread_join
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_join(thread)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - key
    - ','
    - f
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 321
      start: 320
    functionDepth: 0
    functionLinenumber: 320
    functionLinenumberEnd: 321
    functionName: ub_thread_key_create
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_key_create(key, f)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - key
    - ','
    - v
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 322
      start: 321
    functionDepth: 0
    functionLinenumber: 321
    functionLinenumberEnd: 322
    functionName: ub_thread_key_set
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_key_set(key, v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - key
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 323
      start: 322
    functionDepth: 0
    functionLinenumber: 322
    functionLinenumberEnd: 323
    functionName: ub_thread_key_get
    functionSourceFile: /src/unbound/util/locks.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: ub_thread_key_get(key)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 68
      start: 51
    functionDepth: 0
    functionLinenumber: 51
    functionLinenumberEnd: 68
    functionName: mini_ev_cmp
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int mini_ev_cmp(const void* a, const void* b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/unbound/util/winsock_event.c:74,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 71
    functionDepth: 0
    functionLinenumber: 71
    functionLinenumberEnd: 81
    functionName: settime
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 3
    functionsReached:
    - gettimeofday
    linkageType: ''
    returnType: int
    signature: int settime(struct event_base* base)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - base
    - fd
    argTypes:
    - struct event_base*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 92
    functionDepth: 0
    functionLinenumber: 92
    functionLinenumberEnd: 101
    functionName: find_fd
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int find_fd(struct event_base* base, int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - waitfor
    - x
    argTypes:
    - WSAEVENT[]
    - WSAEVENT
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 113
    functionName: zero_waitfor
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void zero_waitfor(WSAEVENT waitfor[], WSAEVENT x)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/util/winsock_event.c:117,1
    - Dst: memset
      Src: /src/unbound/util/winsock_event.c:121,1
    - Dst: settime
      Src: /src/unbound/util/winsock_event.c:124,1
    - Dst: event_base_free
      Src: /src/unbound/util/winsock_event.c:125,1
    - Dst: calloc
      Src: /src/unbound/util/winsock_event.c:128,1
    - Dst: event_base_free
      Src: /src/unbound/util/winsock_event.c:131,1
    - Dst: rbtree_create
      Src: /src/unbound/util/winsock_event.c:136,1
    - Dst: event_base_free
      Src: /src/unbound/util/winsock_event.c:138,1
    - Dst: calloc
      Src: /src/unbound/util/winsock_event.c:141,1
    - Dst: event_base_free
      Src: /src/unbound/util/winsock_event.c:143,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:148,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 31
    argCount: 2
    argNames:
    - time_secs
    - time_tv
    argTypes:
    - time_t*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 115
    functionDepth: 7
    functionLinenumber: 115
    functionLinenumberEnd: 150
    functionName: event_init
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 1
    functionsReached:
    - event_base_free
    - rbtree_create
    - verbose
    - malloc
    - calloc
    - settime
    - memset
    linkageType: ''
    returnType: void
    signature: void *event_init(time_t* time_secs, struct timeval* time_tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 155
      start: 152
    functionDepth: 0
    functionLinenumber: 152
    functionLinenumberEnd: 155
    functionName: event_get_version
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *event_get_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 157
    functionDepth: 0
    functionLinenumber: 157
    functionLinenumberEnd: 160
    functionName: event_get_method
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char *event_get_method(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:170,1
    - Dst: rbtree_first
      Src: /src/unbound/util/winsock_event.c:172,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:188,1
    - Dst: rbtree_delete
      Src: /src/unbound/util/winsock_event.c:194,1
    - Dst: fptr_ok
      Src: /src/unbound/util/winsock_event.c:196,1
    - Dst: fptr_whitelist_event
      Src: /src/unbound/util/winsock_event.c:196,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:199,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 3
    argNames:
    - base
    - now
    - wait
    argTypes:
    - struct event_base*
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 163
    functionDepth: 7
    functionLinenumber: 163
    functionLinenumberEnd: 200
    functionName: handle_timeouts
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 1
    functionsReached:
    - rbtree_delete
    - verbose
    - fptr_whitelist_event
    - fptr_ok
    - rbtree_first
    linkageType: ''
    returnType: void
    signature: "void handle_timeouts(struct event_base* base, struct timeval* now,\n
      \       struct timeval* wait)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/winsock_event.c:206,1
    - Dst: WSAWaitForMultipleEvents
      Src: /src/unbound/util/winsock_event.c:208,1
    - Dst: log_err
      Src: /src/unbound/util/winsock_event.c:211,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/winsock_event.c:212,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/winsock_event.c:212,1
    - Dst: WSAResetEvent
      Src: /src/unbound/util/winsock_event.c:221,1
    - Dst: log_err
      Src: /src/unbound/util/winsock_event.c:222,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/winsock_event.c:223,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/winsock_event.c:223,1
    - Dst: fptr_ok
      Src: /src/unbound/util/winsock_event.c:225,1
    - Dst: fptr_whitelist_event
      Src: /src/unbound/util/winsock_event.c:225,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 203
    functionDepth: 7
    functionLinenumber: 203
    functionLinenumberEnd: 227
    functionName: handle_signal
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 0
    functionsReached:
    - log_err
    - wsa_strerror
    - WSAWaitForMultipleEvents
    - WSAGetLastError
    - fptr_ok
    - fptr_whitelist_event
    - WSAResetEvent
    - log_assert
    linkageType: ''
    returnType: void
    signature: void handle_signal(struct event* ev)
  - BBCount: 36
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:240,1
    - Dst: log_assert
      Src: /src/unbound/util/winsock_event.c:264,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:265,1
    - Dst: Sleep
      Src: /src/unbound/util/winsock_event.c:273,1
    - Dst: WSAWaitForMultipleEvents
      Src: /src/unbound/util/winsock_event.c:277,1
    - Dst: log_err
      Src: /src/unbound/util/winsock_event.c:282,1
    - Dst: log_err
      Src: /src/unbound/util/winsock_event.c:285,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/winsock_event.c:286,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/winsock_event.c:286,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:293,1
    - Dst: settime
      Src: /src/unbound/util/winsock_event.c:297,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:306,1
    - Dst: handle_signal
      Src: /src/unbound/util/winsock_event.c:312,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:319,1
    - Dst: WSAEnumNetworkEvents
      Src: /src/unbound/util/winsock_event.c:333,1
    - Dst: log_err
      Src: /src/unbound/util/winsock_event.c:337,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/winsock_event.c:338,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/winsock_event.c:338,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:343,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/winsock_event.c:344,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:349,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/winsock_event.c:350,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:355,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/winsock_event.c:356,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:362,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/winsock_event.c:363,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:368,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/winsock_event.c:369,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:374,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:386,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:392,1
    - Dst: fptr_ok
      Src: /src/unbound/util/winsock_event.c:406,1
    - Dst: fptr_whitelist_event
      Src: /src/unbound/util/winsock_event.c:406,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:413,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:418,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:420,1
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:425,1
    CyclomaticComplexity: 49
    EdgeCount: 49
    ICount: 129
    argCount: 2
    argNames:
    - base
    - wait
    argTypes:
    - struct event_base*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 427
      start: 230
    functionDepth: 8
    functionLinenumber: 230
    functionLinenumberEnd: 427
    functionName: handle_select
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 1
    functionsReached:
    - log_err
    - wsa_strerror
    - WSAEnumNetworkEvents
    - WSAWaitForMultipleEvents
    - verbose
    - WSAGetLastError
    - fptr_ok
    - fptr_whitelist_event
    - log_assert
    - settime
    - Sleep
    - handle_signal
    linkageType: ''
    returnType: int
    signature: int handle_select(struct event_base* base, struct timeval* wait)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: settime
      Src: /src/unbound/util/winsock_event.c:432,1
    - Dst: handle_timeouts
      Src: /src/unbound/util/winsock_event.c:437,1
    - Dst: handle_select
      Src: /src/unbound/util/winsock_event.c:441,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 448
      start: 429
    functionDepth: 0
    functionLinenumber: 429
    functionLinenumberEnd: 448
    functionName: event_base_dispatch
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 4
    functionsReached:
    - settime
    - handle_timeouts
    - handle_select
    linkageType: ''
    returnType: int
    signature: int event_base_dispatch(struct event_base *base)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:453,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - base
    - ATTR_UNUSED(tv)
    argTypes:
    - struct event_base*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 450
    functionDepth: 7
    functionLinenumber: 450
    functionLinenumberEnd: 456
    functionName: event_base_loopexit
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 4
    functionsReached:
    - verbose
    linkageType: ''
    returnType: int
    signature: "int event_base_loopexit(struct event_base *base, \n\tstruct timeval
      * ATTR_UNUSED(tv))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:460,1
    - Dst: free
      Src: /src/unbound/util/winsock_event.c:463,1
    - Dst: free
      Src: /src/unbound/util/winsock_event.c:464,1
    - Dst: free
      Src: /src/unbound/util/winsock_event.c:465,1
    - Dst: free
      Src: /src/unbound/util/winsock_event.c:466,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 467
      start: 458
    functionDepth: 7
    functionLinenumber: 458
    functionLinenumberEnd: 467
    functionName: event_base_free
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 8
    functionsReached:
    - free
    - verbose
    linkageType: ''
    returnType: void
    signature: void event_base_free(struct event_base *base)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/winsock_event.c:476,1
    - Dst: fptr_whitelist_event
      Src: /src/unbound/util/winsock_event.c:476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 9
    argCount: 4
    argNames:
    - ev
    - fd
    - bits
    - arg
    argTypes:
    - struct event*
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 469
    functionDepth: 1
    functionLinenumber: 469
    functionLinenumberEnd: 480
    functionName: event_set
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 0
    functionsReached:
    - fptr_whitelist_event
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: "void event_set(struct event *ev, int fd, short bits, \n\tvoid (*cb)(int,
      short, void *), void *arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - base
    - ev
    argTypes:
    - struct event_base*
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 489
      start: 482
    functionDepth: 0
    functionLinenumber: 482
    functionLinenumberEnd: 489
    functionName: event_base_set
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int event_base_set(struct event_base *base, struct event *ev)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:493,1
    - Dst: event_del
      Src: /src/unbound/util/winsock_event.c:500,1
    - Dst: log_assert
      Src: /src/unbound/util/winsock_event.c:501,1
    - Dst: find_fd
      Src: /src/unbound/util/winsock_event.c:501,1
    - Dst: getsockopt
      Src: /src/unbound/util/winsock_event.c:521,1
    - Dst: log_err
      Src: /src/unbound/util/winsock_event.c:523,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/winsock_event.c:524,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/winsock_event.c:524,1
    - Dst: getsockopt
      Src: /src/unbound/util/winsock_event.c:532,1
    - Dst: log_err
      Src: /src/unbound/util/winsock_event.c:534,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/winsock_event.c:535,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/winsock_event.c:535,1
    - Dst: WSACreateEvent
      Src: /src/unbound/util/winsock_event.c:539,1
    - Dst: log_err
      Src: /src/unbound/util/winsock_event.c:541,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/winsock_event.c:542,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/winsock_event.c:542,1
    - Dst: WSAEventSelect
      Src: /src/unbound/util/winsock_event.c:545,1
    - Dst: log_err
      Src: /src/unbound/util/winsock_event.c:546,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/winsock_event.c:547,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/winsock_event.c:547,1
    - Dst: rbtree_insert
      Src: /src/unbound/util/winsock_event.c:566,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 52
    argCount: 2
    argNames:
    - ev
    - tv
    argTypes:
    - struct event*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 570
      start: 491
    functionDepth: 7
    functionLinenumber: 491
    functionLinenumberEnd: 570
    functionName: event_add
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 13
    functionsReached:
    - log_err
    - getsockopt
    - wsa_strerror
    - verbose
    - WSACreateEvent
    - event_del
    - WSAGetLastError
    - find_fd
    - log_assert
    - WSAEventSelect
    - rbtree_insert
    linkageType: ''
    returnType: int
    signature: int event_add(struct event *ev, struct timeval *tv)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:574,1
    - Dst: log_assert
      Src: /src/unbound/util/winsock_event.c:583,1
    - Dst: rbtree_delete
      Src: /src/unbound/util/winsock_event.c:585,1
    - Dst: log_assert
      Src: /src/unbound/util/winsock_event.c:587,1
    - Dst: zero_waitfor
      Src: /src/unbound/util/winsock_event.c:595,1
    - Dst: WSAEventSelect
      Src: /src/unbound/util/winsock_event.c:597,1
    - Dst: log_err
      Src: /src/unbound/util/winsock_event.c:598,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/winsock_event.c:599,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/winsock_event.c:599,1
    - Dst: WSACloseEvent
      Src: /src/unbound/util/winsock_event.c:600,1
    - Dst: log_err
      Src: /src/unbound/util/winsock_event.c:601,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/winsock_event.c:602,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/winsock_event.c:602,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 572
    functionDepth: 7
    functionLinenumber: 572
    functionLinenumberEnd: 607
    functionName: event_del
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 17
    functionsReached:
    - log_err
    - wsa_strerror
    - zero_waitfor
    - rbtree_delete
    - verbose
    - WSAGetLastError
    - WSACloseEvent
    - log_assert
    - WSAEventSelect
    linkageType: ''
    returnType: int
    signature: int event_del(struct event *ev)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/winsock_event.c:620,1
    - Dst: fptr_whitelist_event
      Src: /src/unbound/util/winsock_event.c:620,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - sig
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 612
    functionDepth: 1
    functionLinenumber: 612
    functionLinenumberEnd: 622
    functionName: sigh
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 0
    functionsReached:
    - fptr_whitelist_event
    - fptr_ok
    linkageType: ''
    returnType: RETSIGTYPE
    signature: RETSIGTYPE sigh(int sig)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: signal
      Src: /src/unbound/util/winsock_event.c:631,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - ev
    - ATTR_UNUSED(tv)
    argTypes:
    - struct event*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 635
      start: 624
    functionDepth: 0
    functionLinenumber: 624
    functionLinenumberEnd: 635
    functionName: signal_add
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 0
    functionsReached:
    - signal
    linkageType: ''
    returnType: int
    signature: int signal_add(struct event *ev, struct timeval * ATTR_UNUSED(tv))
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 644
      start: 637
    functionDepth: 0
    functionLinenumber: 637
    functionLinenumberEnd: 644
    functionName: signal_del
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int signal_del(struct event *ev)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/winsock_event.c:648,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - ev
    - eventbits
    argTypes:
    - struct event*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 646
    functionDepth: 7
    functionLinenumber: 646
    functionLinenumberEnd: 657
    functionName: winsock_tcp_wouldblock
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 11
    functionsReached:
    - verbose
    linkageType: ''
    returnType: void
    signature: void winsock_tcp_wouldblock(struct event* ev, int eventbits)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/util/winsock_event.c:664,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 15
    argCount: 4
    argNames:
    - base
    - ev
    - wsaevent
    - arg
    argTypes:
    - struct event_base*
    - struct event*
    - WSAEVENT
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 676
      start: 659
    functionDepth: 0
    functionLinenumber: 659
    functionLinenumberEnd: 676
    functionName: winsock_register_wsaevent
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 1
    functionsReached:
    - memset
    linkageType: ''
    returnType: int
    signature: "int winsock_register_wsaevent(struct event_base* base, struct event*
      ev,\n\tWSAEVENT wsaevent, void (*cb)(int, short, void*), void* arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/winsock_event.c:681,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 678
    functionDepth: 1
    functionLinenumber: 678
    functionLinenumberEnd: 689
    functionName: winsock_unregister_wsaevent
    functionSourceFile: /src/unbound/util/winsock_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void winsock_unregister_wsaevent(struct event* ev)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - fptr
    argTypes:
    - comm_point_callback_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 116
      start: 105
    functionDepth: 0
    functionLinenumber: 105
    functionLinenumberEnd: 116
    functionName: fptr_whitelist_comm_point
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_comm_point(comm_point_callback_type *fptr)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 1
    argNames:
    - fptr
    argTypes:
    - comm_point_callback_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 127
    functionName: fptr_whitelist_comm_point_raw
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_comm_point_raw(comm_point_callback_type *fptr)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 153
    functionName: fptr_whitelist_comm_timer
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_comm_timer(void (*fptr)(void*))
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 155
    functionDepth: 0
    functionLinenumber: 155
    functionLinenumberEnd: 160
    functionName: fptr_whitelist_comm_signal
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_comm_signal(void (*fptr)(int, void*))
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 166
      start: 162
    functionDepth: 0
    functionLinenumber: 162
    functionLinenumberEnd: 166
    functionName: fptr_whitelist_start_accept
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_start_accept(void (*fptr)(void*))
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 168
    functionDepth: 0
    functionLinenumber: 168
    functionLinenumberEnd: 172
    functionName: fptr_whitelist_stop_accept
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_stop_accept(void (*fptr)(void*))
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 26
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 174
    functionDepth: 0
    functionLinenumber: 174
    functionLinenumberEnd: 211
    functionName: fptr_whitelist_event
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 9
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_event(void (*fptr)(int, short, void *))
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - fptr
    argTypes:
    - comm_point_callback_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 213
    functionDepth: 0
    functionLinenumber: 213
    functionLinenumberEnd: 218
    functionName: fptr_whitelist_pending_udp
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_pending_udp(comm_point_callback_type *fptr)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - fptr
    argTypes:
    - comm_point_callback_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 225
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 225
    functionName: fptr_whitelist_pending_tcp
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_pending_tcp(comm_point_callback_type *fptr)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - fptr
    argTypes:
    - comm_point_callback_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 227
    functionDepth: 0
    functionLinenumber: 227
    functionLinenumberEnd: 233
    functionName: fptr_whitelist_serviced_query
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_serviced_query(comm_point_callback_type *fptr)
  - BBCount: 28
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 60
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 272
      start: 235
    functionDepth: 0
    functionLinenumber: 235
    functionLinenumberEnd: 272
    functionName: fptr_whitelist_rbtree_cmp
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_rbtree_cmp(int (*fptr) (const void *, const void
      *))
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 1
    argNames:
    - fptr
    argTypes:
    - lruhash_sizefunc_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 292
      start: 274
    functionDepth: 0
    functionLinenumber: 274
    functionLinenumberEnd: 292
    functionName: fptr_whitelist_hash_sizefunc
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_hash_sizefunc(lruhash_sizefunc_type fptr)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - fptr
    argTypes:
    - lruhash_compfunc_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 309
      start: 294
    functionDepth: 0
    functionLinenumber: 294
    functionLinenumberEnd: 309
    functionName: fptr_whitelist_hash_compfunc
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_hash_compfunc(lruhash_compfunc_type fptr)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - fptr
    argTypes:
    - lruhash_delkeyfunc_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 311
    functionDepth: 0
    functionLinenumber: 311
    functionLinenumberEnd: 326
    functionName: fptr_whitelist_hash_delkeyfunc
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_hash_delkeyfunc(lruhash_delkeyfunc_type fptr)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - fptr
    argTypes:
    - lruhash_deldatafunc_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 345
      start: 328
    functionDepth: 0
    functionLinenumber: 328
    functionLinenumberEnd: 345
    functionName: fptr_whitelist_hash_deldatafunc
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_hash_deldatafunc(lruhash_deldatafunc_type fptr)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - fptr
    argTypes:
    - lruhash_markdelfunc_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 347
    functionDepth: 0
    functionLinenumber: 347
    functionLinenumberEnd: 356
    functionName: fptr_whitelist_hash_markdelfunc
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_hash_markdelfunc(lruhash_markdelfunc_type fptr)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - "(*fptr)(\n\tstruct query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec,\n\tint
      nocaps, int check_ratelimit, struct sockaddr_storage* addr,\n\tsocklen_t addrlen,
      uint8_t* zone, size_t zonelen, int tcp_upstream,\n\tint ssl_upstream, char*
      tls_auth_name, struct module_qstate* q,\n\tint* was_ratelimited, int* ratelimit_incremented)"
    argTypes:
    - struct outbound_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 370
    functionName: fptr_whitelist_modenv_send_query
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fptr_whitelist_modenv_send_query(struct outbound_entry* (*fptr)(\n\tstruct
      query_info* qinfo, uint16_t flags, int dnssec, int want_dnssec,\n\tint nocaps,
      int check_ratelimit, struct sockaddr_storage* addr,\n\tsocklen_t addrlen, uint8_t*
      zone, size_t zonelen, int tcp_upstream,\n\tint ssl_upstream, char* tls_auth_name,
      struct module_qstate* q,\n\tint* was_ratelimited, int* ratelimit_incremented))"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 378
      start: 372
    functionDepth: 0
    functionLinenumber: 372
    functionLinenumberEnd: 378
    functionName: fptr_whitelist_modenv_detach_subs
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fptr_whitelist_modenv_detach_subs(void (*fptr)(\n        struct
      module_qstate* qstate))"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 380
    functionDepth: 0
    functionLinenumber: 380
    functionLinenumberEnd: 388
    functionName: fptr_whitelist_modenv_attach_sub
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fptr_whitelist_modenv_attach_sub(int (*fptr)(\n        struct
      module_qstate* qstate, struct query_info* qinfo,\n\tstruct respip_client_info*
      cinfo, uint16_t qflags, int prime,\n\tint valrec, struct module_qstate** newq))"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 398
      start: 390
    functionDepth: 0
    functionLinenumber: 390
    functionLinenumberEnd: 398
    functionName: fptr_whitelist_modenv_add_sub
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fptr_whitelist_modenv_add_sub(int (*fptr)(\n        struct module_qstate*
      qstate, struct query_info* qinfo,\n\tstruct respip_client_info* cinfo, uint16_t
      qflags, int prime,\n\tint valrec, struct module_qstate** newq, struct mesh_state**
      sub))"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 405
      start: 400
    functionDepth: 0
    functionLinenumber: 400
    functionLinenumberEnd: 405
    functionName: fptr_whitelist_modenv_kill_sub
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_modenv_kill_sub(void (*fptr)(struct module_qstate*
      newq))
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 414
      start: 407
    functionDepth: 0
    functionLinenumber: 407
    functionLinenumberEnd: 414
    functionName: fptr_whitelist_modenv_detect_cycle
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fptr_whitelist_modenv_detect_cycle(int (*fptr)(\n\tstruct module_qstate*
      qstate, struct query_info* qinfo,\n\tuint16_t flags, int prime, int valrec))"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 442
      start: 416
    functionDepth: 0
    functionLinenumber: 416
    functionLinenumberEnd: 442
    functionName: fptr_whitelist_mod_init
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_mod_init(int (*fptr)(struct module_env* env, int
      id))
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 444
    functionDepth: 0
    functionLinenumber: 444
    functionLinenumberEnd: 470
    functionName: fptr_whitelist_mod_deinit
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_mod_deinit(void (*fptr)(struct module_env* env,
      int id))
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 472
    functionDepth: 0
    functionLinenumber: 472
    functionLinenumberEnd: 481
    functionName: fptr_whitelist_mod_startup
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_mod_startup(int (*fptr)(struct module_env* env,
      int id))
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 492
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 492
    functionName: fptr_whitelist_mod_destartup
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_mod_destartup(void (*fptr)(struct module_env* env,
      int id))
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 494
    functionDepth: 0
    functionLinenumber: 494
    functionLinenumberEnd: 521
    functionName: fptr_whitelist_mod_operate
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fptr_whitelist_mod_operate(void (*fptr)(struct module_qstate*
      qstate,\n        enum module_ev event, int id, struct outbound_entry* outbound))"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 550
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 550
    functionName: fptr_whitelist_mod_inform_super
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fptr_whitelist_mod_inform_super(void (*fptr)(\n        struct
      module_qstate* qstate, int id, struct module_qstate* super))"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 579
      start: 552
    functionDepth: 0
    functionLinenumber: 552
    functionLinenumberEnd: 579
    functionName: fptr_whitelist_mod_clear
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fptr_whitelist_mod_clear(void (*fptr)(struct module_qstate* qstate,\n
      \       int id))"
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 607
      start: 581
    functionDepth: 0
    functionLinenumber: 581
    functionLinenumberEnd: 607
    functionName: fptr_whitelist_mod_get_mem
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_mod_get_mem(size_t (*fptr)(struct module_env* env,
      int id))
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 615
      start: 609
    functionDepth: 0
    functionLinenumber: 609
    functionLinenumberEnd: 615
    functionName: fptr_whitelist_alloc_cleanup
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_alloc_cleanup(void (*fptr)(void*))
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - fptr
    argTypes:
    - tube_callback_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 622
      start: 617
    functionDepth: 0
    functionLinenumber: 617
    functionLinenumberEnd: 622
    functionName: fptr_whitelist_tube_listen
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_tube_listen(tube_callback_type* fptr)
  - BBCount: 8
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 1
    argNames:
    - fptr
    argTypes:
    - mesh_cb_func_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 634
      start: 624
    functionDepth: 0
    functionLinenumber: 624
    functionLinenumberEnd: 634
    functionName: fptr_whitelist_mesh_cb
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_mesh_cb(mesh_cb_func_type fptr)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 642
      start: 636
    functionDepth: 0
    functionLinenumber: 636
    functionLinenumberEnd: 642
    functionName: fptr_whitelist_print_func
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_print_func(void (*fptr)(char*,void*))
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 27
    argCount: 2
    argNames:
    - fptr
    - type
    argTypes:
    - inplace_cb_reply_func_type*
    - enum inplace_cb_list_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 680
      start: 644
    functionDepth: 0
    functionLinenumber: 644
    functionLinenumberEnd: 680
    functionName: fptr_whitelist_inplace_cb_reply_generic
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fptr_whitelist_inplace_cb_reply_generic(inplace_cb_reply_func_type*
      fptr,\n\tenum inplace_cb_list_type type)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - fptr
    argTypes:
    - inplace_cb_query_func_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 682
    functionDepth: 0
    functionLinenumber: 682
    functionLinenumberEnd: 698
    functionName: fptr_whitelist_inplace_cb_query
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_inplace_cb_query(inplace_cb_query_func_type* fptr)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - fptr
    argTypes:
    - inplace_cb_edns_back_parsed_func_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 700
    functionDepth: 0
    functionLinenumber: 700
    functionLinenumberEnd: 718
    functionName: fptr_whitelist_inplace_cb_edns_back_parsed
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fptr_whitelist_inplace_cb_edns_back_parsed(\n\tinplace_cb_edns_back_parsed_func_type*
      fptr)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - fptr
    argTypes:
    - inplace_cb_query_response_func_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 738
      start: 720
    functionDepth: 0
    functionLinenumber: 720
    functionLinenumberEnd: 738
    functionName: fptr_whitelist_inplace_cb_query_response
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int fptr_whitelist_inplace_cb_query_response(\n\tinplace_cb_query_response_func_type*
      fptr)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - fptr
    argTypes:
    - serve_expired_lookup_func_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 745
      start: 740
    functionDepth: 0
    functionLinenumber: 740
    functionLinenumberEnd: 745
    functionName: fptr_whitelist_serve_expired_lookup
    functionSourceFile: /src/unbound/util/fptr_wlist.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int fptr_whitelist_serve_expired_lookup(serve_expired_lookup_func_type*
      fptr)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 86
      start: 80
    functionDepth: 0
    functionLinenumber: 80
    functionLinenumberEnd: 86
    functionName: NATIVE_BITS
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NATIVE_BITS(b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 93
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 93
    functionName: UB_EV_BITS
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UB_EV_BITS(b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 96
    functionName: UB_EV_BITS_CB
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UB_EV_BITS_CB(C)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/ub_event.c:186,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 189
    functionName: (*NATIVE_BITS_CB(void (*cb)(int, short, void*)))(int, short, void*)
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void (*NATIVE_BITS_CB(void (*cb)(int, short, void*)))(int, short, void*)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 192
    functionDepth: 0
    functionLinenumber: 192
    functionLinenumberEnd: 193
    functionName: NATIVE_BITS
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NATIVE_BITS(b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 193
    functionDepth: 0
    functionLinenumber: 193
    functionLinenumberEnd: 194
    functionName: NATIVE_BITS_CB
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NATIVE_BITS_CB(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 200
    functionDepth: 0
    functionLinenumber: 200
    functionLinenumberEnd: 201
    functionName: AS_EVENT_BASE
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AS_EVENT_BASE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 201
    functionDepth: 0
    functionLinenumber: 201
    functionLinenumberEnd: 202
    functionName: AS_UB_EVENT_BASE
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AS_UB_EVENT_BASE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 203
    functionName: AS_EVENT
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AS_EVENT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 204
      start: 203
    functionDepth: 0
    functionLinenumber: 203
    functionLinenumberEnd: 204
    functionName: AS_UB_EVENT
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AS_UB_EVENT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_get_version
      Src: /src/unbound/util/ub_event.c:207,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 208
      start: 205
    functionDepth: 0
    functionLinenumber: 205
    functionLinenumberEnd: 208
    functionName: ub_event_get_version
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 0
    functionsReached:
    - event_get_version
    linkageType: ''
    returnType: char
    signature: char * ub_event_get_version(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - b
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 211
    functionDepth: 0
    functionLinenumber: 211
    functionLinenumberEnd: 222
    functionName: ub_ev_backend2str
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * ub_ev_backend2str(int b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: AS_EVENT_BASE
      Src: /src/unbound/util/ub_event.c:240,1
    - Dst: event_get_version
      Src: /src/unbound/util/ub_event.c:241,1
    - Dst: ev_default_loop
      Src: /src/unbound/util/ub_event.c:245,1
    - Dst: ub_ev_backend2str
      Src: /src/unbound/util/ub_event.c:247,1
    - Dst: ev_backend
      Src: /src/unbound/util/ub_event.c:247,1
    - Dst: event_base_new
      Src: /src/unbound/util/ub_event.c:254,1
    - Dst: event_base_get_method
      Src: /src/unbound/util/ub_event.c:255,1
    - Dst: AS_EVENT_BASE
      Src: /src/unbound/util/ub_event.c:262,1
    - Dst: event_base_free
      Src: /src/unbound/util/ub_event.c:263,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 4
    argNames:
    - base
    - n
    - s
    - m
    argTypes:
    - struct ub_event_base*
    - char**
    - char**
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 266
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 266
    functionName: ub_get_event_sys
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 3
    functionsReached:
    - event_base_free
    - event_get_version
    - AS_EVENT_BASE
    - event_base_get_method
    - event_base_new
    - ub_ev_backend2str
    - ev_default_loop
    - ev_backend
    linkageType: ''
    returnType: void
    signature: "void ub_get_event_sys(struct ub_event_base* base, const char** n,
      const char** s,\n\tconst char** m)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_init
      Src: /src/unbound/util/ub_event.c:277,1
    - Dst: ev_default_loop
      Src: /src/unbound/util/ub_event.c:284,1
    - Dst: ev_loop_new
      Src: /src/unbound/util/ub_event.c:286,1
    - Dst: event_base_new
      Src: /src/unbound/util/ub_event.c:290,1
    - Dst: event_init
      Src: /src/unbound/util/ub_event.c:292,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - sigs
    - time_secs
    - time_tv
    argTypes:
    - int
    - time_t*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 297
      start: 268
    functionDepth: 0
    functionLinenumber: 268
    functionLinenumberEnd: 297
    functionName: ub_default_event_base
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 5
    functionsReached:
    - ev_loop_new
    - ev_default_loop
    - event_base_new
    - event_init
    linkageType: ''
    returnType: struct ub_event_base
    signature: 'struct ub_event_base *

      ub_default_event_base(int sigs, time_t* time_secs, struct timeval* time_tv)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AS_UB_EVENT_BASE
      Src: /src/unbound/util/ub_event.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - libevent_base
    argTypes:
    - struct event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 299
    functionDepth: 1
    functionLinenumber: 299
    functionLinenumberEnd: 308
    functionName: ub_libevent_event_base
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 2
    functionsReached:
    - AS_UB_EVENT_BASE
    linkageType: ''
    returnType: struct ub_event_base
    signature: 'struct ub_event_base *

      ub_libevent_event_base(struct event_base* libevent_base)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AS_EVENT_BASE
      Src: /src/unbound/util/ub_event.c:317,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct ub_event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 319
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 319
    functionName: ub_libevent_get_event_base
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 1
    functionsReached:
    - AS_EVENT_BASE
    linkageType: ''
    returnType: struct event_base
    signature: 'struct event_base *

      ub_libevent_get_event_base(struct ub_event_base* base)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_base_free
      Src: /src/unbound/util/ub_event.c:325,1
    - Dst: AS_EVENT_BASE
      Src: /src/unbound/util/ub_event.c:325,1
    - Dst: event_base_free
      Src: /src/unbound/util/ub_event.c:330,1
    - Dst: AS_EVENT_BASE
      Src: /src/unbound/util/ub_event.c:330,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct ub_event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 334
      start: 321
    functionDepth: 1
    functionLinenumber: 321
    functionLinenumberEnd: 334
    functionName: ub_event_base_free
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 6
    functionsReached:
    - event_base_free
    - AS_EVENT_BASE
    linkageType: ''
    returnType: void
    signature: void ub_event_base_free(struct ub_event_base* base)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_base_dispatch
      Src: /src/unbound/util/ub_event.c:339,1
    - Dst: AS_EVENT_BASE
      Src: /src/unbound/util/ub_event.c:339,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct ub_event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 336
    functionDepth: 1
    functionLinenumber: 336
    functionLinenumberEnd: 340
    functionName: ub_event_base_dispatch
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 4
    functionsReached:
    - AS_EVENT_BASE
    - event_base_dispatch
    linkageType: ''
    returnType: int
    signature: int ub_event_base_dispatch(struct ub_event_base* base)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_base_loopexit
      Src: /src/unbound/util/ub_event.c:345,1
    - Dst: AS_EVENT_BASE
      Src: /src/unbound/util/ub_event.c:345,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct ub_event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 346
      start: 342
    functionDepth: 1
    functionLinenumber: 342
    functionLinenumberEnd: 346
    functionName: ub_event_base_loopexit
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 4
    functionsReached:
    - event_base_loopexit
    - AS_EVENT_BASE
    linkageType: ''
    returnType: int
    signature: int ub_event_base_loopexit(struct ub_event_base* base)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/ub_event.c:352,1
    - Dst: event_set
      Src: /src/unbound/util/ub_event.c:358,1
    - Dst: NATIVE_BITS
      Src: /src/unbound/util/ub_event.c:358,1
    - Dst: NATIVE_BITS_CB
      Src: /src/unbound/util/ub_event.c:358,1
    - Dst: event_base_set
      Src: /src/unbound/util/ub_event.c:359,1
    - Dst: AS_EVENT_BASE
      Src: /src/unbound/util/ub_event.c:359,1
    - Dst: free
      Src: /src/unbound/util/ub_event.c:360,1
    - Dst: event_assign
      Src: /src/unbound/util/ub_event.c:364,1
    - Dst: AS_EVENT_BASE
      Src: /src/unbound/util/ub_event.c:364,1
    - Dst: free
      Src: /src/unbound/util/ub_event.c:365,1
    - Dst: AS_UB_EVENT
      Src: /src/unbound/util/ub_event.c:369,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 4
    argNames:
    - base
    - fd
    - bits
    - arg
    argTypes:
    - struct ub_event_base*
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 370
      start: 348
    functionDepth: 1
    functionLinenumber: 348
    functionLinenumberEnd: 370
    functionName: ub_event_new
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 8
    functionsReached:
    - event_base_set
    - event_assign
    - NATIVE_BITS_CB
    - AS_EVENT_BASE
    - free
    - calloc
    - NATIVE_BITS
    - event_set
    - AS_UB_EVENT
    linkageType: ''
    returnType: struct ub_event
    signature: "struct ub_event *\nub_event_new(struct ub_event_base* base, int fd,
      short bits,\n\tvoid (*cb)(int, short, void*), void* arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/ub_event.c:376,1
    - Dst: signal_set
      Src: /src/unbound/util/ub_event.c:382,1
    - Dst: NATIVE_BITS_CB
      Src: /src/unbound/util/ub_event.c:382,1
    - Dst: event_base_set
      Src: /src/unbound/util/ub_event.c:383,1
    - Dst: AS_EVENT_BASE
      Src: /src/unbound/util/ub_event.c:383,1
    - Dst: free
      Src: /src/unbound/util/ub_event.c:384,1
    - Dst: evsignal_assign
      Src: /src/unbound/util/ub_event.c:388,1
    - Dst: AS_EVENT_BASE
      Src: /src/unbound/util/ub_event.c:388,1
    - Dst: free
      Src: /src/unbound/util/ub_event.c:389,1
    - Dst: AS_UB_EVENT
      Src: /src/unbound/util/ub_event.c:393,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - base
    - fd
    - arg
    argTypes:
    - struct ub_event_base*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 372
    functionDepth: 1
    functionLinenumber: 372
    functionLinenumberEnd: 394
    functionName: ub_signal_new
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 0
    functionsReached:
    - event_base_set
    - AS_EVENT_BASE
    - NATIVE_BITS_CB
    - evsignal_assign
    - free
    - calloc
    - signal_set
    - AS_UB_EVENT
    linkageType: ''
    returnType: struct ub_event
    signature: "struct ub_event *\nub_signal_new(struct ub_event_base* base, int fd,\n\tvoid
      (*cb)(int, short, void*), void* arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/ub_event.c:401,1
    - Dst: winsock_register_wsaevent
      Src: /src/unbound/util/ub_event.c:406,1
    - Dst: AS_EVENT_BASE
      Src: /src/unbound/util/ub_event.c:406,1
    - Dst: AS_UB_EVENT
      Src: /src/unbound/util/ub_event.c:408,1
    - Dst: free
      Src: /src/unbound/util/ub_event.c:409,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 3
    argNames:
    - base
    - wsaevent
    - arg
    argTypes:
    - struct ub_event_base*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 396
    functionDepth: 1
    functionLinenumber: 396
    functionLinenumberEnd: 418
    functionName: ub_winsock_register_wsaevent
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 1
    functionsReached:
    - AS_EVENT_BASE
    - winsock_register_wsaevent
    - free
    - calloc
    - AS_UB_EVENT
    linkageType: ''
    returnType: struct ub_event
    signature: "struct ub_event *\nub_winsock_register_wsaevent(struct ub_event_base*
      base, void* wsaevent,\n\tvoid (*cb)(int, short, void*), void* arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AS_EVENT
      Src: /src/unbound/util/ub_event.c:423,1
    - Dst: NATIVE_BITS
      Src: /src/unbound/util/ub_event.c:423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ev
    - bits
    argTypes:
    - struct ub_event*
    - short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 424
      start: 420
    functionDepth: 1
    functionLinenumber: 420
    functionLinenumberEnd: 424
    functionName: ub_event_add_bits
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 5
    functionsReached:
    - NATIVE_BITS
    - AS_EVENT
    linkageType: ''
    returnType: void
    signature: void ub_event_add_bits(struct ub_event* ev, short bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AS_EVENT
      Src: /src/unbound/util/ub_event.c:429,1
    - Dst: NATIVE_BITS
      Src: /src/unbound/util/ub_event.c:429,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ev
    - bits
    argTypes:
    - struct ub_event*
    - short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 430
      start: 426
    functionDepth: 1
    functionLinenumber: 426
    functionLinenumberEnd: 430
    functionName: ub_event_del_bits
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 5
    functionsReached:
    - NATIVE_BITS
    - AS_EVENT
    linkageType: ''
    returnType: void
    signature: void ub_event_del_bits(struct ub_event* ev, short bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AS_EVENT
      Src: /src/unbound/util/ub_event.c:435,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ev
    - fd
    argTypes:
    - struct ub_event*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 436
      start: 432
    functionDepth: 1
    functionLinenumber: 432
    functionLinenumberEnd: 436
    functionName: ub_event_set_fd
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 0
    functionsReached:
    - AS_EVENT
    linkageType: ''
    returnType: void
    signature: void ub_event_set_fd(struct ub_event* ev, int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/ub_event.c:442,1
    - Dst: AS_EVENT
      Src: /src/unbound/util/ub_event.c:442,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct ub_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 438
    functionDepth: 1
    functionLinenumber: 438
    functionLinenumberEnd: 443
    functionName: ub_event_free
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 9
    functionsReached:
    - free
    - AS_EVENT
    linkageType: ''
    returnType: void
    signature: void ub_event_free(struct ub_event* ev)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add
      Src: /src/unbound/util/ub_event.c:448,1
    - Dst: AS_EVENT
      Src: /src/unbound/util/ub_event.c:448,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ev
    - tv
    argTypes:
    - struct ub_event*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 449
    functionName: ub_event_add
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 13
    functionsReached:
    - event_add
    - AS_EVENT
    linkageType: ''
    returnType: int
    signature: int ub_event_add(struct ub_event* ev, struct timeval* tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_del
      Src: /src/unbound/util/ub_event.c:454,1
    - Dst: AS_EVENT
      Src: /src/unbound/util/ub_event.c:454,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct ub_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 455
      start: 451
    functionDepth: 1
    functionLinenumber: 451
    functionLinenumberEnd: 455
    functionName: ub_event_del
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 15
    functionsReached:
    - event_del
    - AS_EVENT
    linkageType: ''
    returnType: int
    signature: int ub_event_del(struct ub_event* ev)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_set
      Src: /src/unbound/util/ub_event.c:461,1
    - Dst: AS_EVENT
      Src: /src/unbound/util/ub_event.c:461,1
    - Dst: NATIVE_BITS_CB
      Src: /src/unbound/util/ub_event.c:461,1
    - Dst: event_base_set
      Src: /src/unbound/util/ub_event.c:462,1
    - Dst: AS_EVENT_BASE
      Src: /src/unbound/util/ub_event.c:462,1
    - Dst: AS_EVENT
      Src: /src/unbound/util/ub_event.c:462,1
    - Dst: evtimer_add
      Src: /src/unbound/util/ub_event.c:464,1
    - Dst: AS_EVENT
      Src: /src/unbound/util/ub_event.c:464,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - ev
    - base
    - arg
    - tv
    argTypes:
    - struct ub_event*
    - struct ub_event_base*
    - void*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 465
      start: 457
    functionDepth: 1
    functionLinenumber: 457
    functionLinenumberEnd: 465
    functionName: ub_timer_add
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 3
    functionsReached:
    - event_base_set
    - AS_EVENT_BASE
    - AS_EVENT
    - NATIVE_BITS_CB
    - evtimer_add
    - event_set
    linkageType: ''
    returnType: int
    signature: "int ub_timer_add(struct ub_event* ev, struct ub_event_base* base,\n\tvoid
      (*cb)(int, short, void*), void* arg, struct timeval* tv)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: evtimer_del
      Src: /src/unbound/util/ub_event.c:470,1
    - Dst: AS_EVENT
      Src: /src/unbound/util/ub_event.c:470,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct ub_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 471
      start: 467
    functionDepth: 1
    functionLinenumber: 467
    functionLinenumberEnd: 471
    functionName: ub_timer_del
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 4
    functionsReached:
    - AS_EVENT
    - evtimer_del
    linkageType: ''
    returnType: int
    signature: int ub_timer_del(struct ub_event* ev)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: signal_add
      Src: /src/unbound/util/ub_event.c:476,1
    - Dst: AS_EVENT
      Src: /src/unbound/util/ub_event.c:476,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ev
    - tv
    argTypes:
    - struct ub_event*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 477
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 477
    functionName: ub_signal_add
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 0
    functionsReached:
    - AS_EVENT
    - signal_add
    linkageType: ''
    returnType: int
    signature: int ub_signal_add(struct ub_event* ev, struct timeval* tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: signal_del
      Src: /src/unbound/util/ub_event.c:482,1
    - Dst: AS_EVENT
      Src: /src/unbound/util/ub_event.c:482,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct ub_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 479
    functionDepth: 1
    functionLinenumber: 479
    functionLinenumberEnd: 483
    functionName: ub_signal_del
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 0
    functionsReached:
    - signal_del
    - AS_EVENT
    linkageType: ''
    returnType: int
    signature: int ub_signal_del(struct ub_event* ev)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: winsock_unregister_wsaevent
      Src: /src/unbound/util/ub_event.c:489,1
    - Dst: AS_EVENT
      Src: /src/unbound/util/ub_event.c:489,1
    - Dst: free
      Src: /src/unbound/util/ub_event.c:490,1
    - Dst: AS_EVENT
      Src: /src/unbound/util/ub_event.c:490,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct ub_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 485
    functionDepth: 2
    functionLinenumber: 485
    functionLinenumberEnd: 494
    functionName: ub_winsock_unregister_wsaevent
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 0
    functionsReached:
    - free
    - winsock_unregister_wsaevent
    - AS_EVENT
    linkageType: ''
    returnType: void
    signature: void ub_winsock_unregister_wsaevent(struct ub_event* ev)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: winsock_tcp_wouldblock
      Src: /src/unbound/util/ub_event.c:500,1
    - Dst: AS_EVENT
      Src: /src/unbound/util/ub_event.c:500,1
    - Dst: NATIVE_BITS
      Src: /src/unbound/util/ub_event.c:500,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ev
    - eventbits
    argTypes:
    - struct ub_event*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 496
    functionDepth: 8
    functionLinenumber: 496
    functionLinenumberEnd: 505
    functionName: ub_winsock_tcp_wouldblock
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 11
    functionsReached:
    - AS_EVENT
    - NATIVE_BITS
    - winsock_tcp_wouldblock
    linkageType: ''
    returnType: void
    signature: void ub_winsock_tcp_wouldblock(struct ub_event* ev, int eventbits)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: comm_base_timept
      Src: /src/unbound/util/ub_event.c:516,1
    - Dst: gettimeofday
      Src: /src/unbound/util/ub_event.c:517,1
    - Dst: log_err
      Src: /src/unbound/util/ub_event.c:518,1
    - Dst: strerror
      Src: /src/unbound/util/ub_event.c:518,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - cb
    argTypes:
    - struct comm_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 507
    functionDepth: 7
    functionLinenumber: 507
    functionLinenumberEnd: 524
    functionName: ub_comm_base_now
    functionSourceFile: /src/unbound/util/ub_event.c
    functionUses: 1
    functionsReached:
    - log_err
    - strerror
    - gettimeofday
    - comm_base_timept
    linkageType: ''
    returnType: void
    signature: void ub_comm_base_now(struct comm_base* cb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 70
    functionDepth: 0
    functionLinenumber: 70
    functionLinenumberEnd: 75
    functionName: fptr_ok
    functionSourceFile: /src/unbound/util/fptr_wlist.h
    functionUses: 46
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: fptr_ok(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 81
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 81
    functionName: NATIVE_BITS
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NATIVE_BITS(b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 88
      start: 82
    functionDepth: 0
    functionLinenumber: 82
    functionLinenumberEnd: 88
    functionName: UB_EV_BITS
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UB_EV_BITS(b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - C
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 89
    functionDepth: 0
    functionLinenumber: 89
    functionLinenumberEnd: 91
    functionName: UB_EV_BITS_CB
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UB_EV_BITS_CB(C)
  - BBCount: 11
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 127
    functionName: (*NATIVE_BITS_CB(void (*cb)(int, short, void*)))(int, short, void*)
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void (*NATIVE_BITS_CB(void (*cb)(int, short, void*)))(int, short, void*)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 129
    functionDepth: 0
    functionLinenumber: 129
    functionLinenumberEnd: 130
    functionName: NATIVE_BITS
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NATIVE_BITS(b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 130
    functionDepth: 0
    functionLinenumber: 130
    functionLinenumberEnd: 131
    functionName: NATIVE_BITS_CB
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: NATIVE_BITS_CB(c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 147
    functionDepth: 0
    functionLinenumber: 147
    functionLinenumberEnd: 148
    functionName: AS_MY_EVENT_BASE
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AS_MY_EVENT_BASE(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 149
      start: 148
    functionDepth: 0
    functionLinenumber: 148
    functionLinenumberEnd: 149
    functionName: AS_MY_EVENT
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: AS_MY_EVENT(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 153
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 153
    functionName: ub_event_get_version
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * ub_event_get_version(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AS_MY_EVENT
      Src: /src/unbound/util/ub_event_pluggable.c:158,1
    - Dst: NATIVE_BITS
      Src: /src/unbound/util/ub_event_pluggable.c:158,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ev
    - bits
    argTypes:
    - struct ub_event*
    - short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 159
      start: 155
    functionDepth: 1
    functionLinenumber: 155
    functionLinenumberEnd: 159
    functionName: my_event_add_bits
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - AS_MY_EVENT
    - NATIVE_BITS
    linkageType: ''
    returnType: void
    signature: void my_event_add_bits(struct ub_event* ev, short bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AS_MY_EVENT
      Src: /src/unbound/util/ub_event_pluggable.c:164,1
    - Dst: NATIVE_BITS
      Src: /src/unbound/util/ub_event_pluggable.c:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ev
    - bits
    argTypes:
    - struct ub_event*
    - short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 161
    functionDepth: 1
    functionLinenumber: 161
    functionLinenumberEnd: 165
    functionName: my_event_del_bits
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - AS_MY_EVENT
    - NATIVE_BITS
    linkageType: ''
    returnType: void
    signature: void my_event_del_bits(struct ub_event* ev, short bits)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: AS_MY_EVENT
      Src: /src/unbound/util/ub_event_pluggable.c:170,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ev
    - fd
    argTypes:
    - struct ub_event*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 171
    functionName: my_event_set_fd
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - AS_MY_EVENT
    linkageType: ''
    returnType: void
    signature: void my_event_set_fd(struct ub_event* ev, int fd)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/ub_event_pluggable.c:176,1
    - Dst: AS_MY_EVENT
      Src: /src/unbound/util/ub_event_pluggable.c:176,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct ub_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 173
    functionDepth: 1
    functionLinenumber: 173
    functionLinenumberEnd: 177
    functionName: my_event_free
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - free
    - AS_MY_EVENT
    linkageType: ''
    returnType: void
    signature: void my_event_free(struct ub_event* ev)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_add
      Src: /src/unbound/util/ub_event_pluggable.c:182,1
    - Dst: AS_MY_EVENT
      Src: /src/unbound/util/ub_event_pluggable.c:182,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ev
    - tv
    argTypes:
    - struct ub_event*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 183
      start: 179
    functionDepth: 1
    functionLinenumber: 179
    functionLinenumberEnd: 183
    functionName: my_event_add
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - event_add
    - AS_MY_EVENT
    linkageType: ''
    returnType: int
    signature: int my_event_add(struct ub_event* ev, struct timeval* tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_del
      Src: /src/unbound/util/ub_event_pluggable.c:188,1
    - Dst: AS_MY_EVENT
      Src: /src/unbound/util/ub_event_pluggable.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct ub_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 189
    functionName: my_event_del
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - AS_MY_EVENT
    - event_del
    linkageType: ''
    returnType: int
    signature: int my_event_del(struct ub_event* ev)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: event_set
      Src: /src/unbound/util/ub_event_pluggable.c:195,1
    - Dst: AS_MY_EVENT
      Src: /src/unbound/util/ub_event_pluggable.c:195,1
    - Dst: NATIVE_BITS_CB
      Src: /src/unbound/util/ub_event_pluggable.c:195,1
    - Dst: event_base_set
      Src: /src/unbound/util/ub_event_pluggable.c:196,1
    - Dst: AS_MY_EVENT_BASE
      Src: /src/unbound/util/ub_event_pluggable.c:196,1
    - Dst: AS_MY_EVENT
      Src: /src/unbound/util/ub_event_pluggable.c:196,1
    - Dst: evtimer_add
      Src: /src/unbound/util/ub_event_pluggable.c:199,1
    - Dst: AS_MY_EVENT
      Src: /src/unbound/util/ub_event_pluggable.c:199,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - ev
    - base
    - arg
    - tv
    argTypes:
    - struct ub_event*
    - struct ub_event_base*
    - void*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 200
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 200
    functionName: my_timer_add
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - event_base_set
    - AS_MY_EVENT
    - NATIVE_BITS_CB
    - evtimer_add
    - AS_MY_EVENT_BASE
    - event_set
    linkageType: ''
    returnType: int
    signature: "int my_timer_add(struct ub_event* ev, struct ub_event_base* base,\n\tvoid
      (*cb)(int, short, void*), void* arg, struct timeval* tv)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: evtimer_del
      Src: /src/unbound/util/ub_event_pluggable.c:205,1
    - Dst: AS_MY_EVENT
      Src: /src/unbound/util/ub_event_pluggable.c:205,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct ub_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 206
      start: 202
    functionDepth: 1
    functionLinenumber: 202
    functionLinenumberEnd: 206
    functionName: my_timer_del
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - AS_MY_EVENT
    - evtimer_del
    linkageType: ''
    returnType: int
    signature: int my_timer_del(struct ub_event* ev)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: signal_add
      Src: /src/unbound/util/ub_event_pluggable.c:211,1
    - Dst: AS_MY_EVENT
      Src: /src/unbound/util/ub_event_pluggable.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ev
    - tv
    argTypes:
    - struct ub_event*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 208
    functionDepth: 1
    functionLinenumber: 208
    functionLinenumberEnd: 212
    functionName: my_signal_add
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - AS_MY_EVENT
    - signal_add
    linkageType: ''
    returnType: int
    signature: int my_signal_add(struct ub_event* ev, struct timeval* tv)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: signal_del
      Src: /src/unbound/util/ub_event_pluggable.c:217,1
    - Dst: AS_MY_EVENT
      Src: /src/unbound/util/ub_event_pluggable.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct ub_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 214
    functionDepth: 1
    functionLinenumber: 214
    functionLinenumberEnd: 218
    functionName: my_signal_del
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - AS_MY_EVENT
    - signal_del
    linkageType: ''
    returnType: int
    signature: int my_signal_del(struct ub_event* ev)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: winsock_unregister_wsaevent
      Src: /src/unbound/util/ub_event_pluggable.c:224,1
    - Dst: AS_MY_EVENT
      Src: /src/unbound/util/ub_event_pluggable.c:224,1
    - Dst: free
      Src: /src/unbound/util/ub_event_pluggable.c:225,1
    - Dst: AS_MY_EVENT
      Src: /src/unbound/util/ub_event_pluggable.c:225,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct ub_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 220
    functionDepth: 2
    functionLinenumber: 220
    functionLinenumberEnd: 229
    functionName: my_winsock_unregister_wsaevent
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - free
    - winsock_unregister_wsaevent
    - AS_MY_EVENT
    linkageType: ''
    returnType: void
    signature: void my_winsock_unregister_wsaevent(struct ub_event* ev)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: winsock_tcp_wouldblock
      Src: /src/unbound/util/ub_event_pluggable.c:235,1
    - Dst: AS_MY_EVENT
      Src: /src/unbound/util/ub_event_pluggable.c:235,1
    - Dst: NATIVE_BITS
      Src: /src/unbound/util/ub_event_pluggable.c:235,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - ev
    - eventbits
    argTypes:
    - struct ub_event*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 231
    functionDepth: 8
    functionLinenumber: 231
    functionLinenumberEnd: 240
    functionName: my_winsock_tcp_wouldblock
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - AS_MY_EVENT
    - NATIVE_BITS
    - winsock_tcp_wouldblock
    linkageType: ''
    returnType: void
    signature: void my_winsock_tcp_wouldblock(struct ub_event* ev, int eventbits)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_base_free
      Src: /src/unbound/util/ub_event_pluggable.c:253,1
    - Dst: AS_MY_EVENT_BASE
      Src: /src/unbound/util/ub_event_pluggable.c:253,1
    - Dst: event_base_free
      Src: /src/unbound/util/ub_event_pluggable.c:258,1
    - Dst: AS_MY_EVENT_BASE
      Src: /src/unbound/util/ub_event_pluggable.c:258,1
    - Dst: free
      Src: /src/unbound/util/ub_event_pluggable.c:260,1
    - Dst: AS_MY_EVENT_BASE
      Src: /src/unbound/util/ub_event_pluggable.c:260,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct ub_event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 249
    functionDepth: 1
    functionLinenumber: 249
    functionLinenumberEnd: 261
    functionName: my_event_base_free
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - free
    - event_base_free
    - AS_MY_EVENT_BASE
    linkageType: ''
    returnType: void
    signature: void my_event_base_free(struct ub_event_base* base)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_base_dispatch
      Src: /src/unbound/util/ub_event_pluggable.c:266,1
    - Dst: AS_MY_EVENT_BASE
      Src: /src/unbound/util/ub_event_pluggable.c:266,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct ub_event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 267
      start: 263
    functionDepth: 1
    functionLinenumber: 263
    functionLinenumberEnd: 267
    functionName: my_event_base_dispatch
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - AS_MY_EVENT_BASE
    - event_base_dispatch
    linkageType: ''
    returnType: int
    signature: int my_event_base_dispatch(struct ub_event_base* base)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: event_base_loopexit
      Src: /src/unbound/util/ub_event_pluggable.c:272,1
    - Dst: AS_MY_EVENT_BASE
      Src: /src/unbound/util/ub_event_pluggable.c:272,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - base
    - tv
    argTypes:
    - struct ub_event_base*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 273
      start: 269
    functionDepth: 1
    functionLinenumber: 269
    functionLinenumberEnd: 273
    functionName: my_event_base_loopexit
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - event_base_loopexit
    - AS_MY_EVENT_BASE
    linkageType: ''
    returnType: int
    signature: int my_event_base_loopexit(struct ub_event_base* base, struct timeval*
      tv)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/ub_event_pluggable.c:279,1
    - Dst: event_set
      Src: /src/unbound/util/ub_event_pluggable.c:285,1
    - Dst: NATIVE_BITS
      Src: /src/unbound/util/ub_event_pluggable.c:285,1
    - Dst: NATIVE_BITS_CB
      Src: /src/unbound/util/ub_event_pluggable.c:285,1
    - Dst: event_base_set
      Src: /src/unbound/util/ub_event_pluggable.c:286,1
    - Dst: AS_MY_EVENT_BASE
      Src: /src/unbound/util/ub_event_pluggable.c:286,1
    - Dst: free
      Src: /src/unbound/util/ub_event_pluggable.c:287,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - base
    - fd
    - bits
    - arg
    argTypes:
    - struct ub_event_base*
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 275
    functionDepth: 1
    functionLinenumber: 275
    functionLinenumberEnd: 293
    functionName: my_event_new
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - event_base_set
    - NATIVE_BITS_CB
    - free
    - calloc
    - NATIVE_BITS
    - AS_MY_EVENT_BASE
    - event_set
    linkageType: ''
    returnType: struct ub_event
    signature: "struct ub_event *\nmy_event_new(struct ub_event_base* base, int fd,
      short bits,\n\tvoid (*cb)(int, short, void*), void* arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/ub_event_pluggable.c:299,1
    - Dst: signal_set
      Src: /src/unbound/util/ub_event_pluggable.c:305,1
    - Dst: NATIVE_BITS_CB
      Src: /src/unbound/util/ub_event_pluggable.c:305,1
    - Dst: event_base_set
      Src: /src/unbound/util/ub_event_pluggable.c:306,1
    - Dst: AS_MY_EVENT_BASE
      Src: /src/unbound/util/ub_event_pluggable.c:306,1
    - Dst: free
      Src: /src/unbound/util/ub_event_pluggable.c:307,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - base
    - fd
    - arg
    argTypes:
    - struct ub_event_base*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 313
      start: 295
    functionDepth: 1
    functionLinenumber: 295
    functionLinenumberEnd: 313
    functionName: my_signal_new
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - event_base_set
    - NATIVE_BITS_CB
    - free
    - calloc
    - AS_MY_EVENT_BASE
    - signal_set
    linkageType: ''
    returnType: struct ub_event
    signature: "struct ub_event *\nmy_signal_new(struct ub_event_base* base, int fd,\n\tvoid
      (*cb)(int, short, void*), void* arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/ub_event_pluggable.c:320,1
    - Dst: winsock_register_wsaevent
      Src: /src/unbound/util/ub_event_pluggable.c:326,1
    - Dst: AS_MY_EVENT_BASE
      Src: /src/unbound/util/ub_event_pluggable.c:326,1
    - Dst: free
      Src: /src/unbound/util/ub_event_pluggable.c:328,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 3
    argNames:
    - base
    - wsaevent
    - arg
    argTypes:
    - struct ub_event_base*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 342
      start: 315
    functionDepth: 1
    functionLinenumber: 315
    functionLinenumberEnd: 342
    functionName: my_winsock_register_wsaevent
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - free
    - AS_MY_EVENT_BASE
    - calloc
    - winsock_register_wsaevent
    linkageType: ''
    returnType: struct ub_event
    signature: "struct ub_event *\nmy_winsock_register_wsaevent(struct ub_event_base*
      base, void* wsaevent,\n\tvoid (*cb)(int, short, void*), void* arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/ub_event_pluggable.c:353,1
    - Dst: event_init
      Src: /src/unbound/util/ub_event_pluggable.c:362,1
    - Dst: ev_default_loop
      Src: /src/unbound/util/ub_event_pluggable.c:369,1
    - Dst: ev_loop_new
      Src: /src/unbound/util/ub_event_pluggable.c:371,1
    - Dst: event_base_new
      Src: /src/unbound/util/ub_event_pluggable.c:375,1
    - Dst: event_init
      Src: /src/unbound/util/ub_event_pluggable.c:377,1
    - Dst: free
      Src: /src/unbound/util/ub_event_pluggable.c:382,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 3
    argNames:
    - sigs
    - time_secs
    - time_tv
    argTypes:
    - int
    - time_t*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 388
      start: 350
    functionDepth: 1
    functionLinenumber: 350
    functionLinenumberEnd: 388
    functionName: ub_default_event_base
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 5
    functionsReached:
    - ev_loop_new
    - event_base_new
    - free
    - calloc
    - ev_default_loop
    - event_init
    linkageType: ''
    returnType: struct ub_event_base
    signature: 'struct ub_event_base *

      ub_default_event_base(int sigs, time_t* time_secs, struct timeval* time_tv)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/ub_event_pluggable.c:397,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 407
      start: 390
    functionDepth: 1
    functionLinenumber: 390
    functionLinenumberEnd: 407
    functionName: ub_libevent_event_base
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 2
    functionsReached:
    - calloc
    linkageType: ''
    returnType: struct ub_event_base
    signature: 'struct ub_event_base *

      ub_libevent_event_base(struct event_base* base)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: AS_MY_EVENT_BASE
      Src: /src/unbound/util/ub_event_pluggable.c:414,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct ub_event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 419
      start: 409
    functionDepth: 1
    functionLinenumber: 409
    functionLinenumberEnd: 419
    functionName: ub_libevent_get_event_base
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 1
    functionsReached:
    - AS_MY_EVENT_BASE
    linkageType: ''
    returnType: struct event_base
    signature: 'struct event_base *

      ub_libevent_get_event_base(struct ub_event_base* base)'
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - b
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 433
      start: 422
    functionDepth: 0
    functionLinenumber: 422
    functionLinenumberEnd: 433
    functionName: ub_ev_backend2str_pluggable
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: char * ub_ev_backend2str_pluggable(int b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ub_libevent_get_event_base
      Src: /src/unbound/util/ub_event_pluggable.c:451,1
    - Dst: assert
      Src: /src/unbound/util/ub_event_pluggable.c:456,1
    - Dst: event_get_version
      Src: /src/unbound/util/ub_event_pluggable.c:458,1
    - Dst: ub_ev_backend2str_pluggable
      Src: /src/unbound/util/ub_event_pluggable.c:462,1
    - Dst: ev_backend
      Src: /src/unbound/util/ub_event_pluggable.c:462,1
    - Dst: event_base_get_method
      Src: /src/unbound/util/ub_event_pluggable.c:468,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 18
    argCount: 4
    argNames:
    - ub_base
    - n
    - s
    - m
    argTypes:
    - struct ub_event_base*
    - char**
    - char**
    - char**
    assertStmts:
    - condition: (b != NULL)
      pos:
        line_end: 455
        line_start: 455
        source_file: /src/unbound/util/ub_event_pluggable.c
    constantsTouched: []
    func_position:
      end: 473
      start: 436
    functionDepth: 1
    functionLinenumber: 436
    functionLinenumberEnd: 473
    functionName: ub_get_event_sys
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 3
    functionsReached:
    - event_get_version
    - event_base_get_method
    - assert
    - ub_ev_backend2str_pluggable
    - ub_libevent_get_event_base
    - ev_backend
    linkageType: ''
    returnType: void
    signature: "void ub_get_event_sys(struct ub_event_base* ub_base, const char**
      n, const char** s,\n\tconst char** m)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/ub_event_pluggable.c:479,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct ub_event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 475
    functionDepth: 1
    functionLinenumber: 475
    functionLinenumberEnd: 483
    functionName: ub_event_base_free
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 6
    functionsReached:
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: void ub_event_base_free(struct ub_event_base* base)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/ub_event_pluggable.c:489,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct ub_event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 494
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 494
    functionName: ub_event_base_dispatch
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 4
    functionsReached:
    - fptr_ok
    linkageType: ''
    returnType: int
    signature: int ub_event_base_dispatch(struct ub_event_base* base)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/ub_event_pluggable.c:500,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct ub_event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 505
      start: 496
    functionDepth: 1
    functionLinenumber: 496
    functionLinenumberEnd: 505
    functionName: ub_event_base_loopexit
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 4
    functionsReached:
    - fptr_ok
    linkageType: ''
    returnType: int
    signature: int ub_event_base_loopexit(struct ub_event_base* base)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/ub_event_pluggable.c:512,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - base
    - fd
    - bits
    - arg
    argTypes:
    - struct ub_event_base*
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 517
      start: 507
    functionDepth: 1
    functionLinenumber: 507
    functionLinenumberEnd: 517
    functionName: ub_event_new
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 8
    functionsReached:
    - fptr_ok
    linkageType: ''
    returnType: struct ub_event
    signature: "struct ub_event *\nub_event_new(struct ub_event_base* base, int fd,
      short bits,\n\tvoid (*cb)(int, short, void*), void* arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/ub_event_pluggable.c:524,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - base
    - fd
    - arg
    argTypes:
    - struct ub_event_base*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 519
    functionDepth: 1
    functionLinenumber: 519
    functionLinenumberEnd: 529
    functionName: ub_signal_new
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - fptr_ok
    linkageType: ''
    returnType: struct ub_event
    signature: "struct ub_event *\nub_signal_new(struct ub_event_base* base, int fd,\n\tvoid
      (*cb)(int, short, void*), void* arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/ub_event_pluggable.c:536,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 3
    argNames:
    - base
    - wsaevent
    - arg
    argTypes:
    - struct ub_event_base*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 542
      start: 531
    functionDepth: 1
    functionLinenumber: 531
    functionLinenumberEnd: 542
    functionName: ub_winsock_register_wsaevent
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 1
    functionsReached:
    - fptr_ok
    linkageType: ''
    returnType: struct ub_event
    signature: "struct ub_event *\nub_winsock_register_wsaevent(struct ub_event_base*
      base, void* wsaevent,\n\tvoid (*cb)(int, short, void*), void* arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/ub_event_pluggable.c:548,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ev
    - bits
    argTypes:
    - struct ub_event*
    - short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 544
    functionDepth: 1
    functionLinenumber: 544
    functionLinenumberEnd: 552
    functionName: ub_event_add_bits
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 5
    functionsReached:
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: void ub_event_add_bits(struct ub_event* ev, short bits)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/ub_event_pluggable.c:558,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ev
    - bits
    argTypes:
    - struct ub_event*
    - short
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 562
      start: 554
    functionDepth: 1
    functionLinenumber: 554
    functionLinenumberEnd: 562
    functionName: ub_event_del_bits
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 5
    functionsReached:
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: void ub_event_del_bits(struct ub_event* ev, short bits)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/ub_event_pluggable.c:568,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 2
    argNames:
    - ev
    - fd
    argTypes:
    - struct ub_event*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 572
      start: 564
    functionDepth: 1
    functionLinenumber: 564
    functionLinenumberEnd: 572
    functionName: ub_event_set_fd
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: void ub_event_set_fd(struct ub_event* ev, int fd)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/ub_event_pluggable.c:578,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct ub_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 582
      start: 574
    functionDepth: 1
    functionLinenumber: 574
    functionLinenumberEnd: 582
    functionName: ub_event_free
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 9
    functionsReached:
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: void ub_event_free(struct ub_event* ev)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/ub_event_pluggable.c:588,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ev
    - tv
    argTypes:
    - struct ub_event*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 584
    functionDepth: 1
    functionLinenumber: 584
    functionLinenumberEnd: 593
    functionName: ub_event_add
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 13
    functionsReached:
    - fptr_ok
    linkageType: ''
    returnType: int
    signature: int ub_event_add(struct ub_event* ev, struct timeval* tv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/ub_event_pluggable.c:599,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct ub_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 604
      start: 595
    functionDepth: 1
    functionLinenumber: 595
    functionLinenumberEnd: 604
    functionName: ub_event_del
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 15
    functionsReached:
    - fptr_ok
    linkageType: ''
    returnType: int
    signature: int ub_event_del(struct ub_event* ev)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/ub_event_pluggable.c:611,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 4
    argNames:
    - ev
    - base
    - arg
    - tv
    argTypes:
    - struct ub_event*
    - struct ub_event_base*
    - void*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 616
      start: 606
    functionDepth: 1
    functionLinenumber: 606
    functionLinenumberEnd: 616
    functionName: ub_timer_add
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 3
    functionsReached:
    - fptr_ok
    linkageType: ''
    returnType: int
    signature: "int ub_timer_add(struct ub_event* ev, struct ub_event_base* base,\n\tvoid
      (*cb)(int, short, void*), void* arg, struct timeval* tv)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/ub_event_pluggable.c:622,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct ub_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 618
    functionDepth: 1
    functionLinenumber: 618
    functionLinenumberEnd: 627
    functionName: ub_timer_del
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 4
    functionsReached:
    - fptr_ok
    linkageType: ''
    returnType: int
    signature: int ub_timer_del(struct ub_event* ev)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/ub_event_pluggable.c:633,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - ev
    - tv
    argTypes:
    - struct ub_event*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 638
      start: 629
    functionDepth: 1
    functionLinenumber: 629
    functionLinenumberEnd: 638
    functionName: ub_signal_add
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - fptr_ok
    linkageType: ''
    returnType: int
    signature: int ub_signal_add(struct ub_event* ev, struct timeval* tv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/ub_event_pluggable.c:644,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct ub_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 640
    functionDepth: 1
    functionLinenumber: 640
    functionLinenumberEnd: 649
    functionName: ub_signal_del
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - fptr_ok
    linkageType: ''
    returnType: int
    signature: int ub_signal_del(struct ub_event* ev)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/ub_event_pluggable.c:655,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 1
    argNames:
    - ev
    argTypes:
    - struct ub_event*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 660
      start: 651
    functionDepth: 1
    functionLinenumber: 651
    functionLinenumberEnd: 660
    functionName: ub_winsock_unregister_wsaevent
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 0
    functionsReached:
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: void ub_winsock_unregister_wsaevent(struct ub_event* ev)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/ub_event_pluggable.c:666,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - ev
    - eventbits
    argTypes:
    - struct ub_event*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 662
    functionDepth: 1
    functionLinenumber: 662
    functionLinenumberEnd: 672
    functionName: ub_winsock_tcp_wouldblock
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 11
    functionsReached:
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: void ub_winsock_tcp_wouldblock(struct ub_event* ev, int eventbits)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: comm_base_internal
      Src: /src/unbound/util/ub_event_pluggable.c:681,1
    - Dst: comm_base_internal
      Src: /src/unbound/util/ub_event_pluggable.c:682,1
    - Dst: comm_base_timept
      Src: /src/unbound/util/ub_event_pluggable.c:687,1
    - Dst: gettimeofday
      Src: /src/unbound/util/ub_event_pluggable.c:688,1
    - Dst: log_err
      Src: /src/unbound/util/ub_event_pluggable.c:689,1
    - Dst: strerror
      Src: /src/unbound/util/ub_event_pluggable.c:689,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - cb
    argTypes:
    - struct comm_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 694
      start: 674
    functionDepth: 7
    functionLinenumber: 674
    functionLinenumberEnd: 694
    functionName: ub_comm_base_now
    functionSourceFile: /src/unbound/util/ub_event_pluggable.c
    functionUses: 1
    functionsReached:
    - log_err
    - strerror
    - gettimeofday
    - comm_base_internal
    - comm_base_timept
    linkageType: ''
    returnType: void
    signature: void ub_comm_base_now(struct comm_base* cb)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - f
    - ','
    - t
    - ','
    - p
    - ','
    - sv
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 57
    functionDepth: 0
    functionLinenumber: 57
    functionLinenumberEnd: 58
    functionName: socketpair
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: socketpair(f, t, p, sv)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/tube.c:62,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:66,1
    - Dst: socketpair
      Src: /src/unbound/util/tube.c:72,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:74,1
    - Dst: strerror
      Src: /src/unbound/util/tube.c:74,1
    - Dst: free
      Src: /src/unbound/util/tube.c:75,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/util/tube.c:81,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/util/tube.c:81,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:83,1
    - Dst: tube_delete
      Src: /src/unbound/util/tube.c:84,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 89
      start: 60
    functionDepth: 7
    functionLinenumber: 60
    functionLinenumberEnd: 89
    functionName: tube_create
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 2
    functionsReached:
    - log_err
    - tube_delete
    - free
    - fd_set_nonblock
    - calloc
    - socketpair
    - strerror
    linkageType: ''
    returnType: struct tube
    signature: struct tube * tube_create(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: tube_remove_bg_listen
      Src: /src/unbound/util/tube.c:94,1
    - Dst: tube_remove_bg_write
      Src: /src/unbound/util/tube.c:95,1
    - Dst: tube_close_read
      Src: /src/unbound/util/tube.c:98,1
    - Dst: tube_close_write
      Src: /src/unbound/util/tube.c:99,1
    - Dst: free
      Src: /src/unbound/util/tube.c:100,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - tube
    argTypes:
    - struct tube*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 91
    functionDepth: 1
    functionLinenumber: 91
    functionLinenumberEnd: 101
    functionName: tube_delete
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 6
    functionsReached:
    - tube_remove_bg_listen
    - tube_close_write
    - tube_close_read
    - free
    - tube_remove_bg_write
    linkageType: ''
    returnType: void
    signature: void tube_delete(struct tube* tube)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/unbound/util/tube.c:106,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tube
    argTypes:
    - struct tube*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 109
    functionName: tube_close_read
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 5
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void tube_close_read(struct tube* tube)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/unbound/util/tube.c:114,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - tube
    argTypes:
    - struct tube*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 111
    functionDepth: 0
    functionLinenumber: 111
    functionLinenumberEnd: 117
    functionName: tube_close_write
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 4
    functionsReached:
    - close
    linkageType: ''
    returnType: void
    signature: void tube_close_write(struct tube* tube)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: comm_point_delete
      Src: /src/unbound/util/tube.c:122,1
    - Dst: free
      Src: /src/unbound/util/tube.c:125,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - tube
    argTypes:
    - struct tube*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 127
    functionName: tube_remove_bg_listen
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 2
    functionsReached:
    - free
    - comm_point_delete
    linkageType: ''
    returnType: void
    signature: void tube_remove_bg_listen(struct tube* tube)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: comm_point_delete
      Src: /src/unbound/util/tube.c:132,1
    - Dst: free
      Src: /src/unbound/util/tube.c:141,1
    - Dst: free
      Src: /src/unbound/util/tube.c:142,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 1
    argNames:
    - tube
    argTypes:
    - struct tube*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 146
      start: 129
    functionDepth: 1
    functionLinenumber: 129
    functionLinenumberEnd: 146
    functionName: tube_remove_bg_write
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 2
    functionsReached:
    - free
    - comm_point_delete
    linkageType: ''
    returnType: void
    signature: void tube_remove_bg_write(struct tube* tube)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/unbound/util/tube.c:155,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 6
    argCount: 2
    argNames:
    - fd
    - len
    argTypes:
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 149
    functionDepth: 0
    functionLinenumber: 149
    functionLinenumberEnd: 160
    functionName: fd_drain
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 0
    functionsReached:
    - read
    linkageType: ''
    returnType: void
    signature: void fd_drain(int fd, uint32_t len)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/tube.c:169,1
    - Dst: fptr_whitelist_tube_listen
      Src: /src/unbound/util/tube.c:169,1
    - Dst: read
      Src: /src/unbound/util/tube.c:176,1
    - Dst: fptr_ok
      Src: /src/unbound/util/tube.c:181,1
    - Dst: fptr_whitelist_tube_listen
      Src: /src/unbound/util/tube.c:181,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:188,1
    - Dst: strerror
      Src: /src/unbound/util/tube.c:188,1
    - Dst: calloc
      Src: /src/unbound/util/tube.c:198,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:200,1
    - Dst: fd_drain
      Src: /src/unbound/util/tube.c:203,1
    - Dst: read
      Src: /src/unbound/util/tube.c:209,1
    - Dst: fptr_ok
      Src: /src/unbound/util/tube.c:214,1
    - Dst: fptr_whitelist_tube_listen
      Src: /src/unbound/util/tube.c:214,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:222,1
    - Dst: strerror
      Src: /src/unbound/util/tube.c:222,1
    - Dst: fptr_ok
      Src: /src/unbound/util/tube.c:233,1
    - Dst: fptr_whitelist_tube_listen
      Src: /src/unbound/util/tube.c:233,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 52
    argCount: 4
    argNames:
    - c
    - arg
    - error
    - ATTR_UNUSED(reply_info)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 162
    functionDepth: 7
    functionLinenumber: 162
    functionLinenumberEnd: 239
    functionName: tube_handle_listen
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 0
    functionsReached:
    - log_err
    - read
    - fptr_ok
    - fd_drain
    - calloc
    - strerror
    - fptr_whitelist_tube_listen
    linkageType: ''
    returnType: int
    signature: "int tube_handle_listen(struct comm_point* c, void* arg, int error,\n
      \       struct comm_reply* ATTR_UNUSED(reply_info))"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/util/tube.c:249,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/util/tube.c:254,1
    - Dst: write
      Src: /src/unbound/util/tube.c:259,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:263,1
    - Dst: strerror
      Src: /src/unbound/util/tube.c:263,1
    - Dst: write
      Src: /src/unbound/util/tube.c:276,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:280,1
    - Dst: strerror
      Src: /src/unbound/util/tube.c:280,1
    - Dst: free
      Src: /src/unbound/util/tube.c:293,1
    - Dst: free
      Src: /src/unbound/util/tube.c:296,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/util/tube.c:299,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 47
    argCount: 4
    argNames:
    - c
    - arg
    - error
    - ATTR_UNUSED(reply_info)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 303
      start: 241
    functionDepth: 7
    functionLinenumber: 241
    functionLinenumberEnd: 303
    functionName: tube_handle_write
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 0
    functionsReached:
    - log_err
    - comm_point_stop_listening
    - free
    - write
    - strerror
    linkageType: ''
    returnType: int
    signature: "int tube_handle_write(struct comm_point* c, void* arg, int error,\n
      \       struct comm_reply* ATTR_UNUSED(reply_info))"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: write
      Src: /src/unbound/util/tube.c:313,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:317,1
    - Dst: strerror
      Src: /src/unbound/util/tube.c:317,1
    - Dst: fd_set_block
      Src: /src/unbound/util/tube.c:321,1
    - Dst: write
      Src: /src/unbound/util/tube.c:326,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:329,1
    - Dst: strerror
      Src: /src/unbound/util/tube.c:329,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/util/tube.c:330,1
    - Dst: write
      Src: /src/unbound/util/tube.c:337,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:340,1
    - Dst: strerror
      Src: /src/unbound/util/tube.c:340,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/util/tube.c:341,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/util/tube.c:346,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 38
    argCount: 4
    argNames:
    - tube
    - buf
    - len
    - nonblock
    argTypes:
    - struct tube*
    - uint8_t*
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 349
      start: 305
    functionDepth: 7
    functionLinenumber: 305
    functionLinenumberEnd: 349
    functionName: tube_write_msg
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 7
    functionsReached:
    - log_err
    - write
    - fd_set_nonblock
    - strerror
    - fd_set_block
    linkageType: ''
    returnType: int
    signature: "int tube_write_msg(struct tube* tube, uint8_t* buf, uint32_t len,
      \n        int nonblock)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: read
      Src: /src/unbound/util/tube.c:360,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:364,1
    - Dst: strerror
      Src: /src/unbound/util/tube.c:364,1
    - Dst: fd_set_block
      Src: /src/unbound/util/tube.c:370,1
    - Dst: read
      Src: /src/unbound/util/tube.c:375,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:376,1
    - Dst: strerror
      Src: /src/unbound/util/tube.c:376,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/util/tube.c:377,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/util/tube.c:381,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:387,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/util/tube.c:388,1
    - Dst: malloc
      Src: /src/unbound/util/tube.c:391,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:393,1
    - Dst: fd_drain
      Src: /src/unbound/util/tube.c:396,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/util/tube.c:397,1
    - Dst: read
      Src: /src/unbound/util/tube.c:402,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:403,1
    - Dst: strerror
      Src: /src/unbound/util/tube.c:403,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/util/tube.c:404,1
    - Dst: free
      Src: /src/unbound/util/tube.c:405,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/util/tube.c:409,1
    - Dst: free
      Src: /src/unbound/util/tube.c:410,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/util/tube.c:415,1
    - Dst: free
      Src: /src/unbound/util/tube.c:416,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 61
    argCount: 4
    argNames:
    - tube
    - buf
    - len
    - nonblock
    argTypes:
    - struct tube*
    - uint8_t**
    - uint32_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 351
    functionDepth: 7
    functionLinenumber: 351
    functionLinenumberEnd: 420
    functionName: tube_read_msg
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 6
    functionsReached:
    - log_err
    - read
    - malloc
    - fd_set_nonblock
    - fd_drain
    - free
    - strerror
    - fd_set_block
    linkageType: ''
    returnType: int
    signature: "int tube_read_msg(struct tube* tube, uint8_t** buf, uint32_t* len,
      \n        int nonblock)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/util/tube.c:429,1
    - Dst: poll
      Src: /src/unbound/util/tube.c:437,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 2
    argNames:
    - fd
    - t
    argTypes:
    - int
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 444
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 444
    functionName: pollit
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 0
    functionsReached:
    - memset
    - poll
    linkageType: ''
    returnType: int
    signature: int pollit(int fd, struct timeval* t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/util/tube.c:449,1
    - Dst: pollit
      Src: /src/unbound/util/tube.c:450,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - tube
    argTypes:
    - struct tube*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 451
      start: 446
    functionDepth: 1
    functionLinenumber: 446
    functionLinenumberEnd: 451
    functionName: tube_poll
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 1
    functionsReached:
    - pollit
    - memset
    linkageType: ''
    returnType: int
    signature: int tube_poll(struct tube* tube)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: pollit
      Src: /src/unbound/util/tube.c:455,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tube
    argTypes:
    - struct tube*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 456
      start: 453
    functionDepth: 1
    functionLinenumber: 453
    functionLinenumberEnd: 456
    functionName: tube_wait
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 1
    functionsReached:
    - pollit
    linkageType: ''
    returnType: int
    signature: int tube_wait(struct tube* tube)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/util/tube.c:464,1
    - Dst: poll
      Src: /src/unbound/util/tube.c:468,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 16
    argCount: 2
    argNames:
    - tube
    - msec
    argTypes:
    - struct tube*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 481
      start: 458
    functionDepth: 0
    functionLinenumber: 458
    functionLinenumberEnd: 481
    functionName: tube_wait_timeout
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 1
    functionsReached:
    - memset
    - poll
    linkageType: ''
    returnType: int
    signature: int tube_wait_timeout(struct tube* tube, int msec)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tube
    argTypes:
    - struct tube*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 486
      start: 483
    functionDepth: 0
    functionLinenumber: 483
    functionLinenumberEnd: 486
    functionName: tube_read_fd
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int tube_read_fd(struct tube* tube)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: comm_point_create_raw
      Src: /src/unbound/util/tube.c:493,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:496,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 4
    argNames:
    - tube
    - base
    - cb
    - arg
    argTypes:
    - struct tube*
    - struct comm_base*
    - tube_callback_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 501
      start: 488
    functionDepth: 7
    functionLinenumber: 488
    functionLinenumberEnd: 501
    functionName: tube_setup_bg_listen
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 2
    functionsReached:
    - comm_point_create_raw
    - log_err
    linkageType: ''
    returnType: int
    signature: "int tube_setup_bg_listen(struct tube* tube, struct comm_base* base,\n
      \       tube_callback_type* cb, void* arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: comm_point_create_raw
      Src: /src/unbound/util/tube.c:505,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:508,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - tube
    - base
    argTypes:
    - struct tube*
    - struct comm_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 513
      start: 503
    functionDepth: 7
    functionLinenumber: 503
    functionLinenumberEnd: 513
    functionName: tube_setup_bg_write
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 1
    functionsReached:
    - comm_point_create_raw
    - log_err
    linkageType: ''
    returnType: int
    signature: int tube_setup_bg_write(struct tube* tube, struct comm_base* base)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/util/tube.c:519,1
    - Dst: free
      Src: /src/unbound/util/tube.c:521,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:522,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/util/tube.c:535,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 3
    argNames:
    - tube
    - msg
    - len
    argTypes:
    - struct tube*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 515
    functionDepth: 7
    functionLinenumber: 515
    functionLinenumberEnd: 538
    functionName: tube_queue_item
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 1
    functionsReached:
    - malloc
    - log_err
    - comm_point_start_listening
    - free
    linkageType: ''
    returnType: int
    signature: int tube_queue_item(struct tube* tube, uint8_t* msg, size_t len)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/tube.c:543,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 544
      start: 540
    functionDepth: 1
    functionLinenumber: 540
    functionLinenumberEnd: 544
    functionName: tube_handle_signal
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void tube_handle_signal(int ATTR_UNUSED(fd), short ATTR_UNUSED(events),
      \n\tvoid* ATTR_UNUSED(arg))"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/tube.c:555,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:558,1
    - Dst: WSACreateEvent
      Src: /src/unbound/util/tube.c:562,1
    - Dst: free
      Src: /src/unbound/util/tube.c:564,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:565,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/tube.c:565,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/tube.c:565,1
    - Dst: WSAResetEvent
      Src: /src/unbound/util/tube.c:568,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:569,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/tube.c:569,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/tube.c:569,1
    - Dst: lock_basic_init
      Src: /src/unbound/util/tube.c:571,1
    - Dst: verbose
      Src: /src/unbound/util/tube.c:572,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 574
      start: 550
    functionDepth: 7
    functionLinenumber: 550
    functionLinenumberEnd: 574
    functionName: tube_create
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 2
    functionsReached:
    - log_err
    - wsa_strerror
    - WSACreateEvent
    - verbose
    - WSAGetLastError
    - lock_basic_init
    - free
    - WSAResetEvent
    - calloc
    linkageType: ''
    returnType: struct tube
    signature: struct tube * tube_create(void)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tube_remove_bg_listen
      Src: /src/unbound/util/tube.c:579,1
    - Dst: tube_remove_bg_write
      Src: /src/unbound/util/tube.c:580,1
    - Dst: tube_close_read
      Src: /src/unbound/util/tube.c:581,1
    - Dst: tube_close_write
      Src: /src/unbound/util/tube.c:582,1
    - Dst: WSACloseEvent
      Src: /src/unbound/util/tube.c:583,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:584,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/tube.c:584,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/tube.c:584,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/util/tube.c:585,1
    - Dst: verbose
      Src: /src/unbound/util/tube.c:586,1
    - Dst: free
      Src: /src/unbound/util/tube.c:587,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - tube
    argTypes:
    - struct tube*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 588
      start: 576
    functionDepth: 7
    functionLinenumber: 576
    functionLinenumberEnd: 588
    functionName: tube_delete
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 6
    functionsReached:
    - log_err
    - wsa_strerror
    - verbose
    - WSAGetLastError
    - WSACloseEvent
    - tube_remove_bg_listen
    - tube_close_write
    - tube_close_read
    - free
    - tube_remove_bg_write
    - lock_basic_destroy
    linkageType: ''
    returnType: void
    signature: void tube_delete(struct tube* tube)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/tube.c:592,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(tube)
    argTypes:
    - struct tube*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 590
    functionDepth: 7
    functionLinenumber: 590
    functionLinenumberEnd: 593
    functionName: tube_close_read
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 6
    functionsReached:
    - verbose
    linkageType: ''
    returnType: void
    signature: void tube_close_read(struct tube* ATTR_UNUSED(tube))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/tube.c:597,1
    - Dst: WSASetEvent
      Src: /src/unbound/util/tube.c:599,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:600,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/tube.c:600,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/tube.c:600,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - ATTR_UNUSED(tube)
    argTypes:
    - struct tube*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 602
      start: 595
    functionDepth: 7
    functionLinenumber: 595
    functionLinenumberEnd: 602
    functionName: tube_close_write
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 5
    functionsReached:
    - log_err
    - wsa_strerror
    - WSASetEvent
    - verbose
    - WSAGetLastError
    linkageType: ''
    returnType: void
    signature: void tube_close_write(struct tube* ATTR_UNUSED(tube))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/tube.c:606,1
    - Dst: ub_winsock_unregister_wsaevent
      Src: /src/unbound/util/tube.c:608,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - tube
    argTypes:
    - struct tube*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 604
    functionDepth: 7
    functionLinenumber: 604
    functionLinenumberEnd: 611
    functionName: tube_remove_bg_listen
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 3
    functionsReached:
    - verbose
    - ub_winsock_unregister_wsaevent
    linkageType: ''
    returnType: void
    signature: void tube_remove_bg_listen(struct tube* tube)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/tube.c:615,1
    - Dst: free
      Src: /src/unbound/util/tube.c:622,1
    - Dst: free
      Src: /src/unbound/util/tube.c:623,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - tube
    argTypes:
    - struct tube*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 613
    functionDepth: 7
    functionLinenumber: 613
    functionLinenumberEnd: 627
    functionName: tube_remove_bg_write
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 3
    functionsReached:
    - free
    - verbose
    linkageType: ''
    returnType: void
    signature: void tube_remove_bg_write(struct tube* tube)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/tube.c:633,1
    - Dst: memdup
      Src: /src/unbound/util/tube.c:634,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:636,1
    - Dst: tube_queue_item
      Src: /src/unbound/util/tube.c:640,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 4
    argNames:
    - tube
    - buf
    - len
    - ATTR_UNUSED
    argTypes:
    - struct tube*
    - uint8_t*
    - uint32_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 641
      start: 629
    functionDepth: 8
    functionLinenumber: 629
    functionLinenumberEnd: 641
    functionName: tube_write_msg
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 7
    functionsReached:
    - verbose
    - memdup
    - tube_queue_item
    - log_err
    linkageType: ''
    returnType: int
    signature: "int tube_write_msg(struct tube* tube, uint8_t* buf, uint32_t len,
      \n        int ATTR_UNUSED(nonblock))"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/tube.c:647,1
    - Dst: tube_poll
      Src: /src/unbound/util/tube.c:649,1
    - Dst: verbose
      Src: /src/unbound/util/tube.c:650,1
    - Dst: tube_wait
      Src: /src/unbound/util/tube.c:654,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/tube.c:657,1
    - Dst: verbose
      Src: /src/unbound/util/tube.c:664,1
    - Dst: WSAResetEvent
      Src: /src/unbound/util/tube.c:665,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:666,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/tube.c:667,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/tube.c:667,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/tube.c:671,1
    - Dst: free
      Src: /src/unbound/util/tube.c:676,1
    - Dst: verbose
      Src: /src/unbound/util/tube.c:677,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 30
    argCount: 4
    argNames:
    - tube
    - buf
    - len
    - nonblock
    argTypes:
    - struct tube*
    - uint8_t**
    - uint32_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 679
      start: 643
    functionDepth: 7
    functionLinenumber: 643
    functionLinenumberEnd: 679
    functionName: tube_read_msg
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 6
    functionsReached:
    - log_err
    - wsa_strerror
    - tube_poll
    - verbose
    - lock_basic_unlock
    - WSAGetLastError
    - free
    - WSAResetEvent
    - lock_basic_lock
    - tube_wait
    linkageType: ''
    returnType: int
    signature: "int tube_read_msg(struct tube* tube, uint8_t** buf, uint32_t* len,
      \n        int nonblock)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_lock
      Src: /src/unbound/util/tube.c:684,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/tube.c:686,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - tube
    argTypes:
    - struct tube*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 690
      start: 681
    functionDepth: 0
    functionLinenumber: 681
    functionLinenumberEnd: 690
    functionName: tube_poll
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 2
    functionsReached:
    - lock_basic_unlock
    - lock_basic_lock
    linkageType: ''
    returnType: int
    signature: int tube_poll(struct tube* tube)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: WSAWaitForMultipleEvents
      Src: /src/unbound/util/tube.c:695,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - tube
    argTypes:
    - struct tube*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 692
    functionDepth: 0
    functionLinenumber: 692
    functionLinenumberEnd: 710
    functionName: tube_wait
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 2
    functionsReached:
    - WSAWaitForMultipleEvents
    linkageType: ''
    returnType: int
    signature: int tube_wait(struct tube* tube)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: WSAWaitForMultipleEvents
      Src: /src/unbound/util/tube.c:715,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - tube
    - msec
    argTypes:
    - struct tube*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 730
      start: 712
    functionDepth: 0
    functionLinenumber: 712
    functionLinenumberEnd: 730
    functionName: tube_wait_timeout
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 1
    functionsReached:
    - WSAWaitForMultipleEvents
    linkageType: ''
    returnType: int
    signature: int tube_wait_timeout(struct tube* tube, int msec)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(tube)
    argTypes:
    - struct tube*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 736
      start: 732
    functionDepth: 0
    functionLinenumber: 732
    functionLinenumberEnd: 736
    functionName: tube_read_fd
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int tube_read_fd(struct tube* ATTR_UNUSED(tube))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/tube.c:742,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(reply_info)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 744
      start: 738
    functionDepth: 1
    functionLinenumber: 738
    functionLinenumberEnd: 744
    functionName: tube_handle_listen
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int tube_handle_listen(struct comm_point* ATTR_UNUSED(c), void* ATTR_UNUSED(arg),
      \n\tint ATTR_UNUSED(error), struct comm_reply* ATTR_UNUSED(reply_info))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/tube.c:750,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(reply_info)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 752
      start: 746
    functionDepth: 1
    functionLinenumber: 746
    functionLinenumberEnd: 752
    functionName: tube_handle_write
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int tube_handle_write(struct comm_point* ATTR_UNUSED(c), void* ATTR_UNUSED(arg),
      \n\tint ATTR_UNUSED(error), struct comm_reply* ATTR_UNUSED(reply_info))"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: comm_base_internal
      Src: /src/unbound/util/tube.c:759,1
    - Dst: ub_winsock_register_wsaevent
      Src: /src/unbound/util/tube.c:761,1
    - Dst: comm_base_internal
      Src: /src/unbound/util/tube.c:762,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - tube
    - base
    - cb
    - arg
    argTypes:
    - struct tube*
    - struct comm_base*
    - tube_callback_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 764
      start: 754
    functionDepth: 0
    functionLinenumber: 754
    functionLinenumberEnd: 764
    functionName: tube_setup_bg_listen
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 2
    functionsReached:
    - comm_base_internal
    - ub_winsock_register_wsaevent
    linkageType: ''
    returnType: int
    signature: "int tube_setup_bg_listen(struct tube* tube, struct comm_base* base,\n
      \       tube_callback_type* cb, void* arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED(tube)
    - ATTR_UNUSED(base)
    argTypes:
    - struct tube*
    - struct comm_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 771
      start: 766
    functionDepth: 0
    functionLinenumber: 766
    functionLinenumberEnd: 771
    functionName: tube_setup_bg_write
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int tube_setup_bg_write(struct tube* ATTR_UNUSED(tube), \n\tstruct
      comm_base* ATTR_UNUSED(base))"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/util/tube.c:777,1
    - Dst: verbose
      Src: /src/unbound/util/tube.c:778,1
    - Dst: free
      Src: /src/unbound/util/tube.c:780,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:781,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/tube.c:787,1
    - Dst: WSASetEvent
      Src: /src/unbound/util/tube.c:794,1
    - Dst: log_err
      Src: /src/unbound/util/tube.c:795,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/tube.c:795,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/tube.c:795,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/tube.c:797,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 23
    argCount: 3
    argNames:
    - tube
    - msg
    - len
    argTypes:
    - struct tube*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 799
      start: 773
    functionDepth: 7
    functionLinenumber: 773
    functionLinenumberEnd: 799
    functionName: tube_queue_item
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 2
    functionsReached:
    - log_err
    - wsa_strerror
    - WSASetEvent
    - verbose
    - lock_basic_unlock
    - WSAGetLastError
    - malloc
    - free
    - lock_basic_lock
    linkageType: ''
    returnType: int
    signature: int tube_queue_item(struct tube* tube, uint8_t* msg, size_t len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/tube.c:807,1
    - Dst: tube_poll
      Src: /src/unbound/util/tube.c:808,1
    - Dst: tube_read_msg
      Src: /src/unbound/util/tube.c:809,1
    - Dst: fptr_ok
      Src: /src/unbound/util/tube.c:810,1
    - Dst: fptr_whitelist_tube_listen
      Src: /src/unbound/util/tube.c:810,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 801
    functionDepth: 8
    functionLinenumber: 801
    functionLinenumberEnd: 815
    functionName: tube_handle_signal
    functionSourceFile: /src/unbound/util/tube.c
    functionUses: 0
    functionsReached:
    - tube_poll
    - verbose
    - fptr_ok
    - tube_read_msg
    - fptr_whitelist_tube_listen
    linkageType: ''
    returnType: void
    signature: "void tube_handle_signal(int ATTR_UNUSED(fd), short ATTR_UNUSED(events),
      \n\tvoid* arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/util/alloc.c:57,1
    - Dst: lock_rw_init
      Src: /src/unbound/util/alloc.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - t
    argTypes:
    - alloc_special_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 60
      start: 54
    functionDepth: 0
    functionLinenumber: 54
    functionLinenumberEnd: 60
    functionName: alloc_setup_special
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - memset
    - lock_rw_init
    linkageType: ''
    returnType: void
    signature: void alloc_setup_special(alloc_special_type* t)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/util/alloc.c:72,1
    - Dst: log_err
      Src: /src/unbound/util/alloc.c:74,1
    - Dst: alloc_setup_special
      Src: /src/unbound/util/alloc.c:77,1
    - Dst: alloc_set_special_next
      Src: /src/unbound/util/alloc.c:78,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - alloc
    argTypes:
    - struct alloc_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 82
      start: 66
    functionDepth: 7
    functionLinenumber: 66
    functionLinenumberEnd: 82
    functionName: prealloc_setup
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - malloc
    - log_err
    - alloc_setup_special
    - alloc_set_special_next
    linkageType: ''
    returnType: void
    signature: void prealloc_setup(struct alloc_cache* alloc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_create_custom
      Src: /src/unbound/util/alloc.c:91,1
    - Dst: log_err
      Src: /src/unbound/util/alloc.c:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - alloc
    - num
    argTypes:
    - struct alloc_cache*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 100
      start: 85
    functionDepth: 7
    functionLinenumber: 85
    functionLinenumberEnd: 100
    functionName: prealloc_blocks
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - log_err
    - regional_create_custom
    linkageType: ''
    returnType: void
    signature: void prealloc_blocks(struct alloc_cache* alloc, size_t num)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/util/alloc.c:106,1
    - Dst: prealloc_blocks
      Src: /src/unbound/util/alloc.c:122,1
    - Dst: lock_quick_init
      Src: /src/unbound/util/alloc.c:124,1
    - Dst: lock_protect
      Src: /src/unbound/util/alloc.c:125,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 22
    argCount: 3
    argNames:
    - alloc
    - super
    - thread_num
    argTypes:
    - struct alloc_cache*
    - struct alloc_cache*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 102
    functionDepth: 8
    functionLinenumber: 102
    functionLinenumberEnd: 127
    functionName: alloc_init
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 57
    functionsReached:
    - lock_protect
    - memset
    - prealloc_blocks
    - lock_quick_init
    linkageType: ''
    returnType: void
    signature: "void alloc_init(struct alloc_cache* alloc, struct alloc_cache* super,\n\tint
      thread_num)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: alloc_special_next
      Src: /src/unbound/util/alloc.c:137,1
    - Dst: lock_rw_destroy
      Src: /src/unbound/util/alloc.c:139,1
    - Dst: free
      Src: /src/unbound/util/alloc.c:140,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - alloc
    argTypes:
    - struct alloc_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 130
    functionDepth: 1
    functionLinenumber: 130
    functionLinenumberEnd: 143
    functionName: alloc_clear_special_list
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - free
    - lock_rw_destroy
    - alloc_special_next
    linkageType: ''
    returnType: void
    signature: void alloc_clear_special_list(struct alloc_cache* alloc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_lock
      Src: /src/unbound/util/alloc.c:149,1
    - Dst: alloc_clear_special_list
      Src: /src/unbound/util/alloc.c:151,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/alloc.c:155,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - alloc
    argTypes:
    - struct alloc_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 145
    functionDepth: 2
    functionLinenumber: 145
    functionLinenumberEnd: 157
    functionName: alloc_clear_special
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 1
    functionsReached:
    - lock_quick_unlock
    - lock_quick_lock
    - alloc_clear_special_list
    linkageType: ''
    returnType: void
    signature: void alloc_clear_special(struct alloc_cache* alloc)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_destroy
      Src: /src/unbound/util/alloc.c:167,1
    - Dst: alloc_special_next
      Src: /src/unbound/util/alloc.c:172,1
    - Dst: alloc_special_next
      Src: /src/unbound/util/alloc.c:173,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/alloc.c:174,1
    - Dst: alloc_set_special_next
      Src: /src/unbound/util/alloc.c:175,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/alloc.c:178,1
    - Dst: alloc_clear_special_list
      Src: /src/unbound/util/alloc.c:180,1
    - Dst: free
      Src: /src/unbound/util/alloc.c:187,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 1
    argNames:
    - alloc
    argTypes:
    - struct alloc_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 159
    functionDepth: 2
    functionLinenumber: 159
    functionLinenumberEnd: 192
    functionName: alloc_clear
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 10
    functionsReached:
    - alloc_special_next
    - lock_quick_destroy
    - lock_quick_unlock
    - alloc_set_special_next
    - free
    - lock_quick_lock
    - alloc_clear_special_list
    linkageType: ''
    returnType: void
    signature: void alloc_clear(struct alloc_cache* alloc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_warn
      Src: /src/unbound/util/alloc.c:199,1
    - Dst: fptr_ok
      Src: /src/unbound/util/alloc.c:200,1
    - Dst: fptr_whitelist_alloc_cleanup
      Src: /src/unbound/util/alloc.c:200,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 1
    argNames:
    - alloc
    argTypes:
    - struct alloc_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 194
    functionDepth: 7
    functionLinenumber: 194
    functionLinenumberEnd: 211
    functionName: alloc_get_id
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 1
    functionsReached:
    - fptr_whitelist_alloc_cleanup
    - log_warn
    - fptr_ok
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t alloc_get_id(struct alloc_cache* alloc)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/alloc.c:217,1
    - Dst: alloc_special_next
      Src: /src/unbound/util/alloc.c:221,1
    - Dst: alloc_get_id
      Src: /src/unbound/util/alloc.c:223,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/alloc.c:230,1
    - Dst: alloc_special_next
      Src: /src/unbound/util/alloc.c:232,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/alloc.c:235,1
    - Dst: alloc_get_id
      Src: /src/unbound/util/alloc.c:237,1
    - Dst: prealloc_setup
      Src: /src/unbound/util/alloc.c:242,1
    - Dst: malloc
      Src: /src/unbound/util/alloc.c:243,1
    - Dst: log_err
      Src: /src/unbound/util/alloc.c:244,1
    - Dst: alloc_setup_special
      Src: /src/unbound/util/alloc.c:247,1
    - Dst: alloc_get_id
      Src: /src/unbound/util/alloc.c:248,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 1
    argNames:
    - alloc
    argTypes:
    - struct alloc_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 213
    functionDepth: 8
    functionLinenumber: 213
    functionLinenumberEnd: 250
    functionName: alloc_special_obtain
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 3
    functionsReached:
    - log_err
    - alloc_special_next
    - alloc_setup_special
    - prealloc_setup
    - alloc_get_id
    - lock_quick_unlock
    - malloc
    - lock_quick_lock
    - log_assert
    linkageType: ''
    returnType: alloc_special_type
    signature: "alloc_special_type * \nalloc_special_obtain(struct alloc_cache* alloc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/alloc.c:258,1
    - Dst: log_assert
      Src: /src/unbound/util/alloc.c:259,1
    - Dst: alloc_set_special_next
      Src: /src/unbound/util/alloc.c:262,1
    - Dst: alloc_special_next
      Src: /src/unbound/util/alloc.c:264,1
    - Dst: alloc_special_next
      Src: /src/unbound/util/alloc.c:266,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/alloc.c:270,1
    - Dst: alloc_set_special_next
      Src: /src/unbound/util/alloc.c:271,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/alloc.c:274,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - alloc
    - mem
    argTypes:
    - struct alloc_cache*
    - alloc_special_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 253
    functionDepth: 1
    functionLinenumber: 253
    functionLinenumberEnd: 276
    functionName: pushintosuper
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - alloc_special_next
    - lock_quick_unlock
    - alloc_set_special_next
    - log_assert
    - lock_quick_lock
    linkageType: ''
    returnType: void
    signature: void pushintosuper(struct alloc_cache* alloc, alloc_special_type* mem)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/alloc.c:281,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/alloc.c:285,1
    - Dst: alloc_special_clean
      Src: /src/unbound/util/alloc.c:288,1
    - Dst: pushintosuper
      Src: /src/unbound/util/alloc.c:291,1
    - Dst: alloc_set_special_next
      Src: /src/unbound/util/alloc.c:295,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/alloc.c:299,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - alloc
    - mem
    argTypes:
    - struct alloc_cache*
    - alloc_special_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 301
      start: 278
    functionDepth: 2
    functionLinenumber: 278
    functionLinenumberEnd: 301
    functionName: alloc_special_release
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 2
    functionsReached:
    - pushintosuper
    - alloc_special_clean
    - lock_quick_unlock
    - alloc_set_special_next
    - lock_quick_lock
    - log_assert
    linkageType: ''
    returnType: void
    signature: void alloc_special_release(struct alloc_cache* alloc, alloc_special_type*
      mem)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/util/alloc.c:306,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - alloc
    argTypes:
    - struct alloc_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 303
    functionDepth: 7
    functionLinenumber: 303
    functionLinenumberEnd: 308
    functionName: alloc_stats
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 1
    functionsReached:
    - log_info
    linkageType: ''
    returnType: void
    signature: void alloc_stats(struct alloc_cache* alloc)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_lock
      Src: /src/unbound/util/alloc.c:315,1
    - Dst: alloc_special_next
      Src: /src/unbound/util/alloc.c:318,1
    - Dst: lock_get_mem
      Src: /src/unbound/util/alloc.c:319,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/alloc.c:323,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - alloc
    argTypes:
    - struct alloc_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 326
    functionName: alloc_get_mem
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 1
    functionsReached:
    - lock_quick_unlock
    - lock_get_mem
    - lock_quick_lock
    - alloc_special_next
    linkageType: ''
    returnType: size_t
    signature: size_t alloc_get_mem(struct alloc_cache* alloc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_create_custom
      Src: /src/unbound/util/alloc.c:338,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - alloc
    argTypes:
    - struct alloc_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 339
      start: 328
    functionDepth: 4
    functionLinenumber: 328
    functionLinenumberEnd: 339
    functionName: alloc_reg_obtain
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 2
    functionsReached:
    - regional_create_custom
    linkageType: ''
    returnType: struct regional
    signature: "struct regional * \nalloc_reg_obtain(struct alloc_cache* alloc)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_destroy
      Src: /src/unbound/util/alloc.c:345,1
    - Dst: regional_free_all
      Src: /src/unbound/util/alloc.c:349,1
    - Dst: log_assert
      Src: /src/unbound/util/alloc.c:350,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - alloc
    - r
    argTypes:
    - struct alloc_cache*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 354
      start: 341
    functionDepth: 4
    functionLinenumber: 341
    functionLinenumberEnd: 354
    functionName: alloc_reg_release
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 5
    functionsReached:
    - regional_free_all
    - regional_destroy
    - log_assert
    linkageType: ''
    returnType: void
    signature: void alloc_reg_release(struct alloc_cache* alloc, struct regional*
      r)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - alloc
    - arg
    argTypes:
    - struct alloc_cache*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 362
      start: 356
    functionDepth: 0
    functionLinenumber: 356
    functionLinenumberEnd: 362
    functionName: alloc_set_id_cleanup
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void alloc_set_id_cleanup(struct alloc_cache* alloc, void (*cleanup)(void*),\n
      \       void* arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/alloc.c:379,1
    - Dst: malloc
      Src: /src/unbound/util/alloc.c:380,1
    - Dst: log_info
      Src: /src/unbound/util/alloc.c:383,1
    - Dst: memcpy
      Src: /src/unbound/util/alloc.c:384,1
    - Dst: memcpy
      Src: /src/unbound/util/alloc.c:385,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - size
    argTypes:
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 375
    functionDepth: 7
    functionLinenumber: 375
    functionLinenumberEnd: 387
    functionName: unbound_stat_malloc
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - malloc
    - memcpy
    - log_info
    - log_assert
    linkageType: ''
    returnType: void
    signature: void *unbound_stat_malloc(size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/alloc.c:402,1
    - Dst: calloc
      Src: /src/unbound/util/alloc.c:403,1
    - Dst: log_info
      Src: /src/unbound/util/alloc.c:405,1
    - Dst: memcpy
      Src: /src/unbound/util/alloc.c:407,1
    - Dst: memcpy
      Src: /src/unbound/util/alloc.c:408,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - nmemb
    - size
    argTypes:
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 395
    functionDepth: 7
    functionLinenumber: 395
    functionLinenumberEnd: 410
    functionName: unbound_stat_calloc
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - memcpy
    - calloc
    - log_assert
    - log_info
    linkageType: ''
    returnType: void
    signature: void *unbound_stat_calloc(size_t nmemb, size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/util/alloc.c:419,1
    - Dst: free
      Src: /src/unbound/util/alloc.c:420,1
    - Dst: memcpy
      Src: /src/unbound/util/alloc.c:424,1
    - Dst: log_info
      Src: /src/unbound/util/alloc.c:425,1
    - Dst: memset
      Src: /src/unbound/util/alloc.c:426,1
    - Dst: free
      Src: /src/unbound/util/alloc.c:428,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 1
    argNames:
    - ptr
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 415
    functionDepth: 7
    functionLinenumber: 415
    functionLinenumberEnd: 429
    functionName: unbound_stat_free
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - memcpy
    - log_info
    - free
    - memcmp
    - memset
    linkageType: ''
    returnType: void
    signature: void unbound_stat_free(void *ptr)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: unbound_stat_malloc
      Src: /src/unbound/util/alloc.c:438,1
    - Dst: memcmp
      Src: /src/unbound/util/alloc.c:439,1
    - Dst: realloc
      Src: /src/unbound/util/alloc.c:440,1
    - Dst: unbound_stat_free
      Src: /src/unbound/util/alloc.c:443,1
    - Dst: memcpy
      Src: /src/unbound/util/alloc.c:447,1
    - Dst: log_assert
      Src: /src/unbound/util/alloc.c:452,1
    - Dst: malloc
      Src: /src/unbound/util/alloc.c:453,1
    - Dst: log_info
      Src: /src/unbound/util/alloc.c:457,1
    - Dst: memcpy
      Src: /src/unbound/util/alloc.c:459,1
    - Dst: memcpy
      Src: /src/unbound/util/alloc.c:461,1
    - Dst: memset
      Src: /src/unbound/util/alloc.c:463,1
    - Dst: free
      Src: /src/unbound/util/alloc.c:464,1
    - Dst: memcpy
      Src: /src/unbound/util/alloc.c:465,1
    - Dst: memcpy
      Src: /src/unbound/util/alloc.c:466,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 33
    argCount: 2
    argNames:
    - ptr
    - size
    argTypes:
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 468
      start: 434
    functionDepth: 8
    functionLinenumber: 434
    functionLinenumberEnd: 468
    functionName: unbound_stat_realloc
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - memcpy
    - realloc
    - log_info
    - malloc
    - free
    - log_assert
    - unbound_stat_malloc
    - memcmp
    - unbound_stat_free
    - memset
    linkageType: ''
    returnType: void
    signature: void *unbound_stat_realloc(void *ptr, size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/util/alloc.c:475,1
    - Dst: unbound_stat_malloc
      Src: /src/unbound/util/alloc.c:476,1
    - Dst: memmove
      Src: /src/unbound/util/alloc.c:478,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 480
      start: 470
    functionDepth: 8
    functionLinenumber: 470
    functionLinenumberEnd: 480
    functionName: unbound_stat_strdup
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - unbound_stat_malloc
    - strlen
    - memmove
    linkageType: ''
    returnType: char
    signature: char *unbound_stat_strdup(const char* s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/util/alloc.c:486,1
    - Dst: unbound_stat_malloc
      Src: /src/unbound/util/alloc.c:487,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - size
    - file
    - line
    - func
    argTypes:
    - size_t
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 488
      start: 483
    functionDepth: 8
    functionLinenumber: 483
    functionLinenumberEnd: 488
    functionName: unbound_stat_malloc_log
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - log_info
    - unbound_stat_malloc
    linkageType: ''
    returnType: void
    signature: "void *unbound_stat_malloc_log(size_t size, const char* file, int line,\n
      \       const char* func)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/util/alloc.c:494,1
    - Dst: unbound_stat_calloc
      Src: /src/unbound/util/alloc.c:496,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - nmemb
    - size
    - file
    - line
    - func
    argTypes:
    - size_t
    - size_t
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 497
      start: 491
    functionDepth: 8
    functionLinenumber: 491
    functionLinenumberEnd: 497
    functionName: unbound_stat_calloc_log
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - unbound_stat_calloc
    - log_info
    linkageType: ''
    returnType: void
    signature: "void *unbound_stat_calloc_log(size_t nmemb, size_t size, const char*
      file,\n        int line, const char* func)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/util/alloc.c:503,1
    - Dst: memcpy
      Src: /src/unbound/util/alloc.c:505,1
    - Dst: log_info
      Src: /src/unbound/util/alloc.c:506,1
    - Dst: log_info
      Src: /src/unbound/util/alloc.c:509,1
    - Dst: unbound_stat_free
      Src: /src/unbound/util/alloc.c:510,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - ptr
    - file
    - line
    - func
    argTypes:
    - void*
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 511
      start: 500
    functionDepth: 8
    functionLinenumber: 500
    functionLinenumberEnd: 511
    functionName: unbound_stat_free_log
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - unbound_stat_free
    - memcpy
    - log_info
    - memcmp
    linkageType: ''
    returnType: void
    signature: "void unbound_stat_free_log(void *ptr, const char* file, int line,\n
      \       const char* func)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/util/alloc.c:517,1
    - Dst: unbound_stat_realloc
      Src: /src/unbound/util/alloc.c:519,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 5
    argNames:
    - ptr
    - size
    - file
    - line
    - func
    argTypes:
    - void*
    - size_t
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 520
      start: 514
    functionDepth: 9
    functionLinenumber: 514
    functionLinenumberEnd: 520
    functionName: unbound_stat_realloc_log
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - log_info
    - unbound_stat_realloc
    linkageType: ''
    returnType: void
    signature: "void *unbound_stat_realloc_log(void *ptr, size_t size, const char*
      file,\n        int line, const char* func)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/util/alloc.c:526,1
    - Dst: unbound_stat_realloc
      Src: /src/unbound/util/alloc.c:528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 6
    argNames:
    - ptr
    - nmemb
    - size
    - file
    - line
    - func
    argTypes:
    - void*
    - size_t
    - size_t
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 523
    functionDepth: 9
    functionLinenumber: 523
    functionLinenumberEnd: 529
    functionName: unbound_stat_reallocarray_log
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - log_info
    - unbound_stat_realloc
    linkageType: ''
    returnType: void
    signature: "void *unbound_stat_reallocarray_log(void *ptr, size_t nmemb, size_t
      size,\n\tconst char* file, int line, const char* func)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/util/alloc.c:535,1
    - Dst: strlen
      Src: /src/unbound/util/alloc.c:536,1
    - Dst: unbound_stat_strdup
      Src: /src/unbound/util/alloc.c:537,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - s
    - file
    - line
    - func
    argTypes:
    - char*
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 538
      start: 532
    functionDepth: 9
    functionLinenumber: 532
    functionLinenumberEnd: 538
    functionName: unbound_stat_strdup_log
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - log_info
    - unbound_stat_strdup
    - strlen
    linkageType: ''
    returnType: char
    signature: "char *unbound_stat_strdup_log(const char *s, const char* file, int
      line,\n\tconst char* func)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/alloc.c:558,1
    - Dst: malloc
      Src: /src/unbound/util/alloc.c:559,1
    - Dst: memmove
      Src: /src/unbound/util/alloc.c:561,1
    - Dst: memmove
      Src: /src/unbound/util/alloc.c:562,1
    - Dst: memset
      Src: /src/unbound/util/alloc.c:563,1
    - Dst: memmove
      Src: /src/unbound/util/alloc.c:564,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - size
    - file
    - line
    - func
    argTypes:
    - size_t
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 553
    functionDepth: 1
    functionLinenumber: 553
    functionLinenumberEnd: 566
    functionName: unbound_stat_malloc_lite
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - malloc
    - memset
    - log_assert
    - memmove
    linkageType: ''
    returnType: void
    signature: "void *unbound_stat_malloc_lite(size_t size, const char* file, int
      line,\n        const char* func)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/alloc.c:576,1
    - Dst: malloc
      Src: /src/unbound/util/alloc.c:577,1
    - Dst: memmove
      Src: /src/unbound/util/alloc.c:579,1
    - Dst: memmove
      Src: /src/unbound/util/alloc.c:580,1
    - Dst: memset
      Src: /src/unbound/util/alloc.c:581,1
    - Dst: memmove
      Src: /src/unbound/util/alloc.c:582,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 5
    argNames:
    - nmemb
    - size
    - file
    - line
    - func
    argTypes:
    - size_t
    - size_t
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 584
      start: 568
    functionDepth: 1
    functionLinenumber: 568
    functionLinenumberEnd: 584
    functionName: unbound_stat_calloc_lite
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - malloc
    - memset
    - log_assert
    - memmove
    linkageType: ''
    returnType: void
    signature: "void *unbound_stat_calloc_lite(size_t nmemb, size_t size, const char*
      file,\n        int line, const char* func)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/util/alloc.c:593,1
    - Dst: log_err
      Src: /src/unbound/util/alloc.c:594,1
    - Dst: log_hex
      Src: /src/unbound/util/alloc.c:595,1
    - Dst: log_hex
      Src: /src/unbound/util/alloc.c:596,1
    - Dst: fatal_exit
      Src: /src/unbound/util/alloc.c:597,1
    - Dst: memmove
      Src: /src/unbound/util/alloc.c:599,1
    - Dst: memcmp
      Src: /src/unbound/util/alloc.c:600,1
    - Dst: log_err
      Src: /src/unbound/util/alloc.c:601,1
    - Dst: log_err
      Src: /src/unbound/util/alloc.c:602,1
    - Dst: log_hex
      Src: /src/unbound/util/alloc.c:603,1
    - Dst: log_hex
      Src: /src/unbound/util/alloc.c:605,1
    - Dst: fatal_exit
      Src: /src/unbound/util/alloc.c:606,1
    - Dst: memset
      Src: /src/unbound/util/alloc.c:608,1
    - Dst: free
      Src: /src/unbound/util/alloc.c:609,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 4
    argNames:
    - ptr
    - file
    - line
    - func
    argTypes:
    - void*
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 610
      start: 586
    functionDepth: 9
    functionLinenumber: 586
    functionLinenumberEnd: 610
    functionName: unbound_stat_free_lite
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - log_err
    - memmove
    - fatal_exit
    - free
    - log_hex
    - memcmp
    - memset
    linkageType: ''
    returnType: void
    signature: "void unbound_stat_free_lite(void *ptr, const char* file, int line,\n
      \       const char* func)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: unbound_stat_malloc_lite
      Src: /src/unbound/util/alloc.c:620,1
    - Dst: unbound_stat_free_lite
      Src: /src/unbound/util/alloc.c:624,1
    - Dst: memcmp
      Src: /src/unbound/util/alloc.c:629,1
    - Dst: log_err
      Src: /src/unbound/util/alloc.c:630,1
    - Dst: log_hex
      Src: /src/unbound/util/alloc.c:631,1
    - Dst: log_hex
      Src: /src/unbound/util/alloc.c:632,1
    - Dst: fatal_exit
      Src: /src/unbound/util/alloc.c:633,1
    - Dst: memmove
      Src: /src/unbound/util/alloc.c:635,1
    - Dst: memcmp
      Src: /src/unbound/util/alloc.c:636,1
    - Dst: log_err
      Src: /src/unbound/util/alloc.c:637,1
    - Dst: log_err
      Src: /src/unbound/util/alloc.c:638,1
    - Dst: log_hex
      Src: /src/unbound/util/alloc.c:639,1
    - Dst: log_hex
      Src: /src/unbound/util/alloc.c:641,1
    - Dst: fatal_exit
      Src: /src/unbound/util/alloc.c:642,1
    - Dst: unbound_stat_malloc_lite
      Src: /src/unbound/util/alloc.c:645,1
    - Dst: memmove
      Src: /src/unbound/util/alloc.c:649,1
    - Dst: memmove
      Src: /src/unbound/util/alloc.c:650,1
    - Dst: memset
      Src: /src/unbound/util/alloc.c:651,1
    - Dst: free
      Src: /src/unbound/util/alloc.c:652,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 32
    argCount: 5
    argNames:
    - ptr
    - size
    - file
    - line
    - func
    argTypes:
    - void*
    - size_t
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 654
      start: 612
    functionDepth: 10
    functionLinenumber: 612
    functionLinenumberEnd: 654
    functionName: unbound_stat_realloc_lite
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - log_err
    - memmove
    - unbound_stat_free_lite
    - fatal_exit
    - free
    - log_hex
    - unbound_stat_malloc_lite
    - memcmp
    - memset
    linkageType: ''
    returnType: void
    signature: "void *unbound_stat_realloc_lite(void *ptr, size_t size, const char*
      file,\n        int line, const char* func)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/util/alloc.c:660,1
    - Dst: unbound_stat_malloc_lite
      Src: /src/unbound/util/alloc.c:661,1
    - Dst: memmove
      Src: /src/unbound/util/alloc.c:663,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 4
    argNames:
    - s
    - file
    - line
    - func
    argTypes:
    - char*
    - char*
    - int
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 665
      start: 656
    functionDepth: 2
    functionLinenumber: 656
    functionLinenumberEnd: 665
    functionName: unbound_strdup_lite
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - unbound_stat_malloc_lite
    - strlen
    - memmove
    linkageType: ''
    returnType: char
    signature: "char * unbound_strdup_lite(const char* s, const char* file, int line,
      \n        const char* func)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: unbound_strdup_lite
      Src: /src/unbound/util/alloc.c:669,1
    - Dst: free
      Src: /src/unbound/util/alloc.c:670,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 672
      start: 667
    functionDepth: 3
    functionLinenumber: 667
    functionLinenumberEnd: 672
    functionName: unbound_lite_wrapstr
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - free
    - unbound_strdup_lite
    linkageType: ''
    returnType: char
    signature: char * unbound_lite_wrapstr(char* s)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_pkt2wire
      Src: /src/unbound/util/alloc.c:680,1
    - Dst: unbound_stat_malloc_lite
      Src: /src/unbound/util/alloc.c:682,1
    - Dst: free
      Src: /src/unbound/util/alloc.c:685,1
    - Dst: memcpy
      Src: /src/unbound/util/alloc.c:686,1
    - Dst: free
      Src: /src/unbound/util/alloc.c:687,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 3
    argNames:
    - dest
    - p
    - size
    argTypes:
    - uint8_t**
    - sldns_pkt*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 693
      start: 675
    functionDepth: 2
    functionLinenumber: 675
    functionLinenumberEnd: 693
    functionName: unbound_lite_pkt2wire
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - free
    - memcpy
    - sldns_pkt2wire
    - unbound_stat_malloc_lite
    linkageType: ''
    returnType: sldns_status
    signature: "sldns_status unbound_lite_pkt2wire(uint8_t **dest, const sldns_pkt
      *p, \n\tsize_t *size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: i2d_DSA_SIG
      Src: /src/unbound/util/alloc.c:699,1
    - Dst: unbound_stat_malloc_lite
      Src: /src/unbound/util/alloc.c:701,1
    - Dst: memcpy
      Src: /src/unbound/util/alloc.c:704,1
    - Dst: free
      Src: /src/unbound/util/alloc.c:705,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 2
    argNames:
    - dsasig
    - sig
    argTypes:
    - DSA_SIG*
    - unsigned char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 710
      start: 696
    functionDepth: 2
    functionLinenumber: 696
    functionLinenumberEnd: 710
    functionName: unbound_lite_i2d_DSA_SIG
    functionSourceFile: /src/unbound/util/alloc.c
    functionUses: 0
    functionsReached:
    - free
    - i2d_DSA_SIG
    - memcpy
    - unbound_stat_malloc_lite
    linkageType: ''
    returnType: int
    signature: int unbound_lite_i2d_DSA_SIG(DSA_SIG* dsasig, unsigned char** sig)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - d
    - end
    - start
    argTypes:
    - struct timeval*
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 46
    functionDepth: 0
    functionLinenumber: 46
    functionLinenumberEnd: 58
    functionName: timeval_subtract
    functionSourceFile: /src/unbound/util/timeval_func.c
    functionUses: 11
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void timeval_subtract(struct timeval* d, const struct timeval* end,
      const struct timeval* start)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - d
    - add
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 61
    functionDepth: 0
    functionLinenumber: 61
    functionLinenumberEnd: 72
    functionName: timeval_add
    functionSourceFile: /src/unbound/util/timeval_func.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void timeval_add(struct timeval* d, const struct timeval* add)
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 3
    argNames:
    - avg
    - sum
    - d
    argTypes:
    - struct timeval*
    - struct timeval*
    - long long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 97
      start: 75
    functionDepth: 0
    functionLinenumber: 75
    functionLinenumberEnd: 97
    functionName: timeval_divide
    functionSourceFile: /src/unbound/util/timeval_func.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void timeval_divide(struct timeval* avg, const struct timeval* sum,
      long long d)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - x
    - y
    argTypes:
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 113
    functionName: timeval_smaller
    functionSourceFile: /src/unbound/util/timeval_func.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int timeval_smaller(const struct timeval* x, const struct timeval*
      y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 90
    functionDepth: 0
    functionLinenumber: 90
    functionLinenumberEnd: 91
    functionName: CMSG_ALIGN
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMSG_ALIGN(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 94
    functionDepth: 0
    functionLinenumber: 94
    functionLinenumberEnd: 95
    functionName: CMSG_ALIGN
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMSG_ALIGN(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 100
    functionDepth: 0
    functionLinenumber: 100
    functionLinenumberEnd: 101
    functionName: CMSG_LEN
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMSG_LEN(len)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 106
    functionDepth: 0
    functionLinenumber: 106
    functionLinenumberEnd: 107
    functionName: CMSG_SPACE
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMSG_SPACE(l)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - l
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 109
      start: 108
    functionDepth: 0
    functionLinenumber: 108
    functionLinenumberEnd: 109
    functionName: CMSG_SPACE
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: CMSG_SPACE(l)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:206,1
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:212,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:214,1
    - Dst: ub_default_event_base
      Src: /src/unbound/util/netevent.c:217,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:219,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:220,1
    - Dst: ub_comm_base_now
      Src: /src/unbound/util/netevent.c:223,1
    - Dst: ub_get_event_sys
      Src: /src/unbound/util/netevent.c:224,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:225,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 1
    argNames:
    - sigs
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 203
    functionDepth: 7
    functionLinenumber: 203
    functionLinenumberEnd: 227
    functionName: comm_base_create
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 3
    functionsReached:
    - verbose
    - ub_comm_base_now
    - ub_get_event_sys
    - free
    - calloc
    - ub_default_event_base
    linkageType: ''
    returnType: struct comm_base
    signature: 'struct comm_base *

      comm_base_create(int sigs)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:232,1
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:236,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:238,1
    - Dst: ub_comm_base_now
      Src: /src/unbound/util/netevent.c:242,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - base
    argTypes:
    - struct ub_event_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 244
      start: 229
    functionDepth: 1
    functionLinenumber: 229
    functionLinenumberEnd: 244
    functionName: comm_base_create_event
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - free
    - calloc
    - ub_comm_base_now
    linkageType: ''
    returnType: struct comm_base
    signature: 'struct comm_base *

      comm_base_create_event(struct ub_event_base* base)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ub_event_del
      Src: /src/unbound/util/netevent.c:252,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:253,1
    - Dst: ub_event_free
      Src: /src/unbound/util/netevent.c:255,1
    - Dst: ub_event_base_free
      Src: /src/unbound/util/netevent.c:257,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:259,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:260,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 1
    argNames:
    - b
    argTypes:
    - struct comm_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 261
      start: 246
    functionDepth: 7
    functionLinenumber: 246
    functionLinenumberEnd: 261
    functionName: comm_base_delete
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 3
    functionsReached:
    - log_err
    - ub_event_base_free
    - ub_event_del
    - free
    - ub_event_free
    linkageType: ''
    returnType: void
    signature: void comm_base_delete(struct comm_base* b)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ub_event_del
      Src: /src/unbound/util/netevent.c:269,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:270,1
    - Dst: ub_event_free
      Src: /src/unbound/util/netevent.c:272,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:275,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:276,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - b
    argTypes:
    - struct comm_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 277
      start: 263
    functionDepth: 7
    functionLinenumber: 263
    functionLinenumberEnd: 277
    functionName: comm_base_delete_no_base
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - free
    - log_err
    - ub_event_free
    - ub_event_del
    linkageType: ''
    returnType: void
    signature: void comm_base_delete_no_base(struct comm_base* b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - b
    - tt
    - tv
    argTypes:
    - struct comm_base*
    - time_t**
    - struct timeval**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 284
    functionName: comm_base_timept
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void comm_base_timept(struct comm_base* b, time_t** tt, struct timeval**
      tv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_event_base_dispatch
      Src: /src/unbound/util/netevent.c:290,1
    - Dst: fatal_exit
      Src: /src/unbound/util/netevent.c:292,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:293,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - b
    argTypes:
    - struct comm_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 295
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 295
    functionName: comm_base_dispatch
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 3
    functionsReached:
    - ub_event_base_dispatch
    - strerror
    - fatal_exit
    linkageType: ''
    returnType: void
    signature: void comm_base_dispatch(struct comm_base* b)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_event_base_loopexit
      Src: /src/unbound/util/netevent.c:299,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:300,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - b
    argTypes:
    - struct comm_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 297
    functionDepth: 7
    functionLinenumber: 297
    functionLinenumberEnd: 302
    functionName: comm_base_exit
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 9
    functionsReached:
    - log_err
    - ub_event_base_loopexit
    linkageType: ''
    returnType: void
    signature: void comm_base_exit(struct comm_base* b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - b
    - arg
    argTypes:
    - struct comm_base*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 310
      start: 304
    functionDepth: 0
    functionLinenumber: 304
    functionLinenumberEnd: 310
    functionName: comm_base_set_slow_accept_handlers
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void comm_base_set_slow_accept_handlers(struct comm_base* b,\n\tvoid
      (*stop_acc)(void*), void (*start_acc)(void*), void* arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - b
    argTypes:
    - struct comm_base*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 312
    functionDepth: 0
    functionLinenumber: 312
    functionLinenumberEnd: 315
    functionName: comm_base_internal
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: struct ub_event_base
    signature: struct ub_event_base * comm_base_internal(struct comm_base* b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 320
      start: 317
    functionDepth: 0
    functionLinenumber: 317
    functionLinenumberEnd: 320
    functionName: comm_point_internal
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: struct ub_event
    signature: struct ub_event * comm_point_internal(struct comm_point* c)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: addr_is_ip4mapped
      Src: /src/unbound/util/netevent.c:367,1
    - Dst: addr_is_broadcast
      Src: /src/unbound/util/netevent.c:373,1
    - Dst: addr_is_any
      Src: /src/unbound/util/netevent.c:381,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 25
    argCount: 2
    argNames:
    - addr
    - addrlen
    argTypes:
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 323
    functionDepth: 2
    functionLinenumber: 323
    functionLinenumberEnd: 387
    functionName: udp_send_errno_needs_log
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - addr_is_broadcast
    - addr_is_any
    - addr_is_ip4mapped
    linkageType: ''
    returnType: int
    signature: int udp_send_errno_needs_log(struct sockaddr* addr, socklen_t addrlen)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: udp_send_errno_needs_log
      Src: /src/unbound/util/netevent.c:391,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - addr
    - addrlen
    argTypes:
    - struct sockaddr*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 392
      start: 389
    functionDepth: 3
    functionLinenumber: 389
    functionLinenumberEnd: 392
    functionName: tcp_connect_errno_needs_log
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 2
    functionsReached:
    - udp_send_errno_needs_log
    linkageType: ''
    returnType: int
    signature: int tcp_connect_errno_needs_log(struct sockaddr* addr, socklen_t addrlen)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/util/netevent.c:577,1
    - Dst: inet_ntop
      Src: /src/unbound/util/netevent.c:584,1
    - Dst: strlcpy
      Src: /src/unbound/util/netevent.c:586,1
    - Dst: log_info
      Src: /src/unbound/util/netevent.c:589,1
    - Dst: inet_ntop
      Src: /src/unbound/util/netevent.c:594,1
    - Dst: strlcpy
      Src: /src/unbound/util/netevent.c:596,1
    - Dst: inet_ntop
      Src: /src/unbound/util/netevent.c:600,1
    - Dst: strlcpy
      Src: /src/unbound/util/netevent.c:602,1
    - Dst: log_info
      Src: /src/unbound/util/netevent.c:608,1
    - Dst: inet_ntop
      Src: /src/unbound/util/netevent.c:612,1
    - Dst: strlcpy
      Src: /src/unbound/util/netevent.c:614,1
    - Dst: log_info
      Src: /src/unbound/util/netevent.c:617,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 2
    argNames:
    - str
    - r
    argTypes:
    - char*
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 620
      start: 574
    functionDepth: 7
    functionLinenumber: 574
    functionLinenumberEnd: 620
    functionName: p_ancil
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - strlcpy
    - log_info
    - inet_ntop
    linkageType: ''
    returnType: void
    signature: void p_ancil(const char* str, struct comm_reply* r)
  - BBCount: 14
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 1
    argNames:
    - err
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 923
      start: 891
    functionDepth: 0
    functionLinenumber: 891
    functionLinenumberEnd: 923
    functionName: udp_recv_needs_log
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int udp_recv_needs_log(int err)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: pp2_read_header
      Src: /src/unbound/util/netevent.c:931,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:931,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:932,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:934,1
    - Dst: ntohs
      Src: /src/unbound/util/netevent.c:935,1
    - Dst: ntohs
      Src: /src/unbound/util/netevent.c:954,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:955,1
    - Dst: ntohs
      Src: /src/unbound/util/netevent.c:970,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:971,1
    - Dst: memset
      Src: /src/unbound/util/netevent.c:974,1
    - Dst: memcpy
      Src: /src/unbound/util/netevent.c:976,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:984,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:994,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:995,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/util/netevent.c:996,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:996,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 51
    argCount: 3
    argNames:
    - buf
    - rep
    - stream
    argTypes:
    - struct sldns_buffer*
    - struct comm_reply*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 999
      start: 927
    functionDepth: 7
    functionLinenumber: 927
    functionLinenumberEnd: 999
    functionName: consume_pp2_header
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - log_err
    - memcpy
    - memmove
    - verbose
    - sldns_buffer_limit
    - sldns_buffer_set_limit
    - sldns_buffer_begin
    - memset
    - pp2_read_header
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int consume_pp2_header(struct sldns_buffer* buf, struct comm_reply*
      rep,\n\tint stream)"
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1022,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1026,1
    - Dst: ub_comm_base_now
      Src: /src/unbound/util/netevent.c:1027,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:1029,1
    - Dst: timeval_clear
      Src: /src/unbound/util/netevent.c:1030,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1032,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1033,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:1033,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:1036,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:1037,1
    - Dst: recvmsg
      Src: /src/unbound/util/netevent.c:1045,1
    - Dst: udp_recv_needs_log
      Src: /src/unbound/util/netevent.c:1048,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1049,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:1049,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/netevent.c:1054,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:1055,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/unbound/util/netevent.c:1059,1
    - Dst: CMSG_NXTHDR
      Src: /src/unbound/util/netevent.c:1060,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:1064,1
    - Dst: CMSG_DATA
      Src: /src/unbound/util/netevent.c:1064,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:1071,1
    - Dst: CMSG_DATA
      Src: /src/unbound/util/netevent.c:1071,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:1078,1
    - Dst: CMSG_DATA
      Src: /src/unbound/util/netevent.c:1078,1
    - Dst: CMSG_DATA
      Src: /src/unbound/util/netevent.c:1085,1
    - Dst: TIMESPEC_TO_TIMEVAL
      Src: /src/unbound/util/netevent.c:1086,1
    - Dst: CMSG_DATA
      Src: /src/unbound/util/netevent.c:1089,1
    - Dst: TIMESPEC_TO_TIMEVAL
      Src: /src/unbound/util/netevent.c:1090,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:1093,1
    - Dst: CMSG_DATA
      Src: /src/unbound/util/netevent.c:1093,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:1098,1
    - Dst: CMSG_DATA
      Src: /src/unbound/util/netevent.c:1098,1
    - Dst: p_ancil
      Src: /src/unbound/util/netevent.c:1104,1
    - Dst: consume_pp2_header
      Src: /src/unbound/util/netevent.c:1107,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1109,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:1114,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:1118,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:1118,1
    - Dst: comm_point_send_udp_msg_if
      Src: /src/unbound/util/netevent.c:1127,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 84
    argCount: 3
    argNames:
    - fd
    - event
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1134
      start: 1002
    functionDepth: 8
    functionLinenumber: 1002
    functionLinenumberEnd: 1134
    functionName: comm_point_udp_ancil_callback
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_skip
    - ub_comm_base_now
    - timeval_clear
    - log_err
    - consume_pp2_header
    - CMSG_DATA
    - fptr_ok
    - CMSG_NXTHDR
    - sldns_buffer_begin
    - CMSG_FIRSTHDR
    - udp_recv_needs_log
    - TIMESPEC_TO_TIMEVAL
    - p_ancil
    - log_assert
    - strerror
    - sldns_buffer_remaining
    - memmove
    - sldns_buffer_flip
    - fptr_whitelist_comm_point
    - sldns_buffer_clear
    - comm_point_send_udp_msg_if
    - recvmsg
    linkageType: ''
    returnType: void
    signature: void comm_point_udp_ancil_callback(int fd, short event, void* arg)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1146,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1150,1
    - Dst: ub_comm_base_now
      Src: /src/unbound/util/netevent.c:1151,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:1153,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1155,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1156,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:1156,1
    - Dst: recvfrom
      Src: /src/unbound/util/netevent.c:1157,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:1157,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:1158,1
    - Dst: udp_recv_needs_log
      Src: /src/unbound/util/netevent.c:1163,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1164,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:1165,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:1167,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:1168,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:1169,1
    - Dst: udp_recv_needs_log
      Src: /src/unbound/util/netevent.c:1170,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:1170,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1171,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/netevent.c:1172,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:1172,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/netevent.c:1176,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:1177,1
    - Dst: consume_pp2_header
      Src: /src/unbound/util/netevent.c:1181,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1183,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:1188,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:1192,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:1192,1
    - Dst: comm_point_send_udp_msg
      Src: /src/unbound/util/netevent.c:1200,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 41
    argCount: 3
    argNames:
    - fd
    - event
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1208
      start: 1137
    functionDepth: 8
    functionLinenumber: 1137
    functionLinenumberEnd: 1208
    functionName: comm_point_udp_callback
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - log_err
    - wsa_strerror
    - consume_pp2_header
    - memmove
    - sldns_buffer_skip
    - recvfrom
    - ub_comm_base_now
    - WSAGetLastError
    - sldns_buffer_clear
    - sldns_buffer_flip
    - fptr_ok
    - fptr_whitelist_comm_point
    - log_assert
    - strerror
    - sldns_buffer_begin
    - udp_recv_needs_log
    - comm_point_send_udp_msg
    linkageType: ''
    returnType: void
    signature: void comm_point_udp_callback(int fd, short event, void* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - paddr
    argTypes:
    - struct doq_pkt_addr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1217
      start: 1211
    functionDepth: 0
    functionLinenumber: 1211
    functionLinenumberEnd: 1217
    functionName: doq_pkt_addr_init
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void doq_pkt_addr_init(struct doq_pkt_addr* paddr)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: setsockopt
      Src: /src/unbound/util/netevent.c:1225,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1227,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:1228,1
    - Dst: setsockopt
      Src: /src/unbound/util/netevent.c:1232,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1234,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:1235,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - fd
    - family
    - ecn
    argTypes:
    - int
    - int
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1237
      start: 1220
    functionDepth: 7
    functionLinenumber: 1220
    functionLinenumberEnd: 1237
    functionName: doq_set_ecn
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - setsockopt
    - log_err
    - strerror
    linkageType: ''
    returnType: void
    signature: void doq_set_ecn(int fd, int family, uint32_t ecn)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_FIRSTHDR
      Src: /src/unbound/util/netevent.c:1249,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1254,1
    - Dst: CMSG_SPACE
      Src: /src/unbound/util/netevent.c:1255,1
    - Dst: memset
      Src: /src/unbound/util/netevent.c:1256,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1257,1
    - Dst: memset
      Src: /src/unbound/util/netevent.c:1260,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:1262,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:1265,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:1269,1
    - Dst: CMSG_DATA
      Src: /src/unbound/util/netevent.c:1269,1
    - Dst: CMSG_LEN
      Src: /src/unbound/util/netevent.c:1270,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1273,1
    - Dst: CMSG_SPACE
      Src: /src/unbound/util/netevent.c:1274,1
    - Dst: memset
      Src: /src/unbound/util/netevent.c:1275,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1276,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:1279,1
    - Dst: CMSG_DATA
      Src: /src/unbound/util/netevent.c:1279,1
    - Dst: CMSG_LEN
      Src: /src/unbound/util/netevent.c:1281,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1286,1
    - Dst: CMSG_SPACE
      Src: /src/unbound/util/netevent.c:1287,1
    - Dst: memset
      Src: /src/unbound/util/netevent.c:1288,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1289,1
    - Dst: memset
      Src: /src/unbound/util/netevent.c:1292,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:1293,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:1296,1
    - Dst: CMSG_DATA
      Src: /src/unbound/util/netevent.c:1296,1
    - Dst: CMSG_LEN
      Src: /src/unbound/util/netevent.c:1297,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 38
    argCount: 5
    argNames:
    - msg
    - control_size
    - localaddr
    - localaddrlen
    - ifindex
    argTypes:
    - struct msghdr*
    - size_t
    - struct doq_addr_storage*
    - socklen_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1303
      start: 1240
    functionDepth: 1
    functionLinenumber: 1240
    functionLinenumberEnd: 1303
    functionName: doq_set_localaddr_cmsg
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - CMSG_DATA
    - memmove
    - CMSG_SPACE
    - CMSG_LEN
    - log_assert
    - CMSG_FIRSTHDR
    - memset
    linkageType: ''
    returnType: void
    signature: "void doq_set_localaddr_cmsg(struct msghdr* msg, size_t control_size,\n\tstruct
      doq_addr_storage* localaddr, socklen_t localaddrlen,\n\tint ifindex)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1312,1
    - Dst: inet_ntop
      Src: /src/unbound/util/netevent.c:1313,1
    - Dst: log_hex
      Src: /src/unbound/util/netevent.c:1315,1
    - Dst: snprintf
      Src: /src/unbound/util/netevent.c:1319,1
    - Dst: ntohs
      Src: /src/unbound/util/netevent.c:1319,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1322,1
    - Dst: inet_ntop
      Src: /src/unbound/util/netevent.c:1323,1
    - Dst: log_hex
      Src: /src/unbound/util/netevent.c:1325,1
    - Dst: snprintf
      Src: /src/unbound/util/netevent.c:1329,1
    - Dst: ntohs
      Src: /src/unbound/util/netevent.c:1329,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 6
    argNames:
    - addr
    - addrlen
    - host
    - hostlen
    - port
    - portlen
    argTypes:
    - struct doq_addr_storage*
    - socklen_t
    - char*
    - size_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1332
      start: 1306
    functionDepth: 9
    functionLinenumber: 1306
    functionLinenumberEnd: 1332
    functionName: doq_print_addr_port
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - snprintf
    - log_hex
    - log_assert
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int doq_print_addr_port(struct doq_addr_storage* addr, socklen_t addrlen,\n\tchar*
      host, size_t hostlen, char* port, size_t portlen)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:1342,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/netevent.c:1343,1
    - Dst: memcpy
      Src: /src/unbound/util/netevent.c:1348,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:1350,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/netevent.c:1351,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:1352,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:1353,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:1354,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - c
    - paddr
    - ecn
    argTypes:
    - struct comm_point*
    - struct doq_pkt_addr*
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1355
      start: 1335
    functionDepth: 5
    functionLinenumber: 1335
    functionLinenumberEnd: 1355
    functionName: doq_store_blocked_pkt
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - memcpy
    - sldns_buffer_write
    - sldns_buffer_flip
    - sldns_buffer_limit
    - sldns_buffer_clear
    - sldns_buffer_begin
    linkageType: ''
    returnType: void
    signature: "void doq_store_blocked_pkt(struct comm_point* c, struct doq_pkt_addr*
      paddr,\n\tuint32_t ecn)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/util/netevent.c:1446,1
    - Dst: ntohs
      Src: /src/unbound/util/netevent.c:1449,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - addr
    argTypes:
    - struct doq_addr_storage*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1452
      start: 1441
    functionDepth: 0
    functionLinenumber: 1441
    functionLinenumberEnd: 1452
    functionName: doq_sockaddr_get_port
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - ntohs
    linkageType: ''
    returnType: int
    signature: int doq_sockaddr_get_port(struct doq_addr_storage* addr)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/util/netevent.c:1463,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/unbound/util/netevent.c:1465,1
    - Dst: CMSG_NXTHDR
      Src: /src/unbound/util/netevent.c:1466,1
    - Dst: CMSG_DATA
      Src: /src/unbound/util/netevent.c:1470,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1476,1
    - Dst: htons
      Src: /src/unbound/util/netevent.c:1481,1
    - Dst: doq_sockaddr_get_port
      Src: /src/unbound/util/netevent.c:1481,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:1484,1
    - Dst: CMSG_DATA
      Src: /src/unbound/util/netevent.c:1492,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1498,1
    - Dst: htons
      Src: /src/unbound/util/netevent.c:1503,1
    - Dst: doq_sockaddr_get_port
      Src: /src/unbound/util/netevent.c:1503,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:1506,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1518,1
    - Dst: htons
      Src: /src/unbound/util/netevent.c:1523,1
    - Dst: doq_sockaddr_get_port
      Src: /src/unbound/util/netevent.c:1523,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:1526,1
    - Dst: CMSG_DATA
      Src: /src/unbound/util/netevent.c:1526,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 44
    argCount: 4
    argNames:
    - c
    - paddr
    - pkt_continue
    - msg
    argTypes:
    - struct comm_point*
    - struct doq_pkt_addr*
    - int*
    - struct msghdr*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1536
      start: 1455
    functionDepth: 7
    functionLinenumber: 1455
    functionLinenumberEnd: 1536
    functionName: doq_get_localaddr_cmsg
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - log_err
    - CMSG_DATA
    - memmove
    - htons
    - CMSG_NXTHDR
    - CMSG_FIRSTHDR
    - memset
    - doq_sockaddr_get_port
    linkageType: ''
    returnType: int
    signature: "int doq_get_localaddr_cmsg(struct comm_point* c, struct doq_pkt_addr*
      paddr,\n\tint* pkt_continue, struct msghdr* msg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: CMSG_FIRSTHDR
      Src: /src/unbound/util/netevent.c:1545,1
    - Dst: CMSG_NXTHDR
      Src: /src/unbound/util/netevent.c:1546,1
    - Dst: CMSG_DATA
      Src: /src/unbound/util/netevent.c:1550,1
    - Dst: CMSG_FIRSTHDR
      Src: /src/unbound/util/netevent.c:1556,1
    - Dst: CMSG_NXTHDR
      Src: /src/unbound/util/netevent.c:1557,1
    - Dst: CMSG_DATA
      Src: /src/unbound/util/netevent.c:1561,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 15
    argCount: 2
    argNames:
    - msg
    - family
    argTypes:
    - struct msghdr*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1567
      start: 1539
    functionDepth: 0
    functionLinenumber: 1539
    functionLinenumberEnd: 1567
    functionName: msghdr_get_ecn
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - CMSG_FIRSTHDR
    - CMSG_NXTHDR
    - CMSG_DATA
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t msghdr_get_ecn(struct msghdr* msg, int family)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:1586,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:1587,1
    - Dst: recvmsg
      Src: /src/unbound/util/netevent.c:1596,1
    - Dst: udp_recv_needs_log
      Src: /src/unbound/util/netevent.c:1599,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1600,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:1600,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/netevent.c:1607,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:1608,1
    - Dst: doq_get_localaddr_cmsg
      Src: /src/unbound/util/netevent.c:1609,1
    - Dst: msghdr_get_ecn
      Src: /src/unbound/util/netevent.c:1611,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 25
    argCount: 4
    argNames:
    - c
    - paddr
    - pkt_continue
    - pi
    argTypes:
    - struct comm_point*
    - struct doq_pkt_addr*
    - int*
    - struct ngtcp2_pkt_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1613
      start: 1572
    functionDepth: 8
    functionLinenumber: 1572
    functionLinenumberEnd: 1613
    functionName: doq_recv
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - log_err
    - msghdr_get_ecn
    - doq_get_localaddr_cmsg
    - sldns_buffer_skip
    - sldns_buffer_flip
    - recvmsg
    - strerror
    - sldns_buffer_begin
    - udp_recv_needs_log
    linkageType: ''
    returnType: int
    signature: "int doq_recv(struct comm_point* c, struct doq_pkt_addr* paddr, int*
      pkt_continue,\n\tstruct ngtcp2_pkt_info* pi)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_random_max
      Src: /src/unbound/util/netevent.c:1630,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:1631,1
    - Dst: ngtcp2_pkt_write_version_negotiation
      Src: /src/unbound/util/netevent.c:1632,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:1633,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/netevent.c:1634,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1637,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/util/netevent.c:1638,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/netevent.c:1641,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:1642,1
    - Dst: doq_send_pkt
      Src: /src/unbound/util/netevent.c:1643,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 6
    argNames:
    - c
    - paddr
    - dcid
    - dcidlen
    - scid
    - scidlen
    argTypes:
    - struct comm_point*
    - struct doq_pkt_addr*
    - uint8_t*
    - size_t
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1644
      start: 1617
    functionDepth: 7
    functionLinenumber: 1617
    functionLinenumberEnd: 1644
    functionName: doq_send_version_negotiation
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - log_err
    - ub_random_max
    - doq_send_pkt
    - sldns_buffer_flip
    - sldns_buffer_clear
    - ngtcp2_strerror
    - ngtcp2_pkt_write_version_negotiation
    - sldns_buffer_set_position
    - sldns_buffer_begin
    linkageType: ''
    returnType: void
    signature: "void doq_send_version_negotiation(struct comm_point* c, struct doq_pkt_addr*
      paddr,\n\tconst uint8_t* dcid, size_t dcidlen, const uint8_t* scid,\n\tsize_t
      scidlen)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/util/netevent.c:1655,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:1657,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:1659,1
    - Dst: rbtree_search
      Src: /src/unbound/util/netevent.c:1664,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 8
    argNames:
    - table
    - addr
    - addrlen
    - localaddr
    - localaddrlen
    - ifindex
    - dcid
    - dcidlen
    argTypes:
    - struct doq_table*
    - struct doq_addr_storage*
    - socklen_t
    - struct doq_addr_storage*
    - socklen_t
    - int
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1668
      start: 1647
    functionDepth: 2
    functionLinenumber: 1647
    functionLinenumberEnd: 1668
    functionName: doq_conn_find
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - memset
    - rbtree_search
    - memmove
    linkageType: ''
    returnType: struct doq_conn
    signature: "struct doq_conn *\ndoq_conn_find(struct doq_table* table, struct doq_addr_storage*
      addr,\n\tsocklen_t addrlen, struct doq_addr_storage* localaddr,\n\tsocklen_t
      localaddrlen, int ifindex, const uint8_t* dcid,\n\tsize_t dcidlen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/util/netevent.c:1676,1
    - Dst: doq_conid_find
      Src: /src/unbound/util/netevent.c:1677,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1683,1
    - Dst: memcpy
      Src: /src/unbound/util/netevent.c:1684,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:1686,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/util/netevent.c:1689,1
    - Dst: doq_conn_find
      Src: /src/unbound/util/netevent.c:1690,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:1698,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/netevent.c:1701,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:1703,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:1704,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:1707,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:1710,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 25
    argCount: 3
    argNames:
    - table
    - dcid
    - dcidlen
    argTypes:
    - struct doq_table*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1712
      start: 1671
    functionDepth: 3
    functionLinenumber: 1671
    functionLinenumberEnd: 1712
    functionName: doq_conn_find_by_id
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - doq_conn_find
    - memcpy
    - lock_basic_unlock
    - lock_rw_unlock
    - doq_conid_find
    - log_assert
    - lock_basic_lock
    - lock_rw_rdlock
    linkageType: ''
    returnType: struct doq_conn
    signature: "struct doq_conn *\ndoq_conn_find_by_id(struct doq_table* table, const
      uint8_t* dcid,\n\tsize_t dcidlen)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/util/netevent.c:1720,1
    - Dst: doq_conn_find
      Src: /src/unbound/util/netevent.c:1721,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/netevent.c:1728,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:1729,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:1730,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:1732,1
    - Dst: doq_conn_find_by_id
      Src: /src/unbound/util/netevent.c:1733,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:1735,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - table
    - paddr
    - dcid
    - dcidlen
    argTypes:
    - struct doq_table*
    - struct doq_pkt_addr*
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1739
      start: 1715
    functionDepth: 7
    functionLinenumber: 1715
    functionLinenumberEnd: 1739
    functionName: doq_conn_find_by_addr_or_cid
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - doq_conn_find
    - verbose
    - lock_rw_unlock
    - doq_conn_find_by_id
    - lock_basic_lock
    - lock_rw_rdlock
    linkageType: ''
    returnType: struct doq_conn
    signature: "struct doq_conn *\ndoq_conn_find_by_addr_or_cid(struct doq_table*
      table,\n\tstruct doq_pkt_addr* paddr, const uint8_t* dcid, size_t dcidlen)"
  - BBCount: 85
    BranchProfiles: []
    Callsites:
    - Dst: ngtcp2_pkt_decode_version_cid
      Src: /src/unbound/util/netevent.c:1757,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:1758,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:1759,1
    - Dst: ngtcp2_pkt_decode_version_cid
      Src: /src/unbound/util/netevent.c:1762,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:1763,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:1764,1
    - Dst: doq_send_version_negotiation
      Src: /src/unbound/util/netevent.c:1769,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:1778,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/util/netevent.c:1780,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:1785,1
    - Dst: log_hex
      Src: /src/unbound/util/netevent.c:1792,1
    - Dst: HAVE_STRUCT_NGTCP2_VERSION_CID
      Src: /src/unbound/util/netevent.c:1793,1
    - Dst: struct ngtcp2_version_cid::dcidlen
      Src: /src/unbound/util/netevent.c:1794,1
    - Dst: log_hex
      Src: /src/unbound/util/netevent.c:1799,1
    - Dst: HAVE_STRUCT_NGTCP2_VERSION_CID
      Src: /src/unbound/util/netevent.c:1800,1
    - Dst: struct ngtcp2_version_cid::scidlen
      Src: /src/unbound/util/netevent.c:1801,1
    - Dst: doq_conn_find_by_addr_or_cid
      Src: /src/unbound/util/netevent.c:1807,1
    - Dst: doq_fill_rand
      Src: /src/unbound/util/netevent.c:1826,1
    - Dst: ngtcp2_cid_init
      Src: /src/unbound/util/netevent.c:1827,1
    - Dst: doq_print_addr_port
      Src: /src/unbound/util/netevent.c:1840,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1842,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:1845,1
    - Dst: doq_cid_randfill
      Src: /src/unbound/util/netevent.c:1849,1
    - Dst: ngtcp2_crypto_generate_retry_token
      Src: /src/unbound/util/netevent.c:1851,1
    - Dst: doq_get_timestamp_nanosec
      Src: /src/unbound/util/netevent.c:1854,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1856,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/util/netevent.c:1857,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:1861,1
    - Dst: ngtcp2_crypto_write_retry
      Src: /src/unbound/util/netevent.c:1862,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:1862,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/netevent.c:1863,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1866,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/util/netevent.c:1867,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/netevent.c:1870,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:1871,1
    - Dst: doq_send_pkt
      Src: /src/unbound/util/netevent.c:1872,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:1882,1
    - Dst: ngtcp2_crypto_write_connection_close
      Src: /src/unbound/util/netevent.c:1883,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:1884,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/netevent.c:1885,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1888,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/util/netevent.c:1889,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/netevent.c:1892,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:1893,1
    - Dst: doq_send_pkt
      Src: /src/unbound/util/netevent.c:1894,1
    - Dst: doq_print_addr_port
      Src: /src/unbound/util/netevent.c:1903,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1905,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:1908,1
    - Dst: ngtcp2_crypto_verify_retry_token
      Src: /src/unbound/util/netevent.c:1910,1
    - Dst: doq_get_timestamp_nanosec
      Src: /src/unbound/util/netevent.c:1919,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:1920,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:1924,1
    - Dst: doq_print_addr_port
      Src: /src/unbound/util/netevent.c:1934,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1936,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:1939,1
    - Dst: doq_get_timestamp_nanosec
      Src: /src/unbound/util/netevent.c:1948,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:1949,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:1953,1
    - Dst: doq_conn_write_disable
      Src: /src/unbound/util/netevent.c:1968,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1970,1
    - Dst: memcpy
      Src: /src/unbound/util/netevent.c:1971,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:1974,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/netevent.c:1977,1
    - Dst: rbtree_delete
      Src: /src/unbound/util/netevent.c:1978,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/netevent.c:1981,1
    - Dst: doq_conn_write_list_remove
      Src: /src/unbound/util/netevent.c:1982,1
    - Dst: doq_timer_list_remove
      Src: /src/unbound/util/netevent.c:1988,1
    - Dst: doq_timer_tree_remove
      Src: /src/unbound/util/netevent.c:1992,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:1995,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:1997,1
    - Dst: doq_table_quic_size_subtract
      Src: /src/unbound/util/netevent.c:1998,1
    - Dst: doq_conn_delete
      Src: /src/unbound/util/netevent.c:2000,1
    - Dst: doq_table_quic_size_available
      Src: /src/unbound/util/netevent.c:2012,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2017,1
    - Dst: doq_send_stateless_connection_close
      Src: /src/unbound/util/netevent.c:2018,1
    - Dst: doq_conn_create
      Src: /src/unbound/util/netevent.c:2022,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:2025,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/netevent.c:2028,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/netevent.c:2029,1
    - Dst: rbtree_insert
      Src: /src/unbound/util/netevent.c:2030,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2031,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:2032,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2034,1
    - Dst: doq_conn_delete
      Src: /src/unbound/util/netevent.c:2035,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2038,1
    - Dst: doq_table_quic_size_add
      Src: /src/unbound/util/netevent.c:2039,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2041,1
    - Dst: doq_conn_setup
      Src: /src/unbound/util/netevent.c:2046,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:2054,1
    - Dst: doq_delete_connection
      Src: /src/unbound/util/netevent.c:2055,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2074,1
    - Dst: doq_send_retry
      Src: /src/unbound/util/netevent.c:2077,1
    - Dst: doq_send_stateless_connection_close
      Src: /src/unbound/util/netevent.c:2082,1
    - Dst: doq_verify_retry_token
      Src: /src/unbound/util/netevent.c:2087,1
    - Dst: doq_send_stateless_connection_close
      Src: /src/unbound/util/netevent.c:2088,1
    - Dst: doq_verify_token
      Src: /src/unbound/util/netevent.c:2094,1
    - Dst: doq_send_retry
      Src: /src/unbound/util/netevent.c:2095,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2106,1
    - Dst: doq_send_retry
      Src: /src/unbound/util/netevent.c:2110,1
    - Dst: memset
      Src: /src/unbound/util/netevent.c:2133,1
    - Dst: ngtcp2_accept
      Src: /src/unbound/util/netevent.c:2134,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:2134,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:2135,1
    - Dst: doq_send_retry
      Src: /src/unbound/util/netevent.c:2138,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:2141,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/util/netevent.c:2142,1
    - Dst: doq_address_validation
      Src: /src/unbound/util/netevent.c:2152,1
    - Dst: doq_setup_new_conn
      Src: /src/unbound/util/netevent.c:2155,1
    - Dst: doq_conn_recv
      Src: /src/unbound/util/netevent.c:2159,1
    - Dst: doq_send_retry
      Src: /src/unbound/util/netevent.c:2161,1
    - Dst: doq_delete_connection
      Src: /src/unbound/util/netevent.c:2162,1
    - Dst: memset
      Src: /src/unbound/util/netevent.c:2177,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/netevent.c:2179,1
    - Dst: memcpy
      Src: /src/unbound/util/netevent.c:2185,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2191,1
    - Dst: timeval_subtract
      Src: /src/unbound/util/netevent.c:2195,1
    - Dst: comm_timer_set
      Src: /src/unbound/util/netevent.c:2196,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2197,1
    - Dst: comm_timer_is_set
      Src: /src/unbound/util/netevent.c:2201,1
    - Dst: comm_timer_disable
      Src: /src/unbound/util/netevent.c:2202,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2203,1
    - Dst: doq_conn_check_timer
      Src: /src/unbound/util/netevent.c:2222,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2230,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2238,1
    - Dst: memcpy
      Src: /src/unbound/util/netevent.c:2239,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2242,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/netevent.c:2244,1
    - Dst: rbtree_search
      Src: /src/unbound/util/netevent.c:2245,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2247,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/netevent.c:2252,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2255,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2256,1
    - Dst: doq_conn_set_write_list
      Src: /src/unbound/util/netevent.c:2264,1
    - Dst: doq_timer_set
      Src: /src/unbound/util/netevent.c:2267,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2270,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2271,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2290,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2297,1
    - Dst: memcpy
      Src: /src/unbound/util/netevent.c:2298,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2301,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/netevent.c:2303,1
    - Dst: rbtree_search
      Src: /src/unbound/util/netevent.c:2304,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2306,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/netevent.c:2311,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2314,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2315,1
    - Dst: doq_conn_set_write_list
      Src: /src/unbound/util/netevent.c:2322,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2323,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2324,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/util/netevent.c:2333,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2339,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/netevent.c:2348,1
    - Dst: doq_table_pop_first
      Src: /src/unbound/util/netevent.c:2349,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2351,1
    - Dst: doq_table_pop_first
      Src: /src/unbound/util/netevent.c:2352,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2354,1
    - Dst: doq_delete_connection
      Src: /src/unbound/util/netevent.c:2366,1
    - Dst: doq_done_setup_timer_and_write
      Src: /src/unbound/util/netevent.c:2369,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/util/netevent.c:2379,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2382,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2390,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:2393,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2401,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:2404,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:2416,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:2417,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:2420,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/netevent.c:2421,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:2422,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:2423,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:2424,1
    - Dst: memcpy
      Src: /src/unbound/util/netevent.c:2425,1
    - Dst: doq_send_pkt
      Src: /src/unbound/util/netevent.c:2426,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/netevent.c:2438,1
    - Dst: rbtree_first
      Src: /src/unbound/util/netevent.c:2439,1
    - Dst: timeval_smaller
      Src: /src/unbound/util/netevent.c:2445,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2446,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/netevent.c:2450,1
    - Dst: doq_timer_unset
      Src: /src/unbound/util/netevent.c:2454,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2455,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2458,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/netevent.c:2467,1
    - Dst: doq_timer_find_time
      Src: /src/unbound/util/netevent.c:2468,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2471,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2480,1
    - Dst: doq_timer_erase_marker
      Src: /src/unbound/util/netevent.c:2482,1
    - Dst: doq_timer_timeout_conn
      Src: /src/unbound/util/netevent.c:2484,1
    - Dst: ngtcp2_conn_in_closing_period
      Src: /src/unbound/util/netevent.c:2487,1
    - Dst: ngtcp2_conn_is_in_closing_period
      Src: /src/unbound/util/netevent.c:2489,1
    - Dst: ngtcp2_conn_in_draining_period
      Src: /src/unbound/util/netevent.c:2492,1
    - Dst: ngtcp2_conn_is_in_draining_period
      Src: /src/unbound/util/netevent.c:2494,1
    - Dst: addr_to_str
      Src: /src/unbound/util/netevent.c:2499,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2502,1
    - Dst: doq_delete_connection
      Src: /src/unbound/util/netevent.c:2505,1
    - Dst: doq_conn_handle_timeout
      Src: /src/unbound/util/netevent.c:2508,1
    - Dst: doq_delete_connection
      Src: /src/unbound/util/netevent.c:2509,1
    - Dst: doq_done_setup_timer_and_write
      Src: /src/unbound/util/netevent.c:2510,1
    - Dst: doq_socket_want_write
      Src: /src/unbound/util/netevent.c:2513,1
    - Dst: doq_socket_write_enable
      Src: /src/unbound/util/netevent.c:2514,1
    - Dst: doq_socket_write_disable
      Src: /src/unbound/util/netevent.c:2515,1
    - Dst: doq_pickup_timer
      Src: /src/unbound/util/netevent.c:2516,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2530,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2532,1
    - Dst: ub_comm_base_now
      Src: /src/unbound/util/netevent.c:2533,1
    - Dst: doq_write_blocked_pkt
      Src: /src/unbound/util/netevent.c:2541,1
    - Dst: doq_socket_write_enable
      Src: /src/unbound/util/netevent.c:2546,1
    - Dst: doq_pickup_timer
      Src: /src/unbound/util/netevent.c:2547,1
    - Dst: doq_write_list_length
      Src: /src/unbound/util/netevent.c:2554,1
    - Dst: doq_pop_write_conn
      Src: /src/unbound/util/netevent.c:2555,1
    - Dst: ngtcp2_conn_in_closing_period
      Src: /src/unbound/util/netevent.c:2558,1
    - Dst: ngtcp2_conn_is_in_closing_period
      Src: /src/unbound/util/netevent.c:2560,1
    - Dst: ngtcp2_conn_in_draining_period
      Src: /src/unbound/util/netevent.c:2563,1
    - Dst: ngtcp2_conn_is_in_draining_period
      Src: /src/unbound/util/netevent.c:2565,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2569,1
    - Dst: doq_socket_write_enable
      Src: /src/unbound/util/netevent.c:2572,1
    - Dst: doq_pickup_timer
      Src: /src/unbound/util/netevent.c:2573,1
    - Dst: addr_to_str
      Src: /src/unbound/util/netevent.c:2582,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2585,1
    - Dst: doq_sockaddr_get_port
      Src: /src/unbound/util/netevent.c:2586,1
    - Dst: doq_conn_write_streams
      Src: /src/unbound/util/netevent.c:2589,1
    - Dst: doq_done_with_write_cb
      Src: /src/unbound/util/netevent.c:2591,1
    - Dst: doq_socket_write_enable
      Src: /src/unbound/util/netevent.c:2594,1
    - Dst: doq_pickup_timer
      Src: /src/unbound/util/netevent.c:2595,1
    - Dst: doq_socket_write_enable
      Src: /src/unbound/util/netevent.c:2615,1
    - Dst: doq_pickup_timer
      Src: /src/unbound/util/netevent.c:2616,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:2619,1
    - Dst: doq_pkt_addr_init
      Src: /src/unbound/util/netevent.c:2620,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2621,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2622,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:2622,1
    - Dst: doq_recv
      Src: /src/unbound/util/netevent.c:2623,1
    - Dst: addr_to_str
      Src: /src/unbound/util/netevent.c:2632,1
    - Dst: addr_to_str
      Src: /src/unbound/util/netevent.c:2634,1
    - Dst: log_info
      Src: /src/unbound/util/netevent.c:2637,1
    - Dst: doq_sockaddr_get_port
      Src: /src/unbound/util/netevent.c:2639,1
    - Dst: doq_sockaddr_get_port
      Src: /src/unbound/util/netevent.c:2641,1
    - Dst: log_info
      Src: /src/unbound/util/netevent.c:2643,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:2644,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:2648,1
    - Dst: doq_decode_pkt_header_negotiate
      Src: /src/unbound/util/netevent.c:2652,1
    - Dst: doq_accept
      Src: /src/unbound/util/netevent.c:2655,1
    - Dst: doq_conn_write_streams
      Src: /src/unbound/util/netevent.c:2657,1
    - Dst: doq_delete_connection
      Src: /src/unbound/util/netevent.c:2658,1
    - Dst: doq_done_setup_timer_and_write
      Src: /src/unbound/util/netevent.c:2661,1
    - Dst: doq_done_setup_timer_and_write
      Src: /src/unbound/util/netevent.c:2674,1
    CyclomaticComplexity: 124
    EdgeCount: 124
    ICount: 477
    argCount: 3
    argNames:
    - c
    - paddr
    - conn
    argTypes:
    - struct comm_point*
    - struct doq_pkt_addr*
    - struct doq_conn**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2687
      start: 1743
    functionDepth: 10
    functionLinenumber: 1743
    functionLinenumberEnd: 2687
    functionName: doq_decode_pkt_header_negotiate
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - doq_conn_find_by_addr_or_cid
    - ub_comm_base_now
    - ngtcp2_crypto_write_connection_close
    - doq_conn_write_list_remove
    - struct ngtcp2_version_cid::dcidlen
    - doq_timer_set
    - log_err
    - doq_get_timestamp_nanosec
    - doq_timer_timeout_conn
    - doq_cid_randfill
    - memcpy
    - sldns_buffer_write
    - doq_timer_tree_remove
    - doq_done_with_write_cb
    - doq_socket_want_write
    - sldns_buffer_capacity
    - addr_to_str
    - timeval_smaller
    - doq_timer_find_time
    - log_info
    - doq_table_quic_size_add
    - doq_decode_pkt_header_negotiate
    - doq_print_addr_port
    - ngtcp2_strerror
    - ngtcp2_crypto_verify_retry_token
    - doq_timer_list_remove
    - doq_conn_delete
    - doq_conn_check_timer
    - sldns_buffer_begin
    - doq_table_quic_size_available
    - doq_send_version_negotiation
    - ngtcp2_accept
    - lock_rw_unlock
    - sldns_buffer_set_position
    - comm_timer_set
    - log_assert
    - doq_sockaddr_get_port
    - doq_conn_write_disable
    - doq_pkt_addr_init
    - sldns_buffer_flip
    - ngtcp2_crypto_write_retry
    - ngtcp2_conn_is_in_closing_period
    - rbtree_search
    - doq_timer_unset
    - doq_pickup_timer
    - ngtcp2_cid_init
    - doq_table_pop_first
    - doq_delete_connection
    - lock_basic_lock
    - doq_timer_erase_marker
    - doq_accept
    - comm_timer_is_set
    - doq_setup_new_conn
    - doq_socket_write_enable
    - log_hex
    - ngtcp2_crypto_generate_retry_token
    - doq_fill_rand
    - comm_point_listen_for_rw
    - doq_table_quic_size_subtract
    - doq_verify_token
    - doq_address_validation
    - comm_timer_disable
    - doq_write_list_length
    - lock_rw_rdlock
    - ngtcp2_pkt_decode_version_cid
    - sldns_buffer_remaining
    - doq_recv
    - sldns_buffer_limit
    - sldns_buffer_clear
    - doq_conn_setup
    - doq_write_blocked_pkt
    - doq_socket_write_disable
    - struct ngtcp2_version_cid::scidlen
    - doq_verify_retry_token
    - doq_send_pkt
    - doq_conn_create
    - lock_rw_wrlock
    - memset
    - ngtcp2_conn_is_in_draining_period
    - doq_send_retry
    - ngtcp2_conn_in_closing_period
    - doq_conn_recv
    - ngtcp2_conn_in_draining_period
    - doq_send_stateless_connection_close
    - timeval_subtract
    - rbtree_first
    - doq_conn_write_streams
    - doq_conn_handle_timeout
    - rbtree_delete
    - HAVE_STRUCT_NGTCP2_VERSION_CID
    - verbose
    - doq_pop_write_conn
    - lock_basic_unlock
    - doq_conn_set_write_list
    - rbtree_insert
    - doq_done_setup_timer_and_write
    linkageType: ''
    returnType: int
    signature: "int doq_decode_pkt_header_negotiate(struct comm_point* c,\n\tstruct
      doq_pkt_addr* paddr, struct doq_conn** conn)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: doq_print_addr_port
      Src: /src/unbound/util/netevent.c:1840,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1842,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:1845,1
    - Dst: doq_cid_randfill
      Src: /src/unbound/util/netevent.c:1849,1
    - Dst: ngtcp2_crypto_generate_retry_token
      Src: /src/unbound/util/netevent.c:1851,1
    - Dst: doq_get_timestamp_nanosec
      Src: /src/unbound/util/netevent.c:1854,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1856,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/util/netevent.c:1857,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:1861,1
    - Dst: ngtcp2_crypto_write_retry
      Src: /src/unbound/util/netevent.c:1862,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:1862,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/netevent.c:1863,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1866,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/util/netevent.c:1867,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/netevent.c:1870,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:1871,1
    - Dst: doq_send_pkt
      Src: /src/unbound/util/netevent.c:1872,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 22
    argCount: 3
    argNames:
    - c
    - paddr
    - hd
    argTypes:
    - struct comm_point*
    - struct doq_pkt_addr*
    - struct ngtcp2_pkt_hd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1873
      start: 1831
    functionDepth: 10
    functionLinenumber: 1831
    functionLinenumberEnd: 1873
    functionName: doq_send_retry
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - sldns_buffer_capacity
    - log_err
    - doq_get_timestamp_nanosec
    - doq_send_pkt
    - verbose
    - sldns_buffer_flip
    - doq_print_addr_port
    - ngtcp2_strerror
    - sldns_buffer_clear
    - sldns_buffer_set_position
    - ngtcp2_crypto_write_retry
    - sldns_buffer_begin
    - doq_cid_randfill
    - ngtcp2_crypto_generate_retry_token
    linkageType: ''
    returnType: void
    signature: "void doq_send_retry(struct comm_point* c, struct doq_pkt_addr* paddr,\n\tstruct
      ngtcp2_pkt_hd* hd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:1882,1
    - Dst: ngtcp2_crypto_write_connection_close
      Src: /src/unbound/util/netevent.c:1883,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:1884,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/netevent.c:1885,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1888,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/util/netevent.c:1889,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/netevent.c:1892,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:1893,1
    - Dst: doq_send_pkt
      Src: /src/unbound/util/netevent.c:1894,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - c
    - paddr
    - hd
    - error_code
    argTypes:
    - struct comm_point*
    - struct doq_pkt_addr*
    - struct ngtcp2_pkt_hd*
    - uint64_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1895
      start: 1876
    functionDepth: 7
    functionLinenumber: 1876
    functionLinenumberEnd: 1895
    functionName: doq_send_stateless_connection_close
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - sldns_buffer_capacity
    - log_err
    - doq_send_pkt
    - sldns_buffer_flip
    - ngtcp2_crypto_write_connection_close
    - sldns_buffer_clear
    - ngtcp2_strerror
    - sldns_buffer_set_position
    - sldns_buffer_begin
    linkageType: ''
    returnType: void
    signature: "void doq_send_stateless_connection_close(struct comm_point* c,\n\tstruct
      doq_pkt_addr* paddr, struct ngtcp2_pkt_hd* hd,\n\tuint64_t error_code)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: doq_print_addr_port
      Src: /src/unbound/util/netevent.c:1903,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1905,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:1908,1
    - Dst: ngtcp2_crypto_verify_retry_token
      Src: /src/unbound/util/netevent.c:1910,1
    - Dst: doq_get_timestamp_nanosec
      Src: /src/unbound/util/netevent.c:1919,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:1920,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:1924,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 4
    argNames:
    - c
    - paddr
    - ocid
    - hd
    argTypes:
    - struct comm_point*
    - struct doq_pkt_addr*
    - struct ngtcp2_cid*
    - struct ngtcp2_pkt_hd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1926
      start: 1898
    functionDepth: 10
    functionLinenumber: 1898
    functionLinenumberEnd: 1926
    functionName: doq_verify_retry_token
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - doq_get_timestamp_nanosec
    - log_err
    - verbose
    - doq_print_addr_port
    - ngtcp2_crypto_verify_retry_token
    linkageType: ''
    returnType: int
    signature: "int doq_verify_retry_token(struct comm_point* c, struct doq_pkt_addr*
      paddr,\n\tstruct ngtcp2_cid* ocid, struct ngtcp2_pkt_hd* hd)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doq_print_addr_port
      Src: /src/unbound/util/netevent.c:1934,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:1936,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:1939,1
    - Dst: doq_get_timestamp_nanosec
      Src: /src/unbound/util/netevent.c:1948,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:1949,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:1953,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 11
    argCount: 3
    argNames:
    - c
    - paddr
    - hd
    argTypes:
    - struct comm_point*
    - struct doq_pkt_addr*
    - struct ngtcp2_pkt_hd*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1955
      start: 1929
    functionDepth: 10
    functionLinenumber: 1929
    functionLinenumberEnd: 1955
    functionName: doq_verify_token
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - log_err
    - verbose
    - doq_print_addr_port
    - doq_get_timestamp_nanosec
    linkageType: ''
    returnType: int
    signature: "int doq_verify_token(struct comm_point* c, struct doq_pkt_addr* paddr,\n\tstruct
      ngtcp2_pkt_hd* hd)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: doq_conn_write_disable
      Src: /src/unbound/util/netevent.c:1968,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:1970,1
    - Dst: memcpy
      Src: /src/unbound/util/netevent.c:1971,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:1974,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/netevent.c:1977,1
    - Dst: rbtree_delete
      Src: /src/unbound/util/netevent.c:1978,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/netevent.c:1981,1
    - Dst: doq_conn_write_list_remove
      Src: /src/unbound/util/netevent.c:1982,1
    - Dst: doq_timer_list_remove
      Src: /src/unbound/util/netevent.c:1988,1
    - Dst: doq_timer_tree_remove
      Src: /src/unbound/util/netevent.c:1992,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:1995,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:1997,1
    - Dst: doq_table_quic_size_subtract
      Src: /src/unbound/util/netevent.c:1998,1
    - Dst: doq_conn_delete
      Src: /src/unbound/util/netevent.c:2000,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 2
    argNames:
    - c
    - conn
    argTypes:
    - struct comm_point*
    - struct doq_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2002
      start: 1958
    functionDepth: 3
    functionLinenumber: 1958
    functionLinenumberEnd: 2002
    functionName: doq_delete_connection
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - doq_conn_write_disable
    - memcpy
    - doq_table_quic_size_subtract
    - rbtree_delete
    - doq_timer_tree_remove
    - doq_conn_delete
    - lock_basic_unlock
    - lock_rw_wrlock
    - lock_rw_unlock
    - doq_conn_write_list_remove
    - log_assert
    - lock_basic_lock
    - doq_timer_list_remove
    linkageType: ''
    returnType: void
    signature: void doq_delete_connection(struct comm_point* c, struct doq_conn* conn)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: doq_table_quic_size_available
      Src: /src/unbound/util/netevent.c:2012,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2017,1
    - Dst: doq_send_stateless_connection_close
      Src: /src/unbound/util/netevent.c:2018,1
    - Dst: doq_conn_create
      Src: /src/unbound/util/netevent.c:2022,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:2025,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/netevent.c:2028,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/netevent.c:2029,1
    - Dst: rbtree_insert
      Src: /src/unbound/util/netevent.c:2030,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2031,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:2032,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2034,1
    - Dst: doq_conn_delete
      Src: /src/unbound/util/netevent.c:2035,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2038,1
    - Dst: doq_table_quic_size_add
      Src: /src/unbound/util/netevent.c:2039,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2041,1
    - Dst: doq_conn_setup
      Src: /src/unbound/util/netevent.c:2046,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:2054,1
    - Dst: doq_delete_connection
      Src: /src/unbound/util/netevent.c:2055,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 29
    argCount: 4
    argNames:
    - c
    - paddr
    - hd
    - ocid
    argTypes:
    - struct comm_point*
    - struct doq_pkt_addr*
    - struct ngtcp2_pkt_hd*
    - struct ngtcp2_cid*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2059
      start: 2007
    functionDepth: 8
    functionLinenumber: 2007
    functionLinenumberEnd: 2059
    functionName: doq_setup_new_conn
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - log_err
    - doq_conn_create
    - doq_conn_delete
    - verbose
    - lock_rw_wrlock
    - lock_rw_unlock
    - lock_basic_unlock
    - doq_table_quic_size_add
    - doq_send_stateless_connection_close
    - doq_delete_connection
    - doq_conn_setup
    - lock_basic_lock
    - doq_table_quic_size_available
    - rbtree_insert
    linkageType: ''
    returnType: struct doq_conn
    signature: "struct doq_conn *\ndoq_setup_new_conn(struct comm_point* c, struct
      doq_pkt_addr* paddr,\n\tstruct ngtcp2_pkt_hd* hd, struct ngtcp2_cid* ocid)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2074,1
    - Dst: doq_send_retry
      Src: /src/unbound/util/netevent.c:2077,1
    - Dst: doq_send_stateless_connection_close
      Src: /src/unbound/util/netevent.c:2082,1
    - Dst: doq_verify_retry_token
      Src: /src/unbound/util/netevent.c:2087,1
    - Dst: doq_send_stateless_connection_close
      Src: /src/unbound/util/netevent.c:2088,1
    - Dst: doq_verify_token
      Src: /src/unbound/util/netevent.c:2094,1
    - Dst: doq_send_retry
      Src: /src/unbound/util/netevent.c:2095,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2106,1
    - Dst: doq_send_retry
      Src: /src/unbound/util/netevent.c:2110,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 38
    argCount: 5
    argNames:
    - c
    - paddr
    - hd
    - ocid
    - pocid
    argTypes:
    - struct comm_point*
    - struct doq_pkt_addr*
    - struct ngtcp2_pkt_hd*
    - struct ngtcp2_cid*
    - struct ngtcp2_cid**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2122
      start: 2062
    functionDepth: 11
    functionLinenumber: 2062
    functionLinenumberEnd: 2122
    functionName: doq_address_validation
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - doq_send_retry
    - verbose
    - doq_verify_token
    - doq_send_stateless_connection_close
    - doq_verify_retry_token
    linkageType: ''
    returnType: int
    signature: "int doq_address_validation(struct comm_point* c, struct doq_pkt_addr*
      paddr,\n\tstruct ngtcp2_pkt_hd* hd, struct ngtcp2_cid* ocid,\n\tstruct ngtcp2_cid**
      pocid)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/util/netevent.c:2133,1
    - Dst: ngtcp2_accept
      Src: /src/unbound/util/netevent.c:2134,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:2134,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:2135,1
    - Dst: doq_send_retry
      Src: /src/unbound/util/netevent.c:2138,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:2141,1
    - Dst: ngtcp2_strerror
      Src: /src/unbound/util/netevent.c:2142,1
    - Dst: doq_address_validation
      Src: /src/unbound/util/netevent.c:2152,1
    - Dst: doq_setup_new_conn
      Src: /src/unbound/util/netevent.c:2155,1
    - Dst: doq_conn_recv
      Src: /src/unbound/util/netevent.c:2159,1
    - Dst: doq_send_retry
      Src: /src/unbound/util/netevent.c:2161,1
    - Dst: doq_delete_connection
      Src: /src/unbound/util/netevent.c:2162,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 4
    argNames:
    - c
    - paddr
    - conn
    - pi
    argTypes:
    - struct comm_point*
    - struct doq_pkt_addr*
    - struct doq_conn**
    - struct ngtcp2_pkt_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2167
      start: 2125
    functionDepth: 12
    functionLinenumber: 2125
    functionLinenumberEnd: 2167
    functionName: doq_accept
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - log_err
    - doq_send_retry
    - ngtcp2_accept
    - doq_delete_connection
    - doq_conn_recv
    - doq_address_validation
    - sldns_buffer_limit
    - ngtcp2_strerror
    - sldns_buffer_begin
    - memset
    - doq_setup_new_conn
    linkageType: ''
    returnType: int
    signature: "int doq_accept(struct comm_point* c, struct doq_pkt_addr* paddr,\n\tstruct
      doq_conn** conn, struct ngtcp2_pkt_info* pi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/util/netevent.c:2177,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/netevent.c:2179,1
    - Dst: memcpy
      Src: /src/unbound/util/netevent.c:2185,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2191,1
    - Dst: timeval_subtract
      Src: /src/unbound/util/netevent.c:2195,1
    - Dst: comm_timer_set
      Src: /src/unbound/util/netevent.c:2196,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2197,1
    - Dst: comm_timer_is_set
      Src: /src/unbound/util/netevent.c:2201,1
    - Dst: comm_timer_disable
      Src: /src/unbound/util/netevent.c:2202,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2203,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 22
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2205
      start: 2170
    functionDepth: 7
    functionLinenumber: 2170
    functionLinenumberEnd: 2205
    functionName: doq_pickup_timer
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - memcpy
    - lock_rw_wrlock
    - lock_rw_unlock
    - verbose
    - timeval_subtract
    - comm_timer_disable
    - comm_timer_set
    - memset
    - comm_timer_is_set
    linkageType: ''
    returnType: void
    signature: void doq_pickup_timer(struct comm_point* c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/util/netevent.c:2185,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 1
    argNames:
    - timer_tree
    argTypes:
    - c
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2190
      start: 2180
    functionDepth: 0
    functionLinenumber: 2180
    functionLinenumberEnd: 2190
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - memcpy
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(t, struct doq_timer*, c->doq_socket->table->timer_tree)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: doq_conn_check_timer
      Src: /src/unbound/util/netevent.c:2222,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2230,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2238,1
    - Dst: memcpy
      Src: /src/unbound/util/netevent.c:2239,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2242,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/netevent.c:2244,1
    - Dst: rbtree_search
      Src: /src/unbound/util/netevent.c:2245,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2247,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/netevent.c:2252,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2255,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2256,1
    - Dst: doq_conn_set_write_list
      Src: /src/unbound/util/netevent.c:2264,1
    - Dst: doq_timer_set
      Src: /src/unbound/util/netevent.c:2267,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2270,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2271,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 37
    argCount: 2
    argNames:
    - c
    - conn
    argTypes:
    - struct comm_point*
    - struct doq_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2272
      start: 2208
    functionDepth: 5
    functionLinenumber: 2208
    functionLinenumberEnd: 2272
    functionName: doq_done_setup_timer_and_write
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - memcpy
    - lock_basic_unlock
    - lock_rw_wrlock
    - lock_rw_unlock
    - doq_conn_check_timer
    - log_assert
    - lock_basic_lock
    - doq_conn_set_write_list
    - rbtree_search
    - doq_timer_set
    linkageType: ''
    returnType: void
    signature: void doq_done_setup_timer_and_write(struct comm_point* c, struct doq_conn*
      conn)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2290,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2297,1
    - Dst: memcpy
      Src: /src/unbound/util/netevent.c:2298,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2301,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/netevent.c:2303,1
    - Dst: rbtree_search
      Src: /src/unbound/util/netevent.c:2304,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2306,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/netevent.c:2311,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2314,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2315,1
    - Dst: doq_conn_set_write_list
      Src: /src/unbound/util/netevent.c:2322,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2323,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2324,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 2
    argNames:
    - c
    - conn
    argTypes:
    - struct comm_point*
    - struct doq_conn*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2325
      start: 2275
    functionDepth: 2
    functionLinenumber: 2275
    functionLinenumberEnd: 2325
    functionName: doq_done_with_conn_cb
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - memcpy
    - lock_basic_unlock
    - lock_rw_wrlock
    - lock_rw_unlock
    - log_assert
    - lock_basic_lock
    - doq_conn_set_write_list
    - rbtree_search
    linkageType: ''
    returnType: void
    signature: void doq_done_with_conn_cb(struct comm_point* c, struct doq_conn* conn)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/util/netevent.c:2333,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2339,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2341
      start: 2328
    functionDepth: 0
    functionLinenumber: 2328
    functionLinenumberEnd: 2341
    functionName: doq_write_list_length
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - lock_rw_unlock
    - lock_rw_rdlock
    linkageType: ''
    returnType: size_t
    signature: size_t doq_write_list_length(struct comm_point* c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/netevent.c:2348,1
    - Dst: doq_table_pop_first
      Src: /src/unbound/util/netevent.c:2349,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2351,1
    - Dst: doq_table_pop_first
      Src: /src/unbound/util/netevent.c:2352,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2354,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2358
      start: 2344
    functionDepth: 1
    functionLinenumber: 2344
    functionLinenumberEnd: 2358
    functionName: doq_pop_write_conn
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - lock_basic_unlock
    - doq_table_pop_first
    linkageType: ''
    returnType: struct doq_conn
    signature: 'struct doq_conn *

      doq_pop_write_conn(struct comm_point* c)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: doq_delete_connection
      Src: /src/unbound/util/netevent.c:2366,1
    - Dst: doq_done_setup_timer_and_write
      Src: /src/unbound/util/netevent.c:2369,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - c
    - conn
    - delete_it
    argTypes:
    - struct comm_point*
    - struct doq_conn*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2370
      start: 2361
    functionDepth: 6
    functionLinenumber: 2361
    functionLinenumberEnd: 2370
    functionName: doq_done_with_write_cb
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - doq_delete_connection
    - doq_done_setup_timer_and_write
    linkageType: ''
    returnType: void
    signature: "void doq_done_with_write_cb(struct comm_point* c, struct doq_conn*
      conn,\n\tint delete_it)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_rdlock
      Src: /src/unbound/util/netevent.c:2379,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2382,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2384
      start: 2373
    functionDepth: 0
    functionLinenumber: 2373
    functionLinenumberEnd: 2384
    functionName: doq_socket_want_write
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - lock_rw_unlock
    - lock_rw_rdlock
    linkageType: ''
    returnType: int
    signature: int doq_socket_want_write(struct comm_point* c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2390,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:2393,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2395
      start: 2387
    functionDepth: 7
    functionLinenumber: 2387
    functionLinenumberEnd: 2395
    functionName: doq_socket_write_enable
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - verbose
    - comm_point_listen_for_rw
    linkageType: ''
    returnType: void
    signature: void doq_socket_write_enable(struct comm_point* c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2401,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:2404,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2406
      start: 2398
    functionDepth: 7
    functionLinenumber: 2398
    functionLinenumberEnd: 2406
    functionName: doq_socket_write_disable
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - verbose
    - comm_point_listen_for_rw
    linkageType: ''
    returnType: void
    signature: void doq_socket_write_disable(struct comm_point* c)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:2416,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:2417,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:2420,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/netevent.c:2421,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:2422,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:2423,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:2424,1
    - Dst: memcpy
      Src: /src/unbound/util/netevent.c:2425,1
    - Dst: doq_send_pkt
      Src: /src/unbound/util/netevent.c:2426,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2430
      start: 2409
    functionDepth: 5
    functionLinenumber: 2409
    functionLinenumberEnd: 2430
    functionName: doq_write_blocked_pkt
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - sldns_buffer_remaining
    - memcpy
    - sldns_buffer_write
    - doq_send_pkt
    - sldns_buffer_flip
    - sldns_buffer_limit
    - sldns_buffer_clear
    - sldns_buffer_begin
    linkageType: ''
    returnType: int
    signature: int doq_write_blocked_pkt(struct comm_point* c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/netevent.c:2438,1
    - Dst: rbtree_first
      Src: /src/unbound/util/netevent.c:2439,1
    - Dst: timeval_smaller
      Src: /src/unbound/util/netevent.c:2445,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2446,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/netevent.c:2450,1
    - Dst: doq_timer_unset
      Src: /src/unbound/util/netevent.c:2454,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2455,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2458,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 1
    argNames:
    - doq_socket
    argTypes:
    - struct doq_server_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2460
      start: 2433
    functionDepth: 4
    functionLinenumber: 2433
    functionLinenumberEnd: 2460
    functionName: doq_timer_timeout_conn
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - timeval_smaller
    - rbtree_first
    - lock_basic_lock
    - doq_timer_unset
    linkageType: ''
    returnType: struct doq_conn
    signature: 'struct doq_conn *

      doq_timer_timeout_conn(struct doq_server_socket* doq_socket)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/netevent.c:2467,1
    - Dst: doq_timer_find_time
      Src: /src/unbound/util/netevent.c:2468,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2471,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - doq_socket
    argTypes:
    - struct doq_server_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2473
      start: 2463
    functionDepth: 2
    functionLinenumber: 2463
    functionLinenumberEnd: 2473
    functionName: doq_timer_erase_marker
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - doq_timer_find_time
    linkageType: ''
    returnType: void
    signature: void doq_timer_erase_marker(struct doq_server_socket* doq_socket)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2480,1
    - Dst: doq_timer_erase_marker
      Src: /src/unbound/util/netevent.c:2482,1
    - Dst: doq_timer_timeout_conn
      Src: /src/unbound/util/netevent.c:2484,1
    - Dst: ngtcp2_conn_in_closing_period
      Src: /src/unbound/util/netevent.c:2487,1
    - Dst: ngtcp2_conn_is_in_closing_period
      Src: /src/unbound/util/netevent.c:2489,1
    - Dst: ngtcp2_conn_in_draining_period
      Src: /src/unbound/util/netevent.c:2492,1
    - Dst: ngtcp2_conn_is_in_draining_period
      Src: /src/unbound/util/netevent.c:2494,1
    - Dst: addr_to_str
      Src: /src/unbound/util/netevent.c:2499,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2502,1
    - Dst: doq_delete_connection
      Src: /src/unbound/util/netevent.c:2505,1
    - Dst: doq_conn_handle_timeout
      Src: /src/unbound/util/netevent.c:2508,1
    - Dst: doq_delete_connection
      Src: /src/unbound/util/netevent.c:2509,1
    - Dst: doq_done_setup_timer_and_write
      Src: /src/unbound/util/netevent.c:2510,1
    - Dst: doq_socket_want_write
      Src: /src/unbound/util/netevent.c:2513,1
    - Dst: doq_socket_write_enable
      Src: /src/unbound/util/netevent.c:2514,1
    - Dst: doq_socket_write_disable
      Src: /src/unbound/util/netevent.c:2515,1
    - Dst: doq_pickup_timer
      Src: /src/unbound/util/netevent.c:2516,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 1
    argNames:
    - arg
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2517
      start: 2475
    functionDepth: 8
    functionLinenumber: 2475
    functionLinenumberEnd: 2517
    functionName: doq_timer_cb
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - ngtcp2_conn_is_in_draining_period
    - doq_pickup_timer
    - addr_to_str
    - ngtcp2_conn_in_closing_period
    - verbose
    - doq_delete_connection
    - doq_socket_write_enable
    - ngtcp2_conn_in_draining_period
    - doq_timer_timeout_conn
    - doq_socket_want_write
    - doq_socket_write_disable
    - doq_timer_erase_marker
    - doq_done_setup_timer_and_write
    - ngtcp2_conn_is_in_closing_period
    - doq_conn_handle_timeout
    linkageType: ''
    returnType: void
    signature: void doq_timer_cb(void* arg)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2530,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2532,1
    - Dst: ub_comm_base_now
      Src: /src/unbound/util/netevent.c:2533,1
    - Dst: doq_write_blocked_pkt
      Src: /src/unbound/util/netevent.c:2541,1
    - Dst: doq_socket_write_enable
      Src: /src/unbound/util/netevent.c:2546,1
    - Dst: doq_pickup_timer
      Src: /src/unbound/util/netevent.c:2547,1
    - Dst: doq_write_list_length
      Src: /src/unbound/util/netevent.c:2554,1
    - Dst: doq_pop_write_conn
      Src: /src/unbound/util/netevent.c:2555,1
    - Dst: ngtcp2_conn_in_closing_period
      Src: /src/unbound/util/netevent.c:2558,1
    - Dst: ngtcp2_conn_is_in_closing_period
      Src: /src/unbound/util/netevent.c:2560,1
    - Dst: ngtcp2_conn_in_draining_period
      Src: /src/unbound/util/netevent.c:2563,1
    - Dst: ngtcp2_conn_is_in_draining_period
      Src: /src/unbound/util/netevent.c:2565,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2569,1
    - Dst: doq_socket_write_enable
      Src: /src/unbound/util/netevent.c:2572,1
    - Dst: doq_pickup_timer
      Src: /src/unbound/util/netevent.c:2573,1
    - Dst: addr_to_str
      Src: /src/unbound/util/netevent.c:2582,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2585,1
    - Dst: doq_sockaddr_get_port
      Src: /src/unbound/util/netevent.c:2586,1
    - Dst: doq_conn_write_streams
      Src: /src/unbound/util/netevent.c:2589,1
    - Dst: doq_done_with_write_cb
      Src: /src/unbound/util/netevent.c:2591,1
    - Dst: doq_socket_write_enable
      Src: /src/unbound/util/netevent.c:2594,1
    - Dst: doq_pickup_timer
      Src: /src/unbound/util/netevent.c:2595,1
    - Dst: doq_socket_write_enable
      Src: /src/unbound/util/netevent.c:2615,1
    - Dst: doq_pickup_timer
      Src: /src/unbound/util/netevent.c:2616,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:2619,1
    - Dst: doq_pkt_addr_init
      Src: /src/unbound/util/netevent.c:2620,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2621,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2622,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:2622,1
    - Dst: doq_recv
      Src: /src/unbound/util/netevent.c:2623,1
    - Dst: addr_to_str
      Src: /src/unbound/util/netevent.c:2632,1
    - Dst: addr_to_str
      Src: /src/unbound/util/netevent.c:2634,1
    - Dst: log_info
      Src: /src/unbound/util/netevent.c:2637,1
    - Dst: doq_sockaddr_get_port
      Src: /src/unbound/util/netevent.c:2639,1
    - Dst: doq_sockaddr_get_port
      Src: /src/unbound/util/netevent.c:2641,1
    - Dst: log_info
      Src: /src/unbound/util/netevent.c:2643,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:2644,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:2648,1
    - Dst: doq_decode_pkt_header_negotiate
      Src: /src/unbound/util/netevent.c:2652,1
    - Dst: doq_accept
      Src: /src/unbound/util/netevent.c:2655,1
    - Dst: doq_conn_write_streams
      Src: /src/unbound/util/netevent.c:2657,1
    - Dst: doq_delete_connection
      Src: /src/unbound/util/netevent.c:2658,1
    - Dst: doq_done_setup_timer_and_write
      Src: /src/unbound/util/netevent.c:2661,1
    - Dst: doq_done_setup_timer_and_write
      Src: /src/unbound/util/netevent.c:2674,1
    CyclomaticComplexity: 41
    EdgeCount: 41
    ICount: 88
    argCount: 3
    argNames:
    - fd
    - event
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2677
      start: 2519
    functionDepth: 13
    functionLinenumber: 2519
    functionLinenumberEnd: 2677
    functionName: comm_point_doq_callback
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - doq_pickup_timer
    - doq_delete_connection
    - log_info
    - ub_comm_base_now
    - doq_decode_pkt_header_negotiate
    - doq_accept
    - ngtcp2_conn_is_in_draining_period
    - ngtcp2_conn_in_closing_period
    - doq_socket_write_enable
    - ngtcp2_conn_in_draining_period
    - doq_conn_write_streams
    - verbose
    - doq_done_with_write_cb
    - doq_write_list_length
    - log_assert
    - doq_pop_write_conn
    - doq_sockaddr_get_port
    - sldns_buffer_remaining
    - addr_to_str
    - doq_pkt_addr_init
    - doq_recv
    - lock_basic_unlock
    - sldns_buffer_limit
    - sldns_buffer_clear
    - doq_write_blocked_pkt
    - ngtcp2_conn_is_in_closing_period
    - doq_done_setup_timer_and_write
    linkageType: ''
    returnType: void
    signature: void comm_point_doq_callback(int fd, short event, void* arg)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2726,1
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:2727,1
    - Dst: memdup
      Src: /src/unbound/util/netevent.c:2737,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:2740,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/util/netevent.c:2747,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:2749,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:2750,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/util/netevent.c:2753,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/netevent.c:2754,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:2756,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:2757,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:2758,1
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:2761,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:2764,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:2765,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:2766,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:2767,1
    - Dst: comm_timer_create
      Src: /src/unbound/util/netevent.c:2770,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:2772,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:2773,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:2774,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:2775,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:2776,1
    - Dst: comm_base_timept
      Src: /src/unbound/util/netevent.c:2780,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 53
    argCount: 6
    argNames:
    - table
    - rnd
    - quic_sslctx
    - c
    - base
    - cfg
    argTypes:
    - struct doq_table*
    - struct ub_randstate*
    - void*
    - struct comm_point*
    - struct comm_base*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2783
      start: 2719
    functionDepth: 2
    functionLinenumber: 2719
    functionLinenumberEnd: 2783
    functionName: doq_server_socket_create
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - sldns_buffer_new
    - free
    - comm_timer_create
    - calloc
    - log_assert
    - sldns_buffer_free
    - memdup
    - comm_base_timept
    linkageType: ''
    returnType: struct doq_server_socket
    signature: "struct doq_server_socket *\ndoq_server_socket_create(struct doq_table*
      table, struct ub_randstate* rnd,\n\tconst void* quic_sslctx, struct comm_point*
      c, struct comm_base* base,\n\tstruct config_file* cfg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/netevent.c:2791,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:2793,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:2795,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:2796,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:2797,1
    - Dst: comm_timer_delete
      Src: /src/unbound/util/netevent.c:2798,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:2799,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 1
    argNames:
    - doq_socket
    argTypes:
    - struct doq_server_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2800
      start: 2786
    functionDepth: 2
    functionLinenumber: 2786
    functionLinenumberEnd: 2800
    functionName: doq_server_socket_delete
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - free
    - sldns_buffer_free
    - comm_timer_delete
    linkageType: ''
    returnType: void
    signature: void doq_server_socket_delete(struct doq_server_socket* doq_socket)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2808,1
    - Dst: doq_conn_key_from_repinfo
      Src: /src/unbound/util/netevent.c:2809,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/util/netevent.c:2810,1
    - Dst: doq_conn_find
      Src: /src/unbound/util/netevent.c:2811,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/netevent.c:2816,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2817,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/netevent.c:2820,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 2
    argNames:
    - table
    - repinfo
    argTypes:
    - struct doq_table*
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2822
      start: 2803
    functionDepth: 3
    functionLinenumber: 2803
    functionLinenumberEnd: 2822
    functionName: doq_lookup_repinfo
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - doq_conn_find
    - doq_conn_key_from_repinfo
    - lock_rw_unlock
    - log_assert
    - lock_basic_lock
    - lock_rw_rdlock
    linkageType: ''
    returnType: struct doq_conn
    signature: 'struct doq_conn *

      doq_lookup_repinfo(struct doq_table* table, struct comm_reply* repinfo)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2829,1
    - Dst: doq_lookup_repinfo
      Src: /src/unbound/util/netevent.c:2833,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2835,1
    - Dst: doq_stream_find
      Src: /src/unbound/util/netevent.c:2846,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2851,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/netevent.c:2860,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 32
    argCount: 4
    argNames:
    - repinfo
    - c
    - conn
    - stream
    argTypes:
    - struct comm_reply*
    - struct comm_point*
    - struct doq_conn**
    - struct doq_stream**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2865
      start: 2825
    functionDepth: 4
    functionLinenumber: 2825
    functionLinenumberEnd: 2865
    functionName: doq_lookup_conn_stream
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - lock_basic_unlock
    - doq_stream_find
    - log_assert
    - doq_lookup_repinfo
    linkageType: ''
    returnType: int
    signature: "int doq_lookup_conn_stream(struct comm_reply* repinfo, struct comm_point*
      c,\n\tstruct doq_conn** conn, struct doq_stream** stream)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2873,1
    - Dst: doq_lookup_conn_stream
      Src: /src/unbound/util/netevent.c:2874,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2875,1
    - Dst: doq_stream_send_reply
      Src: /src/unbound/util/netevent.c:2881,1
    - Dst: doq_stream_close
      Src: /src/unbound/util/netevent.c:2882,1
    - Dst: doq_done_with_conn_cb
      Src: /src/unbound/util/netevent.c:2886,1
    - Dst: doq_socket_write_enable
      Src: /src/unbound/util/netevent.c:2894,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - repinfo
    argTypes:
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2896
      start: 2868
    functionDepth: 8
    functionLinenumber: 2868
    functionLinenumberEnd: 2896
    functionName: doq_socket_send_reply
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - doq_stream_send_reply
    - doq_stream_close
    - verbose
    - doq_socket_write_enable
    - doq_lookup_conn_stream
    - log_assert
    - doq_done_with_conn_cb
    linkageType: ''
    returnType: void
    signature: void doq_socket_send_reply(struct comm_reply* repinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2904,1
    - Dst: doq_lookup_conn_stream
      Src: /src/unbound/util/netevent.c:2905,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2906,1
    - Dst: doq_stream_close
      Src: /src/unbound/util/netevent.c:2911,1
    - Dst: doq_done_with_conn_cb
      Src: /src/unbound/util/netevent.c:2915,1
    - Dst: doq_socket_write_enable
      Src: /src/unbound/util/netevent.c:2916,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 1
    argNames:
    - repinfo
    argTypes:
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2918
      start: 2899
    functionDepth: 8
    functionLinenumber: 2899
    functionLinenumberEnd: 2918
    functionName: doq_socket_drop_reply
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - doq_stream_close
    - verbose
    - doq_socket_write_enable
    - doq_lookup_conn_stream
    - log_assert
    - doq_done_with_conn_cb
    linkageType: ''
    returnType: void
    signature: void doq_socket_drop_reply(struct comm_reply* repinfo)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2926
      start: 2921
    functionDepth: 0
    functionLinenumber: 2921
    functionLinenumberEnd: 2926
    functionName: adjusted_tcp_timeout
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int adjusted_tcp_timeout(struct comm_point* c)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2933,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:2934,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:2935,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:2938,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/util/netevent.c:2964,1
    - Dst: adjusted_tcp_timeout
      Src: /src/unbound/util/netevent.c:2964,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 4
    argNames:
    - c
    - fd
    - cur
    - max
    argTypes:
    - struct comm_point*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2965
      start: 2929
    functionDepth: 2
    functionLinenumber: 2929
    functionLinenumberEnd: 2965
    functionName: setup_tcp_handler
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - comm_point_start_listening
    - log_assert
    - adjusted_tcp_timeout
    - sldns_buffer_clear
    linkageType: ''
    returnType: void
    signature: void setup_tcp_handler(struct comm_point* c, int fd, int cur, int max)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:2973,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:2974,1
    - Dst: fptr_whitelist_start_accept
      Src: /src/unbound/util/netevent.c:2974,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2978
      start: 2967
    functionDepth: 7
    functionLinenumber: 2967
    functionLinenumberEnd: 2978
    functionName: comm_base_handle_slow_accept
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - verbose
    - fptr_whitelist_start_accept
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: "void comm_base_handle_slow_accept(int ATTR_UNUSED(fd),\n\tshort ATTR_UNUSED(event),
      void* arg)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ub_event_new
      Src: /src/unbound/util/netevent.c:3000,1
    - Dst: accept
      Src: /src/unbound/util/netevent.c:3006,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:3008,1
    - Dst: sock_close
      Src: /src/unbound/util/netevent.c:3010,1
    - Dst: ub_comm_base_now
      Src: /src/unbound/util/netevent.c:3014,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:3017,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:3022,1
    - Dst: fptr_whitelist_stop_accept
      Src: /src/unbound/util/netevent.c:3022,1
    - Dst: ub_event_add
      Src: /src/unbound/util/netevent.c:3030,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 28
    argCount: 2
    argNames:
    - c
    - msec
    argTypes:
    - struct comm_point*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3034
      start: 2989
    functionDepth: 7
    functionLinenumber: 2989
    functionLinenumberEnd: 3034
    functionName: comm_point_slow_accept
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - accept
    - sock_close
    - verbose
    - ub_comm_base_now
    - fptr_whitelist_stop_accept
    - ub_event_add
    - fptr_ok
    - ub_event_new
    linkageType: ''
    returnType: void
    signature: void comm_point_slow_accept(struct comm_point* c, int msec)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: accept
      Src: /src/unbound/util/netevent.c:3042,1
    - Dst: accept4
      Src: /src/unbound/util/netevent.c:3045,1
    - Dst: ub_event_new
      Src: /src/unbound/util/netevent.c:3069,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:3073,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:3077,1
    - Dst: ub_comm_base_now
      Src: /src/unbound/util/netevent.c:3079,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:3083,1
    - Dst: sock_strerror
      Src: /src/unbound/util/netevent.c:3087,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:3090,1
    - Dst: fptr_whitelist_stop_accept
      Src: /src/unbound/util/netevent.c:3090,1
    - Dst: ub_event_add
      Src: /src/unbound/util/netevent.c:3097,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:3103,1
    - Dst: sock_strerror
      Src: /src/unbound/util/netevent.c:3104,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:3110,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:3111,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:3113,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/util/netevent.c:3114,1
    - Dst: log_err_addr
      Src: /src/unbound/util/netevent.c:3118,1
    - Dst: sock_strerror
      Src: /src/unbound/util/netevent.c:3118,1
    - Dst: tcl_addr_lookup
      Src: /src/unbound/util/netevent.c:3123,1
    - Dst: tcl_new_connection
      Src: /src/unbound/util/netevent.c:3124,1
    - Dst: log_err_addr
      Src: /src/unbound/util/netevent.c:3126,1
    - Dst: sock_close
      Src: /src/unbound/util/netevent.c:3128,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/util/netevent.c:3133,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 52
    argCount: 3
    argNames:
    - c
    - addr
    - addrlen
    argTypes:
    - struct comm_point*
    - struct sockaddr_storage*
    - socklen_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3136
      start: 3036
    functionDepth: 7
    functionLinenumber: 3036
    functionLinenumberEnd: 3136
    functionName: comm_point_perform_accept
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - accept
    - log_err
    - tcl_addr_lookup
    - sock_close
    - verbose
    - tcl_new_connection
    - ub_comm_base_now
    - fptr_whitelist_stop_accept
    - ub_event_add
    - fptr_ok
    - WSAGetLastError
    - ub_winsock_tcp_wouldblock
    - log_err_addr
    - fd_set_nonblock
    - sock_strerror
    - ub_event_new
    - accept4
    linkageType: ''
    returnType: int
    signature: "int comm_point_perform_accept(struct comm_point* c,\n\tstruct sockaddr_storage*
      addr, socklen_t* addrlen)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:3151,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:3152,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/util/netevent.c:3160,1
    - Dst: BIO_get_callback_arg
      Src: /src/unbound/util/netevent.c:3161,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/util/netevent.c:3166,1
    - Dst: BIO_get_callback_arg
      Src: /src/unbound/util/netevent.c:3167,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 11
    argCount: 8
    argNames:
    - b
    - oper
    - ATTR_UNUSED(argp)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - argl
    - retvalue
    - ATTR_UNUSED(processed)
    argTypes:
    - BIO*
    - int
    - char*
    - HAVE_BIO_SET_CALLBACK_EX
    - int
    - long
    - int
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3171
      start: 3139
    functionDepth: 7
    functionLinenumber: 3139
    functionLinenumberEnd: 3171
    functionName: win_bio_cb
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - BIO_get_callback_arg
    - verbose
    - WSAGetLastError
    - ub_winsock_tcp_wouldblock
    linkageType: ''
    returnType: long
    signature: "long win_bio_cb(BIO *b, int oper, const char* ATTR_UNUSED(argp),\n#ifdef
      HAVE_BIO_SET_CALLBACK_EX\n\tsize_t ATTR_UNUSED(len),\n#endif\n        int ATTR_UNUSED(argi),
      long argl,\n#ifndef HAVE_BIO_SET_CALLBACK_EX\n\tlong retvalue\n#else\n\tint
      retvalue, size_t* ATTR_UNUSED(processed)\n#endif\n\t)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: BIO_set_callback_ex
      Src: /src/unbound/util/netevent.c:3180,1
    - Dst: SSL_get_rbio
      Src: /src/unbound/util/netevent.c:3180,1
    - Dst: BIO_set_callback
      Src: /src/unbound/util/netevent.c:3182,1
    - Dst: SSL_get_rbio
      Src: /src/unbound/util/netevent.c:3182,1
    - Dst: BIO_set_callback_arg
      Src: /src/unbound/util/netevent.c:3184,1
    - Dst: SSL_get_rbio
      Src: /src/unbound/util/netevent.c:3184,1
    - Dst: BIO_set_callback_ex
      Src: /src/unbound/util/netevent.c:3186,1
    - Dst: SSL_get_wbio
      Src: /src/unbound/util/netevent.c:3186,1
    - Dst: BIO_set_callback
      Src: /src/unbound/util/netevent.c:3188,1
    - Dst: SSL_get_wbio
      Src: /src/unbound/util/netevent.c:3188,1
    - Dst: BIO_set_callback_arg
      Src: /src/unbound/util/netevent.c:3190,1
    - Dst: SSL_get_wbio
      Src: /src/unbound/util/netevent.c:3190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 2
    argNames:
    - c
    - thessl
    argTypes:
    - struct comm_point*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3191
      start: 3174
    functionDepth: 0
    functionLinenumber: 3174
    functionLinenumberEnd: 3191
    functionName: comm_point_tcp_win_bio_cb
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - SSL_get_rbio
    - SSL_get_wbio
    - BIO_set_callback
    - BIO_set_callback_arg
    - BIO_set_callback_ex
    linkageType: ''
    returnType: void
    signature: void comm_point_tcp_win_bio_cb(struct comm_point* c, void* thessl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:3198,1
    - Dst: nghttp2_session_server_new
      Src: /src/unbound/util/netevent.c:3200,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:3203,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - h2_session
    argTypes:
    - struct http2_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3208
      start: 3196
    functionDepth: 7
    functionLinenumber: 3196
    functionLinenumberEnd: 3208
    functionName: http2_session_server_create
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - nghttp2_session_server_new
    - log_assert
    - log_err
    linkageType: ''
    returnType: int
    signature: int http2_session_server_create(struct http2_session* h2_session)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_submit_settings
      Src: /src/unbound/util/netevent.c:3218,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:3221,1
    - Dst: nghttp2_strerror
      Src: /src/unbound/util/netevent.c:3222,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - h2_session
    argTypes:
    - struct http2_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3226
      start: 3211
    functionDepth: 7
    functionLinenumber: 3211
    functionLinenumberEnd: 3226
    functionName: http2_submit_settings
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 2
    functionsReached:
    - verbose
    - nghttp2_submit_settings
    - nghttp2_strerror
    linkageType: ''
    returnType: int
    signature: int http2_submit_settings(struct http2_session* h2_session)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mesh_state_remove_reply
      Src: /src/unbound/util/netevent.c:3235,1
    - Dst: http2_req_stream_clear
      Src: /src/unbound/util/netevent.c:3239,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:3240,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - h2_session
    - h2_stream
    argTypes:
    - struct http2_session*
    - struct http2_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3241
      start: 3231
    functionDepth: 3
    functionLinenumber: 3231
    functionLinenumberEnd: 3241
    functionName: http2_stream_delete
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - free
    - mesh_state_remove_reply
    - http2_req_stream_clear
    linkageType: ''
    returnType: void
    signature: "void http2_stream_delete(struct http2_session* h2_session,\n\tstruct
      http2_stream* h2_stream)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_session_del
      Src: /src/unbound/util/netevent.c:3249,1
    - Dst: http2_stream_delete
      Src: /src/unbound/util/netevent.c:3253,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 1
    argNames:
    - h2_session
    argTypes:
    - struct http2_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3262
      start: 3245
    functionDepth: 4
    functionLinenumber: 3245
    functionLinenumberEnd: 3262
    functionName: http2_session_server_delete
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - http2_stream_delete
    - nghttp2_session_del
    linkageType: ''
    returnType: void
    signature: void http2_session_server_delete(struct http2_session* h2_session)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:3269,1
    - Dst: log_info
      Src: /src/unbound/util/netevent.c:3271,1
    - Dst: ub_comm_base_now
      Src: /src/unbound/util/netevent.c:3274,1
    - Dst: log_warn
      Src: /src/unbound/util/netevent.c:3277,1
    - Dst: comm_point_slow_accept
      Src: /src/unbound/util/netevent.c:3284,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:3291,1
    - Dst: ub_event_free
      Src: /src/unbound/util/netevent.c:3294,1
    - Dst: http2_session_server_create
      Src: /src/unbound/util/netevent.c:3304,1
    - Dst: log_warn
      Src: /src/unbound/util/netevent.c:3305,1
    - Dst: comm_point_slow_accept
      Src: /src/unbound/util/netevent.c:3306,1
    - Dst: http2_submit_settings
      Src: /src/unbound/util/netevent.c:3310,1
    - Dst: log_warn
      Src: /src/unbound/util/netevent.c:3311,1
    - Dst: http2_session_server_delete
      Src: /src/unbound/util/netevent.c:3313,1
    - Dst: comm_point_slow_accept
      Src: /src/unbound/util/netevent.c:3314,1
    - Dst: ub_event_new
      Src: /src/unbound/util/netevent.c:3322,1
    - Dst: ub_event_new
      Src: /src/unbound/util/netevent.c:3326,1
    - Dst: log_warn
      Src: /src/unbound/util/netevent.c:3331,1
    - Dst: http2_session_server_delete
      Src: /src/unbound/util/netevent.c:3334,1
    - Dst: comm_point_slow_accept
      Src: /src/unbound/util/netevent.c:3336,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:3339,1
    - Dst: comm_point_perform_accept
      Src: /src/unbound/util/netevent.c:3341,1
    - Dst: http2_session_server_delete
      Src: /src/unbound/util/netevent.c:3346,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:3357,1
    - Dst: incoming_ssl_fd
      Src: /src/unbound/util/netevent.c:3361,1
    - Dst: comm_point_close
      Src: /src/unbound/util/netevent.c:3364,1
    - Dst: comm_point_tcp_win_bio_cb
      Src: /src/unbound/util/netevent.c:3369,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:3375,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:3376,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/util/netevent.c:3384,1
    - Dst: setup_tcp_handler
      Src: /src/unbound/util/netevent.c:3386,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 79
    argCount: 3
    argNames:
    - fd
    - event
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3387
      start: 3264
    functionDepth: 8
    functionLinenumber: 3264
    functionLinenumberEnd: 3387
    functionName: comm_point_tcp_accept_callback
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - http2_session_server_delete
    - comm_point_perform_accept
    - comm_point_stop_listening
    - memmove
    - incoming_ssl_fd
    - comm_point_tcp_win_bio_cb
    - log_info
    - ub_comm_base_now
    - comm_point_close
    - ub_event_free
    - log_assert
    - http2_submit_settings
    - comm_point_slow_accept
    - log_warn
    - setup_tcp_handler
    - ub_event_new
    - http2_session_server_create
    linkageType: ''
    returnType: void
    signature: void comm_point_tcp_accept_callback(int fd, short event, void* arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:3393,1
    - Dst: SSL_shutdown
      Src: /src/unbound/util/netevent.c:3396,1
    - Dst: SSL_free
      Src: /src/unbound/util/netevent.c:3397,1
    - Dst: comm_point_close
      Src: /src/unbound/util/netevent.c:3401,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:3404,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:3405,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/util/netevent.c:3412,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:3419,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 24
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3420
      start: 3390
    functionDepth: 2
    functionLinenumber: 3390
    functionLinenumberEnd: 3420
    functionName: reclaim_tcp_handler
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - SSL_free
    - sldns_buffer_clear
    - comm_point_close
    - comm_point_start_listening
    - log_assert
    - SSL_shutdown
    linkageType: ''
    returnType: void
    signature: void reclaim_tcp_handler(struct comm_point* c)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:3426,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:3428,1
    - Dst: tcp_req_info_handle_writedone
      Src: /src/unbound/util/netevent.c:3435,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/util/netevent.c:3437,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:3439,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:3439,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/util/netevent.c:3442,1
    - Dst: adjusted_tcp_timeout
      Src: /src/unbound/util/netevent.c:3443,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/util/netevent.c:3446,1
    - Dst: adjusted_tcp_timeout
      Src: /src/unbound/util/netevent.c:3447,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3450
      start: 3423
    functionDepth: 8
    functionLinenumber: 3423
    functionLinenumberEnd: 3450
    functionName: tcp_callback_writer
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - comm_point_stop_listening
    - adjusted_tcp_timeout
    - fptr_whitelist_comm_point
    - sldns_buffer_clear
    - fptr_ok
    - tcp_req_info_handle_writedone
    - comm_point_start_listening
    - log_assert
    linkageType: ''
    returnType: void
    signature: void tcp_callback_writer(struct comm_point* c)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:3456,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:3457,1
    - Dst: tcp_req_info_handle_readdone
      Src: /src/unbound/util/netevent.c:3462,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/util/netevent.c:3465,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:3466,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:3466,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/util/netevent.c:3468,1
    - Dst: adjusted_tcp_timeout
      Src: /src/unbound/util/netevent.c:3469,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3472
      start: 3453
    functionDepth: 8
    functionLinenumber: 3453
    functionLinenumberEnd: 3472
    functionName: tcp_callback_reader
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - tcp_req_info_handle_readdone
    - comm_point_stop_listening
    - adjusted_tcp_timeout
    - sldns_buffer_flip
    - fptr_whitelist_comm_point
    - fptr_ok
    - comm_point_start_listening
    - log_assert
    linkageType: ''
    returnType: void
    signature: void tcp_callback_reader(struct comm_point* c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ERR_GET_LIB
      Src: /src/unbound/util/netevent.c:3481,1
    - Dst: ERR_GET_REASON
      Src: /src/unbound/util/netevent.c:3482,1
    - Dst: ERR_GET_REASON
      Src: /src/unbound/util/netevent.c:3483,1
    - Dst: ERR_GET_REASON
      Src: /src/unbound/util/netevent.c:3484,1
    - Dst: ERR_GET_REASON
      Src: /src/unbound/util/netevent.c:3485,1
    - Dst: ERR_GET_REASON
      Src: /src/unbound/util/netevent.c:3487,1
    - Dst: ERR_GET_REASON
      Src: /src/unbound/util/netevent.c:3490,1
    - Dst: ERR_GET_REASON
      Src: /src/unbound/util/netevent.c:3491,1
    - Dst: ERR_GET_REASON
      Src: /src/unbound/util/netevent.c:3493,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 6
    argCount: 1
    argNames:
    - err
    argTypes:
    - unsigned long
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3499
      start: 3476
    functionDepth: 0
    functionLinenumber: 3476
    functionLinenumberEnd: 3499
    functionName: squelch_err_ssl_handshake
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 2
    functionsReached:
    - ERR_GET_REASON
    - ERR_GET_LIB
    linkageType: ''
    returnType: int
    signature: int squelch_err_ssl_handshake(unsigned long err)
  - BBCount: 25
    BranchProfiles: []
    Callsites:
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:3510,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:3516,1
    - Dst: ERR_clear_error
      Src: /src/unbound/util/netevent.c:3521,1
    - Dst: SSL_do_handshake
      Src: /src/unbound/util/netevent.c:3522,1
    - Dst: SSL_get_error
      Src: /src/unbound/util/netevent.c:3524,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:3529,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:3535,1
    - Dst: tcp_connect_errno_needs_log
      Src: /src/unbound/util/netevent.c:3549,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:3556,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:3557,1
    - Dst: ERR_get_error
      Src: /src/unbound/util/netevent.c:3560,1
    - Dst: squelch_err_ssl_handshake
      Src: /src/unbound/util/netevent.c:3561,1
    - Dst: log_crypto_err_io_code
      Src: /src/unbound/util/netevent.c:3563,1
    - Dst: SSL_get_verify_result
      Src: /src/unbound/util/netevent.c:3565,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:3566,1
    - Dst: X509_verify_cert_error_string
      Src: /src/unbound/util/netevent.c:3567,1
    - Dst: log_addr
      Src: /src/unbound/util/netevent.c:3569,1
    - Dst: SSL_get_verify_mode
      Src: /src/unbound/util/netevent.c:3577,1
    - Dst: SSL_get_verify_result
      Src: /src/unbound/util/netevent.c:3579,1
    - Dst: SSL_get1_peer_certificate
      Src: /src/unbound/util/netevent.c:3581,1
    - Dst: SSL_get_peer_certificate
      Src: /src/unbound/util/netevent.c:3583,1
    - Dst: log_addr
      Src: /src/unbound/util/netevent.c:3586,1
    - Dst: log_cert
      Src: /src/unbound/util/netevent.c:3592,1
    - Dst: SSL_get0_peername
      Src: /src/unbound/util/netevent.c:3594,1
    - Dst: snprintf
      Src: /src/unbound/util/netevent.c:3596,1
    - Dst: SSL_get0_peername
      Src: /src/unbound/util/netevent.c:3598,1
    - Dst: log_addr
      Src: /src/unbound/util/netevent.c:3599,1
    - Dst: log_addr
      Src: /src/unbound/util/netevent.c:3603,1
    - Dst: X509_free
      Src: /src/unbound/util/netevent.c:3609,1
    - Dst: SSL_get1_peer_certificate
      Src: /src/unbound/util/netevent.c:3612,1
    - Dst: SSL_get_peer_certificate
      Src: /src/unbound/util/netevent.c:3614,1
    - Dst: log_cert
      Src: /src/unbound/util/netevent.c:3617,1
    - Dst: X509_free
      Src: /src/unbound/util/netevent.c:3618,1
    - Dst: log_addr
      Src: /src/unbound/util/netevent.c:3620,1
    - Dst: log_addr
      Src: /src/unbound/util/netevent.c:3629,1
    - Dst: SSL_get0_alpn_selected
      Src: /src/unbound/util/netevent.c:3638,1
    - Dst: memcmp
      Src: /src/unbound/util/netevent.c:3639,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:3644,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:3653,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:3655,1
    CyclomaticComplexity: 28
    EdgeCount: 28
    ICount: 94
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3659
      start: 3504
    functionDepth: 7
    functionLinenumber: 3504
    functionLinenumberEnd: 3659
    functionName: ssl_handshake
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 5
    functionsReached:
    - X509_verify_cert_error_string
    - snprintf
    - log_crypto_err_io_code
    - SSL_do_handshake
    - squelch_err_ssl_handshake
    - log_err
    - X509_free
    - comm_point_listen_for_rw
    - verbose
    - ERR_get_error
    - strerror
    - SSL_get_peer_certificate
    - SSL_get_verify_mode
    - ERR_clear_error
    - SSL_get0_alpn_selected
    - tcp_connect_errno_needs_log
    - log_cert
    - SSL_get0_peername
    - memcmp
    - log_addr
    - SSL_get_verify_result
    - SSL_get1_peer_certificate
    - SSL_get_error
    linkageType: ''
    returnType: int
    signature: int ssl_handshake(struct comm_point* c)
  - BBCount: 55
    BranchProfiles: []
    Callsites:
    - Dst: ssl_handshake
      Src: /src/unbound/util/netevent.c:3669,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:3680,1
    - Dst: log_err_addr
      Src: /src/unbound/util/netevent.c:3681,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:3687,1
    - Dst: ERR_clear_error
      Src: /src/unbound/util/netevent.c:3692,1
    - Dst: SSL_read
      Src: /src/unbound/util/netevent.c:3693,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/util/netevent.c:3693,1
    - Dst: SSL_get_error
      Src: /src/unbound/util/netevent.c:3697,1
    - Dst: tcp_req_info_handle_read_close
      Src: /src/unbound/util/netevent.c:3700,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/util/netevent.c:3704,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:3709,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:3717,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:3718,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/util/netevent.c:3721,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/netevent.c:3726,1
    - Dst: pp2_read_header
      Src: /src/unbound/util/netevent.c:3733,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:3734,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:3735,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:3737,1
    - Dst: pp_lookup_error
      Src: /src/unbound/util/netevent.c:3739,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:3742,1
    - Dst: ntohs
      Src: /src/unbound/util/netevent.c:3743,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:3744,1
    - Dst: log_err_addr
      Src: /src/unbound/util/netevent.c:3746,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:3752,1
    - Dst: ERR_clear_error
      Src: /src/unbound/util/netevent.c:3760,1
    - Dst: SSL_read
      Src: /src/unbound/util/netevent.c:3761,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/util/netevent.c:3761,1
    - Dst: SSL_get_error
      Src: /src/unbound/util/netevent.c:3765,1
    - Dst: tcp_req_info_handle_read_close
      Src: /src/unbound/util/netevent.c:3768,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/util/netevent.c:3772,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:3777,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:3785,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:3786,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/util/netevent.c:3789,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/netevent.c:3794,1
    - Dst: log_err_addr
      Src: /src/unbound/util/netevent.c:3800,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:3805,1
    - Dst: consume_pp2_header
      Src: /src/unbound/util/netevent.c:3806,1
    - Dst: log_err_addr
      Src: /src/unbound/util/netevent.c:3807,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:3812,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:3816,1
    - Dst: ERR_clear_error
      Src: /src/unbound/util/netevent.c:3822,1
    - Dst: SSL_read
      Src: /src/unbound/util/netevent.c:3823,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/util/netevent.c:3823,1
    - Dst: SSL_get_error
      Src: /src/unbound/util/netevent.c:3826,1
    - Dst: tcp_req_info_handle_read_close
      Src: /src/unbound/util/netevent.c:3829,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/util/netevent.c:3833,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:3838,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:3846,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:3847,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/util/netevent.c:3850,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/util/netevent.c:3856,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/netevent.c:3857,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:3858,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/util/netevent.c:3861,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/util/netevent.c:3862,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:3863,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:3864,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/netevent.c:3867,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:3868,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:3869,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:3871,1
    - Dst: ERR_clear_error
      Src: /src/unbound/util/netevent.c:3872,1
    - Dst: SSL_read
      Src: /src/unbound/util/netevent.c:3873,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/netevent.c:3873,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:3874,1
    - Dst: SSL_get_error
      Src: /src/unbound/util/netevent.c:3876,1
    - Dst: tcp_req_info_handle_read_close
      Src: /src/unbound/util/netevent.c:3879,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/util/netevent.c:3883,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:3888,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:3896,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:3897,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/util/netevent.c:3900,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/netevent.c:3903,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:3905,1
    - Dst: tcp_callback_reader
      Src: /src/unbound/util/netevent.c:3906,1
    CyclomaticComplexity: 60
    EdgeCount: 60
    ICount: 193
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 3913
      start: 3663
    functionDepth: 9
    functionLinenumber: 3663
    functionLinenumberEnd: 3913
    functionName: ssl_handle_read
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_skip
    - ub_winsock_tcp_wouldblock
    - tcp_req_info_handle_read_close
    - sldns_buffer_current
    - log_err
    - consume_pp2_header
    - pp_lookup_error
    - sldns_buffer_begin
    - sldns_buffer_read_u16_at
    - pp2_read_header
    - comm_point_listen_for_rw
    - verbose
    - strerror
    - ERR_clear_error
    - ssl_handshake
    - sldns_buffer_remaining
    - sldns_buffer_capacity
    - sldns_buffer_at
    - ntohs
    - log_crypto_err_io
    - sldns_buffer_flip
    - sldns_buffer_limit
    - SSL_read
    - sldns_buffer_clear
    - log_err_addr
    - sldns_buffer_set_limit
    - tcp_callback_reader
    - SSL_get_error
    linkageType: ''
    returnType: int
    signature: int ssl_handle_read(struct comm_point* c)
  - BBCount: 29
    BranchProfiles: []
    Callsites:
    - Dst: ssl_handshake
      Src: /src/unbound/util/netevent.c:3922,1
    - Dst: SSL_set_mode
      Src: /src/unbound/util/netevent.c:3928,1
    - Dst: htons
      Src: /src/unbound/util/netevent.c:3930,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:3930,1
    - Dst: ERR_clear_error
      Src: /src/unbound/util/netevent.c:3931,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:3937,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:3938,1
    - Dst: SSL_write
      Src: /src/unbound/util/netevent.c:3941,1
    - Dst: SSL_write
      Src: /src/unbound/util/netevent.c:3946,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:3950,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:3955,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:3956,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/netevent.c:3957,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:3958,1
    - Dst: SSL_write
      Src: /src/unbound/util/netevent.c:3959,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:3961,1
    - Dst: SSL_write
      Src: /src/unbound/util/netevent.c:3964,1
    - Dst: SSL_get_error
      Src: /src/unbound/util/netevent.c:3969,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:3974,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/util/netevent.c:3978,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:3987,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:3988,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/util/netevent.c:3991,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/netevent.c:4002,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:4005,1
    - Dst: tcp_callback_writer
      Src: /src/unbound/util/netevent.c:4006,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:4010,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:4010,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:4011,1
    - Dst: ERR_clear_error
      Src: /src/unbound/util/netevent.c:4012,1
    - Dst: SSL_write
      Src: /src/unbound/util/netevent.c:4014,1
    - Dst: SSL_write
      Src: /src/unbound/util/netevent.c:4017,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/netevent.c:4017,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:4018,1
    - Dst: SSL_get_error
      Src: /src/unbound/util/netevent.c:4021,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:4026,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/util/netevent.c:4030,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:4039,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:4040,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/util/netevent.c:4043,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/netevent.c:4049,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:4052,1
    - Dst: tcp_callback_writer
      Src: /src/unbound/util/netevent.c:4053,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 106
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4060
      start: 3916
    functionDepth: 9
    functionLinenumber: 3916
    functionLinenumberEnd: 4060
    functionName: ssl_handle_write
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - SSL_set_mode
    - sldns_buffer_skip
    - ub_winsock_tcp_wouldblock
    - htons
    - sldns_buffer_current
    - log_err
    - comm_point_listen_for_rw
    - SSL_write
    - tcp_callback_writer
    - sldns_buffer_set_position
    - log_assert
    - strerror
    - ERR_clear_error
    - ssl_handshake
    - sldns_buffer_remaining
    - memmove
    - log_crypto_err_io
    - sldns_buffer_limit
    - SSL_get_error
    linkageType: ''
    returnType: int
    signature: int ssl_handle_write(struct comm_point* c)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ssl_handle_read
      Src: /src/unbound/util/netevent.c:4069,1
    - Dst: ssl_handle_write
      Src: /src/unbound/util/netevent.c:4071,1
    - Dst: ssl_handle_read
      Src: /src/unbound/util/netevent.c:4075,1
    - Dst: ssl_handle_write
      Src: /src/unbound/util/netevent.c:4076,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 8
    argCount: 2
    argNames:
    - c
    - is_write
    argTypes:
    - struct comm_point*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4077
      start: 4063
    functionDepth: 10
    functionLinenumber: 4063
    functionLinenumberEnd: 4077
    functionName: ssl_handle_it
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - ssl_handle_write
    - ssl_handle_read
    linkageType: ''
    returnType: int
    signature: int ssl_handle_it(struct comm_point* c, int is_write)
  - BBCount: 54
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:4091,1
    - Dst: ssl_handle_it
      Src: /src/unbound/util/netevent.c:4093,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:4097,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:4104,1
    - Dst: log_err_addr
      Src: /src/unbound/util/netevent.c:4105,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:4111,1
    - Dst: recv
      Src: /src/unbound/util/netevent.c:4116,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/util/netevent.c:4116,1
    - Dst: tcp_req_info_handle_read_close
      Src: /src/unbound/util/netevent.c:4121,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/netevent.c:4127,1
    - Dst: pp2_read_header
      Src: /src/unbound/util/netevent.c:4134,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:4135,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:4136,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:4138,1
    - Dst: pp_lookup_error
      Src: /src/unbound/util/netevent.c:4140,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:4143,1
    - Dst: ntohs
      Src: /src/unbound/util/netevent.c:4144,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:4145,1
    - Dst: log_err_addr
      Src: /src/unbound/util/netevent.c:4147,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:4153,1
    - Dst: recv
      Src: /src/unbound/util/netevent.c:4161,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/util/netevent.c:4161,1
    - Dst: tcp_req_info_handle_read_close
      Src: /src/unbound/util/netevent.c:4166,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/netevent.c:4172,1
    - Dst: log_err_addr
      Src: /src/unbound/util/netevent.c:4178,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:4183,1
    - Dst: consume_pp2_header
      Src: /src/unbound/util/netevent.c:4184,1
    - Dst: log_err_addr
      Src: /src/unbound/util/netevent.c:4185,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:4190,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:4194,1
    - Dst: recv
      Src: /src/unbound/util/netevent.c:4201,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/util/netevent.c:4201,1
    - Dst: tcp_req_info_handle_read_close
      Src: /src/unbound/util/netevent.c:4205,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/util/netevent.c:4214,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/netevent.c:4215,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:4216,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/util/netevent.c:4219,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/util/netevent.c:4220,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:4222,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:4223,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:4226,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:4227,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:4230,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:4231,1
    - Dst: recv
      Src: /src/unbound/util/netevent.c:4234,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/netevent.c:4234,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:4235,1
    - Dst: tcp_req_info_handle_read_close
      Src: /src/unbound/util/netevent.c:4238,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/netevent.c:4243,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:4244,1
    - Dst: tcp_callback_reader
      Src: /src/unbound/util/netevent.c:4245,1
    - Dst: log_err_addr
      Src: /src/unbound/util/netevent.c:4286,1
    - Dst: sock_strerror
      Src: /src/unbound/util/netevent.c:4290,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:4299,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:4301,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:4303,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:4305,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:4307,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:4310,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:4312,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:4314,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/util/netevent.c:4315,1
    - Dst: log_err_addr
      Src: /src/unbound/util/netevent.c:4320,1
    - Dst: sock_strerror
      Src: /src/unbound/util/netevent.c:4321,1
    CyclomaticComplexity: 76
    EdgeCount: 76
    ICount: 178
    argCount: 3
    argNames:
    - fd
    - c
    - short_ok
    argTypes:
    - int
    - struct comm_point*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4324
      start: 4086
    functionDepth: 11
    functionLinenumber: 4086
    functionLinenumberEnd: 4324
    functionName: comm_point_tcp_handle_read
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_skip
    - ub_winsock_tcp_wouldblock
    - tcp_req_info_handle_read_close
    - sldns_buffer_current
    - recv
    - log_err
    - consume_pp2_header
    - ssl_handle_it
    - pp_lookup_error
    - sock_strerror
    - sldns_buffer_begin
    - sldns_buffer_read_u16_at
    - pp2_read_header
    - verbose
    - log_assert
    - sldns_buffer_remaining
    - sldns_buffer_capacity
    - sldns_buffer_at
    - sldns_buffer_flip
    - sldns_buffer_limit
    - sldns_buffer_clear
    - WSAGetLastError
    - log_err_addr
    - sldns_buffer_set_limit
    - tcp_callback_reader
    - ntohs
    linkageType: ''
    returnType: int
    signature: int comm_point_tcp_handle_read(int fd, struct comm_point* c, int short_ok)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: comm_point_tcp_handle_read
      Src: /src/unbound/util/netevent.c:4628,1
    - Dst: comm_point_tcp_handle_write
      Src: /src/unbound/util/netevent.c:4629,1
    - Dst: reclaim_tcp_handler
      Src: /src/unbound/util/netevent.c:4631,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:4633,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:4633,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 16
    argCount: 2
    argNames:
    - fd
    - c
    argTypes:
    - int
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4642
      start: 4621
    functionDepth: 12
    functionLinenumber: 4621
    functionLinenumberEnd: 4642
    functionName: tcp_req_info_read_again
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - comm_point_tcp_handle_read
    - fptr_whitelist_comm_point
    - fptr_ok
    - comm_point_tcp_handle_write
    - reclaim_tcp_handler
    linkageType: ''
    returnType: int
    signature: int tcp_req_info_read_again(int fd, struct comm_point* c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: comm_point_tcp_handle_read
      Src: /src/unbound/util/netevent.c:4655,1
    - Dst: reclaim_tcp_handler
      Src: /src/unbound/util/netevent.c:4656,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:4658,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:4658,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - fd
    - c
    argTypes:
    - int
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4666
      start: 4645
    functionDepth: 12
    functionLinenumber: 4645
    functionLinenumberEnd: 4666
    functionName: tcp_more_read_again
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - fptr_ok
    - comm_point_tcp_handle_read
    - fptr_whitelist_comm_point
    - reclaim_tcp_handler
    linkageType: ''
    returnType: void
    signature: void tcp_more_read_again(int fd, struct comm_point* c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: comm_point_tcp_handle_write
      Src: /src/unbound/util/netevent.c:4679,1
    - Dst: reclaim_tcp_handler
      Src: /src/unbound/util/netevent.c:4680,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:4682,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:4682,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 2
    argNames:
    - fd
    - c
    argTypes:
    - int
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4690
      start: 4669
    functionDepth: 3
    functionLinenumber: 4669
    functionLinenumberEnd: 4690
    functionName: tcp_more_write_again
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - comm_point_tcp_handle_write
    - fptr_ok
    - fptr_whitelist_comm_point
    - reclaim_tcp_handler
    linkageType: ''
    returnType: void
    signature: void tcp_more_write_again(int fd, struct comm_point* c)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:4696,1
    - Dst: ub_comm_base_now
      Src: /src/unbound/util/netevent.c:4697,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/util/netevent.c:4708,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/netevent.c:4708,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:4710,1
    - Dst: reclaim_tcp_handler
      Src: /src/unbound/util/netevent.c:4711,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:4713,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:4713,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:4724,1
    - Dst: reclaim_tcp_handler
      Src: /src/unbound/util/netevent.c:4725,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:4727,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:4727,1
    - Dst: comm_point_tcp_handle_read
      Src: /src/unbound/util/netevent.c:4740,1
    - Dst: reclaim_tcp_handler
      Src: /src/unbound/util/netevent.c:4741,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:4743,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:4743,1
    - Dst: tcp_req_info_read_again
      Src: /src/unbound/util/netevent.c:4751,1
    - Dst: tcp_more_read_again
      Src: /src/unbound/util/netevent.c:4755,1
    - Dst: comm_point_tcp_handle_write
      Src: /src/unbound/util/netevent.c:4761,1
    - Dst: reclaim_tcp_handler
      Src: /src/unbound/util/netevent.c:4762,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:4764,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:4764,1
    - Dst: tcp_req_info_read_again
      Src: /src/unbound/util/netevent.c:4772,1
    - Dst: tcp_more_write_again
      Src: /src/unbound/util/netevent.c:4776,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:4779,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 64
    argCount: 3
    argNames:
    - fd
    - event
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4780
      start: 4692
    functionDepth: 13
    functionLinenumber: 4692
    functionLinenumberEnd: 4780
    functionName: comm_point_tcp_handle_callback
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - log_err
    - sldns_buffer_new
    - tcp_more_read_again
    - tcp_req_info_read_again
    - verbose
    - comm_point_tcp_handle_read
    - ub_comm_base_now
    - fptr_whitelist_comm_point
    - fptr_ok
    - log_assert
    - tcp_more_write_again
    - comm_point_tcp_handle_write
    - reclaim_tcp_handler
    linkageType: ''
    returnType: void
    signature: void comm_point_tcp_handle_callback(int fd, short event, void* arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:4786,1
    - Dst: SSL_shutdown
      Src: /src/unbound/util/netevent.c:4789,1
    - Dst: SSL_free
      Src: /src/unbound/util/netevent.c:4790,1
    - Dst: comm_point_close
      Src: /src/unbound/util/netevent.c:4794,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:4797,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:4798,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/util/netevent.c:4805,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4808
      start: 4783
    functionDepth: 1
    functionLinenumber: 4783
    functionLinenumberEnd: 4808
    functionName: reclaim_http_handler
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - SSL_free
    - comm_point_close
    - comm_point_start_listening
    - log_assert
    - SSL_shutdown
    linkageType: ''
    returnType: void
    signature: void reclaim_http_handler(struct comm_point* c)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:4816,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:4816,1
    - Dst: ERR_clear_error
      Src: /src/unbound/util/netevent.c:4817,1
    - Dst: SSL_read
      Src: /src/unbound/util/netevent.c:4818,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/netevent.c:4818,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:4819,1
    - Dst: SSL_get_error
      Src: /src/unbound/util/netevent.c:4821,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:4828,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:4836,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:4837,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/util/netevent.c:4840,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:4843,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/netevent.c:4844,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/netevent.c:4845,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4851
      start: 4811
    functionDepth: 7
    functionLinenumber: 4811
    functionLinenumberEnd: 4851
    functionName: ssl_http_read_more
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - log_err
    - comm_point_listen_for_rw
    - sldns_buffer_position
    - log_crypto_err_io
    - verbose
    - sldns_buffer_skip
    - SSL_read
    - log_assert
    - strerror
    - sldns_buffer_current
    - ERR_clear_error
    - SSL_get_error
    linkageType: ''
    returnType: int
    signature: int ssl_http_read_more(struct comm_point* c)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:4858,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:4858,1
    - Dst: recv
      Src: /src/unbound/util/netevent.c:4859,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/netevent.c:4859,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:4860,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:4868,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:4870,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:4872,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/util/netevent.c:4873,1
    - Dst: log_err_addr
      Src: /src/unbound/util/netevent.c:4877,1
    - Dst: sock_strerror
      Src: /src/unbound/util/netevent.c:4877,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:4881,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/netevent.c:4882,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/netevent.c:4883,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 23
    argCount: 2
    argNames:
    - fd
    - c
    argTypes:
    - int
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4885
      start: 4854
    functionDepth: 7
    functionLinenumber: 4854
    functionLinenumberEnd: 4885
    functionName: http_read_more
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_position
    - verbose
    - sldns_buffer_skip
    - WSAGetLastError
    - ub_winsock_tcp_wouldblock
    - log_err_addr
    - log_assert
    - sock_strerror
    - sldns_buffer_current
    - recv
    linkageType: ''
    returnType: int
    signature: int http_read_more(int fd, struct comm_point* c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/netevent.c:4892,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:4892,1
    - Dst: sldns_buffer_read_u8_at
      Src: /src/unbound/util/netevent.c:4894,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - buf
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4898
      start: 4888
    functionDepth: 4
    functionLinenumber: 4888
    functionLinenumberEnd: 4898
    functionName: http_header_done
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_limit
    - sldns_buffer_read_u8_at
    linkageType: ''
    returnType: int
    signature: int http_header_done(sldns_buffer* buf)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/netevent.c:4905,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/netevent.c:4907,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:4907,1
    - Dst: sldns_buffer_read_u8_at
      Src: /src/unbound/util/netevent.c:4909,1
    - Dst: sldns_buffer_write_u8_at
      Src: /src/unbound/util/netevent.c:4910,1
    - Dst: sldns_buffer_read_u8_at
      Src: /src/unbound/util/netevent.c:4912,1
    - Dst: sldns_buffer_write_u8_at
      Src: /src/unbound/util/netevent.c:4913,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/netevent.c:4914,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - buf
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4919
      start: 4902
    functionDepth: 4
    functionLinenumber: 4902
    functionLinenumberEnd: 4919
    functionName: http_header_line
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_read_u8_at
    - sldns_buffer_limit
    - sldns_buffer_set_position
    - sldns_buffer_write_u8_at
    - sldns_buffer_current
    linkageType: ''
    returnType: char
    signature: 'char *

      http_header_line(sldns_buffer* buf)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/netevent.c:4925,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:4926,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:4927,1
    - Dst: memmove
      Src: /src/unbound/util/netevent.c:4928,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:4928,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/util/netevent.c:4928,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/netevent.c:4929,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - buf
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4930
      start: 4922
    functionDepth: 3
    functionLinenumber: 4922
    functionLinenumberEnd: 4930
    functionName: http_moveover_buffer
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_remaining
    - sldns_buffer_at
    - memmove
    - sldns_buffer_clear
    - sldns_buffer_set_position
    - sldns_buffer_begin
    linkageType: ''
    returnType: void
    signature: void http_moveover_buffer(sldns_buffer* buf)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: http_header_line
      Src: /src/unbound/util/netevent.c:4936,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:4938,1
    - Dst: strncasecmp
      Src: /src/unbound/util/netevent.c:4939,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:4942,1
    - Dst: strncasecmp
      Src: /src/unbound/util/netevent.c:4945,1
    - Dst: strtoll
      Src: /src/unbound/util/netevent.c:4950,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:4952,1
    - Dst: strncasecmp
      Src: /src/unbound/util/netevent.c:4957,1
    - Dst: http_moveover_buffer
      Src: /src/unbound/util/netevent.c:4969,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:4970,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 34
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 4975
      start: 4933
    functionDepth: 7
    functionLinenumber: 4933
    functionLinenumberEnd: 4975
    functionName: http_process_initial_header
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - http_moveover_buffer
    - verbose
    - sldns_buffer_flip
    - http_header_line
    - strncasecmp
    - strtoll
    linkageType: ''
    returnType: int
    signature: int http_process_initial_header(struct comm_point* c)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: http_header_line
      Src: /src/unbound/util/netevent.c:4982,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:4985,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/netevent.c:4990,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/util/netevent.c:4991,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:4992,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:4992,1
    - Dst: http_moveover_buffer
      Src: /src/unbound/util/netevent.c:5001,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:5002,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:5008,1
    - Dst: strtol
      Src: /src/unbound/util/netevent.c:5014,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:5016,1
    - Dst: http_moveover_buffer
      Src: /src/unbound/util/netevent.c:5023,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:5024,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 38
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5033
      start: 4979
    functionDepth: 7
    functionLinenumber: 4979
    functionLinenumberEnd: 5033
    functionName: http_process_chunk_header
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - http_moveover_buffer
    - verbose
    - fptr_whitelist_comm_point
    - sldns_buffer_flip
    - fptr_ok
    - http_header_line
    - sldns_buffer_set_position
    - sldns_buffer_set_limit
    - strtol
    linkageType: ''
    returnType: int
    signature: int http_process_chunk_header(struct comm_point* c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:5044,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/netevent.c:5048,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:5049,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:5049,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/netevent.c:5055,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:5056,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:5059,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:5060,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/netevent.c:5061,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/netevent.c:5070,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:5071,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:5071,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5076
      start: 5036
    functionDepth: 2
    functionLinenumber: 5036
    functionLinenumberEnd: 5076
    functionName: http_nonchunk_segment
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - fptr_whitelist_comm_point
    - sldns_buffer_limit
    - sldns_buffer_clear
    - fptr_ok
    - sldns_buffer_set_position
    linkageType: ''
    returnType: int
    signature: int http_nonchunk_segment(struct comm_point* c)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:5087,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:5088,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/netevent.c:5088,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:5088,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/netevent.c:5096,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:5097,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:5098,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/netevent.c:5099,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:5100,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:5101,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/netevent.c:5102,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/netevent.c:5106,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/netevent.c:5107,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:5108,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:5109,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/netevent.c:5112,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/netevent.c:5113,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/util/netevent.c:5114,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:5116,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:5116,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:5125,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/netevent.c:5126,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/netevent.c:5127,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:5128,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:5129,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/netevent.c:5140,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:5141,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:5144,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:5145,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/netevent.c:5146,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/netevent.c:5154,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:5155,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:5155,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 40
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5160
      start: 5079
    functionDepth: 7
    functionLinenumber: 5079
    functionLinenumberEnd: 5160
    functionName: http_chunked_segment
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_remaining
    - sldns_buffer_capacity
    - sldns_buffer_write
    - verbose
    - sldns_buffer_skip
    - sldns_buffer_flip
    - sldns_buffer_limit
    - sldns_buffer_clear
    - fptr_ok
    - fptr_whitelist_comm_point
    - sldns_buffer_set_position
    - sldns_buffer_set_limit
    - sldns_buffer_begin
    - sldns_buffer_current
    linkageType: ''
    returnType: int
    signature: int http_chunked_segment(struct comm_point* c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:5166,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:5168,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5174
      start: 5164
    functionDepth: 7
    functionLinenumber: 5164
    functionLinenumberEnd: 5174
    functionName: http2_session_create
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - log_err
    - calloc
    linkageType: ''
    returnType: struct http2_session
    signature: struct http2_session * http2_session_create(struct comm_point* c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_session_callbacks_del
      Src: /src/unbound/util/netevent.c:5182,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:5183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - h2_session
    argTypes:
    - struct http2_session*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5187
      start: 5178
    functionDepth: 1
    functionLinenumber: 5178
    functionLinenumberEnd: 5187
    functionName: http2_session_delete
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - nghttp2_session_callbacks_del
    - free
    linkageType: ''
    returnType: void
    signature: void http2_session_delete(struct http2_session* h2_session)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:5192,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:5194,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - stream_id
    argTypes:
    - int32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5199
      start: 5190
    functionDepth: 7
    functionLinenumber: 5190
    functionLinenumberEnd: 5199
    functionName: http2_stream_create
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - log_err
    - calloc
    linkageType: ''
    returnType: struct http2_stream
    signature: struct http2_stream * http2_stream_create(int32_t stream_id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - h2_stream
    - mesh
    - m
    argTypes:
    - struct http2_stream*
    - struct mesh_area*
    - struct mesh_state*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5207
      start: 5202
    functionDepth: 0
    functionLinenumber: 5202
    functionLinenumberEnd: 5207
    functionName: http2_stream_add_meshstate
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void http2_stream_add_meshstate(struct http2_stream* h2_stream,\n\tstruct
      mesh_area* mesh, struct mesh_state* m)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - h2_stream
    argTypes:
    - struct http2_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5214
      start: 5209
    functionDepth: 0
    functionLinenumber: 5209
    functionLinenumberEnd: 5214
    functionName: http2_stream_remove_mesh_state
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void http2_stream_remove_mesh_state(struct http2_stream* h2_stream)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - h2_session
    - h2_stream
    argTypes:
    - struct http2_session*
    - struct http2_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5224
      start: 5217
    functionDepth: 0
    functionLinenumber: 5217
    functionLinenumberEnd: 5224
    functionName: http2_session_add_stream
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void http2_session_add_stream(struct http2_session* h2_session,\n\tstruct
      http2_stream* h2_stream)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - h2_session
    - h2_stream
    argTypes:
    - struct http2_session*
    - struct http2_stream*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5238
      start: 5228
    functionDepth: 0
    functionLinenumber: 5228
    functionLinenumberEnd: 5238
    functionName: http2_session_remove_stream
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void http2_session_remove_stream(struct http2_session* h2_session,\n\tstruct
      http2_stream* h2_stream)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: nghttp2_session_get_stream_user_data
      Src: /src/unbound/util/netevent.c:5245,1
    - Dst: http2_session_remove_stream
      Src: /src/unbound/util/netevent.c:5249,1
    - Dst: http2_stream_delete
      Src: /src/unbound/util/netevent.c:5250,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - ATTR_UNUSED(session)
    - stream_id
    - ATTR_UNUSED
    - cb_arg
    argTypes:
    - nghttp2_session*
    - int32_t
    - uint32_t
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5252
      start: 5240
    functionDepth: 4
    functionLinenumber: 5240
    functionLinenumberEnd: 5252
    functionName: http2_stream_close_cb
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - nghttp2_session_get_stream_user_data
    - http2_session_remove_stream
    - http2_stream_delete
    linkageType: ''
    returnType: int
    signature: "int http2_stream_close_cb(nghttp2_session* ATTR_UNUSED(session),\n\tint32_t
      stream_id, uint32_t ATTR_UNUSED(error_code), void* cb_arg)"
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:5260,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:5261,1
    - Dst: ERR_clear_error
      Src: /src/unbound/util/netevent.c:5275,1
    - Dst: SSL_read
      Src: /src/unbound/util/netevent.c:5276,1
    - Dst: SSL_get_error
      Src: /src/unbound/util/netevent.c:5278,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:5285,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:5293,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:5294,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/util/netevent.c:5297,1
    - Dst: recv
      Src: /src/unbound/util/netevent.c:5304,1
    - Dst: log_err_addr
      Src: /src/unbound/util/netevent.c:5315,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:5315,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:5319,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:5321,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:5323,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/util/netevent.c:5324,1
    - Dst: log_err_addr
      Src: /src/unbound/util/netevent.c:5328,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/netevent.c:5329,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:5329,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 56
    argCount: 5
    argNames:
    - ATTR_UNUSED(session)
    - buf
    - len
    - ATTR_UNUSED
    - cb_arg
    argTypes:
    - nghttp2_session*
    - uint8_t*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5336
      start: 5254
    functionDepth: 7
    functionLinenumber: 5254
    functionLinenumberEnd: 5336
    functionName: http2_recv_cb
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - log_err
    - comm_point_listen_for_rw
    - wsa_strerror
    - log_crypto_err_io
    - WSAGetLastError
    - SSL_read
    - ub_winsock_tcp_wouldblock
    - log_err_addr
    - log_assert
    - strerror
    - recv
    - ERR_clear_error
    - SSL_get_error
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t http2_recv_cb(nghttp2_session* ATTR_UNUSED(session), uint8_t*
      buf,\n\tsize_t len, int ATTR_UNUSED(flags), void* cb_arg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:5345,1
    - Dst: nghttp2_session_recv
      Src: /src/unbound/util/netevent.c:5348,1
    - Dst: addr_to_str
      Src: /src/unbound/util/netevent.c:5353,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:5355,1
    - Dst: nghttp2_strerror
      Src: /src/unbound/util/netevent.c:5356,1
    - Dst: nghttp2_session_want_write
      Src: /src/unbound/util/netevent.c:5360,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/util/netevent.c:5362,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/util/netevent.c:5363,1
    - Dst: adjusted_tcp_timeout
      Src: /src/unbound/util/netevent.c:5363,1
    - Dst: nghttp2_session_want_read
      Src: /src/unbound/util/netevent.c:5364,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - c
    argTypes:
    - int
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5371
      start: 5340
    functionDepth: 7
    functionLinenumber: 5340
    functionLinenumberEnd: 5371
    functionName: comm_point_http2_handle_read
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - addr_to_str
    - comm_point_stop_listening
    - nghttp2_session_want_write
    - adjusted_tcp_timeout
    - nghttp2_strerror
    - verbose
    - nghttp2_session_recv
    - comm_point_start_listening
    - log_assert
    - nghttp2_session_want_read
    linkageType: ''
    returnType: int
    signature: int comm_point_http2_handle_read(int ATTR_UNUSED(fd), struct comm_point*
      c)
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:5382,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:5383,1
    - Dst: ssl_handshake
      Src: /src/unbound/util/netevent.c:5388,1
    - Dst: comm_point_http2_handle_read
      Src: /src/unbound/util/netevent.c:5399,1
    - Dst: ssl_http_read_more
      Src: /src/unbound/util/netevent.c:5411,1
    - Dst: http_read_more
      Src: /src/unbound/util/netevent.c:5414,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/netevent.c:5418,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/netevent.c:5423,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:5426,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/netevent.c:5427,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/netevent.c:5428,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:5428,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:5430,1
    - Dst: http_header_done
      Src: /src/unbound/util/netevent.c:5435,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/netevent.c:5436,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/netevent.c:5437,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:5438,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/netevent.c:5440,1
    - Dst: http_moveover_buffer
      Src: /src/unbound/util/netevent.c:5445,1
    - Dst: http_process_initial_header
      Src: /src/unbound/util/netevent.c:5451,1
    - Dst: http_process_chunk_header
      Src: /src/unbound/util/netevent.c:5455,1
    - Dst: http_nonchunk_segment
      Src: /src/unbound/util/netevent.c:5466,1
    - Dst: http_chunked_segment
      Src: /src/unbound/util/netevent.c:5469,1
    - Dst: http_moveover_buffer
      Src: /src/unbound/util/netevent.c:5478,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 64
    argCount: 2
    argNames:
    - fd
    - c
    argTypes:
    - int
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5481
      start: 5379
    functionDepth: 8
    functionLinenumber: 5379
    functionLinenumberEnd: 5481
    functionName: comm_point_http_handle_read
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_remaining
    - comm_point_http2_handle_read
    - sldns_buffer_capacity
    - http_moveover_buffer
    - http_nonchunk_segment
    - verbose
    - http_process_chunk_header
    - sldns_buffer_flip
    - sldns_buffer_limit
    - http_process_initial_header
    - http_chunked_segment
    - sldns_buffer_set_position
    - http_read_more
    - log_assert
    - http_header_done
    - ssl_http_read_more
    - ssl_handshake
    linkageType: ''
    returnType: int
    signature: int comm_point_http_handle_read(int fd, struct comm_point* c)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:5535,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:5535,1
    - Dst: ERR_clear_error
      Src: /src/unbound/util/netevent.c:5536,1
    - Dst: SSL_write
      Src: /src/unbound/util/netevent.c:5537,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/netevent.c:5537,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:5538,1
    - Dst: SSL_get_error
      Src: /src/unbound/util/netevent.c:5540,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:5545,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:5555,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:5556,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/util/netevent.c:5559,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/netevent.c:5562,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 30
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5568
      start: 5530
    functionDepth: 7
    functionLinenumber: 5530
    functionLinenumberEnd: 5568
    functionName: ssl_http_write_more
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - log_err
    - comm_point_listen_for_rw
    - SSL_write
    - log_crypto_err_io
    - sldns_buffer_skip
    - log_assert
    - strerror
    - sldns_buffer_current
    - ERR_clear_error
    - SSL_get_error
    linkageType: ''
    returnType: int
    signature: int ssl_http_write_more(struct comm_point* c)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:5575,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:5575,1
    - Dst: send
      Src: /src/unbound/util/netevent.c:5576,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/netevent.c:5576,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:5577,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:5583,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:5585,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/util/netevent.c:5586,1
    - Dst: log_err_addr
      Src: /src/unbound/util/netevent.c:5590,1
    - Dst: sock_strerror
      Src: /src/unbound/util/netevent.c:5590,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/netevent.c:5594,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 17
    argCount: 2
    argNames:
    - fd
    - c
    argTypes:
    - int
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5596
      start: 5571
    functionDepth: 3
    functionLinenumber: 5571
    functionLinenumberEnd: 5596
    functionName: http_write_more
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_skip
    - WSAGetLastError
    - ub_winsock_tcp_wouldblock
    - log_err_addr
    - log_assert
    - sock_strerror
    - sldns_buffer_current
    - send
    linkageType: ''
    returnType: int
    signature: int http_write_more(int fd, struct comm_point* c)
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:5604,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:5605,1
    - Dst: ERR_clear_error
      Src: /src/unbound/util/netevent.c:5610,1
    - Dst: SSL_write
      Src: /src/unbound/util/netevent.c:5611,1
    - Dst: SSL_get_error
      Src: /src/unbound/util/netevent.c:5613,1
    - Dst: comm_point_listen_for_rw
      Src: /src/unbound/util/netevent.c:5618,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:5628,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:5629,1
    - Dst: log_crypto_err_io
      Src: /src/unbound/util/netevent.c:5632,1
    - Dst: send
      Src: /src/unbound/util/netevent.c:5639,1
    - Dst: log_err_addr
      Src: /src/unbound/util/netevent.c:5654,1
    - Dst: strerror
      Src: /src/unbound/util/netevent.c:5654,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:5658,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:5660,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:5662,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/util/netevent.c:5663,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:5667,1
    - Dst: log_err_addr
      Src: /src/unbound/util/netevent.c:5669,1
    - Dst: wsa_strerror
      Src: /src/unbound/util/netevent.c:5670,1
    - Dst: WSAGetLastError
      Src: /src/unbound/util/netevent.c:5670,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 56
    argCount: 5
    argNames:
    - ATTR_UNUSED(session)
    - buf
    - len
    - ATTR_UNUSED
    - cb_arg
    argTypes:
    - nghttp2_session*
    - uint8_t*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5677
      start: 5599
    functionDepth: 7
    functionLinenumber: 5599
    functionLinenumberEnd: 5677
    functionName: http2_send_cb
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - log_err
    - comm_point_listen_for_rw
    - wsa_strerror
    - SSL_write
    - log_crypto_err_io
    - WSAGetLastError
    - ub_winsock_tcp_wouldblock
    - log_err_addr
    - log_assert
    - strerror
    - ERR_clear_error
    - send
    - SSL_get_error
    linkageType: ''
    returnType: ssize_t
    signature: "ssize_t http2_send_cb(nghttp2_session* ATTR_UNUSED(session), const
      uint8_t* buf,\n\tsize_t len, int ATTR_UNUSED(flags), void* cb_arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:5686,1
    - Dst: nghttp2_session_send
      Src: /src/unbound/util/netevent.c:5688,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:5690,1
    - Dst: nghttp2_strerror
      Src: /src/unbound/util/netevent.c:5691,1
    - Dst: nghttp2_session_want_read
      Src: /src/unbound/util/netevent.c:5695,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/util/netevent.c:5697,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/util/netevent.c:5698,1
    - Dst: adjusted_tcp_timeout
      Src: /src/unbound/util/netevent.c:5698,1
    - Dst: nghttp2_session_want_write
      Src: /src/unbound/util/netevent.c:5699,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - c
    argTypes:
    - int
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5706
      start: 5681
    functionDepth: 7
    functionLinenumber: 5681
    functionLinenumberEnd: 5706
    functionName: comm_point_http2_handle_write
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - comm_point_stop_listening
    - adjusted_tcp_timeout
    - nghttp2_session_want_write
    - nghttp2_strerror
    - verbose
    - nghttp2_session_send
    - comm_point_start_listening
    - log_assert
    - nghttp2_session_want_read
    linkageType: ''
    returnType: int
    signature: int comm_point_http2_handle_write(int ATTR_UNUSED(fd), struct comm_point*
      c)
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:5717,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:5718,1
    - Dst: http_check_connect
      Src: /src/unbound/util/netevent.c:5723,1
    - Dst: ssl_handshake
      Src: /src/unbound/util/netevent.c:5731,1
    - Dst: comm_point_http2_handle_write
      Src: /src/unbound/util/netevent.c:5741,1
    - Dst: ssl_http_write_more
      Src: /src/unbound/util/netevent.c:5753,1
    - Dst: http_write_more
      Src: /src/unbound/util/netevent.c:5756,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/netevent.c:5763,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/netevent.c:5764,1
    - Dst: comm_point_stop_listening
      Src: /src/unbound/util/netevent.c:5769,1
    - Dst: comm_point_start_listening
      Src: /src/unbound/util/netevent.c:5770,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 40
    argCount: 2
    argNames:
    - fd
    - c
    argTypes:
    - int
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5773
      start: 5714
    functionDepth: 8
    functionLinenumber: 5714
    functionLinenumberEnd: 5773
    functionName: comm_point_http_handle_write
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - http_check_connect
    - comm_point_stop_listening
    - sldns_buffer_clear
    - comm_point_start_listening
    - log_assert
    - http_write_more
    - comm_point_http2_handle_write
    - ssl_http_write_more
    - ssl_handshake
    linkageType: ''
    returnType: int
    signature: int comm_point_http_handle_write(int fd, struct comm_point* c)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:5779,1
    - Dst: ub_comm_base_now
      Src: /src/unbound/util/netevent.c:5780,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:5783,1
    - Dst: reclaim_http_handler
      Src: /src/unbound/util/netevent.c:5784,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:5786,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:5786,1
    - Dst: comm_point_http_handle_read
      Src: /src/unbound/util/netevent.c:5793,1
    - Dst: reclaim_http_handler
      Src: /src/unbound/util/netevent.c:5794,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:5796,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:5796,1
    - Dst: comm_point_http_handle_write
      Src: /src/unbound/util/netevent.c:5805,1
    - Dst: reclaim_http_handler
      Src: /src/unbound/util/netevent.c:5806,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:5808,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:5808,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:5816,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 33
    argCount: 3
    argNames:
    - fd
    - event
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5817
      start: 5775
    functionDepth: 9
    functionLinenumber: 5775
    functionLinenumberEnd: 5817
    functionName: comm_point_http_handle_callback
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - log_err
    - verbose
    - ub_comm_base_now
    - fptr_whitelist_comm_point
    - comm_point_http_handle_read
    - fptr_ok
    - log_assert
    - comm_point_http_handle_write
    - reclaim_http_handler
    linkageType: ''
    returnType: void
    signature: void comm_point_http_handle_callback(int fd, short event, void* arg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:5822,1
    - Dst: ub_comm_base_now
      Src: /src/unbound/util/netevent.c:5823,1
    - Dst: comm_point_tcp_handle_read
      Src: /src/unbound/util/netevent.c:5826,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:5827,1
    - Dst: fptr_whitelist_comm_point
      Src: /src/unbound/util/netevent.c:5827,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:5833,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - fd
    - event
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5834
      start: 5819
    functionDepth: 12
    functionLinenumber: 5819
    functionLinenumberEnd: 5834
    functionName: comm_point_local_handle_callback
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - log_err
    - comm_point_tcp_handle_read
    - fptr_whitelist_comm_point
    - ub_comm_base_now
    - fptr_ok
    - log_assert
    linkageType: ''
    returnType: void
    signature: void comm_point_local_handle_callback(int fd, short event, void* arg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:5841,1
    - Dst: ub_comm_base_now
      Src: /src/unbound/util/netevent.c:5842,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:5846,1
    - Dst: fptr_whitelist_comm_point_raw
      Src: /src/unbound/util/netevent.c:5846,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - event
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5848
      start: 5836
    functionDepth: 1
    functionLinenumber: 5836
    functionLinenumberEnd: 5848
    functionName: comm_point_raw_handle_callback
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - fptr_whitelist_comm_point_raw
    - log_assert
    - ub_comm_base_now
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: "void comm_point_raw_handle_callback(int ATTR_UNUSED(fd),\n\tshort
      event, void* arg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:5855,1
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:5860,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:5863,1
    - Dst: ub_event_new
      Src: /src/unbound/util/netevent.c:5898,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:5901,1
    - Dst: comm_point_delete
      Src: /src/unbound/util/netevent.c:5902,1
    - Dst: ub_event_add
      Src: /src/unbound/util/netevent.c:5905,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:5906,1
    - Dst: comm_point_delete
      Src: /src/unbound/util/netevent.c:5907,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 48
    argCount: 7
    argNames:
    - base
    - fd
    - buffer
    - pp2_enabled
    - callback
    - callback_arg
    - socket
    argTypes:
    - struct comm_base*
    - int
    - sldns_buffer*
    - int
    - comm_point_callback_type*
    - void*
    - struct unbound_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5912
      start: 5850
    functionDepth: 7
    functionLinenumber: 5850
    functionLinenumberEnd: 5912
    functionName: comm_point_create_udp
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 3
    functionsReached:
    - log_err
    - ub_event_add
    - free
    - calloc
    - comm_point_delete
    - ub_event_new
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point *\ncomm_point_create_udp(struct comm_base *base,
      int fd, sldns_buffer* buffer,\n\tint pp2_enabled, comm_point_callback_type*
      callback,\n\tvoid* callback_arg, struct unbound_socket* socket)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:5920,1
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:5925,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:5928,1
    - Dst: ub_event_new
      Src: /src/unbound/util/netevent.c:5963,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:5966,1
    - Dst: comm_point_delete
      Src: /src/unbound/util/netevent.c:5967,1
    - Dst: ub_event_add
      Src: /src/unbound/util/netevent.c:5970,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:5971,1
    - Dst: comm_point_delete
      Src: /src/unbound/util/netevent.c:5972,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 48
    argCount: 7
    argNames:
    - base
    - fd
    - buffer
    - pp2_enabled
    - callback
    - callback_arg
    - socket
    argTypes:
    - struct comm_base*
    - int
    - sldns_buffer*
    - int
    - comm_point_callback_type*
    - void*
    - struct unbound_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 5977
      start: 5915
    functionDepth: 7
    functionLinenumber: 5915
    functionLinenumberEnd: 5977
    functionName: comm_point_create_udp_ancil
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - log_err
    - ub_event_add
    - free
    - calloc
    - comm_point_delete
    - ub_event_new
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point *\ncomm_point_create_udp_ancil(struct comm_base
      *base, int fd,\n\tsldns_buffer* buffer, int pp2_enabled,\n\tcomm_point_callback_type*
      callback, void* callback_arg, struct unbound_socket* socket)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:5988,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:5991,1
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:5994,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:5997,1
    - Dst: doq_server_socket_create
      Src: /src/unbound/util/netevent.c:6024,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6027,1
    - Dst: comm_point_delete
      Src: /src/unbound/util/netevent.c:6028,1
    - Dst: ub_event_new
      Src: /src/unbound/util/netevent.c:6039,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6042,1
    - Dst: comm_point_delete
      Src: /src/unbound/util/netevent.c:6043,1
    - Dst: ub_event_add
      Src: /src/unbound/util/netevent.c:6046,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6047,1
    - Dst: comm_point_delete
      Src: /src/unbound/util/netevent.c:6048,1
    - Dst: sock_close
      Src: /src/unbound/util/netevent.c:6064,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 66
    argCount: 10
    argNames:
    - base
    - fd
    - buffer
    - callback
    - callback_arg
    - socket
    - table
    - rnd
    - quic_sslctx
    - cfg
    argTypes:
    - struct comm_base*
    - int
    - sldns_buffer*
    - comm_point_callback_type*
    - void*
    - struct unbound_socket*
    - struct doq_table*
    - struct ub_randstate*
    - void*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6067
      start: 5980
    functionDepth: 7
    functionLinenumber: 5980
    functionLinenumberEnd: 6067
    functionName: comm_point_create_doq
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - log_err
    - sock_close
    - doq_server_socket_create
    - ub_event_add
    - free
    - calloc
    - log_assert
    - comm_point_delete
    - ub_event_new
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point *\ncomm_point_create_doq(struct comm_base *base,
      int fd, sldns_buffer* buffer,\n\tcomm_point_callback_type* callback, void* callback_arg,\n\tstruct
      unbound_socket* socket, struct doq_table* table,\n\tstruct ub_randstate* rnd,
      const void* quic_sslctx,\n\tstruct config_file* cfg)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:6075,1
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:6080,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6083,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/util/netevent.c:6088,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6090,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6091,1
    - Dst: malloc
      Src: /src/unbound/util/netevent.c:6094,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:6096,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6097,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6098,1
    - Dst: tcp_req_info_create
      Src: /src/unbound/util/netevent.c:6134,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6136,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:6137,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6138,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6139,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6140,1
    - Dst: ub_event_new
      Src: /src/unbound/util/netevent.c:6153,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6157,1
    - Dst: tcp_req_info_delete
      Src: /src/unbound/util/netevent.c:6159,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:6160,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6161,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6162,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6163,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 79
    argCount: 7
    argNames:
    - base
    - parent
    - bufsize
    - spoolbuf
    - callback
    - callback_arg
    - socket
    argTypes:
    - struct comm_base*
    - struct comm_point*
    - size_t
    - struct sldns_buffer*
    - comm_point_callback_type*
    - void*
    - struct unbound_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6167
      start: 6069
    functionDepth: 7
    functionLinenumber: 6069
    functionLinenumberEnd: 6167
    functionName: comm_point_create_tcp_handler
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - log_err
    - sldns_buffer_new
    - tcp_req_info_delete
    - tcp_req_info_create
    - free
    - malloc
    - calloc
    - sldns_buffer_free
    - ub_event_new
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point *\ncomm_point_create_tcp_handler(struct comm_base
      *base,\n\tstruct comm_point* parent, size_t bufsize,\n\tstruct sldns_buffer*
      spoolbuf, comm_point_callback_type* callback,\n\tvoid* callback_arg, struct
      unbound_socket* socket)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:6176,1
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:6181,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6184,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/util/netevent.c:6189,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6191,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6192,1
    - Dst: malloc
      Src: /src/unbound/util/netevent.c:6195,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:6197,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6198,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6199,1
    - Dst: strdup
      Src: /src/unbound/util/netevent.c:6238,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6239,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:6240,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6241,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6242,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6243,1
    - Dst: http2_session_create
      Src: /src/unbound/util/netevent.c:6248,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6249,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6250,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:6251,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6252,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6253,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6254,1
    - Dst: http2_req_callbacks_create
      Src: /src/unbound/util/netevent.c:6257,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6258,1
    - Dst: http2_session_delete
      Src: /src/unbound/util/netevent.c:6259,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6260,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:6261,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6262,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6263,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6264,1
    - Dst: ub_event_new
      Src: /src/unbound/util/netevent.c:6275,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6279,1
    - Dst: http2_session_delete
      Src: /src/unbound/util/netevent.c:6281,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:6282,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6283,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6284,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6285,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 98
    argCount: 9
    argNames:
    - base
    - parent
    - bufsize
    - harden_large_queries
    - http_max_streams
    - http_endpoint
    - callback
    - callback_arg
    - socket
    argTypes:
    - struct comm_base*
    - struct comm_point*
    - size_t
    - int
    - uint32_t
    - char*
    - comm_point_callback_type*
    - void*
    - struct unbound_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6289
      start: 6169
    functionDepth: 7
    functionLinenumber: 6169
    functionLinenumberEnd: 6289
    functionName: comm_point_create_http_handler
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - log_err
    - sldns_buffer_new
    - free
    - malloc
    - http2_session_delete
    - calloc
    - sldns_buffer_free
    - http2_session_create
    - strdup
    - ub_event_new
    - http2_req_callbacks_create
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point *\ncomm_point_create_http_handler(struct comm_base
      *base,\n\tstruct comm_point* parent, size_t bufsize, int harden_large_queries,\n\tuint32_t
      http_max_streams, char* http_endpoint,\n\tcomm_point_callback_type* callback,
      void* callback_arg,\n\tstruct unbound_socket* socket)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:6300,1
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:6307,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6310,1
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:6326,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6329,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6330,1
    - Dst: ub_event_new
      Src: /src/unbound/util/netevent.c:6354,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6357,1
    - Dst: comm_point_delete
      Src: /src/unbound/util/netevent.c:6358,1
    - Dst: ub_event_add
      Src: /src/unbound/util/netevent.c:6361,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6362,1
    - Dst: comm_point_delete
      Src: /src/unbound/util/netevent.c:6363,1
    - Dst: comm_point_create_tcp_handler
      Src: /src/unbound/util/netevent.c:6372,1
    - Dst: comm_point_create_http_handler
      Src: /src/unbound/util/netevent.c:6375,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6381,1
    - Dst: comm_point_delete
      Src: /src/unbound/util/netevent.c:6386,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 71
    argCount: 15
    argNames:
    - base
    - fd
    - num
    - idle_timeout
    - harden_large_queries
    - http_max_streams
    - http_endpoint
    - tcp_conn_limit
    - bufsize
    - spoolbuf
    - port_type
    - pp2_enabled
    - callback
    - callback_arg
    - socket
    argTypes:
    - struct comm_base*
    - int
    - int
    - int
    - int
    - uint32_t
    - char*
    - struct tcl_list*
    - size_t
    - struct sldns_buffer*
    - enum listen_type
    - int
    - comm_point_callback_type*
    - void*
    - struct unbound_socket*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6392
      start: 6291
    functionDepth: 8
    functionLinenumber: 6291
    functionLinenumberEnd: 6392
    functionName: comm_point_create_tcp
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - log_err
    - ub_event_add
    - free
    - calloc
    - comm_point_create_http_handler
    - comm_point_create_tcp_handler
    - comm_point_delete
    - ub_event_new
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point *\ncomm_point_create_tcp(struct comm_base *base,
      int fd, int num,\n\tint idle_timeout, int harden_large_queries,\n\tuint32_t
      http_max_streams, char* http_endpoint,\n\tstruct tcl_list* tcp_conn_limit, size_t
      bufsize,\n\tstruct sldns_buffer* spoolbuf, enum listen_type port_type,\n\tint
      pp2_enabled, comm_point_callback_type* callback,\n\tvoid* callback_arg, struct
      unbound_socket* socket)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:6398,1
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:6403,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6406,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/util/netevent.c:6411,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6413,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6414,1
    - Dst: ub_event_new
      Src: /src/unbound/util/netevent.c:6448,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6452,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:6453,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6454,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6455,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 52
    argCount: 4
    argNames:
    - base
    - bufsize
    - callback
    - callback_arg
    argTypes:
    - struct comm_base*
    - size_t
    - comm_point_callback_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6460
      start: 6394
    functionDepth: 7
    functionLinenumber: 6394
    functionLinenumberEnd: 6460
    functionName: comm_point_create_tcp_out
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 2
    functionsReached:
    - log_err
    - sldns_buffer_new
    - free
    - calloc
    - sldns_buffer_free
    - ub_event_new
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point *\ncomm_point_create_tcp_out(struct comm_base *base,
      size_t bufsize,\n        comm_point_callback_type* callback, void* callback_arg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:6467,1
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:6472,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6475,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/util/netevent.c:6480,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6482,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6483,1
    - Dst: ub_event_new
      Src: /src/unbound/util/netevent.c:6517,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6521,1
    - Dst: SSL_free
      Src: /src/unbound/util/netevent.c:6523,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:6525,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6526,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6527,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 53
    argCount: 5
    argNames:
    - base
    - bufsize
    - callback
    - callback_arg
    - temp
    argTypes:
    - struct comm_base*
    - size_t
    - comm_point_callback_type*
    - void*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6532
      start: 6462
    functionDepth: 7
    functionLinenumber: 6462
    functionLinenumberEnd: 6532
    functionName: comm_point_create_http_out
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - log_err
    - sldns_buffer_new
    - SSL_free
    - free
    - calloc
    - sldns_buffer_free
    - ub_event_new
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point *\ncomm_point_create_http_out(struct comm_base *base,
      size_t bufsize,\n        comm_point_callback_type* callback, void* callback_arg,\n\tsldns_buffer*
      temp)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:6538,1
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:6543,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6546,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/util/netevent.c:6551,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6553,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6554,1
    - Dst: ub_event_new
      Src: /src/unbound/util/netevent.c:6584,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6587,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6588,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6589,1
    - Dst: ub_event_add
      Src: /src/unbound/util/netevent.c:6592,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6593,1
    - Dst: ub_event_free
      Src: /src/unbound/util/netevent.c:6594,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6595,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6596,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 54
    argCount: 5
    argNames:
    - base
    - fd
    - bufsize
    - callback
    - callback_arg
    argTypes:
    - struct comm_base*
    - int
    - size_t
    - comm_point_callback_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6601
      start: 6534
    functionDepth: 7
    functionLinenumber: 6534
    functionLinenumberEnd: 6601
    functionName: comm_point_create_local
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - log_err
    - sldns_buffer_new
    - ub_event_add
    - free
    - calloc
    - ub_event_free
    - ub_event_new
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point *\ncomm_point_create_local(struct comm_base *base,
      int fd, size_t bufsize,\n        comm_point_callback_type* callback, void* callback_arg)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:6607,1
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:6612,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6615,1
    - Dst: ub_event_new
      Src: /src/unbound/util/netevent.c:6650,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6653,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6654,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6655,1
    - Dst: ub_event_add
      Src: /src/unbound/util/netevent.c:6658,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6659,1
    - Dst: ub_event_free
      Src: /src/unbound/util/netevent.c:6660,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6661,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6662,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 51
    argCount: 5
    argNames:
    - base
    - fd
    - writing
    - callback
    - callback_arg
    argTypes:
    - struct comm_base*
    - int
    - int
    - comm_point_callback_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6667
      start: 6603
    functionDepth: 7
    functionLinenumber: 6603
    functionLinenumberEnd: 6667
    functionName: comm_point_create_raw
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 4
    functionsReached:
    - log_err
    - ub_event_add
    - free
    - calloc
    - ub_event_free
    - ub_event_new
    linkageType: ''
    returnType: struct comm_point
    signature: "struct comm_point *\ncomm_point_create_raw(struct comm_base* base,
      int fd, int writing,\n\tcomm_point_callback_type* callback, void* callback_arg)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:6675,1
    - Dst: ub_event_del
      Src: /src/unbound/util/netevent.c:6677,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6678,1
    - Dst: tcl_close_connection
      Src: /src/unbound/util/netevent.c:6684,1
    - Dst: tcp_req_info_clear
      Src: /src/unbound/util/netevent.c:6688,1
    - Dst: http2_session_server_delete
      Src: /src/unbound/util/netevent.c:6690,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/util/netevent.c:6702,1
    - Dst: ub_winsock_tcp_wouldblock
      Src: /src/unbound/util/netevent.c:6703,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:6706,1
    - Dst: sock_close
      Src: /src/unbound/util/netevent.c:6707,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 33
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6710
      start: 6669
    functionDepth: 7
    functionLinenumber: 6669
    functionLinenumberEnd: 6710
    functionName: comm_point_close
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 5
    functionsReached:
    - log_err
    - http2_session_server_delete
    - sock_close
    - verbose
    - ub_event_del
    - tcl_close_connection
    - ub_winsock_tcp_wouldblock
    - tcp_req_info_clear
    linkageType: ''
    returnType: void
    signature: void comm_point_close(struct comm_point* c)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: SSL_shutdown
      Src: /src/unbound/util/netevent.c:6719,1
    - Dst: SSL_free
      Src: /src/unbound/util/netevent.c:6720,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6724,1
    - Dst: comm_point_close
      Src: /src/unbound/util/netevent.c:6727,1
    - Dst: comm_point_delete
      Src: /src/unbound/util/netevent.c:6731,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6732,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6734,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:6736,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/netevent.c:6739,1
    - Dst: tcp_req_info_delete
      Src: /src/unbound/util/netevent.c:6743,1
    - Dst: http2_session_delete
      Src: /src/unbound/util/netevent.c:6746,1
    - Dst: doq_server_socket_delete
      Src: /src/unbound/util/netevent.c:6751,1
    - Dst: ub_event_free
      Src: /src/unbound/util/netevent.c:6753,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6754,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:6755,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 35
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6756
      start: 6712
    functionDepth: 8
    functionLinenumber: 6712
    functionLinenumberEnd: 6756
    functionName: comm_point_delete
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 26
    functionsReached:
    - tcp_req_info_delete
    - SSL_free
    - free
    - comm_point_close
    - http2_session_delete
    - doq_server_socket_delete
    - sldns_buffer_free
    - ub_event_free
    - comm_point_delete
    - SSL_shutdown
    linkageType: ''
    returnType: void
    signature: void comm_point_delete(struct comm_point* c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_addr
      Src: /src/unbound/util/netevent.c:6765,1
    - Dst: log_addr
      Src: /src/unbound/util/netevent.c:6766,1
    - Dst: dt_msg_send_client_response
      Src: /src/unbound/util/netevent.c:6767,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 8
    argNames:
    - dtenv
    - addr
    - addrlen
    - client_addr
    - client_addrlen
    - type
    - ssl
    - buffer
    argTypes:
    - struct dt_env*
    - struct sockaddr*
    - socklen_t
    - struct sockaddr_storage*
    - socklen_t
    - enum comm_point_type
    - void*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6769
      start: 6759
    functionDepth: 4
    functionLinenumber: 6759
    functionLinenumberEnd: 6769
    functionName: send_reply_dnstap
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - log_addr
    - dt_msg_send_client_response
    linkageType: ''
    returnType: void
    signature: "void send_reply_dnstap(struct dt_env* dtenv,\n\tstruct sockaddr* addr,
      socklen_t addrlen,\n\tstruct sockaddr_storage* client_addr, socklen_t client_addrlen,\n\tenum
      comm_point_type type, void* ssl, sldns_buffer* buffer)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:6866,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:6867,1
    - Dst: reclaim_http_handler
      Src: /src/unbound/util/netevent.c:6876,1
    - Dst: reclaim_http_handler
      Src: /src/unbound/util/netevent.c:6879,1
    - Dst: doq_socket_drop_reply
      Src: /src/unbound/util/netevent.c:6883,1
    - Dst: reclaim_tcp_handler
      Src: /src/unbound/util/netevent.c:6887,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 24
    argCount: 1
    argNames:
    - repinfo
    argTypes:
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6888
      start: 6861
    functionDepth: 9
    functionLinenumber: 6861
    functionLinenumberEnd: 6888
    functionName: comm_point_drop_reply
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 7
    functionsReached:
    - reclaim_http_handler
    - doq_socket_drop_reply
    - log_assert
    - reclaim_tcp_handler
    linkageType: ''
    returnType: void
    signature: void comm_point_drop_reply(struct comm_reply* repinfo)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:6893,1
    - Dst: ub_event_del
      Src: /src/unbound/util/netevent.c:6895,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6896,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6900
      start: 6890
    functionDepth: 7
    functionLinenumber: 6890
    functionLinenumberEnd: 6900
    functionName: comm_point_stop_listening
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 19
    functionsReached:
    - verbose
    - ub_event_del
    - log_err
    linkageType: ''
    returnType: void
    signature: void comm_point_stop_listening(struct comm_point* c)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:6905,1
    - Dst: ub_event_del
      Src: /src/unbound/util/netevent.c:6912,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6913,1
    - Dst: malloc
      Src: /src/unbound/util/netevent.c:6919,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6922,1
    - Dst: ub_event_add_bits
      Src: /src/unbound/util/netevent.c:6926,1
    - Dst: ub_event_del_bits
      Src: /src/unbound/util/netevent.c:6933,1
    - Dst: ub_event_del_bits
      Src: /src/unbound/util/netevent.c:6937,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:6939,1
    - Dst: ub_event_add_bits
      Src: /src/unbound/util/netevent.c:6940,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:6942,1
    - Dst: ub_event_add_bits
      Src: /src/unbound/util/netevent.c:6943,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:6945,1
    - Dst: ub_event_add_bits
      Src: /src/unbound/util/netevent.c:6946,1
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:6951,1
    - Dst: sock_close
      Src: /src/unbound/util/netevent.c:6952,1
    - Dst: ub_event_set_fd
      Src: /src/unbound/util/netevent.c:6955,1
    - Dst: ub_event_add
      Src: /src/unbound/util/netevent.c:6957,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6958,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 54
    argCount: 3
    argNames:
    - c
    - newfd
    - msec
    argTypes:
    - struct comm_point*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6962
      start: 6902
    functionDepth: 7
    functionLinenumber: 6902
    functionLinenumberEnd: 6962
    functionName: comm_point_start_listening
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 23
    functionsReached:
    - log_err
    - ub_event_set_fd
    - sock_close
    - ub_event_del_bits
    - verbose
    - ub_event_del
    - ub_event_add
    - malloc
    - ub_event_add_bits
    linkageType: ''
    returnType: void
    signature: void comm_point_start_listening(struct comm_point* c, int newfd, int
      msec)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/netevent.c:6966,1
    - Dst: ub_event_del
      Src: /src/unbound/util/netevent.c:6968,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6969,1
    - Dst: ub_event_del_bits
      Src: /src/unbound/util/netevent.c:6974,1
    - Dst: ub_event_del_bits
      Src: /src/unbound/util/netevent.c:6976,1
    - Dst: ub_event_add_bits
      Src: /src/unbound/util/netevent.c:6977,1
    - Dst: ub_event_add_bits
      Src: /src/unbound/util/netevent.c:6978,1
    - Dst: ub_event_add
      Src: /src/unbound/util/netevent.c:6979,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:6980,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 21
    argCount: 3
    argNames:
    - c
    - rd
    - wr
    argTypes:
    - struct comm_point*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 6984
      start: 6964
    functionDepth: 7
    functionLinenumber: 6964
    functionLinenumberEnd: 6984
    functionName: comm_point_listen_for_rw
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 16
    functionsReached:
    - log_err
    - ub_event_del_bits
    - verbose
    - ub_event_del
    - ub_event_add
    - ub_event_add_bits
    linkageType: ''
    returnType: void
    signature: void comm_point_listen_for_rw(struct comm_point* c, int rd, int wr)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/netevent.c:6995,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/netevent.c:6999,1
    - Dst: comm_point_get_mem
      Src: /src/unbound/util/netevent.c:7006,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - c
    argTypes:
    - struct comm_point*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7009
      start: 6986
    functionDepth: 1
    functionLinenumber: 6986
    functionLinenumberEnd: 7009
    functionName: comm_point_get_mem
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 6
    functionsReached:
    - sldns_buffer_capacity
    - comm_point_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t comm_point_get_mem(struct comm_point* c)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:7014,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:7017,1
    - Dst: ub_event_new
      Src: /src/unbound/util/netevent.c:7024,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:7027,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:7028,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - base
    - cb_arg
    argTypes:
    - struct comm_base*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7032
      start: 7011
    functionDepth: 7
    functionLinenumber: 7011
    functionLinenumberEnd: 7032
    functionName: comm_timer_create
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 12
    functionsReached:
    - free
    - log_err
    - calloc
    - ub_event_new
    linkageType: ''
    returnType: struct comm_timer
    signature: 'struct comm_timer *

      comm_timer_create(struct comm_base* base, void (*cb)(void*), void* cb_arg)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ub_timer_del
      Src: /src/unbound/util/netevent.c:7042,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - timer
    argTypes:
    - struct comm_timer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7045
      start: 7034
    functionDepth: 0
    functionLinenumber: 7034
    functionLinenumberEnd: 7045
    functionName: comm_timer_disable
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 7
    functionsReached:
    - ub_timer_del
    linkageType: ''
    returnType: void
    signature: void comm_timer_disable(struct comm_timer* timer)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:7050,1
    - Dst: comm_timer_disable
      Src: /src/unbound/util/netevent.c:7052,1
    - Dst: ub_timer_add
      Src: /src/unbound/util/netevent.c:7053,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:7055,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - timer
    - tv
    argTypes:
    - struct comm_timer*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7057
      start: 7047
    functionDepth: 7
    functionLinenumber: 7047
    functionLinenumberEnd: 7057
    functionName: comm_timer_set
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 19
    functionsReached:
    - comm_timer_disable
    - log_assert
    - ub_timer_add
    - log_err
    linkageType: ''
    returnType: void
    signature: void comm_timer_set(struct comm_timer* timer, struct timeval* tv)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: comm_timer_disable
      Src: /src/unbound/util/netevent.c:7064,1
    - Dst: ub_event_free
      Src: /src/unbound/util/netevent.c:7068,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:7069,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - timer
    argTypes:
    - struct comm_timer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7070
      start: 7059
    functionDepth: 1
    functionLinenumber: 7059
    functionLinenumberEnd: 7070
    functionName: comm_timer_delete
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 17
    functionsReached:
    - free
    - comm_timer_disable
    - ub_event_free
    linkageType: ''
    returnType: void
    signature: void comm_timer_delete(struct comm_timer* timer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_comm_base_now
      Src: /src/unbound/util/netevent.c:7078,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:7080,1
    - Dst: fptr_whitelist_comm_timer
      Src: /src/unbound/util/netevent.c:7080,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - event
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7082
      start: 7072
    functionDepth: 1
    functionLinenumber: 7072
    functionLinenumberEnd: 7082
    functionName: comm_timer_callback
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - fptr_whitelist_comm_timer
    - ub_comm_base_now
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: void comm_timer_callback(int ATTR_UNUSED(fd), short event, void* arg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - timer
    argTypes:
    - struct comm_timer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7088
      start: 7084
    functionDepth: 0
    functionLinenumber: 7084
    functionLinenumberEnd: 7088
    functionName: comm_timer_is_set
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int comm_timer_is_set(struct comm_timer* timer)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - timer
    argTypes:
    - struct comm_timer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7095
      start: 7090
    functionDepth: 0
    functionLinenumber: 7090
    functionLinenumberEnd: 7095
    functionName: comm_timer_get_mem
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t comm_timer_get_mem(struct comm_timer* timer)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/util/netevent.c:7101,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:7104,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - base
    - cb_arg
    argTypes:
    - struct comm_base*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7112
      start: 7097
    functionDepth: 7
    functionLinenumber: 7097
    functionLinenumberEnd: 7112
    functionName: comm_signal_create
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - malloc
    - log_err
    linkageType: ''
    returnType: struct comm_signal
    signature: "struct comm_signal *\ncomm_signal_create(struct comm_base* base,\n
      \       void (*callback)(int, void*), void* cb_arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_comm_base_now
      Src: /src/unbound/util/netevent.c:7120,1
    - Dst: fptr_ok
      Src: /src/unbound/util/netevent.c:7121,1
    - Dst: fptr_whitelist_comm_signal
      Src: /src/unbound/util/netevent.c:7121,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - sig
    - event
    - arg
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7123
      start: 7114
    functionDepth: 1
    functionLinenumber: 7114
    functionLinenumberEnd: 7123
    functionName: comm_signal_callback
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 0
    functionsReached:
    - fptr_whitelist_comm_signal
    - ub_comm_base_now
    - fptr_ok
    linkageType: ''
    returnType: void
    signature: void comm_signal_callback(int sig, short event, void* arg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/netevent.c:7128,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:7131,1
    - Dst: log_assert
      Src: /src/unbound/util/netevent.c:7134,1
    - Dst: ub_signal_new
      Src: /src/unbound/util/netevent.c:7136,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:7139,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:7140,1
    - Dst: ub_signal_add
      Src: /src/unbound/util/netevent.c:7143,1
    - Dst: log_err
      Src: /src/unbound/util/netevent.c:7144,1
    - Dst: ub_event_free
      Src: /src/unbound/util/netevent.c:7145,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:7146,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 2
    argNames:
    - comsig
    - sig
    argTypes:
    - struct comm_signal*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7153
      start: 7125
    functionDepth: 7
    functionLinenumber: 7125
    functionLinenumberEnd: 7153
    functionName: comm_signal_bind
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - log_err
    - ub_signal_new
    - ub_signal_add
    - free
    - calloc
    - log_assert
    - ub_event_free
    linkageType: ''
    returnType: int
    signature: int comm_signal_bind(struct comm_signal* comsig, int sig)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_signal_del
      Src: /src/unbound/util/netevent.c:7164,1
    - Dst: ub_event_free
      Src: /src/unbound/util/netevent.c:7165,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:7166,1
    - Dst: free
      Src: /src/unbound/util/netevent.c:7169,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 1
    argNames:
    - comsig
    argTypes:
    - struct comm_signal*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 7170
      start: 7155
    functionDepth: 1
    functionLinenumber: 7155
    functionLinenumberEnd: 7170
    functionName: comm_signal_delete
    functionSourceFile: /src/unbound/util/netevent.c
    functionUses: 1
    functionsReached:
    - free
    - ub_signal_del
    - ub_event_free
    linkageType: ''
    returnType: void
    signature: void comm_signal_delete(struct comm_signal* comsig)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - ttl
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 104
      start: 103
    functionDepth: 0
    functionLinenumber: 103
    functionLinenumberEnd: 104
    functionName: PREFETCH_TTL_CALC
    functionSourceFile: /src/unbound/util/data/msgparse.h
    functionUses: 13
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PREFETCH_TTL_CALC(ttl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ttl
    - ','
    - ttl_add
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 111
      start: 109
    functionDepth: 0
    functionLinenumber: 109
    functionLinenumberEnd: 111
    functionName: EXPIRED_REPLY_TTL_CALC
    functionSourceFile: /src/unbound/util/data/msgparse.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXPIRED_REPLY_TTL_CALC(ttl, ttl_add)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ttl
    - ','
    - ttl_add
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 112
    functionDepth: 0
    functionLinenumber: 112
    functionLinenumberEnd: 115
    functionName: EXPIRED_REPLY_TTL_CALC
    functionSourceFile: /src/unbound/util/data/msgparse.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EXPIRED_REPLY_TTL_CALC(ttl, ttl_add)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ttl
    - ','
    - rrsetttl
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 121
      start: 119
    functionDepth: 0
    functionLinenumber: 119
    functionLinenumberEnd: 121
    functionName: UPDATE_TTL_FROM_RRSET
    functionSourceFile: /src/unbound/util/data/msgparse.h
    functionUses: 6
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: UPDATE_TTL_FROM_RRSET(ttl, rrsetttl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - ttl
    - ','
    - now
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 124
    functionDepth: 0
    functionLinenumber: 124
    functionLinenumberEnd: 125
    functionName: TTL_IS_EXPIRED
    functionSourceFile: /src/unbound/util/data/msgparse.h
    functionUses: 14
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: TTL_IS_EXPIRED(ttl, now)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - x
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 234
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 234
    functionName: LABEL_IS_PTR
    functionSourceFile: /src/unbound/util/data/msgparse.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: LABEL_IS_PTR(x)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 236
    functionDepth: 0
    functionLinenumber: 236
    functionLinenumberEnd: 237
    functionName: PTR_OFFSET
    functionSourceFile: /src/unbound/util/data/msgparse.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PTR_OFFSET(x, y)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - offset
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 238
    functionDepth: 0
    functionLinenumber: 238
    functionLinenumberEnd: 239
    functionName: PTR_CREATE
    functionSourceFile: /src/unbound/util/data/msgparse.h
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PTR_CREATE(offset)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/dname.c:57,1
    - Dst: sldns_buffer_read_u8
      Src: /src/unbound/util/data/dname.c:59,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/dname.c:67,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/data/dname.c:69,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 1
    argNames:
    - query
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 71
      start: 51
    functionDepth: 5
    functionLinenumber: 51
    functionLinenumberEnd: 71
    functionName: query_dname_len
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 4
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_skip
    - sldns_buffer_read_u8
    linkageType: ''
    returnType: size_t
    signature: size_t query_dname_len(sldns_buffer* query)
  - BBCount: 6
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 2
    argNames:
    - dname
    - maxlen
    argTypes:
    - uint8_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 73
    functionDepth: 0
    functionLinenumber: 73
    functionLinenumberEnd: 96
    functionName: dname_valid
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 27
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t dname_valid(uint8_t* dname, size_t maxlen)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:103,1
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:114,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:119,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:119,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:120,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:120,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 24
    argCount: 2
    argNames:
    - d1
    - d2
    argTypes:
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 99
    functionDepth: 1
    functionLinenumber: 99
    functionLinenumberEnd: 132
    functionName: query_dname_compare
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 87
    functionsReached:
    - log_assert
    - tolower
    linkageType: ''
    returnType: int
    signature: int query_dname_compare(register uint8_t* d1, register uint8_t* d2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:143,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 1
    argNames:
    - dname
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 134
    functionDepth: 0
    functionLinenumber: 134
    functionLinenumberEnd: 148
    functionName: query_dname_tolower
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 9
    functionsReached:
    - tolower
    linkageType: ''
    returnType: void
    signature: void query_dname_tolower(uint8_t* dname)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_end
      Src: /src/unbound/util/data/dname.c:155,1
    - Dst: LABEL_IS_PTR
      Src: /src/unbound/util/data/dname.c:159,1
    - Dst: PTR_OFFSET
      Src: /src/unbound/util/data/dname.c:160,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/dname.c:161,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/util/data/dname.c:163,1
    - Dst: PTR_OFFSET
      Src: /src/unbound/util/data/dname.c:163,1
    - Dst: sldns_buffer_end
      Src: /src/unbound/util/data/dname.c:169,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:172,1
    - Dst: sldns_buffer_end
      Src: /src/unbound/util/data/dname.c:175,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 24
    argCount: 2
    argNames:
    - pkt
    - dname
    argTypes:
    - sldns_buffer*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 150
    functionDepth: 2
    functionLinenumber: 150
    functionLinenumberEnd: 179
    functionName: pkt_dname_tolower
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 1
    functionsReached:
    - PTR_OFFSET
    - sldns_buffer_at
    - LABEL_IS_PTR
    - sldns_buffer_limit
    - tolower
    - sldns_buffer_end
    linkageType: ''
    returnType: void
    signature: void pkt_dname_tolower(sldns_buffer* pkt, uint8_t* dname)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/dname.c:194,1
    - Dst: sldns_buffer_read_u8
      Src: /src/unbound/util/data/dname.c:196,1
    - Dst: LABEL_IS_PTR
      Src: /src/unbound/util/data/dname.c:197,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/dname.c:200,1
    - Dst: PTR_OFFSET
      Src: /src/unbound/util/data/dname.c:202,1
    - Dst: sldns_buffer_read_u8
      Src: /src/unbound/util/data/dname.c:202,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/dname.c:205,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/dname.c:208,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/dname.c:209,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/dname.c:221,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/data/dname.c:223,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/dname.c:227,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 33
    argCount: 1
    argNames:
    - pkt
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 182
    functionDepth: 5
    functionLinenumber: 182
    functionLinenumberEnd: 230
    functionName: pkt_dname_len
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 14
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_position
    - PTR_OFFSET
    - sldns_buffer_read_u8
    - LABEL_IS_PTR
    - sldns_buffer_skip
    - sldns_buffer_limit
    - sldns_buffer_set_position
    linkageType: ''
    returnType: size_t
    signature: size_t pkt_dname_len(sldns_buffer* pkt)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:237,1
    - Dst: LABEL_IS_PTR
      Src: /src/unbound/util/data/dname.c:242,1
    - Dst: PTR_OFFSET
      Src: /src/unbound/util/data/dname.c:243,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/dname.c:244,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/util/data/dname.c:248,1
    - Dst: PTR_OFFSET
      Src: /src/unbound/util/data/dname.c:248,1
    - Dst: LABEL_IS_PTR
      Src: /src/unbound/util/data/dname.c:252,1
    - Dst: PTR_OFFSET
      Src: /src/unbound/util/data/dname.c:253,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/dname.c:254,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/util/data/dname.c:258,1
    - Dst: PTR_OFFSET
      Src: /src/unbound/util/data/dname.c:258,1
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:263,1
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:264,1
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:269,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:272,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:272,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:273,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:273,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 44
    argCount: 3
    argNames:
    - pkt
    - d1
    - d2
    argTypes:
    - sldns_buffer*
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 284
    functionName: dname_pkt_compare
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 5
    functionsReached:
    - PTR_OFFSET
    - sldns_buffer_at
    - LABEL_IS_PTR
    - sldns_buffer_limit
    - tolower
    - log_assert
    linkageType: ''
    returnType: int
    signature: int dname_pkt_compare(sldns_buffer* pkt, uint8_t* d1, uint8_t* d2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:296,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:300,1
    - Dst: hashlittle
      Src: /src/unbound/util/data/dname.c:303,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 14
    argCount: 2
    argNames:
    - dname
    - h
    argTypes:
    - uint8_t*
    - hashvalue_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 308
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 308
    functionName: dname_query_hash
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 4
    functionsReached:
    - hashlittle
    - log_assert
    - tolower
    linkageType: ''
    returnType: hashvalue_type
    signature: hashvalue_type dname_query_hash(uint8_t* dname, hashvalue_type h)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: LABEL_IS_PTR
      Src: /src/unbound/util/data/dname.c:321,1
    - Dst: PTR_OFFSET
      Src: /src/unbound/util/data/dname.c:323,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/dname.c:324,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/util/data/dname.c:328,1
    - Dst: PTR_OFFSET
      Src: /src/unbound/util/data/dname.c:328,1
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:332,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:336,1
    - Dst: hashlittle
      Src: /src/unbound/util/data/dname.c:339,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - pkt
    - dname
    - h
    argTypes:
    - sldns_buffer*
    - uint8_t*
    - hashvalue_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 310
    functionDepth: 1
    functionLinenumber: 310
    functionLinenumberEnd: 344
    functionName: dname_pkt_hash
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 0
    functionsReached:
    - hashlittle
    - PTR_OFFSET
    - sldns_buffer_at
    - LABEL_IS_PTR
    - sldns_buffer_limit
    - tolower
    - log_assert
    linkageType: ''
    returnType: hashvalue_type
    signature: hashvalue_type dname_pkt_hash(sldns_buffer* pkt, uint8_t* dname, hashvalue_type
      h)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: LABEL_IS_PTR
      Src: /src/unbound/util/data/dname.c:354,1
    - Dst: PTR_OFFSET
      Src: /src/unbound/util/data/dname.c:361,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/dname.c:362,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/util/data/dname.c:364,1
    - Dst: PTR_OFFSET
      Src: /src/unbound/util/data/dname.c:364,1
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:372,1
    - Dst: log_err
      Src: /src/unbound/util/data/dname.c:376,1
    - Dst: memmove
      Src: /src/unbound/util/data/dname.c:380,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 3
    argNames:
    - pkt
    - to
    - dname
    argTypes:
    - sldns_buffer*
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 387
      start: 346
    functionDepth: 7
    functionLinenumber: 346
    functionLinenumberEnd: 387
    functionName: dname_pkt_copy
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 11
    functionsReached:
    - log_err
    - PTR_OFFSET
    - sldns_buffer_at
    - LABEL_IS_PTR
    - memmove
    - sldns_buffer_limit
    - log_assert
    linkageType: ''
    returnType: void
    signature: void dname_pkt_copy(sldns_buffer* pkt, uint8_t* to, uint8_t* dname)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: fputc
      Src: /src/unbound/util/data/dname.c:398,1
    - Dst: LABEL_IS_PTR
      Src: /src/unbound/util/data/dname.c:400,1
    - Dst: fputs
      Src: /src/unbound/util/data/dname.c:403,1
    - Dst: PTR_OFFSET
      Src: /src/unbound/util/data/dname.c:406,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/dname.c:407,1
    - Dst: fputs
      Src: /src/unbound/util/data/dname.c:408,1
    - Dst: fputs
      Src: /src/unbound/util/data/dname.c:412,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/util/data/dname.c:415,1
    - Dst: PTR_OFFSET
      Src: /src/unbound/util/data/dname.c:415,1
    - Dst: fputs
      Src: /src/unbound/util/data/dname.c:420,1
    - Dst: fputc
      Src: /src/unbound/util/data/dname.c:424,1
    - Dst: fputc
      Src: /src/unbound/util/data/dname.c:425,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 35
    argCount: 3
    argNames:
    - out
    - pkt
    - dname
    argTypes:
    - FILE*
    - struct sldns_buffer*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 389
    functionDepth: 1
    functionLinenumber: 389
    functionLinenumberEnd: 428
    functionName: dname_print
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 3
    functionsReached:
    - PTR_OFFSET
    - sldns_buffer_at
    - LABEL_IS_PTR
    - fputs
    - sldns_buffer_limit
    - fputc
    linkageType: ''
    returnType: void
    signature: void dname_print(FILE* out, struct sldns_buffer* pkt, uint8_t* dname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - dname
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 430
    functionDepth: 0
    functionLinenumber: 430
    functionLinenumberEnd: 443
    functionName: dname_count_labels
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 50
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dname_count_labels(uint8_t* dname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 2
    argNames:
    - dname
    - size
    argTypes:
    - uint8_t*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 461
      start: 445
    functionDepth: 0
    functionLinenumber: 445
    functionLinenumberEnd: 461
    functionName: dname_count_size_labels
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 34
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dname_count_size_labels(uint8_t* dname, size_t* size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:474,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:474,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:475,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:475,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 3
    argNames:
    - p1
    - p2
    - len
    argTypes:
    - uint8_t*
    - uint8_t*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 483
      start: 470
    functionDepth: 0
    functionLinenumber: 470
    functionLinenumberEnd: 483
    functionName: memlowercmp
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 0
    functionsReached:
    - tolower
    linkageType: ''
    returnType: int
    signature: int memlowercmp(uint8_t* p1, uint8_t* p2, uint8_t len)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:499,1
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:507,1
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:518,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:531,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:532,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:533,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:534,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 61
    argCount: 5
    argNames:
    - d1
    - labs1
    - d2
    - labs2
    - mlabs
    argTypes:
    - uint8_t*
    - int
    - uint8_t*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 566
      start: 485
    functionDepth: 1
    functionLinenumber: 485
    functionLinenumberEnd: 566
    functionName: dname_lab_cmp
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 20
    functionsReached:
    - log_assert
    - tolower
    linkageType: ''
    returnType: int
    signature: int dname_lab_cmp(uint8_t* d1, int labs1, uint8_t* d2, int labs2, int*
      mlabs)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/util/data/dname.c:571,1
    - Dst: tolower
      Src: /src/unbound/util/data/dname.c:578,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - label
    - prefix
    - endptr
    argTypes:
    - uint8_t*
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 568
    functionDepth: 0
    functionLinenumber: 568
    functionLinenumberEnd: 589
    functionName: dname_lab_startswith
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 3
    functionsReached:
    - strlen
    - tolower
    linkageType: ''
    returnType: int
    signature: int dname_lab_startswith(uint8_t* label, char* prefix, char** endptr)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memlowercmp
      Src: /src/unbound/util/data/dname.c:609,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 3
    argNames:
    - dname
    - dnamelen
    - label
    argTypes:
    - uint8_t*
    - size_t
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 591
    functionDepth: 1
    functionLinenumber: 591
    functionLinenumberEnd: 617
    functionName: dname_has_label
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 2
    functionsReached:
    - memlowercmp
    linkageType: ''
    returnType: int
    signature: int dname_has_label(uint8_t* dname, size_t dnamelen, uint8_t* label)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/dname.c:624,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/util/data/dname.c:627,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/dname.c:629,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/dname.c:631,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/util/data/dname.c:634,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - pkt
    - dname
    argTypes:
    - sldns_buffer*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 619
    functionDepth: 5
    functionLinenumber: 619
    functionLinenumberEnd: 637
    functionName: dname_buffer_write
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_write_u8
    - sldns_buffer_write
    linkageType: ''
    returnType: int
    signature: int dname_buffer_write(sldns_buffer* pkt, uint8_t* dname)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: isalnum
      Src: /src/unbound/util/data/dname.c:665,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 32
    argCount: 2
    argNames:
    - dname
    - str
    argTypes:
    - uint8_t*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 639
    functionDepth: 0
    functionLinenumber: 639
    functionLinenumberEnd: 678
    functionName: dname_str
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 80
    functionsReached:
    - isalnum
    linkageType: ''
    returnType: void
    signature: void dname_str(uint8_t* dname, char* str)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_lab_cmp
      Src: /src/unbound/util/data/dname.c:687,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 4
    argNames:
    - d1
    - labs1
    - d2
    - labs2
    argTypes:
    - uint8_t*
    - int
    - uint8_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 692
      start: 680
    functionDepth: 2
    functionLinenumber: 680
    functionLinenumberEnd: 692
    functionName: dname_strict_subdomain
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 7
    functionsReached:
    - dname_lab_cmp
    linkageType: ''
    returnType: int
    signature: int dname_strict_subdomain(uint8_t* d1, int labs1, uint8_t* d2, int
      labs2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_strict_subdomain
      Src: /src/unbound/util/data/dname.c:697,1
    - Dst: dname_count_labels
      Src: /src/unbound/util/data/dname.c:697,1
    - Dst: dname_count_labels
      Src: /src/unbound/util/data/dname.c:698,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - d1
    - d2
    argTypes:
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 694
    functionDepth: 3
    functionLinenumber: 694
    functionLinenumberEnd: 699
    functionName: dname_strict_subdomain_c
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 14
    functionsReached:
    - dname_count_labels
    - dname_strict_subdomain
    linkageType: ''
    returnType: int
    signature: int dname_strict_subdomain_c(uint8_t* d1, uint8_t* d2)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/util/data/dname.c:707,1
    - Dst: dname_count_labels
      Src: /src/unbound/util/data/dname.c:708,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/util/data/dname.c:711,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - d1
    - d2
    argTypes:
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 717
      start: 701
    functionDepth: 2
    functionLinenumber: 701
    functionLinenumberEnd: 717
    functionName: dname_subdomain_c
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 50
    functionsReached:
    - dname_lab_cmp
    - dname_count_labels
    linkageType: ''
    returnType: int
    signature: int dname_subdomain_c(uint8_t* d1, uint8_t* d2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:723,1
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:725,1
    - Dst: LABEL_IS_PTR
      Src: /src/unbound/util/data/dname.c:725,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 1
    argNames:
    - dname
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 727
      start: 719
    functionDepth: 1
    functionLinenumber: 719
    functionLinenumberEnd: 727
    functionName: dname_is_root
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 20
    functionsReached:
    - log_assert
    - LABEL_IS_PTR
    linkageType: ''
    returnType: int
    signature: int dname_is_root(uint8_t* dname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:733,1
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:735,1
    - Dst: LABEL_IS_PTR
      Src: /src/unbound/util/data/dname.c:735,1
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:736,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - dname
    - len
    argTypes:
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 741
      start: 729
    functionDepth: 1
    functionLinenumber: 729
    functionLinenumberEnd: 741
    functionName: dname_remove_label
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 27
    functionsReached:
    - log_assert
    - LABEL_IS_PTR
    linkageType: ''
    returnType: void
    signature: void dname_remove_label(uint8_t** dname, size_t* len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:747,1
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:749,1
    - Dst: LABEL_IS_PTR
      Src: /src/unbound/util/data/dname.c:749,1
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:750,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - dname
    - len
    - lenlimit
    argTypes:
    - uint8_t**
    - size_t*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 757
      start: 743
    functionDepth: 1
    functionLinenumber: 743
    functionLinenumberEnd: 757
    functionName: dname_remove_label_limit_len
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 7
    functionsReached:
    - log_assert
    - LABEL_IS_PTR
    linkageType: ''
    returnType: int
    signature: int dname_remove_label_limit_len(uint8_t** dname, size_t* len, size_t
      lenlimit)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_remove_label
      Src: /src/unbound/util/data/dname.c:764,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - dname
    - len
    - n
    argTypes:
    - uint8_t**
    - size_t*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 765
      start: 759
    functionDepth: 2
    functionLinenumber: 759
    functionLinenumberEnd: 765
    functionName: dname_remove_labels
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 7
    functionsReached:
    - dname_remove_label
    linkageType: ''
    returnType: void
    signature: void dname_remove_labels(uint8_t** dname, size_t* len, int n)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - dname
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 784
      start: 767
    functionDepth: 0
    functionLinenumber: 767
    functionLinenumberEnd: 784
    functionName: dname_signame_label_count
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dname_signame_label_count(uint8_t* dname)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 2
    argCount: 1
    argNames:
    - dname
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 790
      start: 786
    functionDepth: 0
    functionLinenumber: 786
    functionLinenumberEnd: 790
    functionName: dname_is_wild
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int dname_is_wild(uint8_t* dname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memlowercmp
      Src: /src/unbound/util/data/dname.c:807,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 4
    argNames:
    - p1
    - len1
    - p2
    - len2
    argTypes:
    - uint8_t*
    - uint8_t
    - uint8_t*
    - uint8_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 816
      start: 803
    functionDepth: 1
    functionLinenumber: 803
    functionLinenumberEnd: 816
    functionName: memcanoncmp
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 0
    functionsReached:
    - memlowercmp
    linkageType: ''
    returnType: int
    signature: int memcanoncmp(uint8_t* p1, uint8_t len1, uint8_t* p2, uint8_t len2)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:837,1
    - Dst: log_assert
      Src: /src/unbound/util/data/dname.c:845,1
    - Dst: memcanoncmp
      Src: /src/unbound/util/data/dname.c:856,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 5
    argNames:
    - d1
    - labs1
    - d2
    - labs2
    - mlabs
    argTypes:
    - uint8_t*
    - int
    - uint8_t*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 879
      start: 819
    functionDepth: 2
    functionLinenumber: 819
    functionLinenumberEnd: 879
    functionName: dname_canon_lab_cmp
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 5
    functionsReached:
    - log_assert
    - memcanoncmp
    linkageType: ''
    returnType: int
    signature: int dname_canon_lab_cmp(uint8_t* d1, int labs1, uint8_t* d2, int labs2,
      int* mlabs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/util/data/dname.c:885,1
    - Dst: dname_count_labels
      Src: /src/unbound/util/data/dname.c:886,1
    - Dst: dname_canon_lab_cmp
      Src: /src/unbound/util/data/dname.c:887,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - d1
    - d2
    argTypes:
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 888
      start: 881
    functionDepth: 3
    functionLinenumber: 881
    functionLinenumberEnd: 888
    functionName: dname_canonical_compare
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 5
    functionsReached:
    - dname_count_labels
    - dname_canon_lab_cmp
    linkageType: ''
    returnType: int
    signature: int dname_canonical_compare(uint8_t* d1, uint8_t* d2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/util/data/dname.c:894,1
    - Dst: dname_count_labels
      Src: /src/unbound/util/data/dname.c:895,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/util/data/dname.c:896,1
    - Dst: dname_remove_labels
      Src: /src/unbound/util/data/dname.c:897,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 2
    argNames:
    - d1
    - d2
    argTypes:
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 899
      start: 890
    functionDepth: 3
    functionLinenumber: 890
    functionLinenumberEnd: 899
    functionName: dname_get_shared_topdomain
    functionSourceFile: /src/unbound/util/data/dname.c
    functionUses: 5
    functionsReached:
    - dname_lab_cmp
    - dname_count_labels
    - dname_remove_labels
    linkageType: ''
    returnType: uint8_t
    signature: uint8_t * dname_get_shared_topdomain(uint8_t* d1, uint8_t* d2)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: LABEL_IS_PTR
      Src: /src/unbound/util/data/msgparse.c:63,1
    - Dst: PTR_OFFSET
      Src: /src/unbound/util/data/msgparse.c:66,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/msgparse.c:67,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/util/data/msgparse.c:69,1
    - Dst: PTR_OFFSET
      Src: /src/unbound/util/data/msgparse.c:69,1
    - Dst: LABEL_IS_PTR
      Src: /src/unbound/util/data/msgparse.c:73,1
    - Dst: dname_pkt_compare
      Src: /src/unbound/util/data/msgparse.c:77,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 4
    argNames:
    - pkt
    - dnow
    - dprfirst
    - dprlast
    argTypes:
    - sldns_buffer*
    - uint8_t*
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 78
      start: 59
    functionDepth: 2
    functionLinenumber: 59
    functionLinenumberEnd: 78
    functionName: smart_compare
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - PTR_OFFSET
    - sldns_buffer_at
    - LABEL_IS_PTR
    - sldns_buffer_limit
    - dname_pkt_compare
    linkageType: ''
    returnType: int
    signature: "int smart_compare(sldns_buffer* pkt, uint8_t* dnow, \n\tuint8_t* dprfirst,
      uint8_t* dprlast)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/util/data/msgparse.c:89,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 25
    argCount: 9
    argNames:
    - msg
    - dname
    - dnamelen
    - type
    - dclass
    - hash
    - rrset_flags
    - section
    - region
    argTypes:
    - struct msg_parse*
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - hashvalue_type
    - uint32_t
    - sldns_pkt_section
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 113
      start: 83
    functionDepth: 0
    functionLinenumber: 83
    functionLinenumberEnd: 113
    functionName: new_rrset
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 2
    functionsReached:
    - regional_alloc
    linkageType: ''
    returnType: struct rrset_parse
    signature: "struct rrset_parse * \nnew_rrset(struct msg_parse* msg, uint8_t* dname,
      size_t dnamelen, \n\tuint16_t type, uint16_t dclass, hashvalue_type hash, \n\tuint32_t
      rrset_flags, sldns_pkt_section section, \n\tstruct regional* region)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgparse.c:120,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgparse.c:122,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/data/msgparse.c:124,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgparse.c:125,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgparse.c:126,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/msgparse.c:127,1
    - Dst: pkt_dname_len
      Src: /src/unbound/util/data/msgparse.c:131,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/msgparse.c:132,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgparse.c:137,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgparse.c:141,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/msgparse.c:142,1
    - Dst: sldns_buffer_read_u8
      Src: /src/unbound/util/data/msgparse.c:145,1
    - Dst: sldns_buffer_read_u8
      Src: /src/unbound/util/data/msgparse.c:146,1
    - Dst: sldns_buffer_read_u8
      Src: /src/unbound/util/data/msgparse.c:147,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/msgparse.c:151,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/msgparse.c:156,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 29
    argCount: 1
    argNames:
    - pkt
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 116
    functionDepth: 6
    functionLinenumber: 116
    functionLinenumberEnd: 158
    functionName: nsec_at_apex
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_remaining
    - sldns_buffer_read_u8
    - sldns_buffer_skip
    - sldns_buffer_read_u16
    - sldns_buffer_set_position
    - pkt_dname_len
    linkageType: ''
    returnType: int
    signature: int nsec_at_apex(sldns_buffer* pkt)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nsec_at_apex
      Src: /src/unbound/util/data/msgparse.c:165,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 3
    argNames:
    - pkt
    - type
    - sec
    argTypes:
    - sldns_buffer*
    - uint16_t
    - sldns_pkt_section
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 161
    functionDepth: 7
    functionLinenumber: 161
    functionLinenumberEnd: 171
    functionName: pkt_rrset_flags
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - nsec_at_apex
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t pkt_rrset_flags(sldns_buffer* pkt, uint16_t type, sldns_pkt_section
      sec)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_pkt_hash
      Src: /src/unbound/util/data/msgparse.c:180,1
    - Dst: hashlittle
      Src: /src/unbound/util/data/msgparse.c:181,1
    - Dst: hashlittle
      Src: /src/unbound/util/data/msgparse.c:182,1
    - Dst: hashlittle
      Src: /src/unbound/util/data/msgparse.c:183,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 5
    argNames:
    - pkt
    - dname
    - type
    - dclass
    - rrset_flags
    argTypes:
    - sldns_buffer*
    - uint8_t*
    - uint16_t
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 173
    functionDepth: 2
    functionLinenumber: 173
    functionLinenumberEnd: 185
    functionName: pkt_hash_rrset
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 3
    functionsReached:
    - hashlittle
    - dname_pkt_hash
    linkageType: ''
    returnType: hashvalue_type
    signature: "hashvalue_type pkt_hash_rrset(sldns_buffer* pkt, uint8_t* dname, uint16_t
      type, \n\tuint16_t dclass, uint32_t rrset_flags)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_pkt_hash
      Src: /src/unbound/util/data/msgparse.c:195,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - pkt
    - dname
    argTypes:
    - sldns_buffer*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 188
    functionDepth: 2
    functionLinenumber: 188
    functionLinenumberEnd: 197
    functionName: pkt_hash_rrset_first
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - dname_pkt_hash
    linkageType: ''
    returnType: hashvalue_type
    signature: hashvalue_type pkt_hash_rrset_first(sldns_buffer* pkt, uint8_t* dname)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashlittle
      Src: /src/unbound/util/data/msgparse.c:207,1
    - Dst: hashlittle
      Src: /src/unbound/util/data/msgparse.c:208,1
    - Dst: hashlittle
      Src: /src/unbound/util/data/msgparse.c:209,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - dname_h
    - type
    - dclass
    - rrset_flags
    argTypes:
    - hashvalue_type
    - uint16_t
    - uint16_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 211
      start: 200
    functionDepth: 1
    functionLinenumber: 200
    functionLinenumberEnd: 211
    functionName: pkt_hash_rrset_rest
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - hashlittle
    linkageType: ''
    returnType: hashvalue_type
    signature: "hashvalue_type pkt_hash_rrset_rest(hashvalue_type dname_h, uint16_t
      type, uint16_t dclass, \n\tuint32_t rrset_flags)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: dname_pkt_compare
      Src: /src/unbound/util/data/msgparse.c:221,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 4
    argCount: 8
    argNames:
    - p
    - pkt
    - h
    - rrset_flags
    - dname
    - dnamelen
    - type
    - dclass
    argTypes:
    - struct rrset_parse*
    - sldns_buffer*
    - hashvalue_type
    - uint32_t
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 224
      start: 214
    functionDepth: 2
    functionLinenumber: 214
    functionLinenumberEnd: 224
    functionName: rrset_parse_equals
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - dname_pkt_compare
    linkageType: ''
    returnType: int
    signature: "int rrset_parse_equals(struct rrset_parse* p, sldns_buffer* pkt, hashvalue_type
      h, \n\tuint32_t rrset_flags, uint8_t* dname, size_t dnamelen, \n\tuint16_t type,
      uint16_t dclass)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: rrset_parse_equals
      Src: /src/unbound/util/data/msgparse.c:234,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 8
    argNames:
    - msg
    - pkt
    - h
    - rrset_flags
    - dname
    - dnamelen
    - type
    - dclass
    argTypes:
    - struct msg_parse*
    - sldns_buffer*
    - hashvalue_type
    - uint32_t
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 240
      start: 227
    functionDepth: 3
    functionLinenumber: 227
    functionLinenumberEnd: 240
    functionName: msgparse_hashtable_lookup
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 1
    functionsReached:
    - rrset_parse_equals
    linkageType: ''
    returnType: struct rrset_parse
    signature: "struct rrset_parse *\nmsgparse_hashtable_lookup(struct msg_parse*
      msg, sldns_buffer* pkt, \n\thashvalue_type h, uint32_t rrset_flags, uint8_t*
      dname,\n\tsize_t dnamelen, uint16_t type, uint16_t dclass)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgparse.c:246,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/msgparse.c:247,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/data/msgparse.c:247,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgparse.c:249,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/data/msgparse.c:251,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgparse.c:252,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/msgparse.c:253,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgparse.c:256,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/msgparse.c:257,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - pkt
    - here
    - type
    argTypes:
    - sldns_buffer*
    - uint8_t*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 259
      start: 243
    functionDepth: 5
    functionLinenumber: 243
    functionLinenumberEnd: 259
    functionName: pkt_rrsig_covered
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_remaining
    - sldns_buffer_skip
    - sldns_buffer_read_u16
    - sldns_buffer_set_position
    - sldns_buffer_begin
    linkageType: ''
    returnType: int
    signature: int pkt_rrsig_covered(sldns_buffer* pkt, uint8_t* here, uint16_t* type)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: pkt_rrsig_covered
      Src: /src/unbound/util/data/msgparse.c:266,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 3
    argNames:
    - pkt
    - here
    - type
    argTypes:
    - sldns_buffer*
    - uint8_t*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 262
    functionDepth: 6
    functionLinenumber: 262
    functionLinenumberEnd: 269
    functionName: pkt_rrsig_covered_equals
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - pkt_rrsig_covered
    linkageType: ''
    returnType: int
    signature: int pkt_rrsig_covered_equals(sldns_buffer* pkt, uint8_t* here, uint16_t
      type)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - msg
    - rrset
    argTypes:
    - struct msg_parse*
    - struct rrset_parse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 271
    functionDepth: 0
    functionLinenumber: 271
    functionLinenumberEnd: 283
    functionName: msgparse_bucket_remove
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void msgparse_bucket_remove(struct msg_parse* msg, struct rrset_parse*
      rrset)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/msgparse.c:312,1
    - Dst: log_assert
      Src: /src/unbound/util/data/msgparse.c:324,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 46
    argCount: 3
    argNames:
    - msg
    - rrset
    - section
    argTypes:
    - struct msg_parse*
    - struct rrset_parse*
    - sldns_pkt_section
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 327
      start: 286
    functionDepth: 1
    functionLinenumber: 286
    functionLinenumberEnd: 327
    functionName: change_section
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void change_section(struct msg_parse* msg, struct rrset_parse* rrset,\n\tsldns_pkt_section
      section)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/msgparse.c:336,1
    - Dst: pkt_rrsig_covered_equals
      Src: /src/unbound/util/data/msgparse.c:338,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 4
    argNames:
    - pkt
    - rrset
    - type
    - hasother
    argTypes:
    - sldns_buffer*
    - struct rrset_parse*
    - uint16_t
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 344
      start: 330
    functionDepth: 7
    functionLinenumber: 330
    functionLinenumberEnd: 344
    functionName: rrset_has_sigover
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - pkt_rrsig_covered_equals
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int rrset_has_sigover(sldns_buffer* pkt, struct rrset_parse* rrset,
      uint16_t type,\n\tint* hasother)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: pkt_rrsig_covered_equals
      Src: /src/unbound/util/data/msgparse.c:357,1
    - Dst: regional_alloc
      Src: /src/unbound/util/data/msgparse.c:361,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 34
    argCount: 5
    argNames:
    - pkt
    - region
    - sigset
    - dataset
    - duplicate
    argTypes:
    - sldns_buffer*
    - struct regional*
    - struct rrset_parse*
    - struct rrset_parse*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 393
      start: 347
    functionDepth: 7
    functionLinenumber: 347
    functionLinenumberEnd: 393
    functionName: moveover_rrsigs
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 1
    functionsReached:
    - pkt_rrsig_covered_equals
    - regional_alloc
    linkageType: ''
    returnType: int
    signature: "int moveover_rrsigs(sldns_buffer* pkt, struct regional* region, \n\tstruct
      rrset_parse* sigset, struct rrset_parse* dataset, int duplicate)"
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: pkt_hash_rrset
      Src: /src/unbound/util/data/msgparse.c:402,1
    - Dst: log_assert
      Src: /src/unbound/util/data/msgparse.c:404,1
    - Dst: log_assert
      Src: /src/unbound/util/data/msgparse.c:405,1
    - Dst: new_rrset
      Src: /src/unbound/util/data/msgparse.c:408,1
    - Dst: log_assert
      Src: /src/unbound/util/data/msgparse.c:417,1
    - Dst: moveover_rrsigs
      Src: /src/unbound/util/data/msgparse.c:419,1
    - Dst: msgparse_bucket_remove
      Src: /src/unbound/util/data/msgparse.c:427,1
    - Dst: change_section
      Src: /src/unbound/util/data/msgparse.c:433,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 40
    argCount: 8
    argNames:
    - sigset
    - msg
    - pkt
    - datatype
    - rrset_flags
    - hasother
    - section
    - region
    argTypes:
    - struct rrset_parse*
    - struct msg_parse*
    - sldns_buffer*
    - uint16_t
    - uint32_t
    - int
    - sldns_pkt_section
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 396
    functionDepth: 8
    functionLinenumber: 396
    functionLinenumberEnd: 446
    functionName: change_rrsig_rrset
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - new_rrset
    - change_section
    - pkt_hash_rrset
    - log_assert
    - moveover_rrsigs
    - msgparse_bucket_remove
    linkageType: ''
    returnType: struct rrset_parse
    signature: "struct rrset_parse *\nchange_rrsig_rrset(struct rrset_parse* sigset,
      struct msg_parse* msg, \n\tsldns_buffer* pkt, uint16_t datatype, uint32_t rrset_flags,\n\tint
      hasother, sldns_pkt_section section, struct regional* region)"
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: pkt_hash_rrset_first
      Src: /src/unbound/util/data/msgparse.c:476,1
    - Dst: smart_compare
      Src: /src/unbound/util/data/msgparse.c:482,1
    - Dst: pkt_rrsig_covered_equals
      Src: /src/unbound/util/data/msgparse.c:491,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/data/msgparse.c:491,1
    - Dst: smart_compare
      Src: /src/unbound/util/data/msgparse.c:493,1
    - Dst: pkt_rrset_flags
      Src: /src/unbound/util/data/msgparse.c:501,1
    - Dst: pkt_rrsig_covered
      Src: /src/unbound/util/data/msgparse.c:504,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/data/msgparse.c:505,1
    - Dst: pkt_hash_rrset_rest
      Src: /src/unbound/util/data/msgparse.c:506,1
    - Dst: msgparse_hashtable_lookup
      Src: /src/unbound/util/data/msgparse.c:508,1
    - Dst: pkt_hash_rrset_rest
      Src: /src/unbound/util/data/msgparse.c:513,1
    - Dst: msgparse_hashtable_lookup
      Src: /src/unbound/util/data/msgparse.c:515,1
    - Dst: pkt_hash_rrset_rest
      Src: /src/unbound/util/data/msgparse.c:524,1
    - Dst: msgparse_hashtable_lookup
      Src: /src/unbound/util/data/msgparse.c:526,1
    - Dst: pkt_hash_rrset_rest
      Src: /src/unbound/util/data/msgparse.c:544,1
    - Dst: msgparse_hashtable_lookup
      Src: /src/unbound/util/data/msgparse.c:546,1
    - Dst: rrset_has_sigover
      Src: /src/unbound/util/data/msgparse.c:549,1
    - Dst: change_rrsig_rrset
      Src: /src/unbound/util/data/msgparse.c:557,1
    - Dst: pkt_hash_rrset_rest
      Src: /src/unbound/util/data/msgparse.c:565,1
    - Dst: msgparse_hashtable_lookup
      Src: /src/unbound/util/data/msgparse.c:566,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 63
    argCount: 16
    argNames:
    - msg
    - pkt
    - dname
    - dnamelen
    - type
    - dclass
    - hash
    - rrset_flags
    - prev_dname_first
    - prev_dname_last
    - prev_dnamelen
    - prev_type
    - prev_dclass
    - rrset_prev
    - section
    - region
    argTypes:
    - struct msg_parse*
    - sldns_buffer*
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    - hashvalue_type*
    - uint32_t*
    - uint8_t**
    - uint8_t**
    - size_t*
    - uint16_t*
    - uint16_t*
    - struct rrset_parse**
    - sldns_pkt_section
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 467
    functionDepth: 9
    functionLinenumber: 467
    functionLinenumberEnd: 576
    functionName: find_rrset
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 2
    functionsReached:
    - pkt_rrset_flags
    - smart_compare
    - pkt_rrsig_covered
    - msgparse_hashtable_lookup
    - pkt_hash_rrset_first
    - rrset_has_sigover
    - pkt_rrsig_covered_equals
    - change_rrsig_rrset
    - sldns_buffer_current
    - pkt_hash_rrset_rest
    linkageType: ''
    returnType: int
    signature: "int find_rrset(struct msg_parse* msg, sldns_buffer* pkt, uint8_t*
      dname, \n\tsize_t dnamelen, uint16_t type, uint16_t dclass, hashvalue_type*
      hash, \n\tuint32_t* rrset_flags,\n\tuint8_t** prev_dname_first, uint8_t** prev_dname_last,\n\tsize_t*
      prev_dnamelen, uint16_t* prev_type,\n\tuint16_t* prev_dclass, struct rrset_parse**
      rrset_prev,\n\tsldns_pkt_section section, struct regional* region)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/msgparse.c:592,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgparse.c:593,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/data/msgparse.c:595,1
    - Dst: pkt_dname_len
      Src: /src/unbound/util/data/msgparse.c:596,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgparse.c:598,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgparse.c:600,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgparse.c:601,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 16
    argCount: 2
    argNames:
    - pkt
    - msg
    argTypes:
    - sldns_buffer*
    - struct msg_parse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 585
    functionDepth: 6
    functionLinenumber: 585
    functionLinenumberEnd: 603
    functionName: parse_query_section
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_read_u16
    - log_assert
    - sldns_buffer_current
    - pkt_dname_len
    linkageType: ''
    returnType: int
    signature: int parse_query_section(sldns_buffer* pkt, struct msg_parse* msg)
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/msgparse.c:632,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 28
    argCount: 1
    argNames:
    - rdf
    argTypes:
    - sldns_rdf_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 637
      start: 605
    functionDepth: 1
    functionLinenumber: 605
    functionLinenumberEnd: 637
    functionName: get_rdf_size
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 3
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: size_t
    signature: size_t get_rdf_size(sldns_rdf_type rdf)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/data/msgparse.c:646,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgparse.c:647,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgparse.c:648,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/data/msgparse.c:650,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgparse.c:661,1
    - Dst: pkt_dname_len
      Src: /src/unbound/util/data/msgparse.c:662,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgparse.c:664,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgparse.c:666,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/data/msgparse.c:676,1
    - Dst: get_rdf_size
      Src: /src/unbound/util/data/msgparse.c:679,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/data/msgparse.c:685,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/data/msgparse.c:696,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 45
    argCount: 3
    argNames:
    - pkt
    - type
    - rr
    argTypes:
    - sldns_buffer*
    - uint16_t
    - struct rr_parse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 698
      start: 640
    functionDepth: 6
    functionLinenumber: 640
    functionLinenumberEnd: 698
    functionName: calc_size
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_position
    - sldns_rr_descript
    - get_rdf_size
    - sldns_buffer_skip
    - sldns_buffer_read_u16
    - sldns_buffer_current
    - pkt_dname_len
    linkageType: ''
    returnType: int
    signature: int calc_size(sldns_buffer* pkt, uint16_t type, struct rr_parse* rr)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgparse.c:705,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/data/msgparse.c:707,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgparse.c:708,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgparse.c:709,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/data/msgparse.c:711,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - pkt
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 713
      start: 701
    functionDepth: 5
    functionLinenumber: 701
    functionLinenumberEnd: 713
    functionName: skip_ttl_rdata
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_skip
    - sldns_buffer_read_u16
    linkageType: ''
    returnType: int
    signature: int skip_ttl_rdata(sldns_buffer* pkt)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgparse.c:720,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgparse.c:722,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/data/msgparse.c:724,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgparse.c:725,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgparse.c:726,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/msgparse.c:727,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/msgparse.c:730,1
    - Dst: memmove
      Src: /src/unbound/util/data/msgparse.c:735,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgparse.c:736,1
    - Dst: memcmp
      Src: /src/unbound/util/data/msgparse.c:746,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 3
    argNames:
    - pkt
    - rrset
    - ttldata
    argTypes:
    - sldns_buffer*
    - struct rrset_parse*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 755
      start: 716
    functionDepth: 5
    functionLinenumber: 716
    functionLinenumberEnd: 755
    functionName: sig_is_double
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_remaining
    - memmove
    - sldns_buffer_skip
    - sldns_buffer_read_u16
    - sldns_buffer_set_position
    - memcmp
    - ntohs
    linkageType: ''
    returnType: int
    signature: int sig_is_double(sldns_buffer* pkt, struct rrset_parse* rrset, uint8_t*
      ttldata)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: skip_ttl_rdata
      Src: /src/unbound/util/data/msgparse.c:778,1
    - Dst: sig_is_double
      Src: /src/unbound/util/data/msgparse.c:785,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/data/msgparse.c:785,1
    - Dst: skip_ttl_rdata
      Src: /src/unbound/util/data/msgparse.c:786,1
    - Dst: regional_alloc
      Src: /src/unbound/util/data/msgparse.c:792,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/data/msgparse.c:795,1
    - Dst: calc_size
      Src: /src/unbound/util/data/msgparse.c:812,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 33
    argCount: 6
    argNames:
    - rrset
    - pkt
    - msg
    - region
    - section
    - type
    argTypes:
    - struct rrset_parse*
    - sldns_buffer*
    - struct msg_parse*
    - struct regional*
    - sldns_pkt_section
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 817
      start: 758
    functionDepth: 7
    functionLinenumber: 758
    functionLinenumberEnd: 817
    functionName: add_rr_to_rrset
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - regional_alloc
    - calc_size
    - skip_ttl_rdata
    - sldns_buffer_current
    - sig_is_double
    linkageType: ''
    returnType: int
    signature: "int add_rr_to_rrset(struct rrset_parse* rrset, sldns_buffer* pkt,
      \n\tstruct msg_parse* msg, struct regional* region, \n\tsldns_pkt_section section,
      uint16_t type)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgparse.c:847,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/data/msgparse.c:851,1
    - Dst: pkt_dname_len
      Src: /src/unbound/util/data/msgparse.c:852,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgparse.c:854,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgparse.c:856,1
    - Dst: sldns_buffer_read
      Src: /src/unbound/util/data/msgparse.c:857,1
    - Dst: pkt_rrsig_covered
      Src: /src/unbound/util/data/msgparse.c:862,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/data/msgparse.c:863,1
    - Dst: fprintf
      Src: /src/unbound/util/data/msgparse.c:864,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/data/msgparse.c:865,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/data/msgparse.c:866,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/data/msgparse.c:868,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/data/msgparse.c:869,1
    - Dst: fprintf
      Src: /src/unbound/util/data/msgparse.c:872,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/data/msgparse.c:873,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/data/msgparse.c:874,1
    - Dst: fprintf
      Src: /src/unbound/util/data/msgparse.c:876,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/util/data/msgparse.c:877,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgparse.c:878,1
    - Dst: sldns_lookup_by_id
      Src: /src/unbound/util/data/msgparse.c:878,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgparse.c:879,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgparse.c:880,1
    - Dst: dname_print
      Src: /src/unbound/util/data/msgparse.c:881,1
    - Dst: fprintf
      Src: /src/unbound/util/data/msgparse.c:882,1
    - Dst: find_rrset
      Src: /src/unbound/util/data/msgparse.c:886,1
    - Dst: new_rrset
      Src: /src/unbound/util/data/msgparse.c:894,1
    - Dst: fprintf
      Src: /src/unbound/util/data/msgparse.c:900,1
    - Dst: dname_print
      Src: /src/unbound/util/data/msgparse.c:901,1
    - Dst: fprintf
      Src: /src/unbound/util/data/msgparse.c:902,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/data/msgparse.c:903,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/data/msgparse.c:904,1
    - Dst: add_rr_to_rrset
      Src: /src/unbound/util/data/msgparse.c:908,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 6
    argNames:
    - pkt
    - msg
    - region
    - section
    - num_rrs
    - num_rrsets
    argTypes:
    - sldns_buffer*
    - struct msg_parse*
    - struct regional*
    - sldns_pkt_section
    - uint16_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 913
      start: 830
    functionDepth: 10
    functionLinenumber: 830
    functionLinenumberEnd: 913
    functionName: parse_section
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - ntohs
    - dname_print
    - pkt_rrsig_covered
    - sldns_rr_descript
    - new_rrset
    - add_rr_to_rrset
    - sldns_buffer_read_u16
    - find_rrset
    - sldns_buffer_current
    - fprintf
    - sldns_lookup_by_id
    - pkt_dname_len
    - sldns_buffer_read
    linkageType: ''
    returnType: int
    signature: "int parse_section(sldns_buffer* pkt, struct msg_parse* msg, \n\tstruct
      regional* region, sldns_pkt_section section, \n\tuint16_t num_rrs, size_t* num_rrsets)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgparse.c:919,1
    - Dst: sldns_buffer_read
      Src: /src/unbound/util/data/msgparse.c:922,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgparse.c:923,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgparse.c:924,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgparse.c:925,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgparse.c:926,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgparse.c:927,1
    - Dst: parse_query_section
      Src: /src/unbound/util/data/msgparse.c:930,1
    - Dst: parse_section
      Src: /src/unbound/util/data/msgparse.c:932,1
    - Dst: parse_section
      Src: /src/unbound/util/data/msgparse.c:935,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgparse.c:938,1
    - Dst: parse_section
      Src: /src/unbound/util/data/msgparse.c:941,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 3
    argNames:
    - pkt
    - msg
    - region
    argTypes:
    - sldns_buffer*
    - struct msg_parse*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 949
      start: 915
    functionDepth: 11
    functionLinenumber: 915
    functionLinenumberEnd: 949
    functionName: parse_packet
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 6
    functionsReached:
    - sldns_buffer_remaining
    - parse_query_section
    - sldns_buffer_read_u16
    - parse_section
    - sldns_buffer_read
    linkageType: ''
    returnType: int
    signature: int parse_packet(sldns_buffer* pkt, struct msg_parse* msg, struct regional*
      region)
  - BBCount: 35
    BranchProfiles: []
    Callsites:
    - Dst: edns_opt_list_append_keepalive
      Src: /src/unbound/util/data/msgparse.c:969,1
    - Dst: log_err
      Src: /src/unbound/util/data/msgparse.c:971,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/util/data/msgparse.c:979,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/util/data/msgparse.c:980,1
    - Dst: edns_opt_list_append
      Src: /src/unbound/util/data/msgparse.c:996,1
    - Dst: log_err
      Src: /src/unbound/util/data/msgparse.c:999,1
    - Dst: verbose
      Src: /src/unbound/util/data/msgparse.c:1023,1
    - Dst: edns_opt_list_append_keepalive
      Src: /src/unbound/util/data/msgparse.c:1026,1
    - Dst: log_err
      Src: /src/unbound/util/data/msgparse.c:1029,1
    - Dst: edns_opt_list_append
      Src: /src/unbound/util/data/msgparse.c:1043,1
    - Dst: log_err
      Src: /src/unbound/util/data/msgparse.c:1046,1
    - Dst: verbose
      Src: /src/unbound/util/data/msgparse.c:1057,1
    - Dst: memmove
      Src: /src/unbound/util/data/msgparse.c:1067,1
    - Dst: memset
      Src: /src/unbound/util/data/msgparse.c:1069,1
    - Dst: memmove
      Src: /src/unbound/util/data/msgparse.c:1070,1
    - Dst: memcpy
      Src: /src/unbound/util/data/msgparse.c:1078,1
    - Dst: memcpy
      Src: /src/unbound/util/data/msgparse.c:1082,1
    - Dst: cookie_secrets_server_validate
      Src: /src/unbound/util/data/msgparse.c:1090,1
    - Dst: edns_cookie_server_validate
      Src: /src/unbound/util/data/msgparse.c:1095,1
    - Dst: edns_opt_list_append
      Src: /src/unbound/util/data/msgparse.c:1106,1
    - Dst: log_err
      Src: /src/unbound/util/data/msgparse.c:1109,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/data/msgparse.c:1129,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/data/msgparse.c:1131,1
    - Dst: edns_cookie_server_write
      Src: /src/unbound/util/data/msgparse.c:1134,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/data/msgparse.c:1137,1
    - Dst: edns_cookie_server_write
      Src: /src/unbound/util/data/msgparse.c:1139,1
    - Dst: edns_opt_list_append
      Src: /src/unbound/util/data/msgparse.c:1142,1
    - Dst: log_err
      Src: /src/unbound/util/data/msgparse.c:1145,1
    - Dst: edns_opt_list_append
      Src: /src/unbound/util/data/msgparse.c:1154,1
    - Dst: log_err
      Src: /src/unbound/util/data/msgparse.c:1156,1
    CyclomaticComplexity: 66
    EdgeCount: 66
    ICount: 121
    argCount: 9
    argNames:
    - rdata_ptr
    - rdata_len
    - edns
    - cfg
    - c
    - repinfo
    - now
    - region
    - cookie_secrets
    argTypes:
    - uint8_t*
    - size_t
    - struct edns_data*
    - struct config_file*
    - struct comm_point*
    - struct comm_reply*
    - uint32_t
    - struct regional*
    - struct cookie_secrets*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1164
      start: 952
    functionDepth: 7
    functionLinenumber: 952
    functionLinenumberEnd: 1164
    functionName: parse_edns_options_from_query
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - edns_opt_list_append
    - log_err
    - memcpy
    - memmove
    - edns_opt_list_append_keepalive
    - verbose
    - lock_basic_unlock
    - cookie_secrets_server_validate
    - edns_cookie_server_write
    - lock_basic_lock
    - memset
    - sldns_read_uint16
    - edns_cookie_server_validate
    linkageType: ''
    returnType: int
    signature: "int parse_edns_options_from_query(uint8_t* rdata_ptr, size_t rdata_len,\n\tstruct
      edns_data* edns, struct config_file* cfg, struct comm_point* c,\n\tstruct comm_reply*
      repinfo, uint32_t now, struct regional* region,\n\tstruct cookie_secrets* cookie_secrets)"
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/util/data/msgparse.c:1191,1
    - Dst: log_assert
      Src: /src/unbound/util/data/msgparse.c:1206,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/util/data/msgparse.c:1221,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgparse.c:1222,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/util/data/msgparse.c:1237,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/util/data/msgparse.c:1238,1
    - Dst: edns_opt_list_append
      Src: /src/unbound/util/data/msgparse.c:1244,1
    - Dst: log_err
      Src: /src/unbound/util/data/msgparse.c:1246,1
    CyclomaticComplexity: 20
    EdgeCount: 20
    ICount: 62
    argCount: 3
    argNames:
    - msg
    - edns
    - region
    argTypes:
    - struct msg_parse*
    - struct edns_data*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1255
      start: 1166
    functionDepth: 7
    functionLinenumber: 1166
    functionLinenumberEnd: 1255
    functionName: parse_extract_edns_from_response_msg
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 5
    functionsReached:
    - edns_opt_list_append
    - log_err
    - log_assert
    - memset
    - sldns_read_uint16
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int parse_extract_edns_from_response_msg(struct msg_parse* msg,\n\tstruct
      edns_data* edns, struct regional* region)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgparse.c:1261,1
    - Dst: pkt_dname_len
      Src: /src/unbound/util/data/msgparse.c:1262,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgparse.c:1264,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/data/msgparse.c:1265,1
    - Dst: skip_ttl_rdata
      Src: /src/unbound/util/data/msgparse.c:1266,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 11
    argCount: 1
    argNames:
    - pkt
    argTypes:
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1269
      start: 1258
    functionDepth: 6
    functionLinenumber: 1258
    functionLinenumberEnd: 1269
    functionName: skip_pkt_rr
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_skip
    - skip_ttl_rdata
    - pkt_dname_len
    linkageType: ''
    returnType: int
    signature: int skip_pkt_rr(sldns_buffer* pkt)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: skip_pkt_rr
      Src: /src/unbound/util/data/msgparse.c:1277,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - pkt
    - num
    argTypes:
    - sldns_buffer*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1281
      start: 1272
    functionDepth: 7
    functionLinenumber: 1272
    functionLinenumberEnd: 1281
    functionName: skip_pkt_rrs
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 1
    functionsReached:
    - skip_pkt_rr
    linkageType: ''
    returnType: int
    signature: int skip_pkt_rrs(sldns_buffer* pkt, int num)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/msgparse.c:1291,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/util/data/msgparse.c:1291,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/data/msgparse.c:1291,1
    - Dst: memset
      Src: /src/unbound/util/data/msgparse.c:1292,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/util/data/msgparse.c:1293,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/data/msgparse.c:1293,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/util/data/msgparse.c:1294,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/data/msgparse.c:1294,1
    - Dst: skip_pkt_rrs
      Src: /src/unbound/util/data/msgparse.c:1295,1
    - Dst: LDNS_ANCOUNT
      Src: /src/unbound/util/data/msgparse.c:1295,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/data/msgparse.c:1295,1
    - Dst: LDNS_NSCOUNT
      Src: /src/unbound/util/data/msgparse.c:1296,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/data/msgparse.c:1296,1
    - Dst: LDNS_ARCOUNT
      Src: /src/unbound/util/data/msgparse.c:1300,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/data/msgparse.c:1300,1
    - Dst: LDNS_ARCOUNT
      Src: /src/unbound/util/data/msgparse.c:1303,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/data/msgparse.c:1303,1
    - Dst: pkt_dname_len
      Src: /src/unbound/util/data/msgparse.c:1308,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgparse.c:1310,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgparse.c:1312,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgparse.c:1315,1
    - Dst: sldns_buffer_read_u8
      Src: /src/unbound/util/data/msgparse.c:1316,1
    - Dst: sldns_buffer_read_u8
      Src: /src/unbound/util/data/msgparse.c:1317,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgparse.c:1318,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgparse.c:1327,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgparse.c:1328,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/data/msgparse.c:1330,1
    - Dst: parse_edns_options_from_query
      Src: /src/unbound/util/data/msgparse.c:1332,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 36
    argCount: 8
    argNames:
    - pkt
    - edns
    - cfg
    - c
    - repinfo
    - now
    - region
    - cookie_secrets
    argTypes:
    - sldns_buffer*
    - struct edns_data*
    - struct config_file*
    - struct comm_point*
    - struct comm_reply*
    - time_t
    - struct regional*
    - struct cookie_secrets*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1334
      start: 1283
    functionDepth: 8
    functionLinenumber: 1283
    functionLinenumberEnd: 1334
    functionName: parse_edns_from_query_pkt
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 2
    functionsReached:
    - sldns_buffer_remaining
    - LDNS_ANCOUNT
    - skip_pkt_rrs
    - sldns_buffer_read_u8
    - sldns_buffer_current
    - LDNS_QDCOUNT
    - parse_edns_options_from_query
    - sldns_buffer_read_u16
    - log_assert
    - LDNS_NSCOUNT
    - sldns_buffer_begin
    - memset
    - pkt_dname_len
    - LDNS_ARCOUNT
    linkageType: ''
    returnType: int
    signature: "int parse_edns_from_query_pkt(sldns_buffer* pkt, struct edns_data*
      edns,\n\tstruct config_file* cfg, struct comm_point* c,\n\tstruct comm_reply*
      repinfo, time_t now, struct regional* region,\n\tstruct cookie_secrets* cookie_secrets)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/data/msgparse.c:1343,1
    - Dst: sldns_wire2str_edns_option_print
      Src: /src/unbound/util/data/msgparse.c:1347,1
    - Dst: verbose
      Src: /src/unbound/util/data/msgparse.c:1349,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 3
    argNames:
    - level
    - info_str
    - list
    argTypes:
    - enum verbosity_value
    - char*
    - struct edns_option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1353
      start: 1336
    functionDepth: 7
    functionLinenumber: 1336
    functionLinenumberEnd: 1353
    functionName: log_edns_opt_list
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_edns_option_print
    - verbose
    linkageType: ''
    returnType: void
    signature: "void log_edns_opt_list(enum verbosity_value level, const char* info_str,\n\tstruct
      edns_option* list)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: dname_pkt_copy
      Src: /src/unbound/util/data/msgparse.c:1362,1
    - Dst: log_name_addr
      Src: /src/unbound/util/data/msgparse.c:1364,1
    - Dst: log_nametypeclass
      Src: /src/unbound/util/data/msgparse.c:1365,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgparse.c:1366,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 15
    argCount: 7
    argNames:
    - str
    - pkt
    - rrset
    - prev
    - rr
    - addr
    - addrlen
    argTypes:
    - char*
    - sldns_buffer*
    - struct rrset_parse*
    - struct rr_parse*
    - struct rr_parse*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1378
      start: 1356
    functionDepth: 8
    functionLinenumber: 1356
    functionLinenumberEnd: 1378
    functionName: msgparse_rrset_remove_rr
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 3
    functionsReached:
    - dname_pkt_copy
    - log_nametypeclass
    - log_name_addr
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int msgparse_rrset_remove_rr(const char* str, sldns_buffer* pkt, struct
      rrset_parse* rrset,\n\tstruct rr_parse* prev, struct rr_parse* rr, struct sockaddr_storage*
      addr, socklen_t addrlen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/msgparse.c:1386,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ttl
    - ttl_add
    argTypes:
    - time_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1389
      start: 1381
    functionDepth: 1
    functionLinenumber: 1381
    functionLinenumberEnd: 1389
    functionName: debug_expired_reply_ttl_calc
    functionSourceFile: /src/unbound/util/data/msgparse.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: time_t
    signature: time_t debug_expired_reply_ttl_calc(time_t ttl, time_t ttl_add)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/data/packed_rrset.c:61,1
    - Dst: free
      Src: /src/unbound/util/data/packed_rrset.c:63,1
    - Dst: alloc_special_release
      Src: /src/unbound/util/data/packed_rrset.c:66,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 2
    argNames:
    - pkey
    - alloc
    argTypes:
    - struct ub_packed_rrset_key*
    - struct alloc_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 55
    functionDepth: 3
    functionLinenumber: 55
    functionLinenumberEnd: 67
    functionName: ub_packed_rrset_parsedelete
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 4
    functionsReached:
    - free
    - alloc_special_release
    linkageType: ''
    returnType: void
    signature: "void ub_packed_rrset_parsedelete(struct ub_packed_rrset_key* pkey,\n
      \       struct alloc_cache* alloc)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: packed_rrset_sizeof
      Src: /src/unbound/util/data/packed_rrset.c:75,1
    - Dst: lock_get_mem
      Src: /src/unbound/util/data/packed_rrset.c:75,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - key
    - data
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 77
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 77
    functionName: ub_rrset_sizefunc
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 1
    functionsReached:
    - packed_rrset_sizeof
    - lock_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t ub_rrset_sizefunc(void* key, void* data)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/packed_rrset.c:87,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 1
    argNames:
    - d
    argTypes:
    - struct packed_rrset_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 92
      start: 79
    functionDepth: 1
    functionLinenumber: 79
    functionLinenumberEnd: 92
    functionName: packed_rrset_sizeof
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 10
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: size_t
    signature: size_t packed_rrset_sizeof(struct packed_rrset_data* d)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: query_dname_compare
      Src: /src/unbound/util/data/packed_rrset.c:112,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 2
    argNames:
    - k1
    - k2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 125
      start: 94
    functionDepth: 2
    functionLinenumber: 94
    functionLinenumberEnd: 125
    functionName: ub_rrset_compare
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 1
    functionsReached:
    - query_dname_compare
    linkageType: ''
    returnType: int
    signature: int ub_rrset_compare(void* k1, void* k2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/data/packed_rrset.c:133,1
    - Dst: alloc_special_release
      Src: /src/unbound/util/data/packed_rrset.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 2
    argNames:
    - key
    - userdata
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 127
    functionDepth: 3
    functionLinenumber: 127
    functionLinenumberEnd: 136
    functionName: ub_rrset_key_delete
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 0
    functionsReached:
    - free
    - alloc_special_release
    linkageType: ''
    returnType: void
    signature: void ub_rrset_key_delete(void* key, void* userdata)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/data/packed_rrset.c:142,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - ATTR_UNUSED(userdata)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 143
    functionName: rrset_data_delete
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void rrset_data_delete(void* data, void* ATTR_UNUSED(userdata))
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/util/data/packed_rrset.c:156,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 11
    argCount: 2
    argNames:
    - d1
    - d2
    argTypes:
    - struct packed_rrset_data*
    - struct packed_rrset_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 160
      start: 145
    functionDepth: 1
    functionLinenumber: 145
    functionLinenumberEnd: 160
    functionName: rrsetdata_equal
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 4
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: int rrsetdata_equal(struct packed_rrset_data* d1, struct packed_rrset_data*
      d2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/util/data/packed_rrset.c:166,1
    - Dst: dname_query_hash
      Src: /src/unbound/util/data/packed_rrset.c:170,1
    - Dst: hashlittle
      Src: /src/unbound/util/data/packed_rrset.c:171,1
    - Dst: hashlittle
      Src: /src/unbound/util/data/packed_rrset.c:172,1
    - Dst: hashlittle
      Src: /src/unbound/util/data/packed_rrset.c:173,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 175
      start: 162
    functionDepth: 2
    functionLinenumber: 162
    functionLinenumberEnd: 175
    functionName: rrset_key_hash
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 15
    functionsReached:
    - hashlittle
    - dname_query_hash
    - ntohs
    linkageType: ''
    returnType: hashvalue_type
    signature: hashvalue_type rrset_key_hash(struct packed_rrset_key* key)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 9
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct packed_rrset_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 177
    functionDepth: 0
    functionLinenumber: 177
    functionLinenumberEnd: 193
    functionName: packed_rrset_ptr_fixup
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 12
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_rrset_ptr_fixup(struct packed_rrset_data* data)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/util/data/packed_rrset.c:202,1
    - Dst: ntohs
      Src: /src/unbound/util/data/packed_rrset.c:203,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/util/data/packed_rrset.c:210,1
    - Dst: dname_valid
      Src: /src/unbound/util/data/packed_rrset.c:213,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 3
    argNames:
    - rrset
    - dname
    - dname_len
    argTypes:
    - struct ub_packed_rrset_key*
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 217
    functionName: get_cname_target
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 16
    functionsReached:
    - sldns_read_uint16
    - dname_valid
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void get_cname_target(struct ub_packed_rrset_key* rrset, uint8_t**
      dname, \n\tsize_t* dname_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - data
    - add
    argTypes:
    - struct packed_rrset_data*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 228
      start: 219
    functionDepth: 0
    functionLinenumber: 219
    functionLinenumberEnd: 228
    functionName: packed_rrset_ttl_add
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void packed_rrset_ttl_add(struct packed_rrset_data* data, time_t add)
  - BBCount: 14
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 30
    argCount: 1
    argNames:
    - s
    argTypes:
    - enum rrset_trust
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 249
      start: 230
    functionDepth: 0
    functionLinenumber: 230
    functionLinenumberEnd: 249
    functionName: rrset_trust_to_string
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char * \nrrset_trust_to_string(enum rrset_trust s)"
  - BBCount: 7
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 16
    argCount: 1
    argNames:
    - s
    argTypes:
    - enum sec_status
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 251
    functionDepth: 0
    functionLinenumber: 251
    functionLinenumberEnd: 263
    functionName: sec_status_to_string
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char * \nsec_status_to_string(enum sec_status s)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_nametypeclass
      Src: /src/unbound/util/data/packed_rrset.c:269,1
    - Dst: ntohs
      Src: /src/unbound/util/data/packed_rrset.c:270,1
    - Dst: ntohs
      Src: /src/unbound/util/data/packed_rrset.c:270,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - v
    - str
    - rrset
    argTypes:
    - enum verbosity_value
    - char*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 265
    functionDepth: 3
    functionLinenumber: 265
    functionLinenumberEnd: 271
    functionName: log_rrset_key
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 7
    functionsReached:
    - log_nametypeclass
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void log_rrset_key(enum verbosity_value v, const char* str, \n\tstruct
      ub_packed_rrset_key* rrset)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/packed_rrset.c:282,1
    - Dst: memmove
      Src: /src/unbound/util/data/packed_rrset.c:289,1
    - Dst: memmove
      Src: /src/unbound/util/data/packed_rrset.c:291,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/util/data/packed_rrset.c:292,1
    - Dst: memmove
      Src: /src/unbound/util/data/packed_rrset.c:293,1
    - Dst: sldns_write_uint32
      Src: /src/unbound/util/data/packed_rrset.c:296,1
    - Dst: memmove
      Src: /src/unbound/util/data/packed_rrset.c:298,1
    - Dst: sldns_wire2str_rr_buf
      Src: /src/unbound/util/data/packed_rrset.c:299,1
    - Dst: verbose
      Src: /src/unbound/util/data/packed_rrset.c:302,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 5
    argNames:
    - rrset
    - i
    - now
    - dest
    - dest_len
    argTypes:
    - struct ub_packed_rrset_key*
    - size_t
    - time_t
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 307
      start: 273
    functionDepth: 7
    functionLinenumber: 273
    functionLinenumberEnd: 307
    functionName: packed_rr_to_string
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 11
    functionsReached:
    - memmove
    - verbose
    - sldns_write_uint16
    - sldns_wire2str_rr_buf
    - log_assert
    - sldns_write_uint32
    linkageType: ''
    returnType: int
    signature: "int packed_rr_to_string(struct ub_packed_rrset_key* rrset, size_t
      i,\n\ttime_t now, char* dest, size_t dest_len)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: packed_rr_to_string
      Src: /src/unbound/util/data/packed_rrset.c:319,1
    - Dst: log_info
      Src: /src/unbound/util/data/packed_rrset.c:320,1
    - Dst: log_info
      Src: /src/unbound/util/data/packed_rrset.c:322,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 3
    argNames:
    - v
    - str
    - rrset
    argTypes:
    - enum verbosity_value
    - char*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 309
    functionDepth: 8
    functionLinenumber: 309
    functionLinenumberEnd: 325
    functionName: log_packed_rrset
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 1
    functionsReached:
    - log_info
    - packed_rr_to_string
    linkageType: ''
    returnType: void
    signature: "void log_packed_rrset(enum verbosity_value v, const char* str,\n\tstruct
      ub_packed_rrset_key* rrset)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 333
      start: 327
    functionDepth: 0
    functionLinenumber: 327
    functionLinenumberEnd: 333
    functionName: ub_packed_rrset_ttl
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 4
    functionsReached: []
    linkageType: ''
    returnType: time_t
    signature: time_t ub_packed_rrset_ttl(struct ub_packed_rrset_key* key)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/util/data/packed_rrset.c:339,1
    - Dst: memset
      Src: /src/unbound/util/data/packed_rrset.c:348,1
    - Dst: regional_alloc_init
      Src: /src/unbound/util/data/packed_rrset.c:352,1
    - Dst: packed_rrset_sizeof
      Src: /src/unbound/util/data/packed_rrset.c:356,1
    - Dst: regional_alloc_init
      Src: /src/unbound/util/data/packed_rrset.c:357,1
    - Dst: packed_rrset_ptr_fixup
      Src: /src/unbound/util/data/packed_rrset.c:361,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/util/data/packed_rrset.c:376,1
    - Dst: EXPIRED_REPLY_TTL_CALC
      Src: /src/unbound/util/data/packed_rrset.c:377,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/util/data/packed_rrset.c:380,1
    - Dst: EXPIRED_REPLY_TTL_CALC
      Src: /src/unbound/util/data/packed_rrset.c:381,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 3
    argNames:
    - key
    - region
    - now
    argTypes:
    - struct ub_packed_rrset_key*
    - struct regional*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 335
    functionDepth: 2
    functionLinenumber: 335
    functionLinenumberEnd: 386
    functionName: packed_rrset_copy_region
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 20
    functionsReached:
    - packed_rrset_sizeof
    - TTL_IS_EXPIRED
    - regional_alloc
    - regional_alloc_init
    - packed_rrset_ptr_fixup
    - EXPIRED_REPLY_TTL_CALC
    - memset
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: "struct ub_packed_rrset_key *\npacked_rrset_copy_region(struct ub_packed_rrset_key*
      key, \n\tstruct regional* region, time_t now)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: alloc_special_obtain
      Src: /src/unbound/util/data/packed_rrset.c:393,1
    - Dst: memdup
      Src: /src/unbound/util/data/packed_rrset.c:398,1
    - Dst: alloc_special_release
      Src: /src/unbound/util/data/packed_rrset.c:400,1
    - Dst: memdup
      Src: /src/unbound/util/data/packed_rrset.c:403,1
    - Dst: packed_rrset_sizeof
      Src: /src/unbound/util/data/packed_rrset.c:403,1
    - Dst: free
      Src: /src/unbound/util/data/packed_rrset.c:405,1
    - Dst: alloc_special_release
      Src: /src/unbound/util/data/packed_rrset.c:406,1
    - Dst: packed_rrset_ptr_fixup
      Src: /src/unbound/util/data/packed_rrset.c:409,1
    - Dst: packed_rrset_ttl_add
      Src: /src/unbound/util/data/packed_rrset.c:411,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 3
    argNames:
    - key
    - alloc
    - now
    argTypes:
    - struct ub_packed_rrset_key*
    - struct alloc_cache*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 413
      start: 388
    functionDepth: 9
    functionLinenumber: 388
    functionLinenumberEnd: 413
    functionName: packed_rrset_copy_alloc
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 2
    functionsReached:
    - packed_rrset_sizeof
    - packed_rrset_ttl_add
    - free
    - alloc_special_release
    - packed_rrset_ptr_fixup
    - memdup
    - alloc_special_obtain
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: "struct ub_packed_rrset_key * \npacked_rrset_copy_alloc(struct ub_packed_rrset_key*
      key, \n\tstruct alloc_cache* alloc, time_t now)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memcmp
      Src: /src/unbound/util/data/packed_rrset.c:423,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 4
    argNames:
    - d
    - rdata
    - len
    - index
    argTypes:
    - struct packed_rrset_data*
    - uint8_t*
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 415
    functionDepth: 1
    functionLinenumber: 415
    functionLinenumberEnd: 429
    functionName: packed_rrset_find_rr
    functionSourceFile: /src/unbound/util/data/packed_rrset.c
    functionUses: 5
    functionsReached:
    - memcmp
    linkageType: ''
    returnType: int
    signature: "int packed_rrset_find_rr(struct packed_rrset_data* d, uint8_t* rdata,
      size_t len,\n\tsize_t* index)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_lab_cmp
      Src: /src/unbound/util/data/msgencode.c:120,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 21
    argCount: 6
    argNames:
    - tree
    - dname
    - labs
    - match
    - matchlabels
    - insertpt
    argTypes:
    - struct compress_tree_node**
    - uint8_t*
    - int
    - struct compress_tree_node**
    - int*
    - struct compress_tree_node***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 140
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 140
    functionName: compress_tree_search
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 0
    functionsReached:
    - dname_lab_cmp
    linkageType: ''
    returnType: int
    signature: "int compress_tree_search(struct compress_tree_node** tree, uint8_t*
      dname,\n\tint labs, struct compress_tree_node** match, int* matchlabels,\n\tstruct
      compress_tree_node*** insertpt)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: compress_tree_search
      Src: /src/unbound/util/data/msgencode.c:158,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 4
    argNames:
    - tree
    - dname
    - labs
    - insertpt
    argTypes:
    - struct compress_tree_node**
    - uint8_t*
    - int
    - struct compress_tree_node***
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 171
      start: 150
    functionDepth: 3
    functionLinenumber: 150
    functionLinenumberEnd: 171
    functionName: compress_tree_lookup
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 0
    functionsReached:
    - compress_tree_search
    linkageType: ''
    returnType: struct compress_tree_node
    signature: "struct compress_tree_node *\ncompress_tree_lookup(struct compress_tree_node**
      tree, uint8_t* dname,\n\tint labs, struct compress_tree_node*** insertpt)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/util/data/msgencode.c:186,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 4
    argNames:
    - dname
    - labs
    - offset
    - region
    argTypes:
    - uint8_t*
    - int
    - size_t
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 195
      start: 181
    functionDepth: 0
    functionLinenumber: 181
    functionLinenumberEnd: 195
    functionName: compress_tree_newnode
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 0
    functionsReached:
    - regional_alloc
    linkageType: ''
    returnType: struct compress_tree_node
    signature: "struct compress_tree_node *\ncompress_tree_newnode(uint8_t* dname,
      int labs, size_t offset, \n\tstruct regional* region)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/msgencode.c:219,1
    - Dst: compress_tree_newnode
      Src: /src/unbound/util/data/msgencode.c:226,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 26
    argCount: 6
    argNames:
    - dname
    - labs
    - offset
    - region
    - closest
    - insertpt
    argTypes:
    - uint8_t*
    - int
    - size_t
    - struct regional*
    - struct compress_tree_node*
    - struct compress_tree_node**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 252
    functionName: compress_tree_store
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 0
    functionsReached:
    - compress_tree_newnode
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int compress_tree_store(uint8_t* dname, int labs, size_t offset, \n\tstruct
      regional* region, struct compress_tree_node* closest, \n\tstruct compress_tree_node**
      insertpt)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgencode.c:266,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/util/data/msgencode.c:268,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgencode.c:275,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/util/data/msgencode.c:277,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:278,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgencode.c:282,1
    - Dst: PTR_CREATE
      Src: /src/unbound/util/data/msgencode.c:284,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:285,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - pkt
    - dname
    - labs
    - p
    argTypes:
    - sldns_buffer*
    - uint8_t*
    - int
    - struct compress_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 255
    functionDepth: 5
    functionLinenumber: 255
    functionLinenumberEnd: 287
    functionName: write_compressed_dname
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - PTR_CREATE
    - sldns_buffer_write
    - sldns_buffer_write_u16
    - sldns_buffer_write_u8
    linkageType: ''
    returnType: int
    signature: "int write_compressed_dname(sldns_buffer* pkt, uint8_t* dname, int
      labs,\n\tstruct compress_tree_node* p)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: compress_tree_lookup
      Src: /src/unbound/util/data/msgencode.c:301,1
    - Dst: htons
      Src: /src/unbound/util/data/msgencode.c:306,1
    - Dst: PTR_CREATE
      Src: /src/unbound/util/data/msgencode.c:306,1
    - Dst: write_compressed_dname
      Src: /src/unbound/util/data/msgencode.c:307,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgencode.c:312,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgencode.c:316,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:318,1
    - Dst: htons
      Src: /src/unbound/util/data/msgencode.c:321,1
    - Dst: PTR_CREATE
      Src: /src/unbound/util/data/msgencode.c:321,1
    - Dst: compress_tree_store
      Src: /src/unbound/util/data/msgencode.c:324,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgencode.c:330,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/util/data/msgencode.c:332,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgencode.c:334,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:336,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 31
    argCount: 8
    argNames:
    - key
    - pkt
    - region
    - tree
    - owner_pos
    - owner_ptr
    - owner_labs
    - compress_count
    argTypes:
    - struct ub_packed_rrset_key*
    - sldns_buffer*
    - struct regional*
    - struct compress_tree_node**
    - size_t
    - uint16_t*
    - int
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 340
      start: 290
    functionDepth: 6
    functionLinenumber: 290
    functionLinenumberEnd: 340
    functionName: compress_owner
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - PTR_CREATE
    - sldns_buffer_write
    - write_compressed_dname
    - compress_tree_store
    - htons
    - sldns_buffer_write_u8
    - compress_tree_lookup
    linkageType: ''
    returnType: int
    signature: "int compress_owner(struct ub_packed_rrset_key* key, sldns_buffer*
      pkt,\n\tstruct regional* region, struct compress_tree_node** tree,\n\tsize_t
      owner_pos, uint16_t* owner_ptr, int owner_labs,\n\tsize_t* compress_count)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgencode.c:350,1
    - Dst: compress_tree_lookup
      Src: /src/unbound/util/data/msgencode.c:352,1
    - Dst: write_compressed_dname
      Src: /src/unbound/util/data/msgencode.c:353,1
    - Dst: dname_buffer_write
      Src: /src/unbound/util/data/msgencode.c:356,1
    - Dst: compress_tree_store
      Src: /src/unbound/util/data/msgencode.c:360,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 6
    argNames:
    - dname
    - pkt
    - labs
    - region
    - tree
    - compress_count
    argTypes:
    - uint8_t*
    - sldns_buffer*
    - int
    - struct regional*
    - struct compress_tree_node**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 343
    functionDepth: 6
    functionLinenumber: 343
    functionLinenumberEnd: 364
    functionName: compress_any_dname
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - write_compressed_dname
    - compress_tree_store
    - dname_buffer_write
    - compress_tree_lookup
    linkageType: ''
    returnType: int
    signature: "int compress_any_dname(uint8_t* dname, sldns_buffer* pkt, int labs,\n\tstruct
      regional* region, struct compress_tree_node** tree,\n\tsize_t* compress_count)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/util/data/msgencode.c:370,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/data/msgencode.c:371,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/data/msgencode.c:372,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/data/msgencode.c:373,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 1
    argNames:
    - key
    argTypes:
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 375
      start: 367
    functionDepth: 1
    functionLinenumber: 367
    functionLinenumberEnd: 375
    functionName: type_rdata_compressible
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 0
    functionsReached:
    - sldns_rr_descript
    - ntohs
    linkageType: ''
    returnType: sldns_rr_descriptor
    signature: 'sldns_rr_descriptor *

      type_rdata_compressible(struct ub_packed_rrset_key* key)'
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgencode.c:384,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/data/msgencode.c:387,1
    - Dst: dname_count_size_labels
      Src: /src/unbound/util/data/msgencode.c:394,1
    - Dst: compress_any_dname
      Src: /src/unbound/util/data/msgencode.c:395,1
    - Dst: get_rdf_size
      Src: /src/unbound/util/data/msgencode.c:407,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgencode.c:411,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:413,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgencode.c:421,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:423,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/util/data/msgencode.c:427,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgencode.c:427,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 37
    argCount: 7
    argNames:
    - pkt
    - rdata
    - todolen
    - region
    - tree
    - desc
    - compress_count
    argTypes:
    - sldns_buffer*
    - uint8_t*
    - size_t
    - struct regional*
    - struct compress_tree_node**
    - sldns_rr_descriptor*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 429
      start: 378
    functionDepth: 7
    functionLinenumber: 378
    functionLinenumberEnd: 429
    functionName: compress_rdata
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_remaining
    - sldns_buffer_write
    - get_rdf_size
    - sldns_buffer_skip
    - dname_count_size_labels
    - compress_any_dname
    - sldns_buffer_write_u16_at
    linkageType: ''
    returnType: int
    signature: "int compress_rdata(sldns_buffer* pkt, uint8_t* rdata, size_t todolen,\n\tstruct
      regional* region, struct compress_tree_node** tree,\n\tconst sldns_rr_descriptor*
      desc, size_t* compress_count)"
  - BBCount: 13
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - s
    - rrtype
    - qtype
    - dnssec
    argTypes:
    - sldns_pkt_section
    - uint16_t
    - uint16_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 432
    functionDepth: 0
    functionLinenumber: 432
    functionLinenumberEnd: 457
    functionName: rrset_belongs_in_reply
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: "int rrset_belongs_in_reply(sldns_pkt_section s, uint16_t rrtype, uint16_t
      qtype, \n\tint dnssec)"
  - BBCount: 21
    BranchProfiles: []
    Callsites:
    - Dst: rrset_belongs_in_reply
      Src: /src/unbound/util/data/msgencode.c:475,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgencode.c:475,1
    - Dst: dname_count_labels
      Src: /src/unbound/util/data/msgencode.c:478,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgencode.c:479,1
    - Dst: type_rdata_compressible
      Src: /src/unbound/util/data/msgencode.c:489,1
    - Dst: compress_owner
      Src: /src/unbound/util/data/msgencode.c:493,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:497,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:498,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/util/data/msgencode.c:500,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/util/data/msgencode.c:502,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/util/data/msgencode.c:503,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/util/data/msgencode.c:504,1
    - Dst: EXPIRED_REPLY_TTL_CALC
      Src: /src/unbound/util/data/msgencode.c:505,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/util/data/msgencode.c:508,1
    - Dst: compress_rdata
      Src: /src/unbound/util/data/msgencode.c:512,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgencode.c:517,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:519,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgencode.c:529,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:532,1
    - Dst: compress_any_dname
      Src: /src/unbound/util/data/msgencode.c:534,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgencode.c:538,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:542,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:543,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/util/data/msgencode.c:545,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/util/data/msgencode.c:547,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/util/data/msgencode.c:548,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/util/data/msgencode.c:549,1
    - Dst: EXPIRED_REPLY_TTL_CALC
      Src: /src/unbound/util/data/msgencode.c:550,1
    - Dst: sldns_buffer_write_u32
      Src: /src/unbound/util/data/msgencode.c:553,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:558,1
    CyclomaticComplexity: 25
    EdgeCount: 25
    ICount: 69
    argCount: 13
    argNames:
    - key
    - pkt
    - num_rrs
    - timenow
    - region
    - do_data
    - do_sig
    - tree
    - s
    - qtype
    - dnssec
    - rr_offset
    - compress_count
    argTypes:
    - struct ub_packed_rrset_key*
    - sldns_buffer*
    - uint16_t*
    - time_t
    - struct regional*
    - int
    - int
    - struct compress_tree_node**
    - sldns_pkt_section
    - uint16_t
    - int
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 569
      start: 460
    functionDepth: 8
    functionLinenumber: 460
    functionLinenumberEnd: 569
    functionName: packed_rrset_encode
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_remaining
    - type_rdata_compressible
    - sldns_buffer_write
    - TTL_IS_EXPIRED
    - compress_any_dname
    - sldns_buffer_write_u16
    - rrset_belongs_in_reply
    - sldns_buffer_write_u32
    - EXPIRED_REPLY_TTL_CALC
    - compress_rdata
    - dname_count_labels
    - compress_owner
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int packed_rrset_encode(struct ub_packed_rrset_key* key, sldns_buffer*
      pkt, \n\tuint16_t* num_rrs, time_t timenow, struct regional* region,\n\tint
      do_data, int do_sig, struct compress_tree_node** tree,\n\tsldns_pkt_section
      s, uint16_t qtype, int dnssec, size_t rr_offset,\n\tsize_t* compress_count)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgencode.c:590,1
    - Dst: packed_rrset_encode
      Src: /src/unbound/util/data/msgencode.c:591,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/msgencode.c:597,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgencode.c:603,1
    - Dst: packed_rrset_encode
      Src: /src/unbound/util/data/msgencode.c:604,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/msgencode.c:608,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgencode.c:614,1
    - Dst: packed_rrset_encode
      Src: /src/unbound/util/data/msgencode.c:615,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/msgencode.c:619,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 13
    argNames:
    - rep
    - num_rrsets
    - num_rrs
    - pkt
    - rrsets_before
    - timenow
    - region
    - tree
    - s
    - qtype
    - dnssec
    - rr_offset
    - compress_count
    argTypes:
    - struct reply_info*
    - size_t
    - uint16_t*
    - sldns_buffer*
    - size_t
    - time_t
    - struct regional*
    - struct compress_tree_node**
    - sldns_pkt_section
    - uint16_t
    - int
    - size_t
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 625
      start: 572
    functionDepth: 9
    functionLinenumber: 572
    functionLinenumberEnd: 625
    functionName: insert_section
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_set_position
    - packed_rrset_encode
    linkageType: ''
    returnType: int
    signature: "int insert_section(struct reply_info* rep, size_t num_rrsets, uint16_t*
      num_rrs,\n\tsldns_buffer* pkt, size_t rrsets_before, time_t timenow, \n\tstruct
      regional* region, struct compress_tree_node** tree,\n\tsldns_pkt_section s,
      uint16_t qtype, int dnssec, size_t rr_offset,\n\tsize_t* compress_count)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgencode.c:636,1
    - Dst: compress_tree_store
      Src: /src/unbound/util/data/msgencode.c:640,1
    - Dst: dname_count_labels
      Src: /src/unbound/util/data/msgencode.c:640,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgencode.c:641,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/data/msgencode.c:643,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/data/msgencode.c:644,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:645,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:646,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:647,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 4
    argNames:
    - qinfo
    - tree
    - buffer
    - region
    argTypes:
    - struct query_info*
    - struct compress_tree_node**
    - sldns_buffer*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 628
    functionDepth: 5
    functionLinenumber: 628
    functionLinenumberEnd: 649
    functionName: insert_query
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_position
    - sldns_buffer_write
    - sldns_buffer_skip
    - compress_tree_store
    - sldns_buffer_write_u16
    - sldns_buffer_current
    - dname_count_labels
    linkageType: ''
    returnType: int
    signature: "int insert_query(struct query_info* qinfo, struct compress_tree_node**
      tree, \n\tsldns_buffer* buffer, struct regional* region)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/util/data/msgencode.c:654,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgencode.c:658,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgencode.c:667,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgencode.c:669,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - rep
    - qtype
    argTypes:
    - struct reply_info*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 651
    functionDepth: 1
    functionLinenumber: 651
    functionLinenumberEnd: 677
    functionName: positive_answer
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 1
    functionsReached:
    - FLAGS_GET_RCODE
    - ntohs
    linkageType: ''
    returnType: int
    signature: int positive_answer(struct reply_info* rep, uint16_t qtype)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/util/data/msgencode.c:683,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/util/data/msgencode.c:685,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/util/data/msgencode.c:688,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/util/data/msgencode.c:689,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgencode.c:692,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgencode.c:694,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 16
    argCount: 1
    argNames:
    - rep
    argTypes:
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 699
      start: 679
    functionDepth: 1
    functionLinenumber: 679
    functionLinenumberEnd: 699
    functionName: negative_answer
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 0
    functionsReached:
    - FLAGS_GET_RCODE
    - ntohs
    linkageType: ''
    returnType: int
    signature: int negative_answer(struct reply_info* rep)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/data/msgencode.c:712,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/msgencode.c:713,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/util/data/msgencode.c:714,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgencode.c:715,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:718,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:719,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:720,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:722,1
    - Dst: insert_query
      Src: /src/unbound/util/data/msgencode.c:726,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/util/data/msgencode.c:730,1
    - Dst: LDNS_TC_SET
      Src: /src/unbound/util/data/msgencode.c:731,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/data/msgencode.c:731,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/data/msgencode.c:732,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgencode.c:740,1
    - Dst: time
      Src: /src/unbound/util/data/msgencode.c:740,1
    - Dst: memset
      Src: /src/unbound/util/data/msgencode.c:750,1
    - Dst: insert_section
      Src: /src/unbound/util/data/msgencode.c:755,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/util/data/msgencode.c:760,1
    - Dst: LDNS_TC_SET
      Src: /src/unbound/util/data/msgencode.c:761,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/data/msgencode.c:761,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/data/msgencode.c:762,1
    - Dst: insert_section
      Src: /src/unbound/util/data/msgencode.c:770,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/util/data/msgencode.c:775,1
    - Dst: LDNS_TC_SET
      Src: /src/unbound/util/data/msgencode.c:776,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/data/msgencode.c:776,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/data/msgencode.c:777,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/util/data/msgencode.c:782,1
    - Dst: positive_answer
      Src: /src/unbound/util/data/msgencode.c:785,1
    - Dst: insert_section
      Src: /src/unbound/util/data/msgencode.c:787,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/util/data/msgencode.c:793,1
    - Dst: LDNS_TC_SET
      Src: /src/unbound/util/data/msgencode.c:794,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/data/msgencode.c:794,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/data/msgencode.c:795,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/util/data/msgencode.c:800,1
    - Dst: negative_answer
      Src: /src/unbound/util/data/msgencode.c:802,1
    - Dst: insert_section
      Src: /src/unbound/util/data/msgencode.c:804,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/util/data/msgencode.c:810,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/data/msgencode.c:811,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/util/data/msgencode.c:816,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/data/msgencode.c:819,1
    CyclomaticComplexity: 19
    EdgeCount: 19
    ICount: 73
    argCount: 10
    argNames:
    - qinfo
    - rep
    - id
    - flags
    - buffer
    - timenow
    - region
    - udpsize
    - dnssec
    - minimise
    argTypes:
    - struct query_info*
    - struct reply_info*
    - uint16_t
    - uint16_t
    - sldns_buffer*
    - time_t
    - struct regional*
    - uint16_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 821
      start: 701
    functionDepth: 10
    functionLinenumber: 701
    functionLinenumberEnd: 821
    functionName: reply_info_encode
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 2
    functionsReached:
    - sldns_buffer_remaining
    - insert_section
    - sldns_buffer_write
    - LDNS_TC_SET
    - sldns_buffer_flip
    - sldns_buffer_limit
    - sldns_buffer_clear
    - sldns_buffer_write_u16
    - time
    - positive_answer
    - negative_answer
    - sldns_buffer_set_limit
    - sldns_buffer_begin
    - memset
    - insert_query
    - sldns_buffer_write_u16_at
    - ntohs
    linkageType: ''
    returnType: int
    signature: "int reply_info_encode(struct query_info* qinfo, struct reply_info*
      rep,\n\tuint16_t id, uint16_t flags, sldns_buffer* buffer, time_t timenow,\n\tstruct
      regional* region, uint16_t udpsize, int dnssec, int minimise)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 1
    argNames:
    - edns
    argTypes:
    - struct edns_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 838
      start: 823
    functionDepth: 0
    functionLinenumber: 823
    functionLinenumberEnd: 838
    functionName: calc_edns_field_size
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 8
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t calc_edns_field_size(struct edns_data* edns)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 2
    argNames:
    - edns
    - code
    argTypes:
    - struct edns_data*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 856
      start: 840
    functionDepth: 0
    functionLinenumber: 840
    functionLinenumberEnd: 856
    functionName: calc_edns_option_size
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t calc_edns_option_size(struct edns_data* edns, uint16_t code)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/util/data/msgencode.c:870,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/util/data/msgencode.c:880,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 25
    argCount: 2
    argNames:
    - edns
    - txt_size
    argTypes:
    - struct edns_data*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 887
      start: 858
    functionDepth: 1
    functionLinenumber: 858
    functionLinenumberEnd: 887
    functionName: calc_ede_option_size
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 2
    functionsReached:
    - sldns_read_uint16
    linkageType: ''
    returnType: uint16_t
    signature: uint16_t calc_ede_option_size(struct edns_data* edns, size_t* txt_size)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/util/data/msgencode.c:900,1
    - Dst: sldns_read_uint16
      Src: /src/unbound/util/data/msgencode.c:907,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 28
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct edns_option**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 930
      start: 892
    functionDepth: 1
    functionLinenumber: 892
    functionLinenumberEnd: 930
    functionName: ede_trim_text
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 0
    functionsReached:
    - sldns_read_uint16
    linkageType: ''
    returnType: void
    signature: void ede_trim_text(struct edns_option** list)
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/util/data/msgencode.c:941,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/util/data/msgencode.c:942,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/msgencode.c:943,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/data/msgencode.c:944,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/msgencode.c:945,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/util/data/msgencode.c:947,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:948,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:949,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/util/data/msgencode.c:950,1
    - Dst: sldns_buffer_write_u8
      Src: /src/unbound/util/data/msgencode.c:951,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:952,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgencode.c:953,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:954,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgencode.c:961,1
    - Dst: sldns_buffer_available
      Src: /src/unbound/util/data/msgencode.c:963,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:965,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:966,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:968,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgencode.c:975,1
    - Dst: sldns_buffer_available
      Src: /src/unbound/util/data/msgencode.c:977,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:979,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:980,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:982,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgencode.c:985,1
    - Dst: sldns_buffer_available
      Src: /src/unbound/util/data/msgencode.c:986,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgencode.c:987,1
    - Dst: log_assert
      Src: /src/unbound/util/data/msgencode.c:999,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:1002,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:1003,1
    - Dst: memset
      Src: /src/unbound/util/data/msgencode.c:1005,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/data/msgencode.c:1005,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/data/msgencode.c:1006,1
    - Dst: sldns_buffer_write_u16_at
      Src: /src/unbound/util/data/msgencode.c:1009,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgencode.c:1010,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/data/msgencode.c:1011,1
    CyclomaticComplexity: 22
    EdgeCount: 22
    ICount: 55
    argCount: 3
    argNames:
    - pkt
    - edns
    - max_msg_sz
    argTypes:
    - sldns_buffer*
    - struct edns_data*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1012
      start: 932
    functionDepth: 5
    functionLinenumber: 932
    functionLinenumberEnd: 1012
    functionName: attach_edns_record_max_msg_sz
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_position
    - sldns_buffer_available
    - sldns_buffer_write
    - sldns_buffer_skip
    - sldns_buffer_current
    - sldns_buffer_flip
    - sldns_buffer_limit
    - sldns_buffer_clear
    - sldns_buffer_write_u16
    - sldns_buffer_set_position
    - log_assert
    - memset
    - sldns_buffer_write_u8
    - sldns_buffer_read_u16_at
    - sldns_buffer_write_u16_at
    linkageType: ''
    returnType: void
    signature: "void attach_edns_record_max_msg_sz(sldns_buffer* pkt, struct edns_data*
      edns,\n\tuint16_t max_msg_sz)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: attach_edns_record_max_msg_sz
      Src: /src/unbound/util/data/msgencode.c:1019,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 4
    argCount: 2
    argNames:
    - pkt
    - edns
    argTypes:
    - sldns_buffer*
    - struct edns_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1020
      start: 1014
    functionDepth: 6
    functionLinenumber: 1014
    functionLinenumberEnd: 1020
    functionName: attach_edns_record
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 9
    functionsReached:
    - attach_edns_record_max_msg_sz
    linkageType: ''
    returnType: void
    signature: void attach_edns_record(sldns_buffer* pkt, struct edns_data* edns)
  - BBCount: 13
    BranchProfiles: []
    Callsites:
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/util/data/msgencode.c:1045,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/util/data/msgencode.c:1046,1
    - Dst: log_assert
      Src: /src/unbound/util/data/msgencode.c:1050,1
    - Dst: calc_edns_field_size
      Src: /src/unbound/util/data/msgencode.c:1055,1
    - Dst: calc_ede_option_size
      Src: /src/unbound/util/data/msgencode.c:1056,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/data/msgencode.c:1057,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/util/data/msgencode.c:1058,1
    - Dst: reply_info_encode
      Src: /src/unbound/util/data/msgencode.c:1070,1
    - Dst: log_err
      Src: /src/unbound/util/data/msgencode.c:1072,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/msgencode.c:1076,1
    - Dst: attach_edns_record_max_msg_sz
      Src: /src/unbound/util/data/msgencode.c:1077,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/msgencode.c:1078,1
    - Dst: ede_trim_text
      Src: /src/unbound/util/data/msgencode.c:1079,1
    - Dst: ede_trim_text
      Src: /src/unbound/util/data/msgencode.c:1080,1
    - Dst: attach_edns_record_max_msg_sz
      Src: /src/unbound/util/data/msgencode.c:1081,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/msgencode.c:1082,1
    - Dst: edns_opt_list_remove
      Src: /src/unbound/util/data/msgencode.c:1083,1
    - Dst: edns_opt_list_remove
      Src: /src/unbound/util/data/msgencode.c:1084,1
    - Dst: attach_edns_record_max_msg_sz
      Src: /src/unbound/util/data/msgencode.c:1085,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 46
    argCount: 12
    argNames:
    - qinf
    - rep
    - id
    - qflags
    - pkt
    - timenow
    - cached
    - region
    - udpsize
    - edns
    - dnssec
    - secure
    argTypes:
    - struct query_info*
    - struct reply_info*
    - uint16_t
    - uint16_t
    - sldns_buffer*
    - time_t
    - int
    - struct regional*
    - uint16_t
    - struct edns_data*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1022
    functionDepth: 11
    functionLinenumber: 1022
    functionLinenumberEnd: 1089
    functionName: reply_info_answer_encode
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 9
    functionsReached:
    - sldns_buffer_capacity
    - log_err
    - FLAGS_GET_RCODE
    - edns_opt_list_remove
    - calc_ede_option_size
    - sldns_buffer_limit
    - attach_edns_record_max_msg_sz
    - log_assert
    - ede_trim_text
    - calc_edns_field_size
    - reply_info_encode
    linkageType: ''
    returnType: int
    signature: "int reply_info_answer_encode(struct query_info* qinf, struct reply_info*
      rep,\n\tuint16_t id, uint16_t qflags, sldns_buffer* pkt, time_t timenow,\n\tint
      cached, struct regional* region, uint16_t udpsize,\n\tstruct edns_data* edns,
      int dnssec, int secure)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/data/msgencode.c:1099,1
    - Dst: log_assert
      Src: /src/unbound/util/data/msgencode.c:1100,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgencode.c:1100,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/data/msgencode.c:1101,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:1102,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:1103,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:1104,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:1105,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:1106,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:1107,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/data/msgencode.c:1108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 2
    argNames:
    - pkt
    - qinfo
    argTypes:
    - sldns_buffer*
    - struct query_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1109
      start: 1091
    functionDepth: 5
    functionLinenumber: 1091
    functionLinenumberEnd: 1109
    functionName: qinfo_query_encode
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 6
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_write
    - sldns_buffer_skip
    - sldns_buffer_flip
    - sldns_buffer_clear
    - sldns_buffer_write_u16
    - log_assert
    linkageType: ''
    returnType: void
    signature: void qinfo_query_encode(sldns_buffer* pkt, struct query_info* qinfo)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_clear
      Src: /src/unbound/util/data/msgencode.c:1118,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:1119,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:1123,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:1126,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:1128,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:1129,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:1130,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/data/msgencode.c:1139,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/data/msgencode.c:1140,1
    - Dst: sldns_buffer_write
      Src: /src/unbound/util/data/msgencode.c:1141,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:1142,1
    - Dst: sldns_buffer_write_u16
      Src: /src/unbound/util/data/msgencode.c:1143,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/util/data/msgencode.c:1145,1
    - Dst: calc_edns_field_size
      Src: /src/unbound/util/data/msgencode.c:1157,1
    - Dst: calc_ede_option_size
      Src: /src/unbound/util/data/msgencode.c:1158,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/msgencode.c:1159,1
    - Dst: attach_edns_record_max_msg_sz
      Src: /src/unbound/util/data/msgencode.c:1160,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/msgencode.c:1161,1
    - Dst: ede_trim_text
      Src: /src/unbound/util/data/msgencode.c:1162,1
    - Dst: ede_trim_text
      Src: /src/unbound/util/data/msgencode.c:1163,1
    - Dst: attach_edns_record_max_msg_sz
      Src: /src/unbound/util/data/msgencode.c:1164,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/msgencode.c:1165,1
    - Dst: edns_opt_list_remove
      Src: /src/unbound/util/data/msgencode.c:1166,1
    - Dst: edns_opt_list_remove
      Src: /src/unbound/util/data/msgencode.c:1167,1
    - Dst: attach_edns_record_max_msg_sz
      Src: /src/unbound/util/data/msgencode.c:1168,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 43
    argCount: 7
    argNames:
    - buf
    - rcode
    - qinfo
    - qid
    - qflags
    - xflags
    - edns
    argTypes:
    - sldns_buffer*
    - uint16_t
    - struct query_info*
    - uint16_t
    - uint16_t
    - uint16_t
    - struct edns_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1171
      start: 1111
    functionDepth: 6
    functionLinenumber: 1111
    functionLinenumberEnd: 1171
    functionName: extended_error_encode
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 1
    functionsReached:
    - edns_opt_list_remove
    - sldns_buffer_write
    - sldns_buffer_skip
    - sldns_buffer_flip
    - calc_ede_option_size
    - sldns_buffer_clear
    - sldns_buffer_write_u16
    - sldns_buffer_limit
    - attach_edns_record_max_msg_sz
    - ede_trim_text
    - sldns_buffer_current
    - calc_edns_field_size
    linkageType: ''
    returnType: void
    signature: "void extended_error_encode(sldns_buffer* buf, uint16_t rcode,\n\tstruct
      query_info* qinfo, uint16_t qid, uint16_t qflags,\n\tuint16_t xflags, struct
      edns_data* edns)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: extended_error_encode
      Src: /src/unbound/util/data/msgencode.c:1177,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - buf
    - r
    - qinfo
    - qid
    - qflags
    - edns
    argTypes:
    - sldns_buffer*
    - int
    - struct query_info*
    - uint16_t
    - uint16_t
    - struct edns_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1173
    functionDepth: 7
    functionLinenumber: 1173
    functionLinenumberEnd: 1179
    functionName: error_encode
    functionSourceFile: /src/unbound/util/data/msgencode.c
    functionUses: 15
    functionsReached:
    - extended_error_encode
    linkageType: ''
    returnType: void
    signature: "void error_encode(sldns_buffer* buf, int r, struct query_info* qinfo,\n\tuint16_t
      qid, uint16_t qflags, struct edns_data* edns)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/util/data/msgreply.c:84,1
    - Dst: malloc
      Src: /src/unbound/util/data/msgreply.c:86,1
    - Dst: dname_pkt_copy
      Src: /src/unbound/util/data/msgreply.c:88,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 15
    argCount: 4
    argNames:
    - pkt
    - msg
    - qinf
    - region
    argTypes:
    - sldns_buffer*
    - struct msg_parse*
    - struct query_info*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 78
    functionDepth: 8
    functionLinenumber: 78
    functionLinenumberEnd: 95
    functionName: parse_create_qinfo
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached:
    - malloc
    - regional_alloc
    - dname_pkt_copy
    linkageType: ''
    returnType: int
    signature: "int parse_create_qinfo(sldns_buffer* pkt, struct msg_parse* msg, \n\tstruct
      query_info* qinf, struct regional* region)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/util/data/msgreply.c:110,1
    - Dst: malloc
      Src: /src/unbound/util/data/msgreply.c:111,1
    - Dst: memset
      Src: /src/unbound/util/data/msgreply.c:135,1
    - Dst: memset
      Src: /src/unbound/util/data/msgreply.c:137,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 29
    argCount: 13
    argNames:
    - region
    - flags
    - qd
    - ttl
    - prettl
    - expttl
    - norecttl
    - an
    - ns
    - ar
    - total
    - sec
    - reason_bogus
    argTypes:
    - struct regional*
    - uint16_t
    - size_t
    - time_t
    - time_t
    - time_t
    - time_t
    - size_t
    - size_t
    - size_t
    - size_t
    - enum sec_status
    - sldns_ede_code
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 139
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 139
    functionName: construct_reply_info_base
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 5
    functionsReached:
    - malloc
    - memset
    - regional_alloc
    linkageType: ''
    returnType: struct reply_info
    signature: "struct reply_info *\nconstruct_reply_info_base(struct regional* region,
      uint16_t flags, size_t qd,\n\ttime_t ttl, time_t prettl, time_t expttl, time_t
      norecttl, size_t an,\n\tsize_t ns, size_t ar, size_t total, enum sec_status
      sec,\n\tsldns_ede_code reason_bogus)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: construct_reply_info_base
      Src: /src/unbound/util/data/msgreply.c:146,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 3
    argNames:
    - msg
    - rep
    - region
    argTypes:
    - struct msg_parse*
    - struct reply_info**
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 152
      start: 142
    functionDepth: 2
    functionLinenumber: 142
    functionLinenumberEnd: 152
    functionName: parse_create_repinfo
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached:
    - construct_reply_info_base
    linkageType: ''
    returnType: int
    signature: "int parse_create_repinfo(struct msg_parse* msg, struct reply_info**
      rep,\n\tstruct regional* region)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/util/data/msgreply.c:162,1
    - Dst: memset
      Src: /src/unbound/util/data/msgreply.c:165,1
    - Dst: alloc_special_obtain
      Src: /src/unbound/util/data/msgreply.c:170,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 3
    argNames:
    - rep
    - alloc
    - region
    argTypes:
    - struct reply_info*
    - struct alloc_cache*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 154
    functionDepth: 9
    functionLinenumber: 154
    functionLinenumberEnd: 176
    functionName: reply_info_alloc_rrset_keys
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached:
    - memset
    - regional_alloc
    - alloc_special_obtain
    linkageType: ''
    returnType: int
    signature: "int reply_info_alloc_rrset_keys(struct reply_info* rep, struct alloc_cache*
      alloc,\n\tstruct regional* region)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/msgreply.c:181,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/util/data/msgreply.c:181,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/util/data/msgreply.c:183,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/util/data/msgreply.c:185,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/util/data/msgreply.c:186,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/util/data/msgreply.c:187,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 2
    argNames:
    - rep
    - timenow
    argTypes:
    - struct reply_info*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 178
    functionDepth: 1
    functionLinenumber: 178
    functionLinenumberEnd: 189
    functionName: reply_info_can_answer_expired
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 2
    functionsReached:
    - FLAGS_GET_RCODE
    - TTL_IS_EXPIRED
    - log_assert
    linkageType: ''
    returnType: int
    signature: int reply_info_can_answer_expired(struct reply_info* rep, time_t timenow)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/msgreply.c:194,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/util/data/msgreply.c:194,1
    - Dst: TTL_IS_EXPIRED
      Src: /src/unbound/util/data/msgreply.c:196,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/util/data/msgreply.c:199,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/util/data/msgreply.c:200,1
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/util/data/msgreply.c:201,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 7
    argCount: 2
    argNames:
    - rep
    - timenow
    argTypes:
    - struct reply_info*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 203
      start: 191
    functionDepth: 1
    functionLinenumber: 191
    functionLinenumberEnd: 203
    functionName: reply_info_could_use_expired
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 1
    functionsReached:
    - FLAGS_GET_RCODE
    - TTL_IS_EXPIRED
    - log_assert
    linkageType: ''
    returnType: int
    signature: int reply_info_could_use_expired(struct reply_info* rep, time_t timenow)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: construct_reply_info_base
      Src: /src/unbound/util/data/msgreply.c:217,1
    - Dst: reply_info_alloc_rrset_keys
      Src: /src/unbound/util/data/msgreply.c:224,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - rep
    - region
    - an_numrrsets
    - copy_rrsets
    argTypes:
    - struct reply_info*
    - struct regional*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 230
      start: 205
    functionDepth: 10
    functionLinenumber: 205
    functionLinenumberEnd: 230
    functionName: make_new_reply_info
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 3
    functionsReached:
    - construct_reply_info_base
    - reply_info_alloc_rrset_keys
    linkageType: ''
    returnType: struct reply_info
    signature: "struct reply_info *\nmake_new_reply_info(const struct reply_info*
      rep, struct regional* region,\n\tsize_t an_numrrsets, size_t copy_rrsets)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint16
      Src: /src/unbound/util/data/msgreply.c:236,1
    - Dst: sldns_read_uint32
      Src: /src/unbound/util/data/msgreply.c:241,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 1
    argNames:
    - rr
    argTypes:
    - struct rr_parse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 242
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 242
    functionName: soa_find_minttl
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached:
    - sldns_read_uint16
    - sldns_read_uint32
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t soa_find_minttl(struct rr_parse* rr)
  - BBCount: 20
    BranchProfiles: []
    Callsites:
    - Dst: sldns_read_uint32
      Src: /src/unbound/util/data/msgreply.c:254,1
    - Dst: soa_find_minttl
      Src: /src/unbound/util/data/msgreply.c:261,1
    - Dst: soa_find_minttl
      Src: /src/unbound/util/data/msgreply.c:261,1
    - Dst: memmove
      Src: /src/unbound/util/data/msgreply.c:288,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/msgreply.c:292,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/data/msgreply.c:293,1
    - Dst: htons
      Src: /src/unbound/util/data/msgreply.c:296,1
    - Dst: memmove
      Src: /src/unbound/util/data/msgreply.c:297,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgreply.c:300,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgreply.c:301,1
    - Dst: sldns_rr_descript
      Src: /src/unbound/util/data/msgreply.c:303,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgreply.c:313,1
    - Dst: dname_pkt_copy
      Src: /src/unbound/util/data/msgreply.c:314,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/data/msgreply.c:315,1
    - Dst: pkt_dname_len
      Src: /src/unbound/util/data/msgreply.c:316,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgreply.c:317,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/data/msgreply.c:322,1
    - Dst: get_rdf_size
      Src: /src/unbound/util/data/msgreply.c:325,1
    - Dst: log_assert
      Src: /src/unbound/util/data/msgreply.c:329,1
    - Dst: memmove
      Src: /src/unbound/util/data/msgreply.c:330,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/data/msgreply.c:330,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/data/msgreply.c:332,1
    - Dst: memmove
      Src: /src/unbound/util/data/msgreply.c:340,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/data/msgreply.c:340,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 70
    argCount: 7
    argNames:
    - pkt
    - data
    - to
    - rr
    - rr_ttl
    - type
    - section
    argTypes:
    - sldns_buffer*
    - struct packed_rrset_data*
    - uint8_t*
    - struct rr_parse*
    - time_t*
    - uint16_t
    - sldns_pkt_section
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 245
    functionDepth: 8
    functionLinenumber: 245
    functionLinenumberEnd: 343
    functionName: rdata_copy
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_remaining
    - sldns_buffer_position
    - dname_pkt_copy
    - sldns_rr_descript
    - memmove
    - get_rdf_size
    - sldns_buffer_skip
    - sldns_buffer_read_u16
    - htons
    - sldns_buffer_set_position
    - soa_find_minttl
    - log_assert
    - sldns_buffer_begin
    - sldns_buffer_current
    - sldns_read_uint32
    - pkt_dname_len
    linkageType: ''
    returnType: int
    signature: "int rdata_copy(sldns_buffer* pkt, struct packed_rrset_data* data,
      uint8_t* to, \n\tstruct rr_parse* rr, time_t* rr_ttl, uint16_t type,\n\tsldns_pkt_section
      section)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rdata_copy
      Src: /src/unbound/util/data/msgreply.c:369,1
    - Dst: rdata_copy
      Src: /src/unbound/util/data/msgreply.c:380,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 28
    argCount: 3
    argNames:
    - pkt
    - pset
    - data
    argTypes:
    - sldns_buffer*
    - struct rrset_parse*
    - struct packed_rrset_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 346
    functionDepth: 9
    functionLinenumber: 346
    functionLinenumberEnd: 386
    functionName: parse_rr_copy
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached:
    - rdata_copy
    linkageType: ''
    returnType: int
    signature: "int parse_rr_copy(sldns_buffer* pkt, struct rrset_parse* pset, \n\tstruct
      packed_rrset_data* data)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_zero
      Src: /src/unbound/util/data/msgreply.c:403,1
    - Dst: calloc
      Src: /src/unbound/util/data/msgreply.c:404,1
    - Dst: parse_rr_copy
      Src: /src/unbound/util/data/msgreply.c:408,1
    - Dst: free
      Src: /src/unbound/util/data/msgreply.c:410,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 4
    argNames:
    - pkt
    - pset
    - data
    - region
    argTypes:
    - sldns_buffer*
    - struct rrset_parse*
    - struct packed_rrset_data**
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 416
      start: 389
    functionDepth: 10
    functionLinenumber: 389
    functionLinenumberEnd: 416
    functionName: parse_create_rrset
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - parse_rr_copy
    - calloc
    - free
    linkageType: ''
    returnType: int
    signature: "int parse_create_rrset(sldns_buffer* pkt, struct rrset_parse* pset,\n\tstruct
      packed_rrset_data** data, struct regional* region)"
  - BBCount: 10
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 27
    argCount: 2
    argNames:
    - msg
    - rrset
    argTypes:
    - struct msg_parse*
    - struct rrset_parse*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 454
      start: 419
    functionDepth: 0
    functionLinenumber: 419
    functionLinenumberEnd: 454
    functionName: get_rrset_trust
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: enum rrset_trust
    signature: enum rrset_trust get_rrset_trust(struct msg_parse* msg, struct rrset_parse*
      rrset)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/util/data/msgreply.c:465,1
    - Dst: malloc
      Src: /src/unbound/util/data/msgreply.c:468,1
    - Dst: dname_pkt_copy
      Src: /src/unbound/util/data/msgreply.c:472,1
    - Dst: htons
      Src: /src/unbound/util/data/msgreply.c:474,1
    - Dst: parse_create_rrset
      Src: /src/unbound/util/data/msgreply.c:477,1
    - Dst: free
      Src: /src/unbound/util/data/msgreply.c:479,1
    - Dst: rrset_key_hash
      Src: /src/unbound/util/data/msgreply.c:488,1
    - Dst: get_rrset_trust
      Src: /src/unbound/util/data/msgreply.c:491,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 5
    argNames:
    - pkt
    - msg
    - pset
    - region
    - pk
    argTypes:
    - sldns_buffer*
    - struct msg_parse*
    - struct rrset_parse*
    - struct regional*
    - struct ub_packed_rrset_key*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 493
      start: 456
    functionDepth: 11
    functionLinenumber: 456
    functionLinenumberEnd: 493
    functionName: parse_copy_decompress_rrset
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 1
    functionsReached:
    - dname_pkt_copy
    - rrset_key_hash
    - regional_alloc
    - get_rrset_trust
    - malloc
    - htons
    - parse_create_rrset
    - free
    linkageType: ''
    returnType: int
    signature: "int parse_copy_decompress_rrset(sldns_buffer* pkt, struct msg_parse*
      msg,\n\tstruct rrset_parse *pset, struct regional* region, \n\tstruct ub_packed_rrset_key*
      pk)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/msgreply.c:510,1
    - Dst: parse_copy_decompress_rrset
      Src: /src/unbound/util/data/msgreply.c:517,1
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/util/data/msgreply.c:526,1
    - Dst: log_assert
      Src: /src/unbound/util/data/msgreply.c:529,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 4
    argNames:
    - pkt
    - msg
    - rep
    - region
    argTypes:
    - sldns_buffer*
    - struct msg_parse*
    - struct reply_info*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 531
      start: 503
    functionDepth: 12
    functionLinenumber: 503
    functionLinenumberEnd: 531
    functionName: parse_copy_decompress
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached:
    - parse_copy_decompress_rrset
    - log_assert
    - PREFETCH_TTL_CALC
    linkageType: ''
    returnType: int
    signature: "int parse_copy_decompress(sldns_buffer* pkt, struct msg_parse* msg,\n\tstruct
      reply_info* rep, struct regional* region)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/msgreply.c:538,1
    - Dst: parse_create_qinfo
      Src: /src/unbound/util/data/msgreply.c:539,1
    - Dst: parse_create_repinfo
      Src: /src/unbound/util/data/msgreply.c:541,1
    - Dst: reply_info_alloc_rrset_keys
      Src: /src/unbound/util/data/msgreply.c:543,1
    - Dst: reply_info_parsedelete
      Src: /src/unbound/util/data/msgreply.c:544,1
    - Dst: parse_copy_decompress
      Src: /src/unbound/util/data/msgreply.c:547,1
    - Dst: reply_info_parsedelete
      Src: /src/unbound/util/data/msgreply.c:548,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 6
    argNames:
    - pkt
    - msg
    - alloc
    - qinf
    - rep
    - region
    argTypes:
    - sldns_buffer*
    - struct msg_parse*
    - struct alloc_cache*
    - struct query_info*
    - struct reply_info**
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 552
      start: 533
    functionDepth: 13
    functionLinenumber: 533
    functionLinenumberEnd: 552
    functionName: parse_create_msg
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 2
    functionsReached:
    - reply_info_parsedelete
    - parse_create_repinfo
    - parse_create_qinfo
    - parse_copy_decompress
    - log_assert
    - reply_info_alloc_rrset_keys
    linkageType: ''
    returnType: int
    signature: "int parse_create_msg(sldns_buffer* pkt, struct msg_parse* msg,\n\tstruct
      alloc_cache* alloc, struct query_info* qinf, \n\tstruct reply_info** rep, struct
      regional* region)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/util/data/msgreply.c:565,1
    - Dst: memset
      Src: /src/unbound/util/data/msgreply.c:568,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/msgreply.c:570,1
    - Dst: parse_packet
      Src: /src/unbound/util/data/msgreply.c:571,1
    - Dst: parse_extract_edns_from_response_msg
      Src: /src/unbound/util/data/msgreply.c:574,1
    - Dst: parse_create_msg
      Src: /src/unbound/util/data/msgreply.c:579,1
    - Dst: query_info_clear
      Src: /src/unbound/util/data/msgreply.c:580,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 6
    argNames:
    - pkt
    - alloc
    - qinf
    - rep
    - region
    - edns
    argTypes:
    - sldns_buffer*
    - struct alloc_cache*
    - struct query_info*
    - struct reply_info**
    - struct regional*
    - struct edns_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 585
      start: 554
    functionDepth: 14
    functionLinenumber: 554
    functionLinenumberEnd: 585
    functionName: reply_info_parse
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 3
    functionsReached:
    - regional_alloc
    - parse_extract_edns_from_response_msg
    - parse_create_msg
    - sldns_buffer_set_position
    - parse_packet
    - query_info_clear
    - memset
    linkageType: ''
    returnType: int
    signature: "int reply_info_parse(sldns_buffer* pkt, struct alloc_cache* alloc,\n
      \       struct query_info* qinf, struct reply_info** rep, \n\tstruct regional*
      region, struct edns_data* edns)"
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 596
      start: 588
    functionDepth: 0
    functionLinenumber: 588
    functionLinenumberEnd: 596
    functionName: reply_info_sortref_cmp
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int reply_info_sortref_cmp(const void* a, const void* b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: qsort
      Src: /src/unbound/util/data/msgreply.c:601,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - rep
    argTypes:
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 603
      start: 598
    functionDepth: 0
    functionLinenumber: 598
    functionLinenumberEnd: 603
    functionName: reply_info_sortref
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 2
    functionsReached:
    - qsort
    linkageType: ''
    returnType: void
    signature: void reply_info_sortref(struct reply_info* rep)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/msgreply.c:614,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 2
    argNames:
    - rep
    - timenow
    argTypes:
    - struct reply_info*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 626
      start: 605
    functionDepth: 1
    functionLinenumber: 605
    functionLinenumberEnd: 626
    functionName: reply_info_set_ttls
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 2
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void reply_info_set_ttls(struct reply_info* rep, time_t timenow)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: PREFETCH_TTL_CALC
      Src: /src/unbound/util/data/msgreply.c:633,1
    - Dst: log_assert
      Src: /src/unbound/util/data/msgreply.c:637,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - rep
    - ttl
    - ttl_add
    argTypes:
    - struct reply_info*
    - time_t
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 649
      start: 628
    functionDepth: 1
    functionLinenumber: 628
    functionLinenumberEnd: 649
    functionName: reply_info_absolute_ttls
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 1
    functionsReached:
    - log_assert
    - PREFETCH_TTL_CALC
    linkageType: ''
    returnType: void
    signature: void reply_info_absolute_ttls(struct reply_info* rep, time_t ttl, time_t
      ttl_add)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ub_packed_rrset_parsedelete
      Src: /src/unbound/util/data/msgreply.c:659,1
    - Dst: free
      Src: /src/unbound/util/data/msgreply.c:662,1
    - Dst: free
      Src: /src/unbound/util/data/msgreply.c:665,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - rep
    - alloc
    argTypes:
    - struct reply_info*
    - struct alloc_cache*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 666
      start: 651
    functionDepth: 4
    functionLinenumber: 651
    functionLinenumberEnd: 666
    functionName: reply_info_parsedelete
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 9
    functionsReached:
    - free
    - ub_packed_rrset_parsedelete
    linkageType: ''
    returnType: void
    signature: void reply_info_parsedelete(struct reply_info* rep, struct alloc_cache*
      alloc)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/data/msgreply.c:671,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/msgreply.c:673,1
    - Dst: LDNS_OPCODE_WIRE
      Src: /src/unbound/util/data/msgreply.c:675,1
    - Dst: LDNS_OPCODE_WIRE
      Src: /src/unbound/util/data/msgreply.c:675,1
    - Dst: LDNS_QDCOUNT
      Src: /src/unbound/util/data/msgreply.c:676,1
    - Dst: sldns_buffer_position
      Src: /src/unbound/util/data/msgreply.c:677,1
    - Dst: sldns_buffer_skip
      Src: /src/unbound/util/data/msgreply.c:679,1
    - Dst: sldns_buffer_current
      Src: /src/unbound/util/data/msgreply.c:680,1
    - Dst: query_dname_len
      Src: /src/unbound/util/data/msgreply.c:681,1
    - Dst: sldns_buffer_remaining
      Src: /src/unbound/util/data/msgreply.c:683,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgreply.c:685,1
    - Dst: sldns_buffer_read_u16
      Src: /src/unbound/util/data/msgreply.c:686,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - m
    - query
    argTypes:
    - struct query_info*
    - sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 689
      start: 668
    functionDepth: 6
    functionLinenumber: 668
    functionLinenumberEnd: 689
    functionName: query_info_parse
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 2
    functionsReached:
    - sldns_buffer_position
    - query_dname_len
    - sldns_buffer_remaining
    - sldns_buffer_skip
    - LDNS_QDCOUNT
    - sldns_buffer_limit
    - sldns_buffer_read_u16
    - sldns_buffer_begin
    - sldns_buffer_current
    - LDNS_OPCODE_WIRE
    linkageType: ''
    returnType: int
    signature: int query_info_parse(struct query_info* m, sldns_buffer* query)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - y
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 696
      start: 692
    functionDepth: 0
    functionLinenumber: 692
    functionLinenumberEnd: 696
    functionName: COMPARE_IT
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPARE_IT(x, y)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: COMPARE_IT
      Src: /src/unbound/util/data/msgreply.c:704,1
    - Dst: query_dname_compare
      Src: /src/unbound/util/data/msgreply.c:705,1
    - Dst: log_assert
      Src: /src/unbound/util/data/msgreply.c:707,1
    - Dst: COMPARE_IT
      Src: /src/unbound/util/data/msgreply.c:708,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - m1
    - m2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 711
      start: 697
    functionDepth: 2
    functionLinenumber: 697
    functionLinenumberEnd: 711
    functionName: query_info_compare
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 1
    functionsReached:
    - COMPARE_IT
    - log_assert
    - query_dname_compare
    linkageType: ''
    returnType: int
    signature: int query_info_compare(void* m1, void* m2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/data/msgreply.c:716,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - m
    argTypes:
    - struct query_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 718
      start: 713
    functionDepth: 1
    functionLinenumber: 713
    functionLinenumberEnd: 718
    functionName: query_info_clear
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 7
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void query_info_clear(struct query_info* m)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_get_mem
      Src: /src/unbound/util/data/msgreply.c:726,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - k
    - d
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 731
      start: 720
    functionDepth: 0
    functionLinenumber: 720
    functionLinenumberEnd: 731
    functionName: msgreply_sizefunc
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached:
    - lock_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t msgreply_sizefunc(void* k, void* d)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/util/data/msgreply.c:737,1
    - Dst: query_info_clear
      Src: /src/unbound/util/data/msgreply.c:738,1
    - Dst: free
      Src: /src/unbound/util/data/msgreply.c:739,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - k
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 740
      start: 733
    functionDepth: 2
    functionLinenumber: 733
    functionLinenumberEnd: 740
    functionName: query_entry_delete
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached:
    - free
    - lock_rw_destroy
    - query_info_clear
    linkageType: ''
    returnType: void
    signature: void query_entry_delete(void *k, void* ATTR_UNUSED(arg))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/data/msgreply.c:747,1
    - Dst: free
      Src: /src/unbound/util/data/msgreply.c:750,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - d
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 742
    functionDepth: 1
    functionLinenumber: 742
    functionLinenumberEnd: 751
    functionName: reply_info_delete
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 2
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void reply_info_delete(void* d, void* ATTR_UNUSED(arg))
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hashlittle
      Src: /src/unbound/util/data/msgreply.c:757,1
    - Dst: hashlittle
      Src: /src/unbound/util/data/msgreply.c:760,1
    - Dst: dname_query_hash
      Src: /src/unbound/util/data/msgreply.c:761,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - q
    - flags
    argTypes:
    - struct query_info*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 763
      start: 753
    functionDepth: 2
    functionLinenumber: 753
    functionLinenumberEnd: 763
    functionName: query_info_hash
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 12
    functionsReached:
    - hashlittle
    - dname_query_hash
    linkageType: ''
    returnType: hashvalue_type
    signature: hashvalue_type query_info_hash(struct query_info *q, uint16_t flags)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/util/data/msgreply.c:769,1
    - Dst: memcpy
      Src: /src/unbound/util/data/msgreply.c:772,1
    - Dst: lock_rw_init
      Src: /src/unbound/util/data/msgreply.c:776,1
    - Dst: lock_protect
      Src: /src/unbound/util/data/msgreply.c:777,1
    - Dst: lock_protect
      Src: /src/unbound/util/data/msgreply.c:778,1
    - Dst: lock_protect
      Src: /src/unbound/util/data/msgreply.c:779,1
    - Dst: lock_protect
      Src: /src/unbound/util/data/msgreply.c:780,1
    - Dst: lock_protect
      Src: /src/unbound/util/data/msgreply.c:781,1
    - Dst: lock_protect
      Src: /src/unbound/util/data/msgreply.c:782,1
    - Dst: lock_protect
      Src: /src/unbound/util/data/msgreply.c:783,1
    - Dst: lock_protect
      Src: /src/unbound/util/data/msgreply.c:784,1
    - Dst: lock_protect
      Src: /src/unbound/util/data/msgreply.c:785,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 19
    argCount: 3
    argNames:
    - q
    - r
    - h
    argTypes:
    - struct query_info*
    - struct reply_info*
    - hashvalue_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 788
      start: 765
    functionDepth: 1
    functionLinenumber: 765
    functionLinenumberEnd: 788
    functionName: query_info_entrysetup
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 2
    functionsReached:
    - malloc
    - memcpy
    - lock_protect
    - lock_rw_init
    linkageType: ''
    returnType: struct msgreply_entry
    signature: "struct msgreply_entry * \nquery_info_entrysetup(struct query_info*
      q, struct reply_info* r, \n\thashvalue_type h)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_init
      Src: /src/unbound/util/data/msgreply.c:806,1
    - Dst: memdup
      Src: /src/unbound/util/data/msgreply.c:809,1
    - Dst: packed_rrset_sizeof
      Src: /src/unbound/util/data/msgreply.c:813,1
    - Dst: regional_alloc_init
      Src: /src/unbound/util/data/msgreply.c:815,1
    - Dst: memdup
      Src: /src/unbound/util/data/msgreply.c:817,1
    - Dst: packed_rrset_ptr_fixup
      Src: /src/unbound/util/data/msgreply.c:820,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 24
    argCount: 3
    argNames:
    - dest
    - from
    - region
    argTypes:
    - struct reply_info*
    - struct reply_info*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 824
      start: 791
    functionDepth: 2
    functionLinenumber: 791
    functionLinenumberEnd: 824
    functionName: repinfo_copy_rrsets
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached:
    - packed_rrset_sizeof
    - packed_rrset_ptr_fixup
    - memdup
    - regional_alloc_init
    linkageType: ''
    returnType: int
    signature: "int repinfo_copy_rrsets(struct reply_info* dest, struct reply_info*
      from, \n\tstruct regional* region)"
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: construct_reply_info_base
      Src: /src/unbound/util/data/msgreply.c:831,1
    - Dst: regional_alloc
      Src: /src/unbound/util/data/msgreply.c:841,1
    - Dst: strlen
      Src: /src/unbound/util/data/msgreply.c:843,1
    - Dst: malloc
      Src: /src/unbound/util/data/msgreply.c:845,1
    - Dst: strlen
      Src: /src/unbound/util/data/msgreply.c:846,1
    - Dst: reply_info_parsedelete
      Src: /src/unbound/util/data/msgreply.c:850,1
    - Dst: memcpy
      Src: /src/unbound/util/data/msgreply.c:853,1
    - Dst: strlen
      Src: /src/unbound/util/data/msgreply.c:854,1
    - Dst: reply_info_alloc_rrset_keys
      Src: /src/unbound/util/data/msgreply.c:858,1
    - Dst: reply_info_parsedelete
      Src: /src/unbound/util/data/msgreply.c:860,1
    - Dst: repinfo_copy_rrsets
      Src: /src/unbound/util/data/msgreply.c:863,1
    - Dst: reply_info_parsedelete
      Src: /src/unbound/util/data/msgreply.c:865,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 28
    argCount: 3
    argNames:
    - rep
    - alloc
    - region
    argTypes:
    - struct reply_info*
    - struct alloc_cache*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 869
      start: 826
    functionDepth: 10
    functionLinenumber: 826
    functionLinenumberEnd: 869
    functionName: reply_info_copy
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 4
    functionsReached:
    - memcpy
    - construct_reply_info_base
    - repinfo_copy_rrsets
    - reply_info_parsedelete
    - regional_alloc
    - malloc
    - strlen
    - reply_info_alloc_rrset_keys
    linkageType: ''
    returnType: struct reply_info
    signature: "struct reply_info *\nreply_info_copy(struct reply_info* rep, struct
      alloc_cache* alloc,\n\tstruct regional* region)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/util/data/msgreply.c:880,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgreply.c:881,1
    - Dst: query_dname_compare
      Src: /src/unbound/util/data/msgreply.c:883,1
    - Dst: get_cname_target
      Src: /src/unbound/util/data/msgreply.c:884,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 9
    argCount: 2
    argNames:
    - qinfo
    - rep
    argTypes:
    - struct query_info*
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 890
      start: 871
    functionDepth: 2
    functionLinenumber: 871
    functionLinenumberEnd: 890
    functionName: reply_find_final_cname_target
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 1
    functionsReached:
    - get_cname_target
    - query_dname_compare
    - ntohs
    linkageType: ''
    returnType: uint8_t
    signature: "uint8_t * \nreply_find_final_cname_target(struct query_info* qinfo,
      struct reply_info* rep)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/util/data/msgreply.c:901,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgreply.c:902,1
    - Dst: query_dname_compare
      Src: /src/unbound/util/data/msgreply.c:904,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgreply.c:908,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgreply.c:909,1
    - Dst: query_dname_compare
      Src: /src/unbound/util/data/msgreply.c:911,1
    - Dst: get_cname_target
      Src: /src/unbound/util/data/msgreply.c:912,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 10
    argCount: 2
    argNames:
    - qinfo
    - rep
    argTypes:
    - struct query_info*
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 916
      start: 892
    functionDepth: 2
    functionLinenumber: 892
    functionLinenumberEnd: 916
    functionName: reply_find_answer_rrset
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 12
    functionsReached:
    - get_cname_target
    - query_dname_compare
    - ntohs
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: "struct ub_packed_rrset_key * \nreply_find_answer_rrset(struct query_info*
      qinfo, struct reply_info* rep)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/util/data/msgreply.c:924,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgreply.c:925,1
    - Dst: query_dname_compare
      Src: /src/unbound/util/data/msgreply.c:927,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 5
    argNames:
    - rep
    - name
    - namelen
    - type
    - dclass
    argTypes:
    - struct reply_info*
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 932
      start: 918
    functionDepth: 2
    functionLinenumber: 918
    functionLinenumberEnd: 932
    functionName: reply_find_rrset_section_an
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 7
    functionsReached:
    - query_dname_compare
    - ntohs
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: "struct ub_packed_rrset_key * reply_find_rrset_section_an(struct reply_info*
      rep,\n\tuint8_t* name, size_t namelen, uint16_t type, uint16_t dclass)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/util/data/msgreply.c:940,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgreply.c:941,1
    - Dst: query_dname_compare
      Src: /src/unbound/util/data/msgreply.c:943,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 5
    argNames:
    - rep
    - name
    - namelen
    - type
    - dclass
    argTypes:
    - struct reply_info*
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 948
      start: 934
    functionDepth: 2
    functionLinenumber: 934
    functionLinenumberEnd: 948
    functionName: reply_find_rrset_section_ns
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 4
    functionsReached:
    - query_dname_compare
    - ntohs
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: "struct ub_packed_rrset_key * reply_find_rrset_section_ns(struct reply_info*
      rep,\n\tuint8_t* name, size_t namelen, uint16_t type, uint16_t dclass)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/util/data/msgreply.c:956,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgreply.c:957,1
    - Dst: query_dname_compare
      Src: /src/unbound/util/data/msgreply.c:959,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 7
    argCount: 5
    argNames:
    - rep
    - name
    - namelen
    - type
    - dclass
    argTypes:
    - struct reply_info*
    - uint8_t*
    - size_t
    - uint16_t
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 964
      start: 950
    functionDepth: 2
    functionLinenumber: 950
    functionLinenumberEnd: 964
    functionName: reply_find_rrset
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 2
    functionsReached:
    - query_dname_compare
    - ntohs
    linkageType: ''
    returnType: struct ub_packed_rrset_key
    signature: "struct ub_packed_rrset_key * reply_find_rrset(struct reply_info* rep,\n\tuint8_t*
      name, size_t namelen, uint16_t type, uint16_t dclass)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_new
      Src: /src/unbound/util/data/msgreply.c:970,1
    - Dst: regional_create
      Src: /src/unbound/util/data/msgreply.c:971,1
    - Dst: log_err
      Src: /src/unbound/util/data/msgreply.c:973,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/data/msgreply.c:974,1
    - Dst: regional_destroy
      Src: /src/unbound/util/data/msgreply.c:975,1
    - Dst: reply_info_encode
      Src: /src/unbound/util/data/msgreply.c:978,1
    - Dst: log_err
      Src: /src/unbound/util/data/msgreply.c:980,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/util/data/msgreply.c:982,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/util/data/msgreply.c:982,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/msgreply.c:983,1
    - Dst: log_info
      Src: /src/unbound/util/data/msgreply.c:985,1
    - Dst: log_info
      Src: /src/unbound/util/data/msgreply.c:987,1
    - Dst: free
      Src: /src/unbound/util/data/msgreply.c:989,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/util/data/msgreply.c:991,1
    - Dst: regional_destroy
      Src: /src/unbound/util/data/msgreply.c:992,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - str
    - qinfo
    - rep
    argTypes:
    - char*
    - struct query_info*
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 993
      start: 966
    functionDepth: 11
    functionLinenumber: 966
    functionLinenumberEnd: 993
    functionName: log_dns_msg
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 14
    functionsReached:
    - log_err
    - sldns_buffer_new
    - regional_create
    - reply_info_encode
    - log_info
    - sldns_wire2str_pkt
    - sldns_buffer_limit
    - free
    - sldns_buffer_free
    - sldns_buffer_begin
    - regional_destroy
    linkageType: ''
    returnType: void
    signature: void log_dns_msg(const char* str, struct query_info* qinfo, struct
      reply_info* rep)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: FLAGS_GET_RCODE
      Src: /src/unbound/util/data/msgreply.c:1004,1
    - Dst: sldns_buffer_read_u16_at
      Src: /src/unbound/util/data/msgreply.c:1004,1
    - Dst: sldns_wire2str_rcode_buf
      Src: /src/unbound/util/data/msgreply.c:1009,1
    - Dst: addr_to_str
      Src: /src/unbound/util/data/msgreply.c:1010,1
    - Dst: inet_ntop
      Src: /src/unbound/util/data/msgreply.c:1017,1
    - Dst: snprintf
      Src: /src/unbound/util/data/msgreply.c:1019,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgreply.c:1021,1
    - Dst: inet_ntop
      Src: /src/unbound/util/data/msgreply.c:1024,1
    - Dst: snprintf
      Src: /src/unbound/util/data/msgreply.c:1026,1
    - Dst: ntohs
      Src: /src/unbound/util/data/msgreply.c:1028,1
    - Dst: snprintf
      Src: /src/unbound/util/data/msgreply.c:1030,1
    - Dst: snprintf
      Src: /src/unbound/util/data/msgreply.c:1039,1
    - Dst: log_reply
      Src: /src/unbound/util/data/msgreply.c:1047,1
    - Dst: log_info
      Src: /src/unbound/util/data/msgreply.c:1049,1
    - Dst: dname_str
      Src: /src/unbound/util/data/msgreply.c:1057,1
    - Dst: snprintf
      Src: /src/unbound/util/data/msgreply.c:1058,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/util/data/msgreply.c:1059,1
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/util/data/msgreply.c:1060,1
    - Dst: sldns_wire2str_class_buf
      Src: /src/unbound/util/data/msgreply.c:1061,1
    - Dst: log_reply
      Src: /src/unbound/util/data/msgreply.c:1063,1
    - Dst: log_info
      Src: /src/unbound/util/data/msgreply.c:1067,1
    CyclomaticComplexity: 15
    EdgeCount: 15
    ICount: 48
    argCount: 10
    argNames:
    - v
    - qinf
    - addr
    - addrlen
    - dur
    - cached
    - rmsg
    - daddr
    - tp
    - ssl
    argTypes:
    - enum verbosity_value
    - struct query_info*
    - struct sockaddr_storage*
    - socklen_t
    - struct timeval
    - int
    - struct sldns_buffer*
    - struct sockaddr_storage*
    - enum comm_point_type
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1072
      start: 995
    functionDepth: 7
    functionLinenumber: 995
    functionLinenumberEnd: 1072
    functionName: log_reply_info
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 2
    functionsReached:
    - FLAGS_GET_RCODE
    - inet_ntop
    - addr_to_str
    - snprintf
    - sldns_wire2str_rcode_buf
    - log_info
    - sldns_buffer_limit
    - dname_str
    - sldns_wire2str_type_buf
    - sldns_wire2str_class_buf
    - log_reply
    - sldns_buffer_read_u16_at
    - ntohs
    linkageType: ''
    returnType: void
    signature: "void log_reply_info(enum verbosity_value v, struct query_info *qinf,\n\tstruct
      sockaddr_storage *addr, socklen_t addrlen, struct timeval dur,\n\tint cached,
      struct sldns_buffer *rmsg, struct sockaddr_storage* daddr,\n\tenum comm_point_type
      tp, void* ssl)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_nametypeclass
      Src: /src/unbound/util/data/msgreply.c:1078,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - v
    - str
    - qinf
    argTypes:
    - enum verbosity_value
    - char*
    - struct query_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1079
      start: 1074
    functionDepth: 3
    functionLinenumber: 1074
    functionLinenumberEnd: 1079
    functionName: log_query_info
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 40
    functionsReached:
    - log_nametypeclass
    linkageType: ''
    returnType: void
    signature: "void log_query_info(enum verbosity_value v, const char* str, \n\tstruct
      query_info* qinf)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: ntohs
      Src: /src/unbound/util/data/msgreply.c:1090,1
    - Dst: query_dname_compare
      Src: /src/unbound/util/data/msgreply.c:1094,1
    - Dst: get_cname_target
      Src: /src/unbound/util/data/msgreply.c:1100,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - qinfo
    - rep
    argTypes:
    - struct query_info*
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1104
      start: 1081
    functionDepth: 2
    functionLinenumber: 1081
    functionLinenumberEnd: 1104
    functionName: reply_check_cname_chain
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 2
    functionsReached:
    - get_cname_target
    - query_dname_compare
    - ntohs
    linkageType: ''
    returnType: int
    signature: int reply_check_cname_chain(struct query_info* qinfo, struct reply_info*
      rep)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - rep
    argTypes:
    - struct reply_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1116
      start: 1106
    functionDepth: 0
    functionLinenumber: 1106
    functionLinenumberEnd: 1116
    functionName: reply_all_rrsets_secure
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int reply_all_rrsets_secure(struct reply_info* rep)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/util/data/msgreply.c:1124,1
    - Dst: memset
      Src: /src/unbound/util/data/msgreply.c:1127,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/util/data/msgreply.c:1128,1
    - Dst: parse_packet
      Src: /src/unbound/util/data/msgreply.c:1129,1
    - Dst: parse_create_msg
      Src: /src/unbound/util/data/msgreply.c:1132,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 3
    argNames:
    - pkt
    - region
    - qi
    argTypes:
    - sldns_buffer*
    - struct regional*
    - struct query_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1136
      start: 1118
    functionDepth: 14
    functionLinenumber: 1118
    functionLinenumberEnd: 1136
    functionName: parse_reply_in_temp_region
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 4
    functionsReached:
    - regional_alloc
    - parse_create_msg
    - sldns_buffer_set_position
    - parse_packet
    - memset
    linkageType: ''
    returnType: struct reply_info
    signature: "struct reply_info *\nparse_reply_in_temp_region(sldns_buffer* pkt,
      struct regional* region,\n\tstruct query_info* qi)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/util/data/msgreply.c:1143,1
    - Dst: regional_alloc
      Src: /src/unbound/util/data/msgreply.c:1146,1
    - Dst: regional_alloc
      Src: /src/unbound/util/data/msgreply.c:1152,1
    - Dst: sldns_write_uint16
      Src: /src/unbound/util/data/msgreply.c:1155,1
    - Dst: memmove
      Src: /src/unbound/util/data/msgreply.c:1157,1
    - Dst: verbose
      Src: /src/unbound/util/data/msgreply.c:1163,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 4
    argNames:
    - list
    - region
    - code
    - txt
    argTypes:
    - struct edns_option**
    - struct regional*
    - sldns_ede_code
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1166
      start: 1138
    functionDepth: 7
    functionLinenumber: 1138
    functionLinenumberEnd: 1166
    functionName: edns_opt_list_append_ede
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 7
    functionsReached:
    - memmove
    - verbose
    - sldns_write_uint16
    - regional_alloc
    - strlen
    linkageType: ''
    returnType: int
    signature: "int edns_opt_list_append_ede(struct edns_option** list, struct regional*
      region,\n\tsldns_ede_code code, const char *txt)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: edns_opt_list_append
      Src: /src/unbound/util/data/msgreply.c:1174,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - list
    - msec
    - region
    argTypes:
    - struct edns_option**
    - int
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1176
      start: 1168
    functionDepth: 1
    functionLinenumber: 1168
    functionLinenumberEnd: 1176
    functionName: edns_opt_list_append_keepalive
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 1
    functionsReached:
    - edns_opt_list_append
    linkageType: ''
    returnType: int
    signature: "int edns_opt_list_append_keepalive(struct edns_option** list, int
      msec,\n\tstruct regional* region)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc
      Src: /src/unbound/util/data/msgreply.c:1185,1
    - Dst: regional_alloc_init
      Src: /src/unbound/util/data/msgreply.c:1193,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 5
    argNames:
    - list
    - code
    - len
    - data
    - region
    argTypes:
    - struct edns_option**
    - uint16_t
    - size_t
    - uint8_t*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1205
      start: 1178
    functionDepth: 2
    functionLinenumber: 1178
    functionLinenumberEnd: 1205
    functionName: edns_opt_list_append
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 8
    functionsReached:
    - regional_alloc
    - regional_alloc_init
    linkageType: ''
    returnType: int
    signature: "int edns_opt_list_append(struct edns_option** list, uint16_t code,
      size_t len,\n\tuint8_t* data, struct regional* region)"
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 20
    argCount: 2
    argNames:
    - list
    - code
    argTypes:
    - struct edns_option**
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1236
      start: 1207
    functionDepth: 0
    functionLinenumber: 1207
    functionLinenumberEnd: 1236
    functionName: edns_opt_list_remove
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 5
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int edns_opt_list_remove(struct edns_option** list, uint16_t code)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/data/msgreply.c:1253,1
    - Dst: fptr_whitelist_inplace_cb_reply_generic
      Src: /src/unbound/util/data/msgreply.c:1253,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 10
    argCount: 10
    argNames:
    - callback_list
    - type
    - qinfo
    - qstate
    - rep
    - rcode
    - edns
    - repinfo
    - region
    - start_time
    argTypes:
    - struct inplace_cb*
    - enum inplace_cb_list_type
    - struct query_info*
    - struct module_qstate*
    - struct reply_info*
    - int
    - struct edns_data*
    - struct comm_reply*
    - struct regional*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1260
      start: 1238
    functionDepth: 1
    functionLinenumber: 1238
    functionLinenumberEnd: 1260
    functionName: inplace_cb_reply_call_generic
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached:
    - fptr_whitelist_inplace_cb_reply_generic
    - fptr_ok
    linkageType: ''
    returnType: int
    signature: "int inplace_cb_reply_call_generic(\n    struct inplace_cb* callback_list,
      enum inplace_cb_list_type type,\n\tstruct query_info* qinfo, struct module_qstate*
      qstate,\n\tstruct reply_info* rep, int rcode, struct edns_data* edns,\n\tstruct
      comm_reply* repinfo, struct regional* region,\n\tstruct timeval* start_time)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inplace_cb_reply_call_generic
      Src: /src/unbound/util/data/msgreply.c:1267,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 9
    argNames:
    - env
    - qinfo
    - qstate
    - rep
    - rcode
    - edns
    - repinfo
    - region
    - start_time
    argTypes:
    - struct module_env*
    - struct query_info*
    - struct module_qstate*
    - struct reply_info*
    - int
    - struct edns_data*
    - struct comm_reply*
    - struct regional*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1270
      start: 1262
    functionDepth: 2
    functionLinenumber: 1262
    functionLinenumberEnd: 1270
    functionName: inplace_cb_reply_call
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 2
    functionsReached:
    - inplace_cb_reply_call_generic
    linkageType: ''
    returnType: int
    signature: "int inplace_cb_reply_call(struct module_env* env, struct query_info*
      qinfo,\n\tstruct module_qstate* qstate, struct reply_info* rep, int rcode,\n\tstruct
      edns_data* edns, struct comm_reply* repinfo, struct regional* region,\n\tstruct
      timeval* start_time)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inplace_cb_reply_call_generic
      Src: /src/unbound/util/data/msgreply.c:1278,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 9
    argNames:
    - env
    - qinfo
    - qstate
    - rep
    - rcode
    - edns
    - repinfo
    - region
    - start_time
    argTypes:
    - struct module_env*
    - struct query_info*
    - struct module_qstate*
    - struct reply_info*
    - int
    - struct edns_data*
    - struct comm_reply*
    - struct regional*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1281
      start: 1272
    functionDepth: 2
    functionLinenumber: 1272
    functionLinenumberEnd: 1281
    functionName: inplace_cb_reply_cache_call
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 2
    functionsReached:
    - inplace_cb_reply_call_generic
    linkageType: ''
    returnType: int
    signature: "int inplace_cb_reply_cache_call(struct module_env* env,\n\tstruct
      query_info* qinfo, struct module_qstate* qstate,\n\tstruct reply_info* rep,
      int rcode, struct edns_data* edns,\n\tstruct comm_reply* repinfo, struct regional*
      region,\n\tstruct timeval* start_time)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: inplace_cb_reply_call_generic
      Src: /src/unbound/util/data/msgreply.c:1289,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 9
    argNames:
    - env
    - qinfo
    - qstate
    - rep
    - rcode
    - edns
    - repinfo
    - region
    - start_time
    argTypes:
    - struct module_env*
    - struct query_info*
    - struct module_qstate*
    - struct reply_info*
    - int
    - struct edns_data*
    - struct comm_reply*
    - struct regional*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1292
      start: 1283
    functionDepth: 2
    functionLinenumber: 1283
    functionLinenumberEnd: 1292
    functionName: inplace_cb_reply_local_call
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 6
    functionsReached:
    - inplace_cb_reply_call_generic
    linkageType: ''
    returnType: int
    signature: "int inplace_cb_reply_local_call(struct module_env* env,\n\tstruct
      query_info* qinfo, struct module_qstate* qstate,\n\tstruct reply_info* rep,
      int rcode, struct edns_data* edns,\n\tstruct comm_reply* repinfo, struct regional*
      region,\n\tstruct timeval* start_time)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inplace_cb_reply_call_generic
      Src: /src/unbound/util/data/msgreply.c:1303,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 9
    argNames:
    - env
    - qinfo
    - qstate
    - rep
    - rcode
    - edns
    - repinfo
    - region
    - start_time
    argTypes:
    - struct module_env*
    - struct query_info*
    - struct module_qstate*
    - struct reply_info*
    - int
    - struct edns_data*
    - struct comm_reply*
    - struct regional*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1307
      start: 1294
    functionDepth: 2
    functionLinenumber: 1294
    functionLinenumberEnd: 1307
    functionName: inplace_cb_reply_servfail_call
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 4
    functionsReached:
    - inplace_cb_reply_call_generic
    linkageType: ''
    returnType: int
    signature: "int inplace_cb_reply_servfail_call(struct module_env* env,\n\tstruct
      query_info* qinfo, struct module_qstate* qstate,\n\tstruct reply_info* rep,
      int rcode, struct edns_data* edns,\n\tstruct comm_reply* repinfo, struct regional*
      region,\n\tstruct timeval* start_time)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/data/msgreply.c:1316,1
    - Dst: fptr_whitelist_inplace_cb_query
      Src: /src/unbound/util/data/msgreply.c:1316,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 9
    argNames:
    - env
    - qinfo
    - flags
    - addr
    - addrlen
    - zone
    - zonelen
    - qstate
    - region
    argTypes:
    - struct module_env*
    - struct query_info*
    - uint16_t
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - struct module_qstate*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1323
      start: 1309
    functionDepth: 1
    functionLinenumber: 1309
    functionLinenumberEnd: 1323
    functionName: inplace_cb_query_call
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 2
    functionsReached:
    - fptr_whitelist_inplace_cb_query
    - fptr_ok
    linkageType: ''
    returnType: int
    signature: "int inplace_cb_query_call(struct module_env* env, struct query_info*
      qinfo,\n\tuint16_t flags, struct sockaddr_storage* addr, socklen_t addrlen,\n\tuint8_t*
      zone, size_t zonelen, struct module_qstate* qstate,\n\tstruct regional* region)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/data/msgreply.c:1331,1
    - Dst: fptr_whitelist_inplace_cb_edns_back_parsed
      Src: /src/unbound/util/data/msgreply.c:1331,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - env
    - qstate
    argTypes:
    - struct module_env*
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1337
      start: 1325
    functionDepth: 1
    functionLinenumber: 1325
    functionLinenumberEnd: 1337
    functionName: inplace_cb_edns_back_parsed_call
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 1
    functionsReached:
    - fptr_whitelist_inplace_cb_edns_back_parsed
    - fptr_ok
    linkageType: ''
    returnType: int
    signature: "int inplace_cb_edns_back_parsed_call(struct module_env* env, \n\tstruct
      module_qstate* qstate)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/data/msgreply.c:1344,1
    - Dst: fptr_whitelist_inplace_cb_query_response
      Src: /src/unbound/util/data/msgreply.c:1344,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - env
    - qstate
    - response
    argTypes:
    - struct module_env*
    - struct module_qstate*
    - struct dns_msg*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1350
      start: 1339
    functionDepth: 1
    functionLinenumber: 1339
    functionLinenumberEnd: 1350
    functionName: inplace_cb_query_response_call
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 1
    functionsReached:
    - fptr_whitelist_inplace_cb_query_response
    - fptr_ok
    linkageType: ''
    returnType: int
    signature: "int inplace_cb_query_response_call(struct module_env* env,\n\tstruct
      module_qstate* qstate, struct dns_msg* response)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_init
      Src: /src/unbound/util/data/msgreply.c:1358,1
    - Dst: regional_alloc_init
      Src: /src/unbound/util/data/msgreply.c:1364,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 2
    argNames:
    - list
    - region
    argTypes:
    - struct edns_option*
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1380
      start: 1352
    functionDepth: 2
    functionLinenumber: 1352
    functionLinenumberEnd: 1380
    functionName: edns_opt_copy_region
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 5
    functionsReached:
    - regional_alloc_init
    linkageType: ''
    returnType: struct edns_option
    signature: "struct edns_option * edns_opt_copy_region(struct edns_option* list,\n\tstruct
      regional* region)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_init
      Src: /src/unbound/util/data/msgreply.c:1393,1
    - Dst: regional_alloc_init
      Src: /src/unbound/util/data/msgreply.c:1399,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 29
    argCount: 4
    argNames:
    - list
    - filter_list
    - filter_list_len
    - region
    argTypes:
    - struct edns_option*
    - uint16_t*
    - size_t
    - struct regional*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1416
      start: 1382
    functionDepth: 2
    functionLinenumber: 1382
    functionLinenumberEnd: 1416
    functionName: edns_opt_copy_filter_region
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached:
    - regional_alloc_init
    linkageType: ''
    returnType: struct edns_option
    signature: "struct edns_option * edns_opt_copy_filter_region(struct edns_option*
      list,\n\tuint16_t* filter_list, size_t filter_list_len, struct regional* region)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/data/msgreply.c:1423,1
    - Dst: memcmp
      Src: /src/unbound/util/data/msgreply.c:1429,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 15
    argCount: 2
    argNames:
    - p
    - q
    argTypes:
    - struct edns_option*
    - struct edns_option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1431
      start: 1418
    functionDepth: 1
    functionLinenumber: 1418
    functionLinenumberEnd: 1431
    functionName: edns_opt_compare
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached:
    - log_assert
    - memcmp
    linkageType: ''
    returnType: int
    signature: int edns_opt_compare(struct edns_option* p, struct edns_option* q)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: edns_opt_compare
      Src: /src/unbound/util/data/msgreply.c:1437,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 2
    argNames:
    - p
    - q
    argTypes:
    - struct edns_option*
    - struct edns_option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1449
      start: 1433
    functionDepth: 2
    functionLinenumber: 1433
    functionLinenumberEnd: 1449
    functionName: edns_opt_list_compare
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 2
    functionsReached:
    - edns_opt_compare
    linkageType: ''
    returnType: int
    signature: int edns_opt_list_compare(struct edns_option* p, struct edns_option*
      q)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/data/msgreply.c:1455,1
    - Dst: free
      Src: /src/unbound/util/data/msgreply.c:1457,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct edns_option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1460
      start: 1451
    functionDepth: 1
    functionLinenumber: 1451
    functionLinenumberEnd: 1460
    functionName: edns_opt_list_free
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void edns_opt_list_free(struct edns_option* list)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memdup
      Src: /src/unbound/util/data/msgreply.c:1467,1
    - Dst: edns_opt_list_free
      Src: /src/unbound/util/data/msgreply.c:1469,1
    - Dst: memdup
      Src: /src/unbound/util/data/msgreply.c:1476,1
    - Dst: free
      Src: /src/unbound/util/data/msgreply.c:1478,1
    - Dst: edns_opt_list_free
      Src: /src/unbound/util/data/msgreply.c:1479,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 23
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct edns_option*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1494
      start: 1462
    functionDepth: 2
    functionLinenumber: 1462
    functionLinenumberEnd: 1494
    functionName: edns_opt_copy_alloc
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 0
    functionsReached:
    - edns_opt_list_free
    - memdup
    - free
    linkageType: ''
    returnType: struct edns_option
    signature: struct edns_option * edns_opt_copy_alloc(struct edns_option* list)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - list
    - code
    argTypes:
    - struct edns_option*
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1504
      start: 1496
    functionDepth: 0
    functionLinenumber: 1496
    functionLinenumberEnd: 1504
    functionName: edns_opt_list_find
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 7
    functionsReached: []
    linkageType: ''
    returnType: struct edns_option
    signature: struct edns_option * edns_opt_list_find(struct edns_option* list, uint16_t
      code)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: htons
      Src: /src/unbound/util/data/msgreply.c:1519,1
    - Dst: log_err
      Src: /src/unbound/util/data/msgreply.c:1521,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 14
    argCount: 3
    argNames:
    - local_alias
    - qname
    - qname_len
    argTypes:
    - struct local_rrset*
    - uint8_t**
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1527
      start: 1506
    functionDepth: 7
    functionLinenumber: 1506
    functionLinenumberEnd: 1527
    functionName: local_alias_shallow_copy_qname
    functionSourceFile: /src/unbound/util/data/msgreply.c
    functionUses: 2
    functionsReached:
    - htons
    - log_err
    linkageType: ''
    returnType: int
    signature: "int local_alias_shallow_copy_qname(struct local_rrset* local_alias,
      uint8_t** qname,\n\tsize_t* qname_len)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 9
    argNames:
    - (
    - LIST
    - ','
    - REGION
    - ','
    - CODE
    - ','
    - TXT
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 605
    functionDepth: 0
    functionLinenumber: 605
    functionLinenumberEnd: 617
    functionName: EDNS_OPT_LIST_APPEND_EDE
    functionSourceFile: /src/unbound/util/data/msgreply.h
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: EDNS_OPT_LIST_APPEND_EDE(LIST, REGION, CODE, TXT)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_lab_cmp
      Src: /src/unbound/util/storage/dnstree.c:57,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - k1
    - k2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 58
      start: 47
    functionDepth: 2
    functionLinenumber: 47
    functionLinenumberEnd: 58
    functionName: name_tree_compare
    functionSourceFile: /src/unbound/util/storage/dnstree.c
    functionUses: 0
    functionsReached:
    - dname_lab_cmp
    linkageType: ''
    returnType: int
    signature: int name_tree_compare(const void* k1, const void* k2)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sockaddr_cmp_addr
      Src: /src/unbound/util/storage/dnstree.c:64,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - k1
    - k2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 72
      start: 60
    functionDepth: 2
    functionLinenumber: 60
    functionLinenumberEnd: 72
    functionName: addr_tree_compare
    functionSourceFile: /src/unbound/util/storage/dnstree.c
    functionUses: 0
    functionsReached:
    - sockaddr_cmp_addr
    linkageType: ''
    returnType: int
    signature: int addr_tree_compare(const void* k1, const void* k2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sockaddr_cmp_scopeid
      Src: /src/unbound/util/storage/dnstree.c:78,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - k1
    - k2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 74
    functionDepth: 2
    functionLinenumber: 74
    functionLinenumberEnd: 80
    functionName: addr_tree_addrport_compare
    functionSourceFile: /src/unbound/util/storage/dnstree.c
    functionUses: 0
    functionsReached:
    - sockaddr_cmp_scopeid
    linkageType: ''
    returnType: int
    signature: int addr_tree_addrport_compare(const void* k1, const void* k2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_init
      Src: /src/unbound/util/storage/dnstree.c:84,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tree
    argTypes:
    - rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 82
    functionDepth: 1
    functionLinenumber: 82
    functionLinenumberEnd: 85
    functionName: name_tree_init
    functionSourceFile: /src/unbound/util/storage/dnstree.c
    functionUses: 5
    functionsReached:
    - rbtree_init
    linkageType: ''
    returnType: void
    signature: void name_tree_init(rbtree_type* tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_init
      Src: /src/unbound/util/storage/dnstree.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tree
    argTypes:
    - rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 90
      start: 87
    functionDepth: 1
    functionLinenumber: 87
    functionLinenumberEnd: 90
    functionName: addr_tree_init
    functionSourceFile: /src/unbound/util/storage/dnstree.c
    functionUses: 11
    functionsReached:
    - rbtree_init
    linkageType: ''
    returnType: void
    signature: void addr_tree_init(rbtree_type* tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_init
      Src: /src/unbound/util/storage/dnstree.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tree
    argTypes:
    - rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 92
    functionDepth: 1
    functionLinenumber: 92
    functionLinenumberEnd: 95
    functionName: addr_tree_addrport_init
    functionSourceFile: /src/unbound/util/storage/dnstree.c
    functionUses: 1
    functionsReached:
    - rbtree_init
    linkageType: ''
    returnType: void
    signature: void addr_tree_addrport_init(rbtree_type* tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_insert
      Src: /src/unbound/util/storage/dnstree.c:106,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 8
    argCount: 6
    argNames:
    - tree
    - node
    - name
    - len
    - labs
    - dclass
    argTypes:
    - rbtree_type*
    - struct name_tree_node*
    - uint8_t*
    - size_t
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 97
    functionDepth: 3
    functionLinenumber: 97
    functionLinenumberEnd: 107
    functionName: name_tree_insert
    functionSourceFile: /src/unbound/util/storage/dnstree.c
    functionUses: 6
    functionsReached:
    - rbtree_insert
    linkageType: ''
    returnType: int
    signature: "int name_tree_insert(rbtree_type* tree, struct name_tree_node* node,
      \n        uint8_t* name, size_t len, int labs, uint16_t dclass)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/util/storage/dnstree.c:113,1
    - Dst: rbtree_insert
      Src: /src/unbound/util/storage/dnstree.c:117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - tree
    - node
    - addr
    - addrlen
    - net
    argTypes:
    - rbtree_type*
    - struct addr_tree_node*
    - struct sockaddr_storage*
    - socklen_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 109
    functionDepth: 3
    functionLinenumber: 109
    functionLinenumberEnd: 118
    functionName: addr_tree_insert
    functionSourceFile: /src/unbound/util/storage/dnstree.c
    functionUses: 10
    functionsReached:
    - rbtree_insert
    - memcpy
    linkageType: ''
    returnType: int
    signature: "int addr_tree_insert(rbtree_type* tree, struct addr_tree_node* node,\n
      \       struct sockaddr_storage* addr, socklen_t addrlen, int net)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_next
      Src: /src/unbound/util/storage/dnstree.c:125,1
    - Dst: addr_in_common
      Src: /src/unbound/util/storage/dnstree.c:131,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 15
    argCount: 1
    argNames:
    - node
    argTypes:
    - struct addr_tree_node*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 145
      start: 120
    functionDepth: 2
    functionLinenumber: 120
    functionLinenumberEnd: 145
    functionName: addr_tree_init_parents_node
    functionSourceFile: /src/unbound/util/storage/dnstree.c
    functionUses: 1
    functionsReached:
    - addr_in_common
    - rbtree_next
    linkageType: ''
    returnType: void
    signature: void addr_tree_init_parents_node(struct addr_tree_node* node)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: addr_tree_init_parents_node
      Src: /src/unbound/util/storage/dnstree.c:149,1
    - Dst: rbtree_first
      Src: /src/unbound/util/storage/dnstree.c:150,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - tree
    argTypes:
    - rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 147
    functionDepth: 3
    functionLinenumber: 147
    functionLinenumberEnd: 151
    functionName: addr_tree_init_parents
    functionSourceFile: /src/unbound/util/storage/dnstree.c
    functionUses: 13
    functionsReached:
    - addr_tree_init_parents_node
    - rbtree_first
    linkageType: ''
    returnType: void
    signature: void addr_tree_init_parents(rbtree_type* tree)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_lab_cmp
      Src: /src/unbound/util/storage/dnstree.c:163,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - tree
    argTypes:
    - rbtree_type*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 177
      start: 153
    functionDepth: 2
    functionLinenumber: 153
    functionLinenumberEnd: 177
    functionName: name_tree_init_parents
    functionSourceFile: /src/unbound/util/storage/dnstree.c
    functionUses: 8
    functionsReached:
    - dname_lab_cmp
    linkageType: ''
    returnType: void
    signature: void name_tree_init_parents(rbtree_type* tree)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: dname_lab_cmp
      Src: /src/unbound/util/storage/dnstree.c:163,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 13
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 176
      start: 157
    functionDepth: 2
    functionLinenumber: 157
    functionLinenumberEnd: 176
    functionName: RBTREE_FOR
    functionSourceFile: /src/unbound/util/storage/dnstree.c
    functionUses: 0
    functionsReached:
    - dname_lab_cmp
    linkageType: ''
    returnType: void
    signature: void RBTREE_FOR(node, struct name_tree_node*, tree)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_search
      Src: /src/unbound/util/storage/dnstree.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - tree
    - name
    - len
    - labs
    - dclass
    argTypes:
    - rbtree_type*
    - uint8_t*
    - size_t
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 179
    functionDepth: 2
    functionLinenumber: 179
    functionLinenumberEnd: 189
    functionName: name_tree_find
    functionSourceFile: /src/unbound/util/storage/dnstree.c
    functionUses: 4
    functionsReached:
    - rbtree_search
    linkageType: ''
    returnType: struct name_tree_node
    signature: "struct name_tree_node * name_tree_find(rbtree_type* tree, uint8_t*
      name, \n        size_t len, int labs, uint16_t dclass)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_find_less_equal
      Src: /src/unbound/util/storage/dnstree.c:202,1
    - Dst: dname_lab_cmp
      Src: /src/unbound/util/storage/dnstree.c:212,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 20
    argCount: 5
    argNames:
    - tree
    - name
    - len
    - labs
    - dclass
    argTypes:
    - rbtree_type*
    - uint8_t*
    - size_t
    - int
    - uint16_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 221
      start: 191
    functionDepth: 2
    functionLinenumber: 191
    functionLinenumberEnd: 221
    functionName: name_tree_lookup
    functionSourceFile: /src/unbound/util/storage/dnstree.c
    functionUses: 6
    functionsReached:
    - dname_lab_cmp
    - rbtree_find_less_equal
    linkageType: ''
    returnType: struct name_tree_node
    signature: "struct name_tree_node * name_tree_lookup(rbtree_type* tree, uint8_t*
      name,\n        size_t len, int labs, uint16_t dclass)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/util/storage/dnstree.c:230,1
    - Dst: addr_is_ip6
      Src: /src/unbound/util/storage/dnstree.c:232,1
    - Dst: rbtree_find_less_equal
      Src: /src/unbound/util/storage/dnstree.c:233,1
    - Dst: addr_in_common
      Src: /src/unbound/util/storage/dnstree.c:243,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 3
    argNames:
    - tree
    - addr
    - addrlen
    argTypes:
    - rbtree_type*
    - struct sockaddr_storage*
    - socklen_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 252
      start: 223
    functionDepth: 2
    functionLinenumber: 223
    functionLinenumberEnd: 252
    functionName: addr_tree_lookup
    functionSourceFile: /src/unbound/util/storage/dnstree.c
    functionUses: 10
    functionsReached:
    - rbtree_find_less_equal
    - addr_in_common
    - memcpy
    - addr_is_ip6
    linkageType: ''
    returnType: struct addr_tree_node
    signature: "struct addr_tree_node * addr_tree_lookup(rbtree_type* tree, \n        struct
      sockaddr_storage* addr, socklen_t addrlen)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/util/storage/dnstree.c:260,1
    - Dst: rbtree_search
      Src: /src/unbound/util/storage/dnstree.c:263,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 4
    argNames:
    - tree
    - addr
    - addrlen
    - net
    argTypes:
    - rbtree_type*
    - struct sockaddr_storage*
    - socklen_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 265
      start: 254
    functionDepth: 2
    functionLinenumber: 254
    functionLinenumberEnd: 265
    functionName: addr_tree_find
    functionSourceFile: /src/unbound/util/storage/dnstree.c
    functionUses: 9
    functionsReached:
    - memcpy
    - rbtree_search
    linkageType: ''
    returnType: struct addr_tree_node
    signature: "struct addr_tree_node * addr_tree_find(rbtree_type* tree,\n        struct
      sockaddr_storage* addr, socklen_t addrlen, int net)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: rbtree_first
      Src: /src/unbound/util/storage/dnstree.c:275,1
    - Dst: dname_is_root
      Src: /src/unbound/util/storage/dnstree.c:279,1
    - Dst: name_tree_next_root
      Src: /src/unbound/util/storage/dnstree.c:285,1
    - Dst: rbtree_find_less_equal
      Src: /src/unbound/util/storage/dnstree.c:296,1
    - Dst: rbtree_next
      Src: /src/unbound/util/storage/dnstree.c:303,1
    - Dst: dname_is_root
      Src: /src/unbound/util/storage/dnstree.c:307,1
    - Dst: name_tree_next_root
      Src: /src/unbound/util/storage/dnstree.c:313,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 35
    argCount: 2
    argNames:
    - tree
    - dclass
    argTypes:
    - rbtree_type*
    - uint16_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 315
      start: 267
    functionDepth: 2
    functionLinenumber: 267
    functionLinenumberEnd: 315
    functionName: name_tree_next_root
    functionSourceFile: /src/unbound/util/storage/dnstree.c
    functionUses: 2
    functionsReached:
    - rbtree_find_less_equal
    - dname_is_root
    - name_tree_next_root
    - rbtree_first
    - rbtree_next
    linkageType: ''
    returnType: int
    signature: int name_tree_next_root(rbtree_type* tree, uint16_t* dclass)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_init
      Src: /src/unbound/util/storage/lruhash.c:55,1
    - Dst: lock_protect
      Src: /src/unbound/util/storage/lruhash.c:56,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - array
    - size
    argTypes:
    - struct lruhash_bin*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 47
    functionDepth: 1
    functionLinenumber: 47
    functionLinenumberEnd: 59
    functionName: bin_init
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 1
    functionsReached:
    - lock_protect
    - lock_quick_init
    linkageType: ''
    returnType: void
    signature: void bin_init(struct lruhash_bin* array, size_t size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/storage/lruhash.c:67,1
    - Dst: lock_quick_init
      Src: /src/unbound/util/storage/lruhash.c:71,1
    - Dst: calloc
      Src: /src/unbound/util/storage/lruhash.c:85,1
    - Dst: lock_quick_destroy
      Src: /src/unbound/util/storage/lruhash.c:87,1
    - Dst: free
      Src: /src/unbound/util/storage/lruhash.c:88,1
    - Dst: bin_init
      Src: /src/unbound/util/storage/lruhash.c:91,1
    - Dst: lock_protect
      Src: /src/unbound/util/storage/lruhash.c:92,1
    - Dst: lock_protect
      Src: /src/unbound/util/storage/lruhash.c:93,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 27
    argCount: 7
    argNames:
    - start_size
    - maxmem
    - sizefunc
    - compfunc
    - delkeyfunc
    - deldatafunc
    - arg
    argTypes:
    - size_t
    - size_t
    - lruhash_sizefunc_type
    - lruhash_compfunc_type
    - lruhash_delkeyfunc_type
    - lruhash_deldatafunc_type
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 61
    functionDepth: 2
    functionLinenumber: 61
    functionLinenumberEnd: 96
    functionName: lruhash_create
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 1
    functionsReached:
    - bin_init
    - lock_quick_destroy
    - free
    - lock_protect
    - calloc
    - lock_quick_init
    linkageType: ''
    returnType: struct lruhash
    signature: "struct lruhash * \nlruhash_create(size_t start_size, size_t maxmem,\n\tlruhash_sizefunc_type
      sizefunc, lruhash_compfunc_type compfunc,\n\tlruhash_delkeyfunc_type delkeyfunc,\n\tlruhash_deldatafunc_type
      deldatafunc, void* arg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_destroy
      Src: /src/unbound/util/storage/lruhash.c:105,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 2
    argNames:
    - table
    - bin
    argTypes:
    - struct lruhash*
    - struct lruhash_bin*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 98
    functionDepth: 0
    functionLinenumber: 98
    functionLinenumberEnd: 115
    functionName: bin_delete
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 0
    functionsReached:
    - lock_quick_destroy
    linkageType: ''
    returnType: void
    signature: void bin_delete(struct lruhash* table, struct lruhash_bin* bin)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:134,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:137,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:138,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:147,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:148,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:149,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 17
    argCount: 3
    argNames:
    - table
    - newa
    - newmask
    argTypes:
    - struct lruhash*
    - struct lruhash_bin*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 151
    functionName: bin_split
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 0
    functionsReached:
    - lock_quick_unlock
    - lock_quick_lock
    linkageType: ''
    returnType: void
    signature: "void bin_split(struct lruhash* table, struct lruhash_bin* newa, \n\tint
      newmask)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_destroy
      Src: /src/unbound/util/storage/lruhash.c:160,1
    - Dst: bin_delete
      Src: /src/unbound/util/storage/lruhash.c:162,1
    - Dst: free
      Src: /src/unbound/util/storage/lruhash.c:163,1
    - Dst: free
      Src: /src/unbound/util/storage/lruhash.c:164,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct lruhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 153
    functionDepth: 1
    functionLinenumber: 153
    functionLinenumberEnd: 165
    functionName: lruhash_delete
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 1
    functionsReached:
    - free
    - bin_delete
    - lock_quick_destroy
    linkageType: ''
    returnType: void
    signature: void lruhash_delete(struct lruhash* table)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - bin
    - entry
    argTypes:
    - struct lruhash_bin*
    - struct lruhash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 180
      start: 167
    functionDepth: 0
    functionLinenumber: 167
    functionLinenumberEnd: 180
    functionName: bin_overflow_remove
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void bin_overflow_remove(struct lruhash_bin* bin, struct lruhash_entry*
      entry)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/storage/lruhash.c:187,1
    - Dst: log_assert
      Src: /src/unbound/util/storage/lruhash.c:199,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:205,1
    - Dst: bin_overflow_remove
      Src: /src/unbound/util/storage/lruhash.c:206,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/storage/lruhash.c:209,1
    - Dst: struct lruhash*::sizefunc
      Src: /src/unbound/util/storage/lruhash.c:210,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/storage/lruhash.c:213,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:214,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 20
    argCount: 2
    argNames:
    - table
    - list
    argTypes:
    - struct lruhash*
    - struct lruhash_entry**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 182
    functionDepth: 2
    functionLinenumber: 182
    functionLinenumberEnd: 216
    functionName: reclaim_space
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 0
    functionsReached:
    - struct lruhash*::sizefunc
    - lock_rw_wrlock
    - lock_rw_unlock
    - lock_quick_unlock
    - lock_quick_lock
    - log_assert
    - bin_overflow_remove
    linkageType: ''
    returnType: void
    signature: void reclaim_space(struct lruhash* table, struct lruhash_entry** list)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: struct lruhash*::compfunc
      Src: /src/unbound/util/storage/lruhash.c:225,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 10
    argCount: 5
    argNames:
    - table
    - bin
    - hash
    - key
    - collisions
    argTypes:
    - struct lruhash*
    - struct lruhash_bin*
    - hashvalue_type
    - void*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 233
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 233
    functionName: bin_find_entry
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 2
    functionsReached:
    - struct lruhash*::compfunc
    linkageType: ''
    returnType: struct lruhash_entry
    signature: "struct lruhash_entry * \nbin_find_entry(struct lruhash* table, \n\tstruct
      lruhash_bin* bin, hashvalue_type hash, void* key, size_t* collisions)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/util/storage/lruhash.c:242,1
    - Dst: calloc
      Src: /src/unbound/util/storage/lruhash.c:246,1
    - Dst: log_err
      Src: /src/unbound/util/storage/lruhash.c:248,1
    - Dst: bin_init
      Src: /src/unbound/util/storage/lruhash.c:252,1
    - Dst: bin_split
      Src: /src/unbound/util/storage/lruhash.c:254,1
    - Dst: lock_unprotect
      Src: /src/unbound/util/storage/lruhash.c:256,1
    - Dst: lock_quick_destroy
      Src: /src/unbound/util/storage/lruhash.c:258,1
    - Dst: free
      Src: /src/unbound/util/storage/lruhash.c:260,1
    - Dst: lock_protect
      Src: /src/unbound/util/storage/lruhash.c:265,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 23
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct lruhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 268
      start: 235
    functionDepth: 7
    functionLinenumber: 235
    functionLinenumberEnd: 268
    functionName: table_grow
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 0
    functionsReached:
    - log_err
    - bin_init
    - lock_unprotect
    - lock_quick_destroy
    - free
    - lock_protect
    - calloc
    - bin_split
    linkageType: ''
    returnType: void
    signature: void table_grow(struct lruhash* table)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - table
    - entry
    argTypes:
    - struct lruhash*
    - struct lruhash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 279
      start: 270
    functionDepth: 0
    functionLinenumber: 270
    functionLinenumberEnd: 279
    functionName: lru_front
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lru_front(struct lruhash* table, struct lruhash_entry* entry)
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 2
    argNames:
    - table
    - entry
    argTypes:
    - struct lruhash*
    - struct lruhash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 281
    functionDepth: 0
    functionLinenumber: 281
    functionLinenumberEnd: 290
    functionName: lru_remove
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void lru_remove(struct lruhash* table, struct lruhash_entry* entry)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/storage/lruhash.c:295,1
    - Dst: lru_remove
      Src: /src/unbound/util/storage/lruhash.c:299,1
    - Dst: lru_front
      Src: /src/unbound/util/storage/lruhash.c:301,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - table
    - entry
    argTypes:
    - struct lruhash*
    - struct lruhash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 292
    functionDepth: 1
    functionLinenumber: 292
    functionLinenumberEnd: 302
    functionName: lru_touch
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 5
    functionsReached:
    - lru_remove
    - log_assert
    - lru_front
    linkageType: ''
    returnType: void
    signature: void lru_touch(struct lruhash* table, struct lruhash_entry* entry)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:312,1
    - Dst: fptr_whitelist_hash_sizefunc
      Src: /src/unbound/util/storage/lruhash.c:312,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:313,1
    - Dst: fptr_whitelist_hash_delkeyfunc
      Src: /src/unbound/util/storage/lruhash.c:313,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:314,1
    - Dst: fptr_whitelist_hash_deldatafunc
      Src: /src/unbound/util/storage/lruhash.c:314,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:315,1
    - Dst: fptr_whitelist_hash_compfunc
      Src: /src/unbound/util/storage/lruhash.c:315,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:316,1
    - Dst: fptr_whitelist_hash_markdelfunc
      Src: /src/unbound/util/storage/lruhash.c:316,1
    - Dst: struct lruhash*::sizefunc
      Src: /src/unbound/util/storage/lruhash.c:317,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:321,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:323,1
    - Dst: bin_find_entry
      Src: /src/unbound/util/storage/lruhash.c:326,1
    - Dst: lru_front
      Src: /src/unbound/util/storage/lruhash.c:330,1
    - Dst: lru_touch
      Src: /src/unbound/util/storage/lruhash.c:340,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/storage/lruhash.c:341,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/storage/lruhash.c:344,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:346,1
    - Dst: reclaim_space
      Src: /src/unbound/util/storage/lruhash.c:348,1
    - Dst: table_grow
      Src: /src/unbound/util/storage/lruhash.c:350,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:351,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 40
    argCount: 5
    argNames:
    - table
    - hash
    - entry
    - data
    - cb_arg
    argTypes:
    - struct lruhash*
    - hashvalue_type
    - struct lruhash_entry*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 361
      start: 304
    functionDepth: 8
    functionLinenumber: 304
    functionLinenumberEnd: 361
    functionName: lruhash_insert
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 3
    functionsReached:
    - struct lruhash*::sizefunc
    - reclaim_space
    - table_grow
    - lru_touch
    - fptr_whitelist_hash_markdelfunc
    - fptr_whitelist_hash_compfunc
    - lock_rw_wrlock
    - bin_find_entry
    - lock_rw_unlock
    - fptr_whitelist_hash_sizefunc
    - fptr_ok
    - lru_front
    - lock_quick_unlock
    - lock_quick_lock
    - fptr_whitelist_hash_delkeyfunc
    - fptr_whitelist_hash_deldatafunc
    linkageType: ''
    returnType: void
    signature: "void lruhash_insert(struct lruhash* table, hashvalue_type hash,\n
      \       struct lruhash_entry* entry, void* data, void* cb_arg)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:368,1
    - Dst: fptr_whitelist_hash_compfunc
      Src: /src/unbound/util/storage/lruhash.c:368,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:370,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:372,1
    - Dst: bin_find_entry
      Src: /src/unbound/util/storage/lruhash.c:373,1
    - Dst: lru_touch
      Src: /src/unbound/util/storage/lruhash.c:374,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:375,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/storage/lruhash.c:378,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/util/storage/lruhash.c:379,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:381,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 4
    argNames:
    - table
    - hash
    - key
    - wr
    argTypes:
    - struct lruhash*
    - hashvalue_type
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 363
    functionDepth: 2
    functionLinenumber: 363
    functionLinenumberEnd: 383
    functionName: lruhash_lookup
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 3
    functionsReached:
    - lru_touch
    - lock_rw_wrlock
    - fptr_whitelist_hash_compfunc
    - bin_find_entry
    - fptr_ok
    - lock_quick_unlock
    - lock_quick_lock
    - lock_rw_rdlock
    linkageType: ''
    returnType: struct lruhash_entry
    signature: "struct lruhash_entry * \nlruhash_lookup(struct lruhash* table, hashvalue_type
      hash, void* key, int wr)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:391,1
    - Dst: fptr_whitelist_hash_sizefunc
      Src: /src/unbound/util/storage/lruhash.c:391,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:392,1
    - Dst: fptr_whitelist_hash_delkeyfunc
      Src: /src/unbound/util/storage/lruhash.c:392,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:393,1
    - Dst: fptr_whitelist_hash_deldatafunc
      Src: /src/unbound/util/storage/lruhash.c:393,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:394,1
    - Dst: fptr_whitelist_hash_compfunc
      Src: /src/unbound/util/storage/lruhash.c:394,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:395,1
    - Dst: fptr_whitelist_hash_markdelfunc
      Src: /src/unbound/util/storage/lruhash.c:395,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:397,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:399,1
    - Dst: bin_find_entry
      Src: /src/unbound/util/storage/lruhash.c:400,1
    - Dst: bin_overflow_remove
      Src: /src/unbound/util/storage/lruhash.c:401,1
    - Dst: lru_remove
      Src: /src/unbound/util/storage/lruhash.c:402,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:404,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:405,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/storage/lruhash.c:410,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/storage/lruhash.c:413,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:414,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:415,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 28
    argCount: 3
    argNames:
    - table
    - hash
    - key
    argTypes:
    - struct lruhash*
    - hashvalue_type
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 420
      start: 385
    functionDepth: 1
    functionLinenumber: 385
    functionLinenumberEnd: 420
    functionName: lruhash_remove
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 3
    functionsReached:
    - fptr_whitelist_hash_markdelfunc
    - fptr_whitelist_hash_compfunc
    - lru_remove
    - bin_find_entry
    - lock_rw_wrlock
    - fptr_whitelist_hash_sizefunc
    - fptr_ok
    - lock_quick_unlock
    - lock_rw_unlock
    - lock_quick_lock
    - bin_overflow_remove
    - fptr_whitelist_hash_delkeyfunc
    - fptr_whitelist_hash_deldatafunc
    linkageType: ''
    returnType: void
    signature: void lruhash_remove(struct lruhash* table, hashvalue_type hash, void*
      key)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:428,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/storage/lruhash.c:431,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/storage/lruhash.c:436,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:442,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 2
    argNames:
    - table
    - bin
    argTypes:
    - struct lruhash*
    - struct lruhash_bin*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 443
      start: 423
    functionDepth: 0
    functionLinenumber: 423
    functionLinenumberEnd: 443
    functionName: bin_clear
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 0
    functionsReached:
    - lock_quick_unlock
    - lock_rw_wrlock
    - lock_rw_unlock
    - lock_quick_lock
    linkageType: ''
    returnType: void
    signature: void bin_clear(struct lruhash* table, struct lruhash_bin* bin)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:451,1
    - Dst: fptr_whitelist_hash_delkeyfunc
      Src: /src/unbound/util/storage/lruhash.c:451,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:452,1
    - Dst: fptr_whitelist_hash_deldatafunc
      Src: /src/unbound/util/storage/lruhash.c:452,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:453,1
    - Dst: fptr_whitelist_hash_markdelfunc
      Src: /src/unbound/util/storage/lruhash.c:453,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:455,1
    - Dst: bin_clear
      Src: /src/unbound/util/storage/lruhash.c:457,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:463,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct lruhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 464
      start: 445
    functionDepth: 1
    functionLinenumber: 445
    functionLinenumberEnd: 464
    functionName: lruhash_clear
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 1
    functionsReached:
    - fptr_whitelist_hash_markdelfunc
    - bin_clear
    - fptr_ok
    - lock_quick_unlock
    - lock_quick_lock
    - fptr_whitelist_hash_delkeyfunc
    - fptr_whitelist_hash_deldatafunc
    linkageType: ''
    returnType: void
    signature: void lruhash_clear(struct lruhash* table)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:469,1
    - Dst: log_info
      Src: /src/unbound/util/storage/lruhash.c:470,1
    - Dst: log_info
      Src: /src/unbound/util/storage/lruhash.c:473,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:482,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:488,1
    - Dst: log_info
      Src: /src/unbound/util/storage/lruhash.c:490,1
    - Dst: log_info
      Src: /src/unbound/util/storage/lruhash.c:494,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:497,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - table
    - id
    - extended
    argTypes:
    - struct lruhash*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 466
    functionDepth: 7
    functionLinenumber: 466
    functionLinenumberEnd: 498
    functionName: lruhash_status
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 3
    functionsReached:
    - lock_quick_unlock
    - log_info
    - lock_quick_lock
    linkageType: ''
    returnType: void
    signature: void lruhash_status(struct lruhash* table, const char* id, int extended)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:504,1
    - Dst: lock_get_mem
      Src: /src/unbound/util/storage/lruhash.c:511,1
    - Dst: lock_get_mem
      Src: /src/unbound/util/storage/lruhash.c:516,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:518,1
    - Dst: lock_get_mem
      Src: /src/unbound/util/storage/lruhash.c:519,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 12
    argCount: 1
    argNames:
    - table
    argTypes:
    - struct lruhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 521
      start: 500
    functionDepth: 0
    functionLinenumber: 500
    functionLinenumberEnd: 521
    functionName: lruhash_get_mem
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 0
    functionsReached:
    - lock_quick_unlock
    - lock_get_mem
    - lock_quick_lock
    linkageType: ''
    returnType: size_t
    signature: size_t lruhash_get_mem(struct lruhash* table)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:526,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:528,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 2
    argNames:
    - table
    - md
    argTypes:
    - struct lruhash*
    - lruhash_markdelfunc_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 529
      start: 523
    functionDepth: 0
    functionLinenumber: 523
    functionLinenumberEnd: 529
    functionName: lruhash_setmarkdel
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 0
    functionsReached:
    - lock_quick_unlock
    - lock_quick_lock
    linkageType: ''
    returnType: void
    signature: void lruhash_setmarkdel(struct lruhash* table, lruhash_markdelfunc_type
      md)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:536,1
    - Dst: fptr_whitelist_hash_sizefunc
      Src: /src/unbound/util/storage/lruhash.c:536,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:537,1
    - Dst: fptr_whitelist_hash_delkeyfunc
      Src: /src/unbound/util/storage/lruhash.c:537,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:538,1
    - Dst: fptr_whitelist_hash_deldatafunc
      Src: /src/unbound/util/storage/lruhash.c:538,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:539,1
    - Dst: fptr_whitelist_hash_markdelfunc
      Src: /src/unbound/util/storage/lruhash.c:539,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:544,1
    - Dst: reclaim_space
      Src: /src/unbound/util/storage/lruhash.c:551,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:553,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 19
    argCount: 3
    argNames:
    - table
    - cb_arg
    - diff_size
    argTypes:
    - struct lruhash*
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 563
      start: 531
    functionDepth: 3
    functionLinenumber: 531
    functionLinenumberEnd: 563
    functionName: lruhash_update_space_used
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 0
    functionsReached:
    - reclaim_space
    - fptr_whitelist_hash_markdelfunc
    - fptr_whitelist_hash_sizefunc
    - fptr_ok
    - lock_quick_unlock
    - lock_quick_lock
    - fptr_whitelist_hash_delkeyfunc
    - fptr_whitelist_hash_deldatafunc
    linkageType: ''
    returnType: void
    signature: void lruhash_update_space_used(struct lruhash* table, void* cb_arg,
      int diff_size)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:569,1
    - Dst: fptr_whitelist_hash_sizefunc
      Src: /src/unbound/util/storage/lruhash.c:569,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:570,1
    - Dst: fptr_whitelist_hash_delkeyfunc
      Src: /src/unbound/util/storage/lruhash.c:570,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:571,1
    - Dst: fptr_whitelist_hash_deldatafunc
      Src: /src/unbound/util/storage/lruhash.c:571,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:572,1
    - Dst: fptr_whitelist_hash_markdelfunc
      Src: /src/unbound/util/storage/lruhash.c:572,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:577,1
    - Dst: reclaim_space
      Src: /src/unbound/util/storage/lruhash.c:581,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:583,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 17
    argCount: 3
    argNames:
    - table
    - cb_arg
    - max
    argTypes:
    - struct lruhash*
    - void*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 593
      start: 565
    functionDepth: 3
    functionLinenumber: 565
    functionLinenumberEnd: 593
    functionName: lruhash_update_space_max
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 0
    functionsReached:
    - reclaim_space
    - fptr_whitelist_hash_markdelfunc
    - fptr_whitelist_hash_sizefunc
    - fptr_ok
    - lock_quick_unlock
    - lock_quick_lock
    - fptr_whitelist_hash_delkeyfunc
    - fptr_whitelist_hash_deldatafunc
    linkageType: ''
    returnType: void
    signature: void lruhash_update_space_max(struct lruhash* table, void* cb_arg,
      size_t max)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:602,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:604,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/storage/lruhash.c:607,1
    - Dst: lock_rw_rdlock
      Src: /src/unbound/util/storage/lruhash.c:609,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/util/storage/lruhash.c:612,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:614,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:616,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 3
    argNames:
    - h
    - wr
    - arg
    argTypes:
    - struct lruhash*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 617
      start: 595
    functionDepth: 0
    functionLinenumber: 595
    functionLinenumberEnd: 617
    functionName: lruhash_traverse
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 0
    functionsReached:
    - lock_rw_wrlock
    - lock_rw_unlock
    - lock_quick_unlock
    - lock_quick_lock
    - lock_rw_rdlock
    linkageType: ''
    returnType: void
    signature: "void lruhash_traverse(struct lruhash* h, int wr, \n\tvoid (*func)(struct
      lruhash_entry*, void*), void* arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/util/storage/lruhash.c:627,1
    - Dst: lru_remove
      Src: /src/unbound/util/storage/lruhash.c:631,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - table
    - entry
    argTypes:
    - struct lruhash*
    - struct lruhash_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 645
      start: 624
    functionDepth: 1
    functionLinenumber: 624
    functionLinenumberEnd: 645
    functionName: lru_demote
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 0
    functionsReached:
    - lru_remove
    - log_assert
    linkageType: ''
    returnType: void
    signature: void lru_demote(struct lruhash* table, struct lruhash_entry* entry)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:655,1
    - Dst: fptr_whitelist_hash_sizefunc
      Src: /src/unbound/util/storage/lruhash.c:655,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:656,1
    - Dst: fptr_whitelist_hash_delkeyfunc
      Src: /src/unbound/util/storage/lruhash.c:656,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:657,1
    - Dst: fptr_whitelist_hash_deldatafunc
      Src: /src/unbound/util/storage/lruhash.c:657,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:658,1
    - Dst: fptr_whitelist_hash_compfunc
      Src: /src/unbound/util/storage/lruhash.c:658,1
    - Dst: fptr_ok
      Src: /src/unbound/util/storage/lruhash.c:659,1
    - Dst: fptr_whitelist_hash_markdelfunc
      Src: /src/unbound/util/storage/lruhash.c:659,1
    - Dst: struct lruhash*::sizefunc
      Src: /src/unbound/util/storage/lruhash.c:660,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:664,1
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/lruhash.c:666,1
    - Dst: bin_find_entry
      Src: /src/unbound/util/storage/lruhash.c:669,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/storage/lruhash.c:671,1
    - Dst: lru_front
      Src: /src/unbound/util/storage/lruhash.c:678,1
    - Dst: lock_rw_wrlock
      Src: /src/unbound/util/storage/lruhash.c:685,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:687,1
    - Dst: reclaim_space
      Src: /src/unbound/util/storage/lruhash.c:689,1
    - Dst: table_grow
      Src: /src/unbound/util/storage/lruhash.c:691,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/lruhash.c:692,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 37
    argCount: 5
    argNames:
    - table
    - hash
    - entry
    - data
    - cb_arg
    argTypes:
    - struct lruhash*
    - hashvalue_type
    - struct lruhash_entry*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 705
      start: 647
    functionDepth: 8
    functionLinenumber: 647
    functionLinenumberEnd: 705
    functionName: lruhash_insert_or_retrieve
    functionSourceFile: /src/unbound/util/storage/lruhash.c
    functionUses: 0
    functionsReached:
    - struct lruhash*::sizefunc
    - reclaim_space
    - table_grow
    - fptr_whitelist_hash_markdelfunc
    - fptr_whitelist_hash_compfunc
    - lock_rw_wrlock
    - bin_find_entry
    - fptr_whitelist_hash_sizefunc
    - fptr_ok
    - lru_front
    - lock_quick_unlock
    - lock_quick_lock
    - fptr_whitelist_hash_delkeyfunc
    - fptr_whitelist_hash_deldatafunc
    linkageType: ''
    returnType: struct lruhash_entry
    signature: "struct lruhash_entry *\nlruhash_insert_or_retrieve(struct lruhash*
      table, hashvalue_type hash,\n\tstruct lruhash_entry* entry, void* data, void*
      cb_arg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/util/storage/slabhash.c:54,1
    - Dst: log_assert
      Src: /src/unbound/util/storage/slabhash.c:58,1
    - Dst: calloc
      Src: /src/unbound/util/storage/slabhash.c:59,1
    - Dst: free
      Src: /src/unbound/util/storage/slabhash.c:61,1
    - Dst: log_assert
      Src: /src/unbound/util/storage/slabhash.c:68,1
    - Dst: lruhash_create
      Src: /src/unbound/util/storage/slabhash.c:77,1
    - Dst: slabhash_delete
      Src: /src/unbound/util/storage/slabhash.c:80,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 29
    argCount: 8
    argNames:
    - numtables
    - start_size
    - maxmem
    - sizefunc
    - compfunc
    - delkeyfunc
    - deldatafunc
    - arg
    argTypes:
    - size_t
    - size_t
    - size_t
    - lruhash_sizefunc_type
    - lruhash_compfunc_type
    - lruhash_delkeyfunc_type
    - lruhash_deldatafunc_type
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 85
      start: 48
    functionDepth: 3
    functionLinenumber: 48
    functionLinenumberEnd: 85
    functionName: slabhash_create
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 7
    functionsReached:
    - free
    - calloc
    - log_assert
    - lruhash_create
    - slabhash_delete
    linkageType: ''
    returnType: struct slabhash
    signature: "struct slabhash * slabhash_create(size_t numtables, size_t start_size,
      \n\tsize_t maxmem, lruhash_sizefunc_type sizefunc, \n\tlruhash_compfunc_type
      compfunc, lruhash_delkeyfunc_type delkeyfunc, \n\tlruhash_deldatafunc_type deldatafunc,
      void* arg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: lruhash_delete
      Src: /src/unbound/util/storage/slabhash.c:94,1
    - Dst: free
      Src: /src/unbound/util/storage/slabhash.c:95,1
    - Dst: free
      Src: /src/unbound/util/storage/slabhash.c:97,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 1
    argNames:
    - sl
    argTypes:
    - struct slabhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 98
      start: 87
    functionDepth: 2
    functionLinenumber: 87
    functionLinenumberEnd: 98
    functionName: slabhash_delete
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 11
    functionsReached:
    - free
    - lruhash_delete
    linkageType: ''
    returnType: void
    signature: void slabhash_delete(struct slabhash* sl)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: lruhash_clear
      Src: /src/unbound/util/storage/slabhash.c:106,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - sl
    argTypes:
    - struct slabhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 107
      start: 100
    functionDepth: 2
    functionLinenumber: 100
    functionLinenumberEnd: 107
    functionName: slabhash_clear
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 6
    functionsReached:
    - lruhash_clear
    linkageType: ''
    returnType: void
    signature: void slabhash_clear(struct slabhash* sl)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sl
    - hash
    argTypes:
    - struct slabhash*
    - hashvalue_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 114
      start: 110
    functionDepth: 0
    functionLinenumber: 110
    functionLinenumberEnd: 114
    functionName: slab_idx
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: unsigned int
    signature: unsigned int slab_idx(struct slabhash* sl, hashvalue_type hash)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lruhash_insert
      Src: /src/unbound/util/storage/slabhash.c:119,1
    - Dst: slab_idx
      Src: /src/unbound/util/storage/slabhash.c:119,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - sl
    - hash
    - entry
    - data
    - arg
    argTypes:
    - struct slabhash*
    - hashvalue_type
    - struct lruhash_entry*
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 120
      start: 116
    functionDepth: 9
    functionLinenumber: 116
    functionLinenumberEnd: 120
    functionName: slabhash_insert
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 13
    functionsReached:
    - slab_idx
    - lruhash_insert
    linkageType: ''
    returnType: void
    signature: "void slabhash_insert(struct slabhash* sl, hashvalue_type hash, \n\tstruct
      lruhash_entry* entry, void* data, void* arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lruhash_lookup
      Src: /src/unbound/util/storage/slabhash.c:125,1
    - Dst: slab_idx
      Src: /src/unbound/util/storage/slabhash.c:125,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - sl
    - hash
    - key
    - wr
    argTypes:
    - struct slabhash*
    - hashvalue_type
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 126
      start: 122
    functionDepth: 3
    functionLinenumber: 122
    functionLinenumberEnd: 126
    functionName: slabhash_lookup
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 19
    functionsReached:
    - slab_idx
    - lruhash_lookup
    linkageType: ''
    returnType: struct lruhash_entry
    signature: "struct lruhash_entry * slabhash_lookup(struct slabhash* sl, \n\thashvalue_type
      hash, void* key, int wr)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lruhash_remove
      Src: /src/unbound/util/storage/slabhash.c:130,1
    - Dst: slab_idx
      Src: /src/unbound/util/storage/slabhash.c:130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - sl
    - hash
    - key
    argTypes:
    - struct slabhash*
    - hashvalue_type
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 131
      start: 128
    functionDepth: 2
    functionLinenumber: 128
    functionLinenumberEnd: 131
    functionName: slabhash_remove
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 8
    functionsReached:
    - slab_idx
    - lruhash_remove
    linkageType: ''
    returnType: void
    signature: void slabhash_remove(struct slabhash* sl, hashvalue_type hash, void*
      key)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_info
      Src: /src/unbound/util/storage/slabhash.c:137,1
    - Dst: snprintf
      Src: /src/unbound/util/storage/slabhash.c:140,1
    - Dst: lruhash_status
      Src: /src/unbound/util/storage/slabhash.c:141,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - sl
    - id
    - extended
    argTypes:
    - struct slabhash*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 143
      start: 133
    functionDepth: 8
    functionLinenumber: 133
    functionLinenumberEnd: 143
    functionName: slabhash_status
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 3
    functionsReached:
    - snprintf
    - log_info
    - lruhash_status
    linkageType: ''
    returnType: void
    signature: void slabhash_status(struct slabhash* sl, const char* id, int extended)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/slabhash.c:149,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/slabhash.c:151,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - sl
    argTypes:
    - struct slabhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 154
      start: 145
    functionDepth: 0
    functionLinenumber: 145
    functionLinenumberEnd: 154
    functionName: slabhash_get_size
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 0
    functionsReached:
    - lock_quick_unlock
    - lock_quick_lock
    linkageType: ''
    returnType: size_t
    signature: size_t slabhash_get_size(struct slabhash* sl)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: slabhash_get_size
      Src: /src/unbound/util/storage/slabhash.c:164,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 3
    argNames:
    - sl
    - size
    - slabs
    argTypes:
    - struct slabhash*
    - size_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 156
    functionDepth: 1
    functionLinenumber: 156
    functionLinenumberEnd: 167
    functionName: slabhash_is_size
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 4
    functionsReached:
    - slabhash_get_size
    linkageType: ''
    returnType: int
    signature: int slabhash_is_size(struct slabhash* sl, size_t size, size_t slabs)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lruhash_update_space_used
      Src: /src/unbound/util/storage/slabhash.c:172,1
    - Dst: slab_idx
      Src: /src/unbound/util/storage/slabhash.c:172,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 4
    argNames:
    - sl
    - hash
    - cb_arg
    - diff_size
    argTypes:
    - struct slabhash*
    - hashvalue_type
    - void*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 174
      start: 169
    functionDepth: 4
    functionLinenumber: 169
    functionLinenumberEnd: 174
    functionName: slabhash_update_space_used
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 1
    functionsReached:
    - lruhash_update_space_used
    - slab_idx
    linkageType: ''
    returnType: void
    signature: "void slabhash_update_space_used(struct slabhash* sl, hashvalue_type
      hash,\n\tvoid* cb_arg, int diff_size)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lruhash_get_mem
      Src: /src/unbound/util/storage/slabhash.c:181,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - sl
    argTypes:
    - struct slabhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 184
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 184
    functionName: slabhash_get_mem
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 5
    functionsReached:
    - lruhash_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t slabhash_get_mem(struct slabhash* sl)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: slab_idx
      Src: /src/unbound/util/storage/slabhash.c:188,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - sl
    - hash
    argTypes:
    - struct slabhash*
    - hashvalue_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 189
      start: 186
    functionDepth: 1
    functionLinenumber: 186
    functionLinenumberEnd: 189
    functionName: slabhash_gettable
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 1
    functionsReached:
    - slab_idx
    linkageType: ''
    returnType: struct lruhash
    signature: struct lruhash * slabhash_gettable(struct slabhash* sl, hashvalue_type
      hash)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/util/storage/slabhash.c:194,1
    - Dst: free
      Src: /src/unbound/util/storage/slabhash.c:194,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - k
    argTypes:
    - struct slabhash_testkey*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 194
      start: 193
    functionDepth: 1
    functionLinenumber: 193
    functionLinenumberEnd: 194
    functionName: delkey
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 10
    functionsReached:
    - free
    - lock_rw_destroy
    linkageType: ''
    returnType: void
    signature: void delkey(struct slabhash_testkey* k)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/util/storage/slabhash.c:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - d
    argTypes:
    - struct slabhash_testdata*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 196
      start: 196
    functionDepth: 1
    functionLinenumber: 196
    functionLinenumberEnd: 196
    functionName: deldata
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 1
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void deldata(struct slabhash_testdata* d)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED(key)
    - ATTR_UNUSED(data)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 198
    functionDepth: 0
    functionLinenumber: 198
    functionLinenumberEnd: 202
    functionName: test_slabhash_sizefunc
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 3
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t test_slabhash_sizefunc(void* ATTR_UNUSED(key), void* ATTR_UNUSED(data))
  - BBCount: 3
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - key1
    - key2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 204
    functionDepth: 0
    functionLinenumber: 204
    functionLinenumberEnd: 213
    functionName: test_slabhash_compfunc
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int test_slabhash_compfunc(void* key1, void* key2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: delkey
      Src: /src/unbound/util/storage/slabhash.c:217,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - key
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 218
    functionName: test_slabhash_delkey
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 0
    functionsReached:
    - delkey
    linkageType: ''
    returnType: void
    signature: void test_slabhash_delkey(void* key, void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: deldata
      Src: /src/unbound/util/storage/slabhash.c:222,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - data
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 223
    functionName: test_slabhash_deldata
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 0
    functionsReached:
    - deldata
    linkageType: ''
    returnType: void
    signature: void test_slabhash_deldata(void* data, void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lruhash_setmarkdel
      Src: /src/unbound/util/storage/slabhash.c:229,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - sl
    - md
    argTypes:
    - struct slabhash*
    - lruhash_markdelfunc_type
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 231
    functionName: slabhash_setmarkdel
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 2
    functionsReached:
    - lruhash_setmarkdel
    linkageType: ''
    returnType: void
    signature: void slabhash_setmarkdel(struct slabhash* sl, lruhash_markdelfunc_type
      md)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lruhash_traverse
      Src: /src/unbound/util/storage/slabhash.c:238,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 3
    argCount: 3
    argNames:
    - sh
    - wr
    - arg
    argTypes:
    - struct slabhash*
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 239
      start: 233
    functionDepth: 1
    functionLinenumber: 233
    functionLinenumberEnd: 239
    functionName: slabhash_traverse
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 8
    functionsReached:
    - lruhash_traverse
    linkageType: ''
    returnType: void
    signature: "void slabhash_traverse(struct slabhash* sh, int wr,\n\tvoid (*func)(struct
      lruhash_entry*, void*), void* arg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/slabhash.c:246,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/slabhash.c:248,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 1
    argNames:
    - sh
    argTypes:
    - struct slabhash*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 251
      start: 241
    functionDepth: 0
    functionLinenumber: 241
    functionLinenumberEnd: 251
    functionName: count_slabhash_entries
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 1
    functionsReached:
    - lock_quick_unlock
    - lock_quick_lock
    linkageType: ''
    returnType: size_t
    signature: size_t count_slabhash_entries(struct slabhash* sh)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: lock_quick_lock
      Src: /src/unbound/util/storage/slabhash.c:258,1
    - Dst: lock_quick_unlock
      Src: /src/unbound/util/storage/slabhash.c:263,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 3
    argNames:
    - sh
    - num
    - collisions
    argTypes:
    - struct slabhash*
    - long long*
    - long long*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 269
      start: 253
    functionDepth: 0
    functionLinenumber: 253
    functionLinenumberEnd: 269
    functionName: get_slabhash_stats
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 1
    functionsReached:
    - lock_quick_unlock
    - lock_quick_lock
    linkageType: ''
    returnType: void
    signature: void get_slabhash_stats(struct slabhash* sh, long long* num, long long*
      collisions)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lruhash_update_space_max
      Src: /src/unbound/util/storage/slabhash.c:276,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - sl
    - max
    argTypes:
    - struct slabhash*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 271
    functionDepth: 4
    functionLinenumber: 271
    functionLinenumberEnd: 278
    functionName: slabhash_adjust_size
    functionSourceFile: /src/unbound/util/storage/slabhash.c
    functionUses: 1
    functionsReached:
    - lruhash_update_space_max
    linkageType: ''
    returnType: void
    signature: void slabhash_adjust_size(struct slabhash* sl, size_t max)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 116
    functionDepth: 0
    functionLinenumber: 116
    functionLinenumberEnd: 117
    functionName: hashsize
    functionSourceFile: /src/unbound/util/storage/lookup3.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hashsize(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - n
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 118
      start: 117
    functionDepth: 0
    functionLinenumber: 117
    functionLinenumberEnd: 118
    functionName: hashmask
    functionSourceFile: /src/unbound/util/storage/lookup3.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: hashmask(n)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - x
    - ','
    - k
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 119
      start: 118
    functionDepth: 0
    functionLinenumber: 118
    functionLinenumberEnd: 119
    functionName: rot
    functionSourceFile: /src/unbound/util/storage/lookup3.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: rot(x,k)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - v
    argTypes:
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 127
      start: 123
    functionDepth: 0
    functionLinenumber: 123
    functionLinenumberEnd: 127
    functionName: hash_set_raninit
    functionSourceFile: /src/unbound/util/storage/lookup3.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void hash_set_raninit(uint32_t v)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 173
    functionDepth: 0
    functionLinenumber: 173
    functionLinenumberEnd: 182
    functionName: mix
    functionSourceFile: /src/unbound/util/storage/lookup3.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: mix(a,b,c)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - a
    - ','
    - b
    - ','
    - c
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 208
    functionDepth: 0
    functionLinenumber: 208
    functionLinenumberEnd: 218
    functionName: final
    functionSourceFile: /src/unbound/util/storage/lookup3.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: final(a,b,c)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mix
      Src: /src/unbound/util/storage/lookup3.c:248,1
    - Dst: final
      Src: /src/unbound/util/storage/lookup3.c:263,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 16
    argCount: 3
    argNames:
    - k
    - length
    - initval
    argTypes:
    - uint32_t*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 271
      start: 232
    functionDepth: 1
    functionLinenumber: 232
    functionLinenumberEnd: 271
    functionName: hashword
    functionSourceFile: /src/unbound/util/storage/lookup3.c
    functionUses: 0
    functionsReached:
    - final
    - mix
    linkageType: ''
    returnType: uint32_t
    signature: 'uint32_t hashword(

      const uint32_t *k,                   /* the key, an array of uint32_t values
      */

      size_t          length,               /* the length of the key, in uint32_ts
      */

      uint32_t        initval)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: mix
      Src: /src/unbound/util/storage/lookup3.c:302,1
    - Dst: final
      Src: /src/unbound/util/storage/lookup3.c:317,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 18
    argCount: 4
    argNames:
    - k
    - length
    - pc
    - pb
    argTypes:
    - uint32_t*
    - size_t
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 325
      start: 284
    functionDepth: 1
    functionLinenumber: 284
    functionLinenumberEnd: 325
    functionName: hashword2
    functionSourceFile: /src/unbound/util/storage/lookup3.c
    functionUses: 0
    functionsReached:
    - final
    - mix
    linkageType: ''
    returnType: void
    signature: 'void hashword2 (

      const uint32_t *k,                   /* the key, an array of uint32_t values
      */

      size_t          length,               /* the length of the key, in uint32_ts
      */

      uint32_t       *pc,                      /* IN: seed OUT: primary hash value
      */

      uint32_t       *pb)'
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: mix
      Src: /src/unbound/util/storage/lookup3.c:377,1
    - Dst: mix
      Src: /src/unbound/util/storage/lookup3.c:459,1
    - Dst: mix
      Src: /src/unbound/util/storage/lookup3.c:524,1
    - Dst: final
      Src: /src/unbound/util/storage/lookup3.c:571,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 156
    argCount: 3
    argNames:
    - key
    - length
    - initval
    argTypes:
    - void*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 573
      start: 356
    functionDepth: 1
    functionLinenumber: 356
    functionLinenumberEnd: 573
    functionName: hashlittle
    functionSourceFile: /src/unbound/util/storage/lookup3.c
    functionUses: 8
    functionsReached:
    - final
    - mix
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hashlittle( const void *key, size_t length, uint32_t initval)
  - BBCount: 31
    BranchProfiles: []
    Callsites:
    - Dst: mix
      Src: /src/unbound/util/storage/lookup3.c:613,1
    - Dst: mix
      Src: /src/unbound/util/storage/lookup3.c:695,1
    - Dst: mix
      Src: /src/unbound/util/storage/lookup3.c:760,1
    - Dst: final
      Src: /src/unbound/util/storage/lookup3.c:807,1
    CyclomaticComplexity: 35
    EdgeCount: 35
    ICount: 166
    argCount: 4
    argNames:
    - key
    - length
    - pc
    - pb
    argTypes:
    - void*
    - size_t
    - uint32_t*
    - uint32_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 809
      start: 587
    functionDepth: 1
    functionLinenumber: 587
    functionLinenumberEnd: 809
    functionName: hashlittle2
    functionSourceFile: /src/unbound/util/storage/lookup3.c
    functionUses: 0
    functionsReached:
    - final
    - mix
    linkageType: ''
    returnType: void
    signature: "void hashlittle2( \n  const void *key,       /* the key to hash */\n
      \ size_t      length,    /* length of the key */\n  uint32_t   *pc,        /*
      IN: primary initval, OUT: primary hash */\n  uint32_t   *pb)"
  - BBCount: 22
    BranchProfiles: []
    Callsites:
    - Dst: mix
      Src: /src/unbound/util/storage/lookup3.c:842,1
    - Dst: mix
      Src: /src/unbound/util/storage/lookup3.c:932,1
    - Dst: final
      Src: /src/unbound/util/storage/lookup3.c:979,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 112
    argCount: 3
    argNames:
    - key
    - length
    - initval
    argTypes:
    - void*
    - size_t
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 821
    functionDepth: 1
    functionLinenumber: 821
    functionLinenumberEnd: 981
    functionName: hashbig
    functionSourceFile: /src/unbound/util/storage/lookup3.c
    functionUses: 0
    functionsReached:
    - final
    - mix
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t hashbig( const void *key, size_t length, uint32_t initval)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/unbound/util/storage/lookup3.c:995,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:999,1
    - Dst: time
      Src: /src/unbound/util/storage/lookup3.c:1001,1
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1002,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1003
      start: 988
    functionDepth: 2
    functionLinenumber: 988
    functionLinenumberEnd: 1003
    functionName: driver1
    functionSourceFile: /src/unbound/util/storage/lookup3.c
    functionUses: 0
    functionsReached:
    - hashlittle
    - time
    - printf
    linkageType: ''
    returnType: void
    signature: void driver1(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1018,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1040,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1043,1
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1060,1
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1061,1
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1063,1
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1072,1
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1073,1
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1076,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 53
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1077
      start: 1010
    functionDepth: 2
    functionLinenumber: 1010
    functionLinenumberEnd: 1077
    functionName: driver2
    functionSourceFile: /src/unbound/util/storage/lookup3.c
    functionUses: 0
    functionsReached:
    - hashlittle
    - printf
    linkageType: ''
    returnType: void
    signature: void driver2(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1094,1
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1095,1
    - Dst: hashword
      Src: /src/unbound/util/storage/lookup3.c:1096,1
    - Dst: hashword
      Src: /src/unbound/util/storage/lookup3.c:1097,1
    - Dst: hashword
      Src: /src/unbound/util/storage/lookup3.c:1098,1
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1100,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1101,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1101,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1102,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1102,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1103,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1103,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1104,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1104,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1105,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1105,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1106,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1106,1
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1108,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1109,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1109,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1110,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1110,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1111,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1111,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1112,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1112,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1113,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1113,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1114,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1114,1
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1116,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1117,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1117,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1118,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1118,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1119,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1119,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1120,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1120,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1121,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1121,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1122,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1122,1
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1124,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1125,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1125,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1126,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1126,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1127,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1127,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1128,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1128,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1129,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1129,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1130,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1130,1
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1131,1
    - Dst: hashlittle2
      Src: /src/unbound/util/storage/lookup3.c:1135,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1136,1
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1137,1
    - Dst: hashword2
      Src: /src/unbound/util/storage/lookup3.c:1142,1
    - Dst: hashword
      Src: /src/unbound/util/storage/lookup3.c:1143,1
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1144,1
    - Dst: hashword
      Src: /src/unbound/util/storage/lookup3.c:1145,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1156,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1159,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1160,1
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1163,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 37
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1168
      start: 1080
    functionDepth: 2
    functionLinenumber: 1080
    functionLinenumberEnd: 1168
    functionName: driver3
    functionSourceFile: /src/unbound/util/storage/lookup3.c
    functionUses: 0
    functionsReached:
    - hashlittle
    - printf
    - hashword2
    - hashword
    - hashlittle2
    linkageType: ''
    returnType: void
    signature: void driver3(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1179,1
    - Dst: hashlittle
      Src: /src/unbound/util/storage/lookup3.c:1182,1
    - Dst: printf
      Src: /src/unbound/util/storage/lookup3.c:1183,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1185
      start: 1171
    functionDepth: 2
    functionLinenumber: 1171
    functionLinenumberEnd: 1185
    functionName: driver4
    functionSourceFile: /src/unbound/util/storage/lookup3.c
    functionUses: 0
    functionsReached:
    - hashlittle
    - printf
    linkageType: ''
    returnType: void
    signature: void driver4(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: driver1
      Src: /src/unbound/util/storage/lookup3.c:1190,1
    - Dst: driver2
      Src: /src/unbound/util/storage/lookup3.c:1191,1
    - Dst: driver3
      Src: /src/unbound/util/storage/lookup3.c:1192,1
    - Dst: driver4
      Src: /src/unbound/util/storage/lookup3.c:1193,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1195
      start: 1188
    functionDepth: 3
    functionLinenumber: 1188
    functionLinenumberEnd: 1195
    functionName: main
    functionSourceFile: /src/unbound/util/storage/lookup3.c
    functionUses: 34
    functionsReached:
    - driver4
    - driver2
    - driver3
    - driver1
    linkageType: ''
    returnType: int
    signature: int main(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 4
    argNames:
    - d_sec
    - d_usec
    - end
    - start
    argTypes:
    - long long*
    - long long*
    - struct timeval*
    - struct timeval*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 80
      start: 67
    functionDepth: 0
    functionLinenumber: 67
    functionLinenumberEnd: 80
    functionName: stat_timeval_subtract
    functionSourceFile: /src/unbound/util/shm_side/shm_main.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: "void stat_timeval_subtract(long long *d_sec, long long *d_usec, const
      struct timeval* end,\n\tconst struct timeval* start)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: log_warn
      Src: /src/unbound/util/shm_side/shm_main.c:95,1
    - Dst: calloc
      Src: /src/unbound/util/shm_side/shm_main.c:101,1
    - Dst: log_err
      Src: /src/unbound/util/shm_side/shm_main.c:105,1
    - Dst: shmget
      Src: /src/unbound/util/shm_side/shm_main.c:112,1
    - Dst: shmget
      Src: /src/unbound/util/shm_side/shm_main.c:113,1
    - Dst: shmctl
      Src: /src/unbound/util/shm_side/shm_main.c:117,1
    - Dst: shmctl
      Src: /src/unbound/util/shm_side/shm_main.c:121,1
    - Dst: shmget
      Src: /src/unbound/util/shm_side/shm_main.c:124,1
    - Dst: log_err
      Src: /src/unbound/util/shm_side/shm_main.c:128,1
    - Dst: strerror
      Src: /src/unbound/util/shm_side/shm_main.c:129,1
    - Dst: free
      Src: /src/unbound/util/shm_side/shm_main.c:132,1
    - Dst: shmget
      Src: /src/unbound/util/shm_side/shm_main.c:138,1
    - Dst: log_err
      Src: /src/unbound/util/shm_side/shm_main.c:142,1
    - Dst: strerror
      Src: /src/unbound/util/shm_side/shm_main.c:143,1
    - Dst: free
      Src: /src/unbound/util/shm_side/shm_main.c:146,1
    - Dst: shmat
      Src: /src/unbound/util/shm_side/shm_main.c:154,1
    - Dst: log_err
      Src: /src/unbound/util/shm_side/shm_main.c:156,1
    - Dst: strerror
      Src: /src/unbound/util/shm_side/shm_main.c:157,1
    - Dst: free
      Src: /src/unbound/util/shm_side/shm_main.c:160,1
    - Dst: shmat
      Src: /src/unbound/util/shm_side/shm_main.c:167,1
    - Dst: log_err
      Src: /src/unbound/util/shm_side/shm_main.c:171,1
    - Dst: strerror
      Src: /src/unbound/util/shm_side/shm_main.c:172,1
    - Dst: free
      Src: /src/unbound/util/shm_side/shm_main.c:175,1
    - Dst: memset
      Src: /src/unbound/util/shm_side/shm_main.c:182,1
    - Dst: memset
      Src: /src/unbound/util/shm_side/shm_main.c:183,1
    - Dst: lock_basic_init
      Src: /src/unbound/util/shm_side/shm_main.c:188,1
    - Dst: calloc
      Src: /src/unbound/util/shm_side/shm_main.c:190,1
    - Dst: log_err
      Src: /src/unbound/util/shm_side/shm_main.c:193,1
    - Dst: free
      Src: /src/unbound/util/shm_side/shm_main.c:194,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 63
    argCount: 1
    argNames:
    - daemon
    argTypes:
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 83
    functionDepth: 7
    functionLinenumber: 83
    functionLinenumberEnd: 202
    functionName: shm_main_init
    functionSourceFile: /src/unbound/util/shm_side/shm_main.c
    functionUses: 1
    functionsReached:
    - log_err
    - lock_basic_init
    - free
    - calloc
    - shmctl
    - strerror
    - log_warn
    - memset
    - shmat
    - shmget
    linkageType: ''
    returnType: int
    signature: int shm_main_init(struct daemon* daemon)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/shm_side/shm_main.c:211,1
    - Dst: shmctl
      Src: /src/unbound/util/shm_side/shm_main.c:216,1
    - Dst: shmctl
      Src: /src/unbound/util/shm_side/shm_main.c:219,1
    - Dst: shmdt
      Src: /src/unbound/util/shm_side/shm_main.c:222,1
    - Dst: shmdt
      Src: /src/unbound/util/shm_side/shm_main.c:225,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/util/shm_side/shm_main.c:227,1
    - Dst: free
      Src: /src/unbound/util/shm_side/shm_main.c:228,1
    - Dst: free
      Src: /src/unbound/util/shm_side/shm_main.c:230,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 1
    argNames:
    - daemon
    argTypes:
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 235
      start: 204
    functionDepth: 7
    functionLinenumber: 204
    functionLinenumberEnd: 235
    functionName: shm_main_shutdown
    functionSourceFile: /src/unbound/util/shm_side/shm_main.c
    functionUses: 1
    functionsReached:
    - shmdt
    - verbose
    - free
    - shmctl
    - lock_basic_destroy
    linkageType: ''
    returnType: void
    signature: void shm_main_shutdown(struct daemon* daemon)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: stat_timeval_subtract
      Src: /src/unbound/util/shm_side/shm_main.c:250,1
    - Dst: stat_timeval_subtract
      Src: /src/unbound/util/shm_side/shm_main.c:251,1
    - Dst: slabhash_get_mem
      Src: /src/unbound/util/shm_side/shm_main.c:253,1
    - Dst: slabhash_get_mem
      Src: /src/unbound/util/shm_side/shm_main.c:254,1
    - Dst: slabhash_get_mem
      Src: /src/unbound/util/shm_side/shm_main.c:258,1
    - Dst: slabhash_get_mem
      Src: /src/unbound/util/shm_side/shm_main.c:260,1
    - Dst: mod_get_mem
      Src: /src/unbound/util/shm_side/shm_main.c:264,1
    - Dst: mod_get_mem
      Src: /src/unbound/util/shm_side/shm_main.c:265,1
    - Dst: mod_get_mem
      Src: /src/unbound/util/shm_side/shm_main.c:266,1
    - Dst: mod_get_mem
      Src: /src/unbound/util/shm_side/shm_main.c:273,1
    - Dst: mod_get_mem
      Src: /src/unbound/util/shm_side/shm_main.c:281,1
    - Dst: mod_get_mem
      Src: /src/unbound/util/shm_side/shm_main.c:285,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 21
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 287
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 287
    functionName: shm_general_info
    functionSourceFile: /src/unbound/util/shm_side/shm_main.c
    functionUses: 0
    functionsReached:
    - slabhash_get_mem
    - stat_timeval_subtract
    - mod_get_mem
    linkageType: ''
    returnType: void
    signature: void shm_general_info(struct worker* worker)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/util/shm_side/shm_main.c:321,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 3
    argNames:
    - shm_info
    - thread_num
    - daemon
    argTypes:
    - struct shm_main_info*
    - int
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 326
      start: 292
    functionDepth: 0
    functionLinenumber: 292
    functionLinenumberEnd: 326
    functionName: shm_thread_is_first
    functionSourceFile: /src/unbound/util/shm_side/shm_main.c
    functionUses: 0
    functionsReached:
    - memset
    linkageType: ''
    returnType: int
    signature: "int shm_thread_is_first(struct shm_main_info* shm_info, int thread_num,\n\tstruct
      daemon* daemon)"
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - daemon
    argTypes:
    - struct daemon*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 343
      start: 331
    functionDepth: 0
    functionLinenumber: 331
    functionLinenumberEnd: 343
    functionName: shm_thread_is_last
    functionSourceFile: /src/unbound/util/shm_side/shm_main.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int shm_thread_is_last(struct daemon* daemon)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/util/shm_side/shm_main.c:358,1
    - Dst: server_stats_compile
      Src: /src/unbound/util/shm_side/shm_main.c:367,1
    - Dst: lock_basic_lock
      Src: /src/unbound/util/shm_side/shm_main.c:371,1
    - Dst: shm_thread_is_first
      Src: /src/unbound/util/shm_side/shm_main.c:372,1
    - Dst: memset
      Src: /src/unbound/util/shm_side/shm_main.c:374,1
    - Dst: shm_general_info
      Src: /src/unbound/util/shm_side/shm_main.c:381,1
    - Dst: server_stats_add
      Src: /src/unbound/util/shm_side/shm_main.c:385,1
    - Dst: shm_thread_is_last
      Src: /src/unbound/util/shm_side/shm_main.c:391,1
    - Dst: memcpy
      Src: /src/unbound/util/shm_side/shm_main.c:393,1
    - Dst: memset
      Src: /src/unbound/util/shm_side/shm_main.c:396,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/util/shm_side/shm_main.c:399,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 27
    argCount: 1
    argNames:
    - worker
    argTypes:
    - struct worker*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 403
      start: 346
    functionDepth: 7
    functionLinenumber: 346
    functionLinenumberEnd: 403
    functionName: shm_main_run
    functionSourceFile: /src/unbound/util/shm_side/shm_main.c
    functionUses: 1
    functionsReached:
    - memcpy
    - server_stats_compile
    - verbose
    - lock_basic_unlock
    - shm_general_info
    - shm_thread_is_last
    - server_stats_add
    - lock_basic_lock
    - memset
    - shm_thread_is_first
    linkageType: ''
    returnType: void
    signature: void shm_main_run(struct worker *worker)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memcpy
      Src: /src/unbound/dnscrypt/dnscrypt.c:92,1
    - Dst: memcpy
      Src: /src/unbound/dnscrypt/dnscrypt.c:93,1
    - Dst: hashlittle
      Src: /src/unbound/dnscrypt/dnscrypt.c:94,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 5
    argCount: 4
    argNames:
    - key
    - esversion
    - pk
    - sk
    argTypes:
    - uint8_t*
    - uint8_t
    - uint8_t*
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 95
      start: 85
    functionDepth: 2
    functionLinenumber: 85
    functionLinenumberEnd: 95
    functionName: dnsc_shared_secrets_cache_key
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - hashlittle
    - memcpy
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t dnsc_shared_secrets_cache_key(uint8_t* key,\n                              uint8_t
      esversion,\n                              uint8_t* pk,\n                              uint8_t*
      sk)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/dnscrypt/dnscrypt.c:115,1
    - Dst: malloc
      Src: /src/unbound/dnscrypt/dnscrypt.c:116,1
    - Dst: free
      Src: /src/unbound/dnscrypt/dnscrypt.c:118,1
    - Dst: free
      Src: /src/unbound/dnscrypt/dnscrypt.c:119,1
    - Dst: memcpy
      Src: /src/unbound/dnscrypt/dnscrypt.c:122,1
    - Dst: lock_rw_init
      Src: /src/unbound/dnscrypt/dnscrypt.c:123,1
    - Dst: memcpy
      Src: /src/unbound/dnscrypt/dnscrypt.c:124,1
    - Dst: slabhash_insert
      Src: /src/unbound/dnscrypt/dnscrypt.c:128,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 4
    argNames:
    - cache
    - key
    - hash
    - nmkey
    argTypes:
    - struct slabhash*
    - uint8_t[]
    - uint32_t
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 108
    functionDepth: 10
    functionLinenumber: 108
    functionLinenumberEnd: 132
    functionName: dnsc_shared_secret_cache_insert
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - slabhash_insert
    - memcpy
    - lock_rw_init
    - malloc
    - free
    - calloc
    linkageType: ''
    returnType: void
    signature: "void dnsc_shared_secret_cache_insert(struct slabhash *cache,\n                                uint8_t
      key[DNSCRYPT_SHARED_SECRET_KEY_LENGTH],\n                                uint32_t
      hash,\n                                uint8_t nmkey[crypto_box_BEFORENMBYTES])"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: slabhash_lookup
      Src: /src/unbound/dnscrypt/dnscrypt.c:147,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - cache
    - key
    - hash
    argTypes:
    - struct slabhash*
    - uint8_t[]
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 148
      start: 142
    functionDepth: 4
    functionLinenumber: 142
    functionLinenumberEnd: 148
    functionName: dnsc_shared_secrets_lookup
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - slabhash_lookup
    linkageType: ''
    returnType: struct lruhash_entry
    signature: "struct lruhash_entry *\ndnsc_shared_secrets_lookup(struct slabhash*
      cache,\n                           uint8_t key[DNSCRYPT_SHARED_SECRET_KEY_LENGTH],\n
      \                          uint32_t hash)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: hashlittle
      Src: /src/unbound/dnscrypt/dnscrypt.c:164,1
    - Dst: hashlittle
      Src: /src/unbound/dnscrypt/dnscrypt.c:165,1
    - Dst: hashlittle
      Src: /src/unbound/dnscrypt/dnscrypt.c:166,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 3
    argNames:
    - nonce
    - magic_query
    - pk
    argTypes:
    - uint8_t[]
    - uint8_t[]
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 158
    functionDepth: 2
    functionLinenumber: 158
    functionLinenumberEnd: 167
    functionName: dnsc_nonce_cache_key_hash
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - hashlittle
    linkageType: ''
    returnType: uint32_t
    signature: "uint32_t dnsc_nonce_cache_key_hash(const uint8_t nonce[crypto_box_HALF_NONCEBYTES],\n
      \                         const uint8_t magic_query[DNSCRYPT_MAGIC_HEADER_LEN],\n
      \                         const uint8_t pk[crypto_box_PUBLICKEYBYTES])"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/dnscrypt/dnscrypt.c:186,1
    - Dst: free
      Src: /src/unbound/dnscrypt/dnscrypt.c:188,1
    - Dst: lock_rw_init
      Src: /src/unbound/dnscrypt/dnscrypt.c:191,1
    - Dst: memcpy
      Src: /src/unbound/dnscrypt/dnscrypt.c:192,1
    - Dst: memcpy
      Src: /src/unbound/dnscrypt/dnscrypt.c:193,1
    - Dst: memcpy
      Src: /src/unbound/dnscrypt/dnscrypt.c:194,1
    - Dst: slabhash_insert
      Src: /src/unbound/dnscrypt/dnscrypt.c:198,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 13
    argCount: 5
    argNames:
    - cache
    - nonce
    - magic_query
    - pk
    - hash
    argTypes:
    - struct slabhash*
    - uint8_t[]
    - uint8_t[]
    - uint8_t[]
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 178
    functionDepth: 10
    functionLinenumber: 178
    functionLinenumberEnd: 202
    functionName: dnsc_nonce_cache_insert
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - slabhash_insert
    - memcpy
    - lock_rw_init
    - free
    - calloc
    linkageType: ''
    returnType: void
    signature: "void dnsc_nonce_cache_insert(struct slabhash *cache,\n                        const
      uint8_t nonce[crypto_box_HALF_NONCEBYTES],\n                        const uint8_t
      magic_query[DNSCRYPT_MAGIC_HEADER_LEN],\n                        const uint8_t
      pk[crypto_box_PUBLICKEYBYTES],\n                        uint32_t hash)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/dnscrypt/dnscrypt.c:222,1
    - Dst: memcpy
      Src: /src/unbound/dnscrypt/dnscrypt.c:224,1
    - Dst: memcpy
      Src: /src/unbound/dnscrypt/dnscrypt.c:225,1
    - Dst: memcpy
      Src: /src/unbound/dnscrypt/dnscrypt.c:226,1
    - Dst: slabhash_lookup
      Src: /src/unbound/dnscrypt/dnscrypt.c:228,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 7
    argCount: 5
    argNames:
    - cache
    - nonce
    - magic_query
    - pk
    - hash
    argTypes:
    - struct slabhash*
    - uint8_t[]
    - uint8_t[]
    - uint8_t[]
    - uint32_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 229
      start: 214
    functionDepth: 4
    functionLinenumber: 214
    functionLinenumberEnd: 229
    functionName: dnsc_nonces_lookup
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - memset
    - slabhash_lookup
    - memcpy
    linkageType: ''
    returnType: struct lruhash_entry
    signature: "struct lruhash_entry *\ndnsc_nonces_lookup(struct slabhash* cache,\n
      \                  const uint8_t nonce[crypto_box_HALF_NONCEBYTES],\n                   const
      uint8_t magic_query[DNSCRYPT_MAGIC_HEADER_LEN],\n                   const uint8_t
      pk[crypto_box_PUBLICKEYBYTES],\n                   uint32_t hash)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/dnscrypt/dnscrypt.c:250,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/dnscrypt/dnscrypt.c:251,1
    - Dst: dnsc_nonce_cache_key_hash
      Src: /src/unbound/dnscrypt/dnscrypt.c:268,1
    - Dst: lock_basic_lock
      Src: /src/unbound/dnscrypt/dnscrypt.c:273,1
    - Dst: dnsc_nonces_lookup
      Src: /src/unbound/dnscrypt/dnscrypt.c:274,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/dnscrypt/dnscrypt.c:282,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/dnscrypt/dnscrypt.c:284,1
    - Dst: dnsc_nonce_cache_insert
      Src: /src/unbound/dnscrypt/dnscrypt.c:288,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/dnscrypt/dnscrypt.c:294,1
    - Dst: dnsc_shared_secrets_cache_key
      Src: /src/unbound/dnscrypt/dnscrypt.c:297,1
    - Dst: dnsc_shared_secrets_lookup
      Src: /src/unbound/dnscrypt/dnscrypt.c:301,1
    - Dst: lock_basic_lock
      Src: /src/unbound/dnscrypt/dnscrypt.c:306,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/dnscrypt/dnscrypt.c:308,1
    - Dst: crypto_box_curve25519xchacha20poly1305_beforenm
      Src: /src/unbound/dnscrypt/dnscrypt.c:311,1
    - Dst: crypto_box_beforenm
      Src: /src/unbound/dnscrypt/dnscrypt.c:320,1
    - Dst: dnsc_shared_secret_cache_insert
      Src: /src/unbound/dnscrypt/dnscrypt.c:327,1
    - Dst: memcpy
      Src: /src/unbound/dnscrypt/dnscrypt.c:333,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/dnscrypt/dnscrypt.c:334,1
    - Dst: memcpy
      Src: /src/unbound/dnscrypt/dnscrypt.c:337,1
    - Dst: memset
      Src: /src/unbound/dnscrypt/dnscrypt.c:338,1
    - Dst: crypto_box_curve25519xchacha20poly1305_open_easy_afternm
      Src: /src/unbound/dnscrypt/dnscrypt.c:342,1
    - Dst: crypto_box_open_easy_afternm
      Src: /src/unbound/dnscrypt/dnscrypt.c:353,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/dnscrypt/dnscrypt.c:364,1
    - Dst: sldns_buffer_at
      Src: /src/unbound/dnscrypt/dnscrypt.c:367,1
    - Dst: memcpy
      Src: /src/unbound/dnscrypt/dnscrypt.c:371,1
    - Dst: sldns_buffer_set_position
      Src: /src/unbound/dnscrypt/dnscrypt.c:373,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/dnscrypt/dnscrypt.c:374,1
    CyclomaticComplexity: 12
    EdgeCount: 12
    ICount: 59
    argCount: 5
    argNames:
    - env
    - cert
    - client_nonce
    - nmkey
    - buffer
    argTypes:
    - struct dnsc_env*
    - dnsccert*
    - uint8_t[]
    - uint8_t[]
    - struct sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 377
      start: 243
    functionDepth: 11
    functionLinenumber: 243
    functionLinenumberEnd: 377
    functionName: dnscrypt_server_uncurve
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - dnsc_shared_secrets_lookup
    - crypto_box_curve25519xchacha20poly1305_open_easy_afternm
    - lock_basic_lock
    - memset
    - dnsc_shared_secrets_cache_key
    - crypto_box_open_easy_afternm
    - sldns_buffer_begin
    - memcpy
    - lock_rw_unlock
    - sldns_buffer_set_position
    - crypto_box_curve25519xchacha20poly1305_beforenm
    - dnsc_shared_secret_cache_insert
    - sldns_buffer_at
    - lock_basic_unlock
    - sldns_buffer_limit
    - dnsc_nonce_cache_insert
    - crypto_box_beforenm
    - sldns_buffer_set_limit
    - dnsc_nonces_lookup
    - dnsc_nonce_cache_key_hash
    linkageType: ''
    returnType: int
    signature: "int dnscrypt_server_uncurve(struct dnsc_env* env,\n                        const
      dnsccert *cert,\n                        uint8_t client_nonce[crypto_box_HALF_NONCEBYTES],\n
      \                       uint8_t nmkey[crypto_box_BEFORENMBYTES],\n                        struct
      sldns_buffer* buffer)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/dnscrypt/dnscrypt.c:403,1
    - Dst: crypto_stream
      Src: /src/unbound/dnscrypt/dnscrypt.c:405,1
    - Dst: memset
      Src: /src/unbound/dnscrypt/dnscrypt.c:414,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - buf
    - len
    - max_len
    - nonce
    - secretkey
    argTypes:
    - uint8_t*
    - size_t
    - size_t
    - uint8_t*
    - uint8_t*
    assertStmts:
    - condition: (nonce[crypto_box_HALF_NONCEBYTES] == nonce[0])
      pos:
        line_end: 402
        line_start: 402
        source_file: /src/unbound/dnscrypt/dnscrypt.c
    constantsTouched: []
    func_position:
      end: 418
      start: 391
    functionDepth: 0
    functionLinenumber: 391
    functionLinenumberEnd: 418
    functionName: dnscrypt_pad
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - crypto_stream
    - assert
    - memset
    linkageType: ''
    returnType: size_t
    signature: "size_t dnscrypt_pad(uint8_t *buf, const size_t len, const size_t max_len,\n
      \            const uint8_t *nonce, const uint8_t *secretkey)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: gettimeofday
      Src: /src/unbound/dnscrypt/dnscrypt.c:427,1
    - Dst: log_err
      Src: /src/unbound/dnscrypt/dnscrypt.c:431,1
    - Dst: strerror
      Src: /src/unbound/dnscrypt/dnscrypt.c:431,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 434
      start: 420
    functionDepth: 7
    functionLinenumber: 420
    functionLinenumberEnd: 434
    functionName: dnscrypt_hrtime
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - log_err
    - strerror
    - gettimeofday
    linkageType: ''
    returnType: uint64_t
    signature: uint64_t dnscrypt_hrtime(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: randombytes_buf
      Src: /src/unbound/dnscrypt/dnscrypt.c:445,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - nonce
    argTypes:
    - uint8_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 446
      start: 442
    functionDepth: 0
    functionLinenumber: 442
    functionLinenumberEnd: 446
    functionName: add_server_nonce
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - randombytes_buf
    linkageType: ''
    returnType: void
    signature: void add_server_nonce(uint8_t *nonce)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/dnscrypt/dnscrypt.c:468,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/dnscrypt/dnscrypt.c:474,1
    - Dst: sldns_buffer_limit
      Src: /src/unbound/dnscrypt/dnscrypt.c:475,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/dnscrypt/dnscrypt.c:477,1
    - Dst: sldns_buffer_clear
      Src: /src/unbound/dnscrypt/dnscrypt.c:479,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/dnscrypt/dnscrypt.c:485,1
    - Dst: sldns_buffer_capacity
      Src: /src/unbound/dnscrypt/dnscrypt.c:486,1
    - Dst: memcpy
      Src: /src/unbound/dnscrypt/dnscrypt.c:491,1
    - Dst: memcpy
      Src: /src/unbound/dnscrypt/dnscrypt.c:492,1
    - Dst: memmove
      Src: /src/unbound/dnscrypt/dnscrypt.c:496,1
    - Dst: dnscrypt_pad
      Src: /src/unbound/dnscrypt/dnscrypt.c:497,1
    - Dst: sldns_buffer_set_at
      Src: /src/unbound/dnscrypt/dnscrypt.c:500,1
    - Dst: add_server_nonce
      Src: /src/unbound/dnscrypt/dnscrypt.c:505,1
    - Dst: crypto_box_curve25519xchacha20poly1305_easy_afternm
      Src: /src/unbound/dnscrypt/dnscrypt.c:509,1
    - Dst: crypto_box_easy_afternm
      Src: /src/unbound/dnscrypt/dnscrypt.c:517,1
    - Dst: sldns_buffer_write_at
      Src: /src/unbound/dnscrypt/dnscrypt.c:523,1
    - Dst: sldns_buffer_write_at
      Src: /src/unbound/dnscrypt/dnscrypt.c:527,1
    - Dst: sldns_buffer_flip
      Src: /src/unbound/dnscrypt/dnscrypt.c:531,1
    - Dst: sldns_buffer_set_limit
      Src: /src/unbound/dnscrypt/dnscrypt.c:532,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 34
    argCount: 6
    argNames:
    - cert
    - client_nonce
    - nmkey
    - buffer
    - udp
    - max_udp_size
    argTypes:
    - dnsccert*
    - uint8_t[]
    - uint8_t[]
    - struct sldns_buffer*
    - uint8_t
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 534
      start: 460
    functionDepth: 4
    functionLinenumber: 460
    functionLinenumberEnd: 534
    functionName: dnscrypt_server_curve
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_capacity
    - memcpy
    - sldns_buffer_write_at
    - memmove
    - crypto_box_curve25519xchacha20poly1305_easy_afternm
    - sldns_buffer_flip
    - sldns_buffer_limit
    - sldns_buffer_clear
    - add_server_nonce
    - sldns_buffer_set_limit
    - sldns_buffer_begin
    - dnscrypt_pad
    - crypto_box_easy_afternm
    - sldns_buffer_set_at
    linkageType: ''
    returnType: int
    signature: "int dnscrypt_server_curve(const dnsccert *cert,\n                      uint8_t
      client_nonce[crypto_box_HALF_NONCEBYTES],\n                      uint8_t nmkey[crypto_box_BEFORENMBYTES],\n
      \                     struct sldns_buffer* buffer,\n                      uint8_t
      udp,\n                      size_t max_udp_size)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: open
      Src: /src/unbound/dnscrypt/dnscrypt.c:547,1
    - Dst: read
      Src: /src/unbound/dnscrypt/dnscrypt.c:551,1
    - Dst: close
      Src: /src/unbound/dnscrypt/dnscrypt.c:552,1
    - Dst: close
      Src: /src/unbound/dnscrypt/dnscrypt.c:555,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 3
    argNames:
    - fname
    - buf
    - count
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 557
      start: 543
    functionDepth: 0
    functionLinenumber: 543
    functionLinenumberEnd: 557
    functionName: dnsc_read_from_file
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - open
    - read
    - close
    linkageType: ''
    returnType: int
    signature: int dnsc_read_from_file(char *fname, char *buf, size_t count)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/unbound/dnscrypt/dnscrypt.c:572,1
    - Dst: strlen
      Src: /src/unbound/dnscrypt/dnscrypt.c:573,1
    - Dst: strlen
      Src: /src/unbound/dnscrypt/dnscrypt.c:574,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 5
    argCount: 2
    argNames:
    - cfg
    - path
    argTypes:
    - struct config_file*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 576
      start: 567
    functionDepth: 0
    functionLinenumber: 567
    functionLinenumberEnd: 576
    functionName: dnsc_chroot_path
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - strncmp
    - strlen
    linkageType: ''
    returnType: char
    signature: 'char *

      dnsc_chroot_path(struct config_file *cfg, char *path)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sodium_allocarray
      Src: /src/unbound/dnscrypt/dnscrypt.c:601,1
    - Dst: sodium_allocarray
      Src: /src/unbound/dnscrypt/dnscrypt.c:604,1
    - Dst: dnsc_chroot_path
      Src: /src/unbound/dnscrypt/dnscrypt.c:609,1
    - Dst: dnsc_read_from_file
      Src: /src/unbound/dnscrypt/dnscrypt.c:610,1
    - Dst: fatal_exit
      Src: /src/unbound/dnscrypt/dnscrypt.c:614,1
    - Dst: strerror
      Src: /src/unbound/dnscrypt/dnscrypt.c:614,1
    - Dst: strcmp
      Src: /src/unbound/dnscrypt/dnscrypt.c:617,1
    - Dst: verbose
      Src: /src/unbound/dnscrypt/dnscrypt.c:620,1
    - Dst: verbose
      Src: /src/unbound/dnscrypt/dnscrypt.c:624,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - env
    - cfg
    argTypes:
    - struct dnsc_env*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 627
      start: 585
    functionDepth: 7
    functionLinenumber: 585
    functionLinenumberEnd: 627
    functionName: dnsc_parse_certs
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - sodium_allocarray
    - dnsc_read_from_file
    - strcmp
    - verbose
    - fatal_exit
    - dnsc_chroot_path
    - strerror
    linkageType: ''
    returnType: int
    signature: int dnsc_parse_certs(struct dnsc_env *env, struct config_file *cfg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: assert
      Src: /src/unbound/dnscrypt/dnscrypt.c:642,1
    - Dst: snprintf
      Src: /src/unbound/dnscrypt/dnscrypt.c:643,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 2
    argNames:
    - fingerprint
    - key
    argTypes:
    - char[]
    - uint8_t*
    assertStmts:
    - condition: (fingerprint_size > fingerprint_pos)
      pos:
        line_end: 641
        line_start: 641
        source_file: /src/unbound/dnscrypt/dnscrypt.c
    constantsTouched: []
    func_position:
      end: 653
      start: 634
    functionDepth: 2
    functionLinenumber: 634
    functionLinenumberEnd: 653
    functionName: dnsc_key_to_fingerprint
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - snprintf
    - assert
    linkageType: ''
    returnType: void
    signature: void dnsc_key_to_fingerprint(char fingerprint[80U], const uint8_t *
      const key)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_limit
      Src: /src/unbound/dnscrypt/dnscrypt.c:670,1
    - Dst: sldns_buffer_begin
      Src: /src/unbound/dnscrypt/dnscrypt.c:673,1
    - Dst: memcmp
      Src: /src/unbound/dnscrypt/dnscrypt.c:677,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 13
    argCount: 2
    argNames:
    - dnscenv
    - buffer
    argTypes:
    - struct dnsc_env*
    - struct sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 683
      start: 663
    functionDepth: 2
    functionLinenumber: 663
    functionLinenumberEnd: 683
    functionName: dnsc_find_cert
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_limit
    - sldns_buffer_begin
    - memcmp
    linkageType: ''
    returnType: dnsccert
    signature: 'dnsccert *

      dnsc_find_cert(struct dnsc_env* dnscenv, struct sldns_buffer* buffer)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: cfg_str2list_insert
      Src: /src/unbound/dnscrypt/dnscrypt.c:698,1
    - Dst: strdup
      Src: /src/unbound/dnscrypt/dnscrypt.c:699,1
    - Dst: strdup
      Src: /src/unbound/dnscrypt/dnscrypt.c:700,1
    - Dst: log_err
      Src: /src/unbound/dnscrypt/dnscrypt.c:701,1
    - Dst: memcpy
      Src: /src/unbound/dnscrypt/dnscrypt.c:722,1
    - Dst: htonl
      Src: /src/unbound/dnscrypt/dnscrypt.c:723,1
    - Dst: verbose
      Src: /src/unbound/dnscrypt/dnscrypt.c:725,1
    - Dst: strlen
      Src: /src/unbound/dnscrypt/dnscrypt.c:733,1
    - Dst: verbose
      Src: /src/unbound/dnscrypt/dnscrypt.c:735,1
    - Dst: strlen
      Src: /src/unbound/dnscrypt/dnscrypt.c:738,1
    - Dst: strlen
      Src: /src/unbound/dnscrypt/dnscrypt.c:739,1
    - Dst: malloc
      Src: /src/unbound/dnscrypt/dnscrypt.c:743,1
    - Dst: log_err
      Src: /src/unbound/dnscrypt/dnscrypt.c:745,1
    - Dst: snprintf
      Src: /src/unbound/dnscrypt/dnscrypt.c:748,1
    - Dst: isprint
      Src: /src/unbound/dnscrypt/dnscrypt.c:751,1
    - Dst: snprintf
      Src: /src/unbound/dnscrypt/dnscrypt.c:752,1
    - Dst: strlen
      Src: /src/unbound/dnscrypt/dnscrypt.c:752,1
    - Dst: strlen
      Src: /src/unbound/dnscrypt/dnscrypt.c:752,1
    - Dst: snprintf
      Src: /src/unbound/dnscrypt/dnscrypt.c:754,1
    - Dst: strlen
      Src: /src/unbound/dnscrypt/dnscrypt.c:754,1
    - Dst: strlen
      Src: /src/unbound/dnscrypt/dnscrypt.c:754,1
    - Dst: verbose
      Src: /src/unbound/dnscrypt/dnscrypt.c:757,1
    - Dst: snprintf
      Src: /src/unbound/dnscrypt/dnscrypt.c:763,1
    - Dst: strlen
      Src: /src/unbound/dnscrypt/dnscrypt.c:763,1
    - Dst: strlen
      Src: /src/unbound/dnscrypt/dnscrypt.c:763,1
    - Dst: cfg_strlist_insert
      Src: /src/unbound/dnscrypt/dnscrypt.c:764,1
    - Dst: strdup
      Src: /src/unbound/dnscrypt/dnscrypt.c:764,1
    - Dst: free
      Src: /src/unbound/dnscrypt/dnscrypt.c:765,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 42
    argCount: 2
    argNames:
    - dnscenv
    - cfg
    argTypes:
    - struct dnsc_env*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 768
      start: 693
    functionDepth: 7
    functionLinenumber: 693
    functionLinenumberEnd: 768
    functionName: dnsc_load_local_data
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - log_err
    - memcpy
    - cfg_str2list_insert
    - verbose
    - snprintf
    - cfg_strlist_insert
    - malloc
    - free
    - htonl
    - strlen
    - isprint
    - strdup
    linkageType: ''
    returnType: int
    signature: int dnsc_load_local_data(struct dnsc_env* dnscenv, struct config_file
      *cfg)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 1
    argNames:
    - version
    argTypes:
    - uint8_t[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 791
      start: 770
    functionDepth: 0
    functionLinenumber: 770
    functionLinenumberEnd: 791
    functionName: key_get_es_version
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      key_get_es_version(uint8_t version[2])'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: sodium_allocarray
      Src: /src/unbound/dnscrypt/dnscrypt.c:814,1
    - Dst: sodium_allocarray
      Src: /src/unbound/dnscrypt/dnscrypt.c:816,1
    - Dst: memset
      Src: /src/unbound/dnscrypt/dnscrypt.c:818,1
    - Dst: dnsc_chroot_path
      Src: /src/unbound/dnscrypt/dnscrypt.c:826,1
    - Dst: dnsc_read_from_file
      Src: /src/unbound/dnscrypt/dnscrypt.c:827,1
    - Dst: fatal_exit
      Src: /src/unbound/dnscrypt/dnscrypt.c:831,1
    - Dst: strerror
      Src: /src/unbound/dnscrypt/dnscrypt.c:831,1
    - Dst: verbose
      Src: /src/unbound/dnscrypt/dnscrypt.c:833,1
    - Dst: crypto_scalarmult_base
      Src: /src/unbound/dnscrypt/dnscrypt.c:834,1
    - Dst: fatal_exit
      Src: /src/unbound/dnscrypt/dnscrypt.c:836,1
    - Dst: dnsc_key_to_fingerprint
      Src: /src/unbound/dnscrypt/dnscrypt.c:838,1
    - Dst: verbose
      Src: /src/unbound/dnscrypt/dnscrypt.c:839,1
    - Dst: memcmp
      Src: /src/unbound/dnscrypt/dnscrypt.c:842,1
    - Dst: log_err
      Src: /src/unbound/dnscrypt/dnscrypt.c:847,1
    - Dst: memcpy
      Src: /src/unbound/dnscrypt/dnscrypt.c:855,1
    - Dst: memcpy
      Src: /src/unbound/dnscrypt/dnscrypt.c:858,1
    - Dst: dnsc_key_to_fingerprint
      Src: /src/unbound/dnscrypt/dnscrypt.c:862,1
    - Dst: verbose
      Src: /src/unbound/dnscrypt/dnscrypt.c:864,1
    - Dst: verbose
      Src: /src/unbound/dnscrypt/dnscrypt.c:866,1
    - Dst: key_get_es_version
      Src: /src/unbound/dnscrypt/dnscrypt.c:867,1
    - Dst: fatal_exit
      Src: /src/unbound/dnscrypt/dnscrypt.c:870,1
    - Dst: fatal_exit
      Src: /src/unbound/dnscrypt/dnscrypt.c:877,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 45
    argCount: 2
    argNames:
    - env
    - cfg
    argTypes:
    - struct dnsc_env*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 883
      start: 801
    functionDepth: 7
    functionLinenumber: 801
    functionLinenumberEnd: 883
    functionName: dnsc_parse_keys
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - sodium_allocarray
    - dnsc_read_from_file
    - log_err
    - memcpy
    - crypto_scalarmult_base
    - verbose
    - fatal_exit
    - dnsc_chroot_path
    - dnsc_key_to_fingerprint
    - strerror
    - key_get_es_version
    - memcmp
    - memset
    linkageType: ''
    returnType: int
    signature: int dnsc_parse_keys(struct dnsc_env *env, struct config_file *cfg)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fatal_exit
      Src: /src/unbound/dnscrypt/dnscrypt.c:889,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 894
      start: 886
    functionDepth: 0
    functionLinenumber: 886
    functionLinenumberEnd: 894
    functionName: sodium_misuse_handler
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - fatal_exit
    linkageType: ''
    returnType: void
    signature: void sodium_misuse_handler(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/dnscrypt/dnscrypt.c:916,1
    - Dst: dnsc_find_cert
      Src: /src/unbound/dnscrypt/dnscrypt.c:917,1
    - Dst: dnscrypt_server_uncurve
      Src: /src/unbound/dnscrypt/dnscrypt.c:918,1
    - Dst: verbose
      Src: /src/unbound/dnscrypt/dnscrypt.c:923,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/dnscrypt/dnscrypt.c:924,1
    - Dst: sldns_buffer_rewind
      Src: /src/unbound/dnscrypt/dnscrypt.c:928,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 16
    argCount: 2
    argNames:
    - dnscenv
    - repinfo
    argTypes:
    - struct dnsc_env*
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 904
    functionDepth: 12
    functionLinenumber: 904
    functionLinenumberEnd: 931
    functionName: dnsc_handle_curved_request
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 1
    functionsReached:
    - verbose
    - sldns_buffer_rewind
    - dnsc_find_cert
    - dnscrypt_server_uncurve
    - comm_point_drop_reply
    linkageType: ''
    returnType: int
    signature: "int dnsc_handle_curved_request(struct dnsc_env* dnscenv,\n                           struct
      comm_reply* repinfo)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_buffer_copy
      Src: /src/unbound/dnscrypt/dnscrypt.c:940,1
    - Dst: dnscrypt_server_curve
      Src: /src/unbound/dnscrypt/dnscrypt.c:944,1
    - Dst: verbose
      Src: /src/unbound/dnscrypt/dnscrypt.c:950,1
    - Dst: comm_point_drop_reply
      Src: /src/unbound/dnscrypt/dnscrypt.c:951,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - repinfo
    - buffer
    argTypes:
    - struct comm_reply*
    - struct sldns_buffer*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 955
      start: 933
    functionDepth: 7
    functionLinenumber: 933
    functionLinenumberEnd: 955
    functionName: dnsc_handle_uncurved_request
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 1
    functionsReached:
    - sldns_buffer_copy
    - dnscrypt_server_curve
    - verbose
    - comm_point_drop_reply
    linkageType: ''
    returnType: int
    signature: "int dnsc_handle_uncurved_request(struct comm_reply *repinfo,\n\tstruct
      sldns_buffer* buffer)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sodium_set_misuse_handler
      Src: /src/unbound/dnscrypt/dnscrypt.c:962,1
    - Dst: sodium_init
      Src: /src/unbound/dnscrypt/dnscrypt.c:964,1
    - Dst: fatal_exit
      Src: /src/unbound/dnscrypt/dnscrypt.c:965,1
    - Dst: calloc
      Src: /src/unbound/dnscrypt/dnscrypt.c:967,1
    - Dst: lock_basic_init
      Src: /src/unbound/dnscrypt/dnscrypt.c:968,1
    - Dst: lock_protect
      Src: /src/unbound/dnscrypt/dnscrypt.c:969,1
    - Dst: lock_basic_init
      Src: /src/unbound/dnscrypt/dnscrypt.c:972,1
    - Dst: lock_protect
      Src: /src/unbound/dnscrypt/dnscrypt.c:973,1
    - Dst: lock_protect
      Src: /src/unbound/dnscrypt/dnscrypt.c:976,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 981
      start: 957
    functionDepth: 1
    functionLinenumber: 957
    functionLinenumberEnd: 981
    functionName: dnsc_create
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 1
    functionsReached:
    - sodium_init
    - fatal_exit
    - lock_basic_init
    - lock_protect
    - calloc
    - sodium_set_misuse_handler
    linkageType: ''
    returnType: struct dnsc_env
    signature: 'struct dnsc_env *

      dnsc_create(void)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: dnsc_parse_certs
      Src: /src/unbound/dnscrypt/dnscrypt.c:987,1
    - Dst: fatal_exit
      Src: /src/unbound/dnscrypt/dnscrypt.c:988,1
    - Dst: dnsc_parse_keys
      Src: /src/unbound/dnscrypt/dnscrypt.c:990,1
    - Dst: fatal_exit
      Src: /src/unbound/dnscrypt/dnscrypt.c:992,1
    - Dst: fatal_exit
      Src: /src/unbound/dnscrypt/dnscrypt.c:995,1
    - Dst: randombytes_buf
      Src: /src/unbound/dnscrypt/dnscrypt.c:999,1
    - Dst: dnsc_load_local_data
      Src: /src/unbound/dnscrypt/dnscrypt.c:1002,1
    - Dst: fatal_exit
      Src: /src/unbound/dnscrypt/dnscrypt.c:1003,1
    - Dst: lock_basic_lock
      Src: /src/unbound/dnscrypt/dnscrypt.c:1005,1
    - Dst: slabhash_create
      Src: /src/unbound/dnscrypt/dnscrypt.c:1006,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/dnscrypt/dnscrypt.c:1016,1
    - Dst: fatal_exit
      Src: /src/unbound/dnscrypt/dnscrypt.c:1018,1
    - Dst: lock_basic_lock
      Src: /src/unbound/dnscrypt/dnscrypt.c:1020,1
    - Dst: slabhash_create
      Src: /src/unbound/dnscrypt/dnscrypt.c:1021,1
    - Dst: lock_basic_unlock
      Src: /src/unbound/dnscrypt/dnscrypt.c:1031,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 2
    argNames:
    - env
    - cfg
    argTypes:
    - struct dnsc_env*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1033
      start: 983
    functionDepth: 8
    functionLinenumber: 983
    functionLinenumberEnd: 1033
    functionName: dnsc_apply_cfg
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 1
    functionsReached:
    - dnsc_parse_keys
    - lock_basic_unlock
    - randombytes_buf
    - fatal_exit
    - dnsc_parse_certs
    - dnsc_load_local_data
    - lock_basic_lock
    - slabhash_create
    linkageType: ''
    returnType: int
    signature: int dnsc_apply_cfg(struct dnsc_env *env, struct config_file *cfg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/dnscrypt/dnscrypt.c:1041,1
    - Dst: sodium_free
      Src: /src/unbound/dnscrypt/dnscrypt.c:1042,1
    - Dst: sodium_free
      Src: /src/unbound/dnscrypt/dnscrypt.c:1043,1
    - Dst: sodium_free
      Src: /src/unbound/dnscrypt/dnscrypt.c:1044,1
    - Dst: sodium_free
      Src: /src/unbound/dnscrypt/dnscrypt.c:1045,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/dnscrypt/dnscrypt.c:1046,1
    - Dst: lock_basic_destroy
      Src: /src/unbound/dnscrypt/dnscrypt.c:1047,1
    - Dst: slabhash_delete
      Src: /src/unbound/dnscrypt/dnscrypt.c:1048,1
    - Dst: slabhash_delete
      Src: /src/unbound/dnscrypt/dnscrypt.c:1049,1
    - Dst: free
      Src: /src/unbound/dnscrypt/dnscrypt.c:1050,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 14
    argCount: 1
    argNames:
    - env
    argTypes:
    - struct dnsc_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1051
      start: 1035
    functionDepth: 7
    functionLinenumber: 1035
    functionLinenumberEnd: 1051
    functionName: dnsc_delete
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 1
    functionsReached:
    - verbose
    - free
    - sodium_free
    - lock_basic_destroy
    - slabhash_delete
    linkageType: ''
    returnType: void
    signature: void dnsc_delete(struct dnsc_env *env)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_get_mem
      Src: /src/unbound/dnscrypt/dnscrypt.c:1064,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - k
    - ATTR_UNUSED(d)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1068
      start: 1059
    functionDepth: 0
    functionLinenumber: 1059
    functionLinenumberEnd: 1068
    functionName: dnsc_shared_secrets_sizefunc
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - lock_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t dnsc_shared_secrets_sizefunc(void *k, void* ATTR_UNUSED(d))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sodium_memcmp
      Src: /src/unbound/dnscrypt/dnscrypt.c:1073,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - m1
    - m2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1074
      start: 1070
    functionDepth: 0
    functionLinenumber: 1070
    functionLinenumberEnd: 1074
    functionName: dnsc_shared_secrets_compfunc
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - sodium_memcmp
    linkageType: ''
    returnType: int
    signature: int dnsc_shared_secrets_compfunc(void *m1, void *m2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/dnscrypt/dnscrypt.c:1080,1
    - Dst: free
      Src: /src/unbound/dnscrypt/dnscrypt.c:1081,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - k
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1082
      start: 1076
    functionDepth: 1
    functionLinenumber: 1076
    functionLinenumberEnd: 1082
    functionName: dnsc_shared_secrets_delkeyfunc
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - free
    - lock_rw_destroy
    linkageType: ''
    returnType: void
    signature: void dnsc_shared_secrets_delkeyfunc(void *k, void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/dnscrypt/dnscrypt.c:1088,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - d
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1089
      start: 1084
    functionDepth: 1
    functionLinenumber: 1084
    functionLinenumberEnd: 1089
    functionName: dnsc_shared_secrets_deldatafunc
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void dnsc_shared_secrets_deldatafunc(void* d, void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_get_mem
      Src: /src/unbound/dnscrypt/dnscrypt.c:1102,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - k
    - ATTR_UNUSED(d)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1105
      start: 1097
    functionDepth: 0
    functionLinenumber: 1097
    functionLinenumberEnd: 1105
    functionName: dnsc_nonces_sizefunc
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - lock_get_mem
    linkageType: ''
    returnType: size_t
    signature: size_t dnsc_nonces_sizefunc(void *k, void* ATTR_UNUSED(d))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sodium_memcmp
      Src: /src/unbound/dnscrypt/dnscrypt.c:1112,1
    - Dst: sodium_memcmp
      Src: /src/unbound/dnscrypt/dnscrypt.c:1116,1
    - Dst: sodium_memcmp
      Src: /src/unbound/dnscrypt/dnscrypt.c:1120,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 2
    argCount: 2
    argNames:
    - m1
    - m2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1123
      start: 1107
    functionDepth: 0
    functionLinenumber: 1107
    functionLinenumberEnd: 1123
    functionName: dnsc_nonces_compfunc
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - sodium_memcmp
    linkageType: ''
    returnType: int
    signature: int dnsc_nonces_compfunc(void *m1, void *m2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: lock_rw_destroy
      Src: /src/unbound/dnscrypt/dnscrypt.c:1129,1
    - Dst: free
      Src: /src/unbound/dnscrypt/dnscrypt.c:1130,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - k
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1131
      start: 1125
    functionDepth: 1
    functionLinenumber: 1125
    functionLinenumberEnd: 1131
    functionName: dnsc_nonces_delkeyfunc
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached:
    - free
    - lock_rw_destroy
    linkageType: ''
    returnType: void
    signature: void dnsc_nonces_delkeyfunc(void *k, void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED(d)
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1137
      start: 1133
    functionDepth: 0
    functionLinenumber: 1133
    functionLinenumberEnd: 1137
    functionName: dnsc_nonces_deldatafunc
    functionSourceFile: /src/unbound/dnscrypt/dnscrypt.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dnsc_nonces_deldatafunc(void* ATTR_UNUSED(d), void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - t
    - ','
    - a
    - ','
    - b
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 151
      start: 150
    functionDepth: 0
    functionLinenumber: 150
    functionLinenumberEnd: 151
    functionName: swap
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 2
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: swap(t,a,b)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - begin
    - end
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 158
    functionDepth: 0
    functionLinenumber: 158
    functionLinenumberEnd: 165
    functionName: reverse
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void reverse(char* begin, char* end)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: reverse
      Src: /src/unbound/dns64/dns64.c:183,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 2
    argNames:
    - n
    - s
    argTypes:
    - unsigned
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 185
      start: 176
    functionDepth: 1
    functionLinenumber: 176
    functionLinenumberEnd: 185
    functionName: uitoa
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - reverse
    linkageType: ''
    returnType: int
    signature: int uitoa(unsigned n, char* s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dns64/dns64.c:203,1
    - Dst: log_assert
      Src: /src/unbound/dns64/dns64.c:204,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 11
    argCount: 3
    argNames:
    - ipv6
    - ipv6_len
    - offset
    argTypes:
    - uint8_t[]
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 213
      start: 198
    functionDepth: 1
    functionLinenumber: 198
    functionLinenumberEnd: 213
    functionName: extract_ipv4
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: uint32_t
    signature: uint32_t extract_ipv4(const uint8_t ipv6[], size_t ipv6_len, const
      int offset)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dns64/dns64.c:233,1
    - Dst: uitoa
      Src: /src/unbound/dns64/dns64.c:236,1
    - Dst: log_assert
      Src: /src/unbound/dns64/dns64.c:238,1
    - Dst: log_assert
      Src: /src/unbound/dns64/dns64.c:242,1
    - Dst: memmove
      Src: /src/unbound/dns64/dns64.c:243,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 12
    argCount: 3
    argNames:
    - ipv4
    - ptr
    - nm_len
    argTypes:
    - uint32_t
    - char[]
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 246
      start: 227
    functionDepth: 2
    functionLinenumber: 227
    functionLinenumberEnd: 246
    functionName: ipv4_to_ptr
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - uitoa
    - log_assert
    - memmove
    linkageType: ''
    returnType: size_t
    signature: size_t ipv4_to_ptr(uint32_t ipv4, char ptr[], size_t nm_len)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dns64/dns64.c:262,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 20
    argCount: 3
    argNames:
    - ptr
    - ipv6
    - ipv6_len
    argTypes:
    - char*
    - uint8_t[]
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 284
      start: 258
    functionDepth: 1
    functionLinenumber: 258
    functionLinenumberEnd: 284
    functionName: ptr_to_ipv6
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int ptr_to_ipv6(const char* ptr, uint8_t ipv6[], size_t ipv6_len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/dns64/dns64.c:304,1
    - Dst: log_assert
      Src: /src/unbound/dns64/dns64.c:305,1
    - Dst: memcpy
      Src: /src/unbound/dns64/dns64.c:308,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 12
    argCount: 7
    argNames:
    - prefix_addr
    - prefix_addr_len
    - prefix_net
    - a
    - a_len
    - aaaa
    - aaaa_len
    argTypes:
    - uint8_t[]
    - size_t
    - int
    - uint8_t[]
    - size_t
    - uint8_t[]
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 314
      start: 297
    functionDepth: 1
    functionLinenumber: 297
    functionLinenumberEnd: 314
    functionName: synthesize_aaaa
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - memcpy
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void synthesize_aaaa(const uint8_t prefix_addr[], size_t prefix_addr_len,\n\tint
      prefix_net, const uint8_t a[], size_t a_len, uint8_t aaaa[],\n\tsize_t aaaa_len)"
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/dns64/dns64.c:334,1
    - Dst: log_err
      Src: /src/unbound/dns64/dns64.c:336,1
    - Dst: sldns_str2wire_dname
      Src: /src/unbound/dns64/dns64.c:339,1
    - Dst: free
      Src: /src/unbound/dns64/dns64.c:341,1
    - Dst: log_err
      Src: /src/unbound/dns64/dns64.c:342,1
    - Dst: dname_count_labels
      Src: /src/unbound/dns64/dns64.c:345,1
    - Dst: name_tree_insert
      Src: /src/unbound/dns64/dns64.c:347,1
    - Dst: free
      Src: /src/unbound/dns64/dns64.c:350,1
    - Dst: free
      Src: /src/unbound/dns64/dns64.c:351,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 20
    argCount: 2
    argNames:
    - dns64_env
    - str
    argTypes:
    - struct dns64_env*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 355
      start: 329
    functionDepth: 7
    functionLinenumber: 329
    functionLinenumberEnd: 355
    functionName: dns64_insert_ignore_aaaa
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - log_err
    - free
    - calloc
    - sldns_str2wire_dname
    - name_tree_insert
    - dname_count_labels
    linkageType: ''
    returnType: int
    signature: int dns64_insert_ignore_aaaa(struct dns64_env* dns64_env, char* str)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/dns64/dns64.c:371,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/dns64/dns64.c:372,1
    - Dst: log_err
      Src: /src/unbound/dns64/dns64.c:374,1
    - Dst: addr_is_ip6
      Src: /src/unbound/dns64/dns64.c:377,1
    - Dst: log_err
      Src: /src/unbound/dns64/dns64.c:378,1
    - Dst: log_err
      Src: /src/unbound/dns64/dns64.c:384,1
    - Dst: dns64_insert_ignore_aaaa
      Src: /src/unbound/dns64/dns64.c:389,1
    - Dst: name_tree_init_parents
      Src: /src/unbound/dns64/dns64.c:392,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 20
    argCount: 2
    argNames:
    - dns64_env
    - cfg
    argTypes:
    - struct dns64_env*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 394
      start: 365
    functionDepth: 8
    functionLinenumber: 365
    functionLinenumberEnd: 394
    functionName: dns64_apply_cfg
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - log_err
    - dns64_insert_ignore_aaaa
    - verbose
    - netblockstrtoaddr
    - name_tree_init_parents
    - addr_is_ip6
    linkageType: ''
    returnType: int
    signature: int dns64_apply_cfg(struct dns64_env* dns64_env, struct config_file*
      cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/dns64/dns64.c:406,1
    - Dst: log_err
      Src: /src/unbound/dns64/dns64.c:408,1
    - Dst: name_tree_init
      Src: /src/unbound/dns64/dns64.c:412,1
    - Dst: dns64_apply_cfg
      Src: /src/unbound/dns64/dns64.c:413,1
    - Dst: log_err
      Src: /src/unbound/dns64/dns64.c:414,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 402
    functionDepth: 9
    functionLinenumber: 402
    functionLinenumberEnd: 418
    functionName: dns64_init
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - log_err
    - calloc
    - name_tree_init
    - dns64_apply_cfg
    linkageType: ''
    returnType: int
    signature: int dns64_init(struct module_env* env, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/dns64/dns64.c:426,1
    - Dst: free
      Src: /src/unbound/dns64/dns64.c:427,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - node
    - ATTR_UNUSED(arg)
    argTypes:
    - rbnode_type*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 428
      start: 421
    functionDepth: 1
    functionLinenumber: 421
    functionLinenumberEnd: 428
    functionName: free_ignore_aaaa_node
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void free_ignore_aaaa_node(rbnode_type* node, void* ATTR_UNUSED(arg))
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: traverse_postorder
      Src: /src/unbound/dns64/dns64.c:444,1
    - Dst: free
      Src: /src/unbound/dns64/dns64.c:447,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 449
      start: 436
    functionDepth: 3
    functionLinenumber: 436
    functionLinenumberEnd: 449
    functionName: dns64_deinit
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - free
    - traverse_postorder
    linkageType: ''
    returnType: void
    signature: void dns64_deinit(struct module_env* env, int id)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/dns64/dns64.c:469,1
    - Dst: ptr_to_ipv6
      Src: /src/unbound/dns64/dns64.c:471,1
    - Dst: addr_in_common
      Src: /src/unbound/dns64/dns64.c:479,1
    - Dst: verbose
      Src: /src/unbound/dns64/dns64.c:484,1
    - Dst: regional_alloc
      Src: /src/unbound/dns64/dns64.c:492,1
    - Dst: ipv4_to_ptr
      Src: /src/unbound/dns64/dns64.c:494,1
    - Dst: extract_ipv4
      Src: /src/unbound/dns64/dns64.c:494,1
    - Dst: fptr_ok
      Src: /src/unbound/dns64/dns64.c:499,1
    - Dst: fptr_whitelist_modenv_attach_sub
      Src: /src/unbound/dns64/dns64.c:499,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 21
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 510
      start: 460
    functionDepth: 7
    functionLinenumber: 460
    functionLinenumberEnd: 510
    functionName: handle_ipv6_ptr
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - verbose
    - addr_in_common
    - fptr_whitelist_modenv_attach_sub
    - regional_alloc
    - fptr_ok
    - ipv4_to_ptr
    - memset
    - ptr_to_ipv6
    - extract_ipv4
    linkageType: ''
    returnType: enum module_ext_state
    signature: enum module_ext_state handle_ipv6_ptr(struct module_qstate* qstate,
      int id)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/dns64/dns64.c:518,1
    - Dst: fptr_ok
      Src: /src/unbound/dns64/dns64.c:525,1
    - Dst: fptr_whitelist_modenv_attach_sub
      Src: /src/unbound/dns64/dns64.c:525,1
    - Dst: verbose
      Src: /src/unbound/dns64/dns64.c:529,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 15
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 512
    functionDepth: 7
    functionLinenumber: 512
    functionLinenumberEnd: 539
    functionName: generate_type_A_query
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - verbose
    - fptr_whitelist_modenv_attach_sub
    - fptr_ok
    linkageType: ''
    returnType: enum module_ext_state
    signature: enum module_ext_state generate_type_A_query(struct module_qstate* qstate,
      int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: dname_count_labels
      Src: /src/unbound/dns64/dns64.c:553,1
    - Dst: name_tree_lookup
      Src: /src/unbound/dns64/dns64.c:554,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 558
      start: 549
    functionDepth: 3
    functionLinenumber: 549
    functionLinenumberEnd: 558
    functionName: dns64_always_synth_for_qname
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - name_tree_lookup
    - dname_count_labels
    linkageType: ''
    returnType: int
    signature: int dns64_always_synth_for_qname(struct module_qstate* qstate, int
      id)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/dns64/dns64.c:583,1
    - Dst: handle_ipv6_ptr
      Src: /src/unbound/dns64/dns64.c:585,1
    - Dst: dns64_always_synth_for_qname
      Src: /src/unbound/dns64/dns64.c:591,1
    - Dst: verbose
      Src: /src/unbound/dns64/dns64.c:594,1
    - Dst: generate_type_A_query
      Src: /src/unbound/dns64/dns64.c:595,1
    - Dst: verbose
      Src: /src/unbound/dns64/dns64.c:603,1
    CyclomaticComplexity: 14
    EdgeCount: 14
    ICount: 13
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 605
      start: 573
    functionDepth: 8
    functionLinenumber: 573
    functionLinenumberEnd: 605
    functionName: handle_event_pass
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - handle_ipv6_ptr
    - strcmp
    - verbose
    - dns64_always_synth_for_qname
    - generate_type_A_query
    linkageType: ''
    returnType: enum module_ext_state
    signature: enum module_ext_state handle_event_pass(struct module_qstate* qstate,
      int id)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: reply_find_answer_rrset
      Src: /src/unbound/dns64/dns64.c:644,1
    - Dst: verbose
      Src: /src/unbound/dns64/dns64.c:649,1
    - Dst: dns64_always_synth_for_qname
      Src: /src/unbound/dns64/dns64.c:655,1
    - Dst: verbose
      Src: /src/unbound/dns64/dns64.c:657,1
    - Dst: generate_type_A_query
      Src: /src/unbound/dns64/dns64.c:658,1
    - Dst: dns_cache_store
      Src: /src/unbound/dns64/dns64.c:668,1
    - Dst: log_err
      Src: /src/unbound/dns64/dns64.c:673,1
    CyclomaticComplexity: 24
    EdgeCount: 24
    ICount: 13
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 677
      start: 617
    functionDepth: 8
    functionLinenumber: 617
    functionLinenumberEnd: 677
    functionName: handle_event_moddone
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - log_err
    - verbose
    - reply_find_answer_rrset
    - dns_cache_store
    - dns64_always_synth_for_qname
    - generate_type_A_query
    linkageType: ''
    returnType: enum module_ext_state
    signature: enum module_ext_state handle_event_moddone(struct module_qstate* qstate,
      int id)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/dns64/dns64.c:697,1
    - Dst: strextstate
      Src: /src/unbound/dns64/dns64.c:698,1
    - Dst: strmodulevent
      Src: /src/unbound/dns64/dns64.c:699,1
    - Dst: log_query_info
      Src: /src/unbound/dns64/dns64.c:700,1
    - Dst: regional_alloc
      Src: /src/unbound/dns64/dns64.c:705,1
    - Dst: log_err
      Src: /src/unbound/dns64/dns64.c:707,1
    - Dst: handle_event_pass
      Src: /src/unbound/dns64/dns64.c:718,1
    - Dst: handle_event_moddone
      Src: /src/unbound/dns64/dns64.c:721,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 4
    argNames:
    - qstate
    - event
    - id
    - outbound
    argTypes:
    - struct module_qstate*
    - enum module_ev
    - int
    - struct outbound_entry*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 739
      start: 691
    functionDepth: 9
    functionLinenumber: 691
    functionLinenumberEnd: 739
    functionName: dns64_operate
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - log_err
    - handle_event_pass
    - strextstate
    - verbose
    - log_query_info
    - regional_alloc
    - handle_event_moddone
    - strmodulevent
    linkageType: ''
    returnType: void
    signature: "void dns64_operate(struct module_qstate* qstate, enum module_ev event,
      int id,\n\t\tstruct outbound_entry* outbound)"
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: regional_alloc_zero
      Src: /src/unbound/dns64/dns64.c:759,1
    - Dst: log_err
      Src: /src/unbound/dns64/dns64.c:763,1
    - Dst: synthesize_aaaa
      Src: /src/unbound/dns64/dns64.c:792,1
    - Dst: log_err
      Src: /src/unbound/dns64/dns64.c:806,1
    - Dst: regional_alloc_init
      Src: /src/unbound/dns64/dns64.c:811,1
    - Dst: log_err
      Src: /src/unbound/dns64/dns64.c:815,1
    - Dst: htons
      Src: /src/unbound/dns64/dns64.c:820,1
    - Dst: memset
      Src: /src/unbound/dns64/dns64.c:821,1
    - Dst: rrset_key_hash
      Src: /src/unbound/dns64/dns64.c:823,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 45
    argCount: 6
    argNames:
    - fk
    - fd
    - dk
    - dd_out
    - region
    - dns64_env
    argTypes:
    - struct ub_packed_rrset_key*
    - struct packed_rrset_data*
    - struct ub_packed_rrset_key*
    - struct packed_rrset_data**
    - struct regional*
    - struct dns64_env*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 826
      start: 741
    functionDepth: 7
    functionLinenumber: 741
    functionLinenumberEnd: 826
    functionName: dns64_synth_aaaa_data
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - regional_alloc_zero
    - log_err
    - rrset_key_hash
    - htons
    - synthesize_aaaa
    - regional_alloc_init
    - memset
    linkageType: ''
    returnType: void
    signature: "void dns64_synth_aaaa_data(const struct ub_packed_rrset_key* fk, \n\t\t
      \     const struct packed_rrset_data* fd, \n\t\t      struct ub_packed_rrset_key
      *dk, \n\t\t      struct packed_rrset_data **dd_out, struct regional *region,
      \n\t\t      struct dns64_env* dns64_env )"
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/dns64/dns64.c:846,1
    - Dst: log_assert
      Src: /src/unbound/dns64/dns64.c:848,1
    - Dst: log_assert
      Src: /src/unbound/dns64/dns64.c:849,1
    - Dst: log_assert
      Src: /src/unbound/dns64/dns64.c:850,1
    - Dst: regional_alloc
      Src: /src/unbound/dns64/dns64.c:854,1
    - Dst: memset
      Src: /src/unbound/dns64/dns64.c:858,1
    - Dst: construct_reply_info_base
      Src: /src/unbound/dns64/dns64.c:868,1
    - Dst: reply_info_alloc_rrset_keys
      Src: /src/unbound/dns64/dns64.c:879,1
    - Dst: htons
      Src: /src/unbound/dns64/dns64.c:892,1
    - Dst: dns64_synth_aaaa_data
      Src: /src/unbound/dns64/dns64.c:894,1
    - Dst: rrset_cache_remove
      Src: /src/unbound/dns64/dns64.c:901,1
    - Dst: msg_cache_remove
      Src: /src/unbound/dns64/dns64.c:907,1
    - Dst: regional_alloc_init
      Src: /src/unbound/dns64/dns64.c:912,1
    - Dst: packed_rrset_sizeof
      Src: /src/unbound/dns64/dns64.c:920,1
    - Dst: regional_alloc_init
      Src: /src/unbound/dns64/dns64.c:921,1
    - Dst: packed_rrset_ptr_fixup
      Src: /src/unbound/dns64/dns64.c:930,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 61
    argCount: 3
    argNames:
    - id
    - super
    - qstate
    argTypes:
    - int
    - struct module_qstate*
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 936
      start: 836
    functionDepth: 10
    functionLinenumber: 836
    functionLinenumberEnd: 936
    functionName: dns64_adjust_a
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - construct_reply_info_base
    - packed_rrset_sizeof
    - verbose
    - regional_alloc
    - msg_cache_remove
    - htons
    - rrset_cache_remove
    - log_assert
    - reply_info_alloc_rrset_keys
    - regional_alloc_init
    - packed_rrset_ptr_fixup
    - memset
    - dns64_synth_aaaa_data
    linkageType: ''
    returnType: void
    signature: void dns64_adjust_a(int id, struct module_qstate* super, struct module_qstate*
      qstate)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: verbose
      Src: /src/unbound/dns64/dns64.c:950,1
    - Dst: regional_alloc
      Src: /src/unbound/dns64/dns64.c:953,1
    - Dst: reply_info_copy
      Src: /src/unbound/dns64/dns64.c:957,1
    - Dst: reply_find_answer_rrset
      Src: /src/unbound/dns64/dns64.c:967,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - qstate
    - super
    argTypes:
    - struct module_qstate*
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 945
    functionDepth: 11
    functionLinenumber: 945
    functionLinenumberEnd: 972
    functionName: dns64_adjust_ptr
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - verbose
    - reply_find_answer_rrset
    - regional_alloc
    - reply_info_copy
    linkageType: ''
    returnType: void
    signature: void dns64_adjust_ptr(struct module_qstate* qstate, struct module_qstate*
      super)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: log_query_info
      Src: /src/unbound/dns64/dns64.c:988,1
    - Dst: log_query_info
      Src: /src/unbound/dns64/dns64.c:990,1
    - Dst: regional_alloc
      Src: /src/unbound/dns64/dns64.c:997,1
    - Dst: log_err
      Src: /src/unbound/dns64/dns64.c:1000,1
    - Dst: memset
      Src: /src/unbound/dns64/dns64.c:1006,1
    - Dst: reply_find_answer_rrset
      Src: /src/unbound/dns64/dns64.c:1021,1
    - Dst: dns64_adjust_a
      Src: /src/unbound/dns64/dns64.c:1048,1
    - Dst: log_assert
      Src: /src/unbound/dns64/dns64.c:1050,1
    - Dst: dns64_adjust_ptr
      Src: /src/unbound/dns64/dns64.c:1051,1
    - Dst: dns_cache_store
      Src: /src/unbound/dns64/dns64.c:1063,1
    - Dst: log_err
      Src: /src/unbound/dns64/dns64.c:1066,1
    CyclomaticComplexity: 21
    EdgeCount: 21
    ICount: 40
    argCount: 3
    argNames:
    - qstate
    - id
    - super
    argTypes:
    - struct module_qstate*
    - int
    - struct module_qstate*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1067
      start: 983
    functionDepth: 12
    functionLinenumber: 983
    functionLinenumberEnd: 1067
    functionName: dns64_inform_super
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached:
    - log_err
    - dns64_adjust_ptr
    - log_query_info
    - reply_find_answer_rrset
    - regional_alloc
    - dns64_adjust_a
    - dns_cache_store
    - log_assert
    - memset
    linkageType: ''
    returnType: void
    signature: "void dns64_inform_super(struct module_qstate* qstate, int id,\n\t\tstruct
      module_qstate* super)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - qstate
    - id
    argTypes:
    - struct module_qstate*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1080
      start: 1076
    functionDepth: 0
    functionLinenumber: 1076
    functionLinenumberEnd: 1080
    functionName: dns64_clear
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void dns64_clear(struct module_qstate* qstate, int id)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 2
    argNames:
    - env
    - id
    argTypes:
    - struct module_env*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1096
      start: 1089
    functionDepth: 0
    functionLinenumber: 1089
    functionLinenumberEnd: 1096
    functionName: dns64_get_mem
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: size_t
    signature: size_t dns64_get_mem(struct module_env* env, int id)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1114
      start: 1110
    functionDepth: 0
    functionLinenumber: 1110
    functionLinenumberEnd: 1114
    functionName: dns64_get_funcblock
    functionSourceFile: /src/unbound/dns64/dns64.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: struct module_func_block
    signature: 'struct module_func_block *

      dns64_get_funcblock(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:243,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:244,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:246,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:247,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:248,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:249,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:250,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:251,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:252,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:253,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:254,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:255,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:256,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:257,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:258,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:259,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:260,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:261,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:262,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:263,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:264,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:266,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:267,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:268,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:269,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:270,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:271,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:272,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:273,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:274,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:275,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 32
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 276
      start: 240
    functionDepth: 0
    functionLinenumber: 240
    functionLinenumberEnd: 276
    functionName: usage
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 19
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 283
      start: 279
    functionDepth: 0
    functionLinenumber: 279
    functionLinenumberEnd: 283
    functionName: get_builtin_cert
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      get_builtin_cert(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 290
      start: 286
    functionDepth: 0
    functionLinenumber: 286
    functionLinenumberEnd: 290
    functionName: get_builtin_ds
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: 'char *

      get_builtin_ds(void)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:297,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:299,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:301,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 3
    argNames:
    - msg
    - data
    - len
    argTypes:
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 302
      start: 293
    functionDepth: 0
    functionLinenumber: 293
    functionLinenumberEnd: 302
    functionName: print_data
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - printf
    linkageType: ''
    returnType: void
    signature: void print_data(const char* msg, const char* data, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ub_ctx_delete
      Src: /src/unbound/smallapp/unbound-anchor.c:308,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:309,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:310,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:311,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 3
    argNames:
    - ctx
    - str
    - str2
    argTypes:
    - struct ub_ctx*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 312
      start: 305
    functionDepth: 6
    functionLinenumber: 305
    functionLinenumberEnd: 312
    functionName: ub_ctx_error_exit
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - ub_ctx_delete
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void ub_ctx_error_exit(struct ub_ctx* ctx, const char* str, const char*
      str2)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: ub_ctx_create
      Src: /src/unbound/smallapp/unbound-anchor.c:322,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:324,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:325,1
    - Dst: ub_ctx_set_option
      Src: /src/unbound/smallapp/unbound-anchor.c:328,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:329,1
    - Dst: ub_strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:329,1
    - Dst: ub_ctx_config
      Src: /src/unbound/smallapp/unbound-anchor.c:332,1
    - Dst: ub_ctx_error_exit
      Src: /src/unbound/smallapp/unbound-anchor.c:333,1
    - Dst: ub_strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:333,1
    - Dst: ub_ctx_resolvconf
      Src: /src/unbound/smallapp/unbound-anchor.c:336,1
    - Dst: ub_ctx_error_exit
      Src: /src/unbound/smallapp/unbound-anchor.c:337,1
    - Dst: ub_strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:337,1
    - Dst: ub_ctx_set_option
      Src: /src/unbound/smallapp/unbound-anchor.c:340,1
    - Dst: ub_ctx_error_exit
      Src: /src/unbound/smallapp/unbound-anchor.c:341,1
    - Dst: ub_strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:341,1
    - Dst: ub_ctx_set_option
      Src: /src/unbound/smallapp/unbound-anchor.c:344,1
    - Dst: ub_ctx_error_exit
      Src: /src/unbound/smallapp/unbound-anchor.c:345,1
    - Dst: ub_strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:345,1
    - Dst: ub_ctx_set_option
      Src: /src/unbound/smallapp/unbound-anchor.c:348,1
    - Dst: ub_ctx_error_exit
      Src: /src/unbound/smallapp/unbound-anchor.c:349,1
    - Dst: ub_strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:349,1
    - Dst: ub_ctx_set_option
      Src: /src/unbound/smallapp/unbound-anchor.c:352,1
    - Dst: ub_ctx_error_exit
      Src: /src/unbound/smallapp/unbound-anchor.c:353,1
    - Dst: ub_strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:353,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 40
    argCount: 6
    argNames:
    - res_conf
    - root_hints
    - debugconf
    - srcaddr
    - ip4only
    - ip6only
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 356
      start: 317
    functionDepth: 7
    functionLinenumber: 317
    functionLinenumberEnd: 356
    functionName: create_unbound_context
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - ub_ctx_resolvconf
    - ub_ctx_create
    - printf
    - ub_strerror
    - ub_ctx_config
    - ub_ctx_error_exit
    - ub_ctx_set_option
    linkageType: ''
    returnType: struct ub_ctx
    signature: "struct ub_ctx * \ncreate_unbound_context(const char* res_conf, const
      char* root_hints,\n\tconst char* debugconf, const char* srcaddr, int ip4only,
      int ip6only)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:364,1
    - Dst: X509_print_ex_fp
      Src: /src/unbound/smallapp/unbound-anchor.c:365,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:370,1
    - Dst: X509_print_fp
      Src: /src/unbound/smallapp/unbound-anchor.c:371,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 12
    argCount: 2
    argNames:
    - msg
    - x
    argTypes:
    - char*
    - X509*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 372
      start: 359
    functionDepth: 0
    functionLinenumber: 359
    functionLinenumberEnd: 372
    functionName: verb_cert
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - X509_print_fp
    - printf
    - X509_print_ex_fp
    linkageType: ''
    returnType: void
    signature: void verb_cert(const char* msg, X509* x)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: sk_X509_num
      Src: /src/unbound/smallapp/unbound-anchor.c:378,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:381,1
    - Dst: verb_cert
      Src: /src/unbound/smallapp/unbound-anchor.c:382,1
    - Dst: sk_X509_value
      Src: /src/unbound/smallapp/unbound-anchor.c:382,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 7
    argCount: 2
    argNames:
    - msg
    - sk
    argTypes:
    - char*
    - STACK_OF*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 384
      start: 375
    functionDepth: 1
    functionLinenumber: 375
    functionLinenumberEnd: 384
    functionName: verb_certs
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - sk_X509_num
    - sk_X509_value
    - printf
    - verb_cert
    linkageType: ''
    returnType: void
    signature: void verb_certs(const char* msg, STACK_OF(X509)* sk)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: STACK_OF
      Src: /src/unbound/smallapp/unbound-anchor.c:390,1
    - Dst: sk_X509_new_null
      Src: /src/unbound/smallapp/unbound-anchor.c:390,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:392,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:393,1
    - Dst: BIO_eof
      Src: /src/unbound/smallapp/unbound-anchor.c:395,1
    - Dst: PEM_read_bio_X509
      Src: /src/unbound/smallapp/unbound-anchor.c:396,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:399,1
    - Dst: ERR_print_errors_fp
      Src: /src/unbound/smallapp/unbound-anchor.c:400,1
    - Dst: sk_X509_push
      Src: /src/unbound/smallapp/unbound-anchor.c:404,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:405,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:406,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 22
    argCount: 1
    argNames:
    - bio
    argTypes:
    - BIO*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 410
      start: 387
    functionDepth: 0
    functionLinenumber: 387
    functionLinenumberEnd: 410
    functionName: read_cert_bio
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - sk_X509_push
    - STACK_OF
    - BIO_eof
    - printf
    - PEM_read_bio_X509
    - ERR_print_errors_fp
    - sk_X509_new_null
    linkageType: ''
    returnType: STACK_OF
    signature: 'STACK_OF *

      read_cert_bio(BIO* bio)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: STACK_OF
      Src: /src/unbound/smallapp/unbound-anchor.c:416,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-anchor.c:420,1
    - Dst: sk_X509_new_null
      Src: /src/unbound/smallapp/unbound-anchor.c:423,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:425,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:426,1
    - Dst: fopen
      Src: /src/unbound/smallapp/unbound-anchor.c:428,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:430,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:430,1
    - Dst: sk_X509_pop_free
      Src: /src/unbound/smallapp/unbound-anchor.c:432,1
    - Dst: fseek
      Src: /src/unbound/smallapp/unbound-anchor.c:436,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:437,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:437,1
    - Dst: ftell
      Src: /src/unbound/smallapp/unbound-anchor.c:438,1
    - Dst: fseek
      Src: /src/unbound/smallapp/unbound-anchor.c:439,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:440,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:440,1
    - Dst: feof
      Src: /src/unbound/smallapp/unbound-anchor.c:441,1
    - Dst: PEM_read_X509
      Src: /src/unbound/smallapp/unbound-anchor.c:442,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:445,1
    - Dst: ERR_print_errors_fp
      Src: /src/unbound/smallapp/unbound-anchor.c:446,1
    - Dst: sk_X509_push
      Src: /src/unbound/smallapp/unbound-anchor.c:450,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:451,1
    - Dst: fclose
      Src: /src/unbound/smallapp/unbound-anchor.c:452,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:453,1
    - Dst: ftell
      Src: /src/unbound/smallapp/unbound-anchor.c:458,1
    - Dst: fclose
      Src: /src/unbound/smallapp/unbound-anchor.c:461,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:463,1
    - Dst: sk_X509_pop_free
      Src: /src/unbound/smallapp/unbound-anchor.c:465,1
    CyclomaticComplexity: 18
    EdgeCount: 18
    ICount: 49
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 470
      start: 413
    functionDepth: 0
    functionLinenumber: 413
    functionLinenumberEnd: 470
    functionName: read_cert_file
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - sk_X509_push
    - STACK_OF
    - strcmp
    - PEM_read_X509
    - fseek
    - fclose
    - feof
    - printf
    - fopen
    - strerror
    - sk_X509_pop_free
    - ERR_print_errors_fp
    - sk_X509_new_null
    - ftell
    linkageType: ''
    returnType: STACK_OF
    signature: 'STACK_OF *

      read_cert_file(const char* file)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: get_builtin_cert
      Src: /src/unbound/smallapp/unbound-anchor.c:476,1
    - Dst: STACK_OF
      Src: /src/unbound/smallapp/unbound-anchor.c:477,1
    - Dst: strdup
      Src: /src/unbound/smallapp/unbound-anchor.c:479,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:482,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:483,1
    - Dst: BIO_new_mem_buf
      Src: /src/unbound/smallapp/unbound-anchor.c:485,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-anchor.c:485,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:487,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:488,1
    - Dst: read_cert_bio
      Src: /src/unbound/smallapp/unbound-anchor.c:490,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:492,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:493,1
    - Dst: BIO_free
      Src: /src/unbound/smallapp/unbound-anchor.c:495,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-anchor.c:496,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 22
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 498
      start: 473
    functionDepth: 1
    functionLinenumber: 473
    functionLinenumberEnd: 498
    functionName: read_builtin_cert
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - BIO_free
    - STACK_OF
    - BIO_new_mem_buf
    - get_builtin_cert
    - printf
    - free
    - strlen
    - read_cert_bio
    - strdup
    linkageType: ''
    returnType: STACK_OF
    signature: 'STACK_OF *

      read_builtin_cert(void)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: STACK_OF
      Src: /src/unbound/smallapp/unbound-anchor.c:504,1
    - Dst: read_cert_file
      Src: /src/unbound/smallapp/unbound-anchor.c:504,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:506,1
    - Dst: read_builtin_cert
      Src: /src/unbound/smallapp/unbound-anchor.c:507,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:509,1
    - Dst: sk_X509_num
      Src: /src/unbound/smallapp/unbound-anchor.c:509,1
    - Dst: verb_certs
      Src: /src/unbound/smallapp/unbound-anchor.c:510,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 11
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 512
      start: 501
    functionDepth: 2
    functionLinenumber: 501
    functionLinenumberEnd: 512
    functionName: read_cert_or_builtin
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - STACK_OF
    - read_cert_file
    - printf
    - verb_certs
    - sk_X509_num
    - read_builtin_cert
    linkageType: ''
    returnType: STACK_OF
    signature: 'STACK_OF *

      read_cert_or_builtin(const char* file)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: get_builtin_cert
      Src: /src/unbound/smallapp/unbound-anchor.c:517,1
    - Dst: get_builtin_ds
      Src: /src/unbound/smallapp/unbound-anchor.c:518,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:519,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:520,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:521,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 522
      start: 514
    functionDepth: 1
    functionLinenumber: 514
    functionLinenumberEnd: 522
    functionName: do_list_builtin
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - get_builtin_ds
    - get_builtin_cert
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void do_list_builtin(void)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: inet_ntop
      Src: /src/unbound/smallapp/unbound-anchor.c:534,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:536,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:537,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - msg
    - ip
    argTypes:
    - char*
    - struct ip_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 539
      start: 525
    functionDepth: 2
    functionLinenumber: 525
    functionLinenumberEnd: 539
    functionName: verb_addr
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - inet_ntop
    - printf
    linkageType: ''
    returnType: void
    signature: void verb_addr(const char* msg, struct ip_list* ip)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: free
      Src: /src/unbound/smallapp/unbound-anchor.c:548,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 6
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct ip_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 551
      start: 542
    functionDepth: 1
    functionLinenumber: 542
    functionLinenumberEnd: 551
    functionName: ip_list_free
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - free
    linkageType: ''
    returnType: void
    signature: void ip_list_free(struct ip_list* p)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/smallapp/unbound-anchor.c:557,1
    - Dst: htons
      Src: /src/unbound/smallapp/unbound-anchor.c:563,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:565,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-anchor.c:566,1
    - Dst: memmove
      Src: /src/unbound/smallapp/unbound-anchor.c:569,1
    - Dst: htons
      Src: /src/unbound/smallapp/unbound-anchor.c:575,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:577,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-anchor.c:578,1
    - Dst: memmove
      Src: /src/unbound/smallapp/unbound-anchor.c:581,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:583,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-anchor.c:584,1
    - Dst: verb_addr
      Src: /src/unbound/smallapp/unbound-anchor.c:587,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 32
    argCount: 4
    argNames:
    - tp
    - data
    - len
    - port
    argTypes:
    - int
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 589
      start: 554
    functionDepth: 3
    functionLinenumber: 554
    functionLinenumberEnd: 589
    functionName: RR_to_ip
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - memmove
    - verb_addr
    - printf
    - htons
    - free
    - calloc
    linkageType: ''
    returnType: struct ip_list
    signature: 'struct ip_list *

      RR_to_ip(int tp, char* data, int len, int port)'
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: ub_resolve
      Src: /src/unbound/smallapp/unbound-anchor.c:600,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:602,1
    - Dst: ub_strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:603,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:607,1
    - Dst: ub_ctx_delete
      Src: /src/unbound/smallapp/unbound-anchor.c:608,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:609,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:612,1
    - Dst: RR_to_ip
      Src: /src/unbound/smallapp/unbound-anchor.c:617,1
    - Dst: ub_resolve_free
      Src: /src/unbound/smallapp/unbound-anchor.c:623,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 25
    argCount: 6
    argNames:
    - ctx
    - host
    - port
    - tp
    - cl
    - head
    argTypes:
    - struct ub_ctx*
    - char*
    - int
    - int
    - int
    - struct ip_list**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 592
    functionDepth: 15
    functionLinenumber: 592
    functionLinenumberEnd: 624
    functionName: resolve_host_ip
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - ub_resolve
    - RR_to_ip
    - printf
    - ub_strerror
    - ub_ctx_delete
    - ub_resolve_free
    linkageType: ''
    returnType: void
    signature: "void resolve_host_ip(struct ub_ctx* ctx, const char* host, int port,
      int tp, int cl,\n\tstruct ip_list** head)"
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/smallapp/unbound-anchor.c:637,1
    - Dst: inet_pton
      Src: /src/unbound/smallapp/unbound-anchor.c:639,1
    - Dst: htons
      Src: /src/unbound/smallapp/unbound-anchor.c:642,1
    - Dst: inet_pton
      Src: /src/unbound/smallapp/unbound-anchor.c:645,1
    - Dst: htons
      Src: /src/unbound/smallapp/unbound-anchor.c:648,1
    - Dst: calloc
      Src: /src/unbound/smallapp/unbound-anchor.c:652,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:654,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:655,1
    - Dst: memmove
      Src: /src/unbound/smallapp/unbound-anchor.c:658,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:659,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 25
    argCount: 2
    argNames:
    - str
    - port
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 661
      start: 627
    functionDepth: 2
    functionLinenumber: 627
    functionLinenumberEnd: 661
    functionName: parse_ip_addr
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 1
    functionsReached:
    - exit
    - memmove
    - printf
    - htons
    - calloc
    - memset
    - inet_pton
    linkageType: ''
    returnType: struct ip_list
    signature: 'struct ip_list *

      parse_ip_addr(const char* str, int port)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: parse_ip_addr
      Src: /src/unbound/smallapp/unbound-anchor.c:686,1
    - Dst: create_unbound_context
      Src: /src/unbound/smallapp/unbound-anchor.c:691,1
    - Dst: resolve_host_ip
      Src: /src/unbound/smallapp/unbound-anchor.c:696,1
    - Dst: resolve_host_ip
      Src: /src/unbound/smallapp/unbound-anchor.c:702,1
    - Dst: ub_ctx_delete
      Src: /src/unbound/smallapp/unbound-anchor.c:706,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:708,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:709,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 18
    argCount: 8
    argNames:
    - host
    - port
    - res_conf
    - root_hints
    - debugconf
    - srcaddr
    - ip4only
    - ip6only
    argTypes:
    - char*
    - int
    - char*
    - char*
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 712
      start: 678
    functionDepth: 16
    functionLinenumber: 678
    functionLinenumberEnd: 712
    functionName: resolve_name
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - create_unbound_context
    - printf
    - ub_ctx_delete
    - resolve_host_ip
    - parse_ip_addr
    linkageType: ''
    returnType: struct ip_list
    signature: "struct ip_list *\nresolve_name(const char* host, int port, const char*
      res_conf,\n\tconst char* root_hints, const char* debugconf,\n\tconst char* srcaddr,
      int ip4only, int ip6only)"
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct ip_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 722
      start: 715
    functionDepth: 0
    functionLinenumber: 715
    functionLinenumberEnd: 722
    functionName: wipe_ip_usage
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: void
    signature: void wipe_ip_usage(struct ip_list* p)
  - BBCount: 2
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - p
    argTypes:
    - struct ip_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 734
      start: 725
    functionDepth: 0
    functionLinenumber: 725
    functionLinenumberEnd: 734
    functionName: count_unused
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int count_unused(struct ip_list* p)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: count_unused
      Src: /src/unbound/smallapp/unbound-anchor.c:741,1
    - Dst: arc4random_uniform
      Src: /src/unbound/smallapp/unbound-anchor.c:745,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 14
    argCount: 1
    argNames:
    - list
    argTypes:
    - struct ip_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 756
      start: 737
    functionDepth: 2
    functionLinenumber: 737
    functionLinenumberEnd: 756
    functionName: pick_random_ip
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - arc4random_uniform
    - count_unused
    linkageType: ''
    returnType: struct ip_list
    signature: 'struct ip_list *

      pick_random_ip(struct ip_list* list)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: close
      Src: /src/unbound/smallapp/unbound-anchor.c:763,1
    - Dst: closesocket
      Src: /src/unbound/smallapp/unbound-anchor.c:765,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 1
    argNames:
    - fd
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 767
      start: 759
    functionDepth: 0
    functionLinenumber: 759
    functionLinenumberEnd: 767
    functionName: fd_close
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 2
    functionsReached:
    - close
    - closesocket
    linkageType: ''
    returnType: void
    signature: void fd_close(int fd)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:774,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:774,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:776,1
    - Dst: wsa_strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:776,1
    - Dst: WSAGetLastError
      Src: /src/unbound/smallapp/unbound-anchor.c:776,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - msg
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 778
      start: 770
    functionDepth: 3
    functionLinenumber: 770
    functionLinenumberEnd: 778
    functionName: print_sock_err
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - wsa_strerror
    - strerror
    - printf
    - WSAGetLastError
    linkageType: ''
    returnType: void
    signature: void print_sock_err(const char* msg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: verb_addr
      Src: /src/unbound/smallapp/unbound-anchor.c:785,1
    - Dst: socket
      Src: /src/unbound/smallapp/unbound-anchor.c:786,1
    - Dst: print_sock_err
      Src: /src/unbound/smallapp/unbound-anchor.c:789,1
    - Dst: bind
      Src: /src/unbound/smallapp/unbound-anchor.c:792,1
    - Dst: print_sock_err
      Src: /src/unbound/smallapp/unbound-anchor.c:793,1
    - Dst: fd_close
      Src: /src/unbound/smallapp/unbound-anchor.c:794,1
    - Dst: connect
      Src: /src/unbound/smallapp/unbound-anchor.c:797,1
    - Dst: print_sock_err
      Src: /src/unbound/smallapp/unbound-anchor.c:798,1
    - Dst: fd_close
      Src: /src/unbound/smallapp/unbound-anchor.c:799,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 18
    argCount: 2
    argNames:
    - ip
    - src
    argTypes:
    - struct ip_list*
    - struct ip_list*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 803
      start: 781
    functionDepth: 4
    functionLinenumber: 781
    functionLinenumberEnd: 803
    functionName: connect_to_ip
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - print_sock_err
    - bind
    - socket
    - verb_addr
    - fd_close
    - connect
    linkageType: ''
    returnType: int
    signature: int connect_to_ip(struct ip_list* ip, struct ip_list* src)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: SSL_CTX_new
      Src: /src/unbound/smallapp/unbound-anchor.c:809,1
    - Dst: SSLv23_client_method
      Src: /src/unbound/smallapp/unbound-anchor.c:809,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:811,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 815
      start: 806
    functionDepth: 0
    functionLinenumber: 806
    functionLinenumberEnd: 815
    functionName: setup_sslctx
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - SSLv23_client_method
    - SSL_CTX_new
    - printf
    linkageType: ''
    returnType: SSL_CTX
    signature: 'SSL_CTX *

      setup_sslctx(void)'
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: SSL_new
      Src: /src/unbound/smallapp/unbound-anchor.c:823,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:825,1
    - Dst: SSL_set_connect_state
      Src: /src/unbound/smallapp/unbound-anchor.c:828,1
    - Dst: SSL_set_mode
      Src: /src/unbound/smallapp/unbound-anchor.c:829,1
    - Dst: SSL_set_fd
      Src: /src/unbound/smallapp/unbound-anchor.c:830,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:831,1
    - Dst: SSL_free
      Src: /src/unbound/smallapp/unbound-anchor.c:832,1
    - Dst: SSL_set_tlsext_host_name
      Src: /src/unbound/smallapp/unbound-anchor.c:836,1
    - Dst: ERR_clear_error
      Src: /src/unbound/smallapp/unbound-anchor.c:839,1
    - Dst: SSL_do_handshake
      Src: /src/unbound/smallapp/unbound-anchor.c:840,1
    - Dst: SSL_get_error
      Src: /src/unbound/smallapp/unbound-anchor.c:842,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:844,1
    - Dst: SSL_free
      Src: /src/unbound/smallapp/unbound-anchor.c:845,1
    - Dst: SSL_get1_peer_certificate
      Src: /src/unbound/smallapp/unbound-anchor.c:851,1
    - Dst: SSL_get_peer_certificate
      Src: /src/unbound/smallapp/unbound-anchor.c:853,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:856,1
    - Dst: SSL_free
      Src: /src/unbound/smallapp/unbound-anchor.c:857,1
    - Dst: verb_cert
      Src: /src/unbound/smallapp/unbound-anchor.c:860,1
    - Dst: X509_free
      Src: /src/unbound/smallapp/unbound-anchor.c:861,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 4
    argNames:
    - sslctx
    - fd
    - urlname
    - use_sni
    argTypes:
    - SSL_CTX*
    - int
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 863
      start: 818
    functionDepth: 1
    functionLinenumber: 818
    functionLinenumberEnd: 863
    functionName: TLS_initiate
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - SSL_set_mode
    - verb_cert
    - SSL_free
    - SSL_set_connect_state
    - printf
    - SSL_set_tlsext_host_name
    - SSL_do_handshake
    - SSL_get_peer_certificate
    - X509_free
    - SSL_new
    - SSL_set_fd
    - SSL_get1_peer_certificate
    - ERR_clear_error
    - SSL_get_error
    linkageType: ''
    returnType: SSL
    signature: 'SSL *

      TLS_initiate(SSL_CTX* sslctx, int fd, const char* urlname, int use_sni)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: SSL_shutdown
      Src: /src/unbound/smallapp/unbound-anchor.c:870,1
    - Dst: SSL_shutdown
      Src: /src/unbound/smallapp/unbound-anchor.c:871,1
    - Dst: SSL_free
      Src: /src/unbound/smallapp/unbound-anchor.c:873,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/smallapp/unbound-anchor.c:874,1
    - Dst: fd_close
      Src: /src/unbound/smallapp/unbound-anchor.c:875,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 3
    argNames:
    - fd
    - ssl
    - sslctx
    argTypes:
    - int
    - SSL*
    - SSL_CTX*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 866
    functionDepth: 0
    functionLinenumber: 866
    functionLinenumberEnd: 876
    functionName: TLS_shutdown
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - fd_close
    - SSL_free
    - SSL_CTX_free
    - SSL_shutdown
    linkageType: ''
    returnType: void
    signature: void TLS_shutdown(int fd, SSL* ssl, SSL_CTX* sslctx)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/smallapp/unbound-anchor.c:885,1
    - Dst: snprintf
      Src: /src/unbound/smallapp/unbound-anchor.c:887,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-anchor.c:889,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:891,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:894,1
    - Dst: SSL_write
      Src: /src/unbound/smallapp/unbound-anchor.c:899,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-anchor.c:899,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:900,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 3
    argNames:
    - ssl
    - str
    - sec
    argTypes:
    - SSL*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 904
      start: 879
    functionDepth: 2
    functionLinenumber: 879
    functionLinenumberEnd: 904
    functionName: write_ssl_line
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - snprintf
    - SSL_write
    - printf
    - strlen
    linkageType: ''
    returnType: int
    signature: int write_ssl_line(SSL* ssl, const char* str, const char* sec)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:910,1
    - Dst: strncasecmp
      Src: /src/unbound/smallapp/unbound-anchor.c:911,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:914,1
    - Dst: strncasecmp
      Src: /src/unbound/smallapp/unbound-anchor.c:917,1
    - Dst: atoi
      Src: /src/unbound/smallapp/unbound-anchor.c:919,1
    - Dst: strncasecmp
      Src: /src/unbound/smallapp/unbound-anchor.c:920,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - buf
    - clen
    - chunked
    argTypes:
    - char*
    - size_t*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 925
      start: 907
    functionDepth: 0
    functionLinenumber: 907
    functionLinenumberEnd: 925
    functionName: process_one_header
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 1
    functionsReached:
    - atoi
    - strncasecmp
    - printf
    linkageType: ''
    returnType: int
    signature: int process_one_header(char* buf, size_t* clen, int* chunked)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:944,1
    - Dst: SSL_read
      Src: /src/unbound/smallapp/unbound-anchor.c:947,1
    - Dst: SSL_get_error
      Src: /src/unbound/smallapp/unbound-anchor.c:948,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:952,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:959,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 34
    argCount: 3
    argNames:
    - ssl
    - buf
    - len
    argTypes:
    - SSL*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 972
      start: 936
    functionDepth: 0
    functionLinenumber: 936
    functionLinenumberEnd: 972
    functionName: read_ssl_line
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 1
    functionsReached:
    - printf
    - SSL_read
    - SSL_get_error
    linkageType: ''
    returnType: int
    signature: int read_ssl_line(SSL* ssl, char* buf, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: read_ssl_line
      Src: /src/unbound/smallapp/unbound-anchor.c:981,1
    - Dst: process_one_header
      Src: /src/unbound/smallapp/unbound-anchor.c:984,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 2
    argNames:
    - ssl
    - clen
    argTypes:
    - SSL*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 988
      start: 975
    functionDepth: 0
    functionLinenumber: 975
    functionLinenumberEnd: 988
    functionName: read_http_headers
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 1
    functionsReached:
    - read_ssl_line
    - process_one_header
    linkageType: ''
    returnType: size_t
    signature: size_t read_http_headers(SSL* ssl, size_t* clen)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: malloc
      Src: /src/unbound/smallapp/unbound-anchor.c:999,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1001,1
    - Dst: SSL_read
      Src: /src/unbound/smallapp/unbound-anchor.c:1005,1
    - Dst: SSL_get_error
      Src: /src/unbound/smallapp/unbound-anchor.c:1006,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1008,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-anchor.c:1009,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1012,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-anchor.c:1013,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1016,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1019,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 30
    argCount: 2
    argNames:
    - ssl
    - len
    argTypes:
    - SSL*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1022
      start: 991
    functionDepth: 1
    functionLinenumber: 991
    functionLinenumberEnd: 1022
    functionName: read_data_chunk
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - printf
    - SSL_read
    - malloc
    - free
    - SSL_get_error
    linkageType: ''
    returnType: char
    signature: 'char *

      read_data_chunk(SSL* ssl, size_t len)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strtol
      Src: /src/unbound/smallapp/unbound-anchor.c:1029,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 2
    argNames:
    - buf
    - result
    argTypes:
    - char*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1034
      start: 1025
    functionDepth: 0
    functionLinenumber: 1025
    functionLinenumberEnd: 1034
    functionName: parse_chunk_header
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - strtol
    linkageType: ''
    returnType: int
    signature: int parse_chunk_header(char* buf, size_t* result)
  - BBCount: 16
    BranchProfiles: []
    Callsites:
    - Dst: BIO_new
      Src: /src/unbound/smallapp/unbound-anchor.c:1043,1
    - Dst: BIO_s_mem
      Src: /src/unbound/smallapp/unbound-anchor.c:1043,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1044,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1046,1
    - Dst: read_ssl_line
      Src: /src/unbound/smallapp/unbound-anchor.c:1049,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1051,1
    - Dst: parse_chunk_header
      Src: /src/unbound/smallapp/unbound-anchor.c:1052,1
    - Dst: BIO_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1053,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1054,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1057,1
    - Dst: read_ssl_line
      Src: /src/unbound/smallapp/unbound-anchor.c:1064,1
    - Dst: BIO_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1065,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-anchor.c:1068,1
    - Dst: BIO_write
      Src: /src/unbound/smallapp/unbound-anchor.c:1070,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1071,1
    - Dst: BIO_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1072,1
    - Dst: read_data_chunk
      Src: /src/unbound/smallapp/unbound-anchor.c:1078,1
    - Dst: BIO_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1080,1
    - Dst: BIO_write
      Src: /src/unbound/smallapp/unbound-anchor.c:1083,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1084,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-anchor.c:1085,1
    - Dst: BIO_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1086,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-anchor.c:1089,1
    - Dst: read_ssl_line
      Src: /src/unbound/smallapp/unbound-anchor.c:1091,1
    - Dst: BIO_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1092,1
    - Dst: BIO_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1096,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 54
    argCount: 1
    argNames:
    - ssl
    argTypes:
    - SSL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1098
      start: 1037
    functionDepth: 2
    functionLinenumber: 1037
    functionLinenumberEnd: 1098
    functionName: do_chunked_read
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - BIO_free
    - parse_chunk_header
    - BIO_write
    - BIO_s_mem
    - read_data_chunk
    - read_ssl_line
    - BIO_new
    - printf
    - free
    - strlen
    linkageType: ''
    returnType: BIO
    signature: 'BIO *

      do_chunked_read(SSL* ssl)'
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: write_ssl_line
      Src: /src/unbound/smallapp/unbound-anchor.c:1104,1
    - Dst: write_ssl_line
      Src: /src/unbound/smallapp/unbound-anchor.c:1105,1
    - Dst: write_ssl_line
      Src: /src/unbound/smallapp/unbound-anchor.c:1106,1
    - Dst: write_ssl_line
      Src: /src/unbound/smallapp/unbound-anchor.c:1111,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 5
    argCount: 3
    argNames:
    - ssl
    - pathname
    - urlname
    argTypes:
    - SSL*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1115
      start: 1101
    functionDepth: 3
    functionLinenumber: 1101
    functionLinenumberEnd: 1115
    functionName: write_http_get
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - write_ssl_line
    linkageType: ''
    returnType: int
    signature: int write_http_get(SSL* ssl, const char* pathname, const char* urlname)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: do_chunked_read
      Src: /src/unbound/smallapp/unbound-anchor.c:1122,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1126,1
    - Dst: BIO_get_mem_data
      Src: /src/unbound/smallapp/unbound-anchor.c:1129,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1130,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1132,1
    - Dst: malloc
      Src: /src/unbound/smallapp/unbound-anchor.c:1136,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1138,1
    - Dst: memcpy
      Src: /src/unbound/smallapp/unbound-anchor.c:1141,1
    - Dst: BIO_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1142,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 24
    argCount: 2
    argNames:
    - ssl
    - len
    argTypes:
    - SSL*
    - size_t*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1144
      start: 1118
    functionDepth: 3
    functionLinenumber: 1118
    functionLinenumberEnd: 1144
    functionName: read_chunked_zero_terminate
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - BIO_free
    - memcpy
    - BIO_get_mem_data
    - printf
    - malloc
    - do_chunked_read
    linkageType: ''
    returnType: char
    signature: 'char *

      read_chunked_zero_terminate(SSL* ssl, size_t* len)'
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: read_http_headers
      Src: /src/unbound/smallapp/unbound-anchor.c:1153,1
    - Dst: read_chunked_zero_terminate
      Src: /src/unbound/smallapp/unbound-anchor.c:1157,1
    - Dst: read_data_chunk
      Src: /src/unbound/smallapp/unbound-anchor.c:1159,1
    - Dst: print_data
      Src: /src/unbound/smallapp/unbound-anchor.c:1162,1
    - Dst: BIO_new
      Src: /src/unbound/smallapp/unbound-anchor.c:1163,1
    - Dst: BIO_s_mem
      Src: /src/unbound/smallapp/unbound-anchor.c:1163,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1165,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-anchor.c:1166,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:1167,1
    - Dst: BIO_write
      Src: /src/unbound/smallapp/unbound-anchor.c:1169,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-anchor.c:1170,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 23
    argCount: 1
    argNames:
    - ssl
    argTypes:
    - SSL*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1172
      start: 1147
    functionDepth: 4
    functionLinenumber: 1147
    functionLinenumberEnd: 1172
    functionName: read_http_result
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - BIO_write
    - BIO_s_mem
    - read_data_chunk
    - print_data
    - BIO_new
    - printf
    - free
    - read_chunked_zero_terminate
    - read_http_headers
    linkageType: ''
    returnType: BIO
    signature: 'BIO *

      read_http_result(SSL* ssl)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: setup_sslctx
      Src: /src/unbound/smallapp/unbound-anchor.c:1182,1
    - Dst: connect_to_ip
      Src: /src/unbound/smallapp/unbound-anchor.c:1186,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1188,1
    - Dst: TLS_initiate
      Src: /src/unbound/smallapp/unbound-anchor.c:1191,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1193,1
    - Dst: fd_close
      Src: /src/unbound/smallapp/unbound-anchor.c:1194,1
    - Dst: write_http_get
      Src: /src/unbound/smallapp/unbound-anchor.c:1197,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1198,1
    - Dst: SSL_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1199,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1200,1
    - Dst: fd_close
      Src: /src/unbound/smallapp/unbound-anchor.c:1201,1
    - Dst: read_http_result
      Src: /src/unbound/smallapp/unbound-anchor.c:1204,1
    - Dst: TLS_shutdown
      Src: /src/unbound/smallapp/unbound-anchor.c:1205,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 26
    argCount: 5
    argNames:
    - ip
    - pathname
    - urlname
    - src
    - use_sni
    argTypes:
    - struct ip_list*
    - char*
    - char*
    - struct ip_list*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1207
      start: 1175
    functionDepth: 5
    functionLinenumber: 1175
    functionLinenumberEnd: 1207
    functionName: https_to_ip
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - write_http_get
    - SSL_CTX_free
    - setup_sslctx
    - TLS_shutdown
    - SSL_free
    - printf
    - connect_to_ip
    - fd_close
    - read_http_result
    - TLS_initiate
    linkageType: ''
    returnType: BIO
    signature: "BIO *\nhttps_to_ip(struct ip_list* ip, const char* pathname, const
      char* urlname,\n\tstruct ip_list* src, int use_sni)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: wipe_ip_usage
      Src: /src/unbound/smallapp/unbound-anchor.c:1225,1
    - Dst: pick_random_ip
      Src: /src/unbound/smallapp/unbound-anchor.c:1226,1
    - Dst: https_to_ip
      Src: /src/unbound/smallapp/unbound-anchor.c:1228,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1232,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:1233,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1235,1
    - Dst: BIO_ctrl_pending
      Src: /src/unbound/smallapp/unbound-anchor.c:1236,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 5
    argNames:
    - ip_list
    - pathname
    - urlname
    - src
    - use_sni
    argTypes:
    - struct ip_list*
    - char*
    - char*
    - struct ip_list*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1239
      start: 1218
    functionDepth: 6
    functionLinenumber: 1218
    functionLinenumberEnd: 1239
    functionName: https
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 5
    functionsReached:
    - https_to_ip
    - exit
    - printf
    - wipe_ip_usage
    - BIO_ctrl_pending
    - pick_random_ip
    linkageType: ''
    returnType: BIO
    signature: "BIO *\nhttps(struct ip_list* ip_list, const char* pathname, const
      char* urlname,\n\tstruct ip_list* src, int use_sni)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/unbound/smallapp/unbound-anchor.c:1273,1
    - Dst: strcasecmp
      Src: /src/unbound/smallapp/unbound-anchor.c:1275,1
    - Dst: strcasecmp
      Src: /src/unbound/smallapp/unbound-anchor.c:1277,1
    - Dst: strcasecmp
      Src: /src/unbound/smallapp/unbound-anchor.c:1279,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - data
    - tag
    argTypes:
    - struct xml_data*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1282
      start: 1269
    functionDepth: 0
    functionLinenumber: 1269
    functionLinenumberEnd: 1282
    functionName: xml_selectbio
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: BIO
    signature: 'BIO *

      xml_selectbio(struct xml_data* data, const char* tag)'
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1301,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1305,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1306,1
    - Dst: strcasecmp
      Src: /src/unbound/smallapp/unbound-anchor.c:1308,1
    - Dst: BIO_write
      Src: /src/unbound/smallapp/unbound-anchor.c:1309,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1310,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:1311,1
    - Dst: xml_selectbio
      Src: /src/unbound/smallapp/unbound-anchor.c:1318,1
    - Dst: BIO_write
      Src: /src/unbound/smallapp/unbound-anchor.c:1320,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1321,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:1322,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 27
    argCount: 3
    argNames:
    - userData
    - s
    - len
    argTypes:
    - void*
    - XML_Char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1325
      start: 1291
    functionDepth: 1
    functionLinenumber: 1291
    functionLinenumberEnd: 1325
    functionName: xml_charhandle
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - BIO_write
    - printf
    - xml_selectbio
    - strcasecmp
    linkageType: ''
    returnType: void
    signature: void xml_charhandle(void *userData, const XML_Char *s, int len)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strcasecmp
      Src: /src/unbound/smallapp/unbound-anchor.c:1338,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - atts
    - name
    argTypes:
    - XML_Char**
    - XML_Char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1342
      start: 1333
    functionDepth: 0
    functionLinenumber: 1333
    functionLinenumberEnd: 1342
    functionName: find_att
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - strcasecmp
    linkageType: ''
    returnType: XML_Char
    signature: 'XML_Char *

      find_att(const XML_Char **atts, const XML_Char* name)'
  - BBCount: 15
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/smallapp/unbound-anchor.c:1361,1
    - Dst: strptime
      Src: /src/unbound/smallapp/unbound-anchor.c:1363,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1365,1
    - Dst: sscanf
      Src: /src/unbound/smallapp/unbound-anchor.c:1372,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1373,1
    - Dst: sscanf
      Src: /src/unbound/smallapp/unbound-anchor.c:1386,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1387,1
    - Dst: sldns_mktime_from_utc
      Src: /src/unbound/smallapp/unbound-anchor.c:1405,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1407,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 48
    argCount: 1
    argNames:
    - str
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1411
      start: 1351
    functionDepth: 3
    functionLinenumber: 1351
    functionLinenumberEnd: 1411
    functionName: xml_convertdate
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - sldns_mktime_from_utc
    - printf
    - strptime
    - memset
    - sscanf
    linkageType: ''
    returnType: time_t
    signature: time_t xml_convertdate(const char* str)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: find_att
      Src: /src/unbound/smallapp/unbound-anchor.c:1420,1
    - Dst: xml_convertdate
      Src: /src/unbound/smallapp/unbound-anchor.c:1421,1
    - Dst: find_att
      Src: /src/unbound/smallapp/unbound-anchor.c:1421,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1423,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:1424,1
    - Dst: find_att
      Src: /src/unbound/smallapp/unbound-anchor.c:1429,1
    - Dst: xml_convertdate
      Src: /src/unbound/smallapp/unbound-anchor.c:1430,1
    - Dst: find_att
      Src: /src/unbound/smallapp/unbound-anchor.c:1430,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1432,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:1433,1
    - Dst: BIO_reset
      Src: /src/unbound/smallapp/unbound-anchor.c:1440,1
    - Dst: BIO_reset
      Src: /src/unbound/smallapp/unbound-anchor.c:1441,1
    - Dst: BIO_reset
      Src: /src/unbound/smallapp/unbound-anchor.c:1442,1
    - Dst: BIO_reset
      Src: /src/unbound/smallapp/unbound-anchor.c:1443,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 25
    argCount: 2
    argNames:
    - data
    - atts
    argTypes:
    - struct xml_data*
    - XML_Char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1444
      start: 1416
    functionDepth: 4
    functionLinenumber: 1416
    functionLinenumberEnd: 1444
    functionName: handle_keydigest
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - printf
    - find_att
    - BIO_reset
    - xml_convertdate
    linkageType: ''
    returnType: void
    signature: void handle_keydigest(struct xml_data* data, const XML_Char **atts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BIO_seek
      Src: /src/unbound/smallapp/unbound-anchor.c:1453,1
    - Dst: BIO_get_mem_data
      Src: /src/unbound/smallapp/unbound-anchor.c:1454,1
    - Dst: memmove
      Src: /src/unbound/smallapp/unbound-anchor.c:1458,1
    - Dst: strncasecmp
      Src: /src/unbound/smallapp/unbound-anchor.c:1461,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-anchor.c:1461,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 2
    argNames:
    - zone
    - name
    argTypes:
    - BIO*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1462
      start: 1447
    functionDepth: 1
    functionLinenumber: 1447
    functionLinenumberEnd: 1462
    functionName: xml_is_zone_name
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - BIO_seek
    - memmove
    - BIO_get_mem_data
    - strlen
    - strncasecmp
    linkageType: ''
    returnType: int
    signature: int xml_is_zone_name(BIO* zone, const char* name)
  - BBCount: 9
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1477,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-anchor.c:1478,1
    - Dst: strdup
      Src: /src/unbound/smallapp/unbound-anchor.c:1479,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1481,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:1482,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1487,1
    - Dst: strcasecmp
      Src: /src/unbound/smallapp/unbound-anchor.c:1491,1
    - Dst: handle_keydigest
      Src: /src/unbound/smallapp/unbound-anchor.c:1492,1
    - Dst: strcasecmp
      Src: /src/unbound/smallapp/unbound-anchor.c:1494,1
    - Dst: BIO_reset
      Src: /src/unbound/smallapp/unbound-anchor.c:1495,1
    - Dst: xml_selectbio
      Src: /src/unbound/smallapp/unbound-anchor.c:1502,1
    - Dst: BIO_reset
      Src: /src/unbound/smallapp/unbound-anchor.c:1505,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 29
    argCount: 3
    argNames:
    - userData
    - name
    - atts
    argTypes:
    - void*
    - XML_Char*
    - XML_Char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1507
      start: 1472
    functionDepth: 5
    functionLinenumber: 1472
    functionLinenumberEnd: 1507
    functionName: xml_startelem
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - printf
    - free
    - handle_keydigest
    - BIO_reset
    - xml_selectbio
    - strdup
    - strcasecmp
    linkageType: ''
    returnType: void
    signature: void xml_startelem(void *userData, const XML_Char *name, const XML_Char
      **atts)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: BIO_write
      Src: /src/unbound/smallapp/unbound-anchor.c:1513,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-anchor.c:1513,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1514,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:1515,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 2
    argNames:
    - b
    - s
    argTypes:
    - BIO*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1517
      start: 1510
    functionDepth: 0
    functionLinenumber: 1510
    functionLinenumberEnd: 1517
    functionName: xml_append_str
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - BIO_write
    - printf
    - strlen
    linkageType: ''
    returnType: void
    signature: void xml_append_str(BIO* b, const char* s)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: BIO_seek
      Src: /src/unbound/smallapp/unbound-anchor.c:1525,1
    - Dst: BIO_get_mem_data
      Src: /src/unbound/smallapp/unbound-anchor.c:1526,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1528,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:1529,1
    - Dst: BIO_write
      Src: /src/unbound/smallapp/unbound-anchor.c:1537,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1538,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:1539,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 2
    argNames:
    - b
    - a
    argTypes:
    - BIO*
    - BIO*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1541
      start: 1520
    functionDepth: 0
    functionLinenumber: 1520
    functionLinenumberEnd: 1541
    functionName: xml_append_bio
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - BIO_write
    - BIO_seek
    - BIO_get_mem_data
    - printf
    linkageType: ''
    returnType: void
    signature: void xml_append_bio(BIO* b, BIO* a)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: xml_append_str
      Src: /src/unbound/smallapp/unbound-anchor.c:1548,1
    - Dst: xml_append_bio
      Src: /src/unbound/smallapp/unbound-anchor.c:1549,1
    - Dst: xml_append_str
      Src: /src/unbound/smallapp/unbound-anchor.c:1550,1
    - Dst: xml_append_bio
      Src: /src/unbound/smallapp/unbound-anchor.c:1551,1
    - Dst: xml_append_str
      Src: /src/unbound/smallapp/unbound-anchor.c:1552,1
    - Dst: xml_append_bio
      Src: /src/unbound/smallapp/unbound-anchor.c:1553,1
    - Dst: xml_append_str
      Src: /src/unbound/smallapp/unbound-anchor.c:1554,1
    - Dst: xml_append_bio
      Src: /src/unbound/smallapp/unbound-anchor.c:1555,1
    - Dst: xml_append_str
      Src: /src/unbound/smallapp/unbound-anchor.c:1556,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 11
    argCount: 1
    argNames:
    - data
    argTypes:
    - struct xml_data*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1558
      start: 1544
    functionDepth: 1
    functionLinenumber: 1544
    functionLinenumberEnd: 1558
    functionName: xml_append_ds
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - xml_append_bio
    - xml_append_str
    linkageType: ''
    returnType: void
    signature: void xml_append_ds(struct xml_data* data)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1570,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-anchor.c:1571,1
    - Dst: strcasecmp
      Src: /src/unbound/smallapp/unbound-anchor.c:1573,1
    - Dst: xml_append_ds
      Src: /src/unbound/smallapp/unbound-anchor.c:1575,1
    - Dst: strcasecmp
      Src: /src/unbound/smallapp/unbound-anchor.c:1577,1
    - Dst: xml_is_zone_name
      Src: /src/unbound/smallapp/unbound-anchor.c:1578,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1579,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:1580,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 2
    argNames:
    - userData
    - name
    argTypes:
    - void*
    - XML_Char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1583
      start: 1566
    functionDepth: 2
    functionLinenumber: 1566
    functionLinenumberEnd: 1583
    functionName: xml_endelem
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - xml_is_zone_name
    - xml_append_ds
    - printf
    - free
    - strcasecmp
    linkageType: ''
    returnType: void
    signature: void xml_endelem(void *userData, const XML_Char *name)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: XML_StopParser
      Src: /src/unbound/smallapp/unbound-anchor.c:1597,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 9
    argNames:
    - userData
    - ATTR_UNUSED(entityName)
    - ATTR_UNUSED
    - ATTR_UNUSED(value)
    - ATTR_UNUSED
    - ATTR_UNUSED(base)
    - ATTR_UNUSED(systemId)
    - ATTR_UNUSED(publicId)
    - ATTR_UNUSED(notationName)
    argTypes:
    - void*
    - XML_Char*
    - int
    - XML_Char*
    - int
    - XML_Char*
    - XML_Char*
    - XML_Char*
    - XML_Char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1601
      start: 1586
    functionDepth: 0
    functionLinenumber: 1586
    functionLinenumberEnd: 1601
    functionName: xml_entitydeclhandler
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - XML_StopParser
    linkageType: ''
    returnType: void
    signature: "void xml_entitydeclhandler(void *userData,\n\tconst XML_Char *ATTR_UNUSED(entityName),\n\tint
      ATTR_UNUSED(is_parameter_entity),\n\tconst XML_Char *ATTR_UNUSED(value), int
      ATTR_UNUSED(value_length),\n\tconst XML_Char *ATTR_UNUSED(base),\n\tconst XML_Char
      *ATTR_UNUSED(systemId),\n\tconst XML_Char *ATTR_UNUSED(publicId),\n\tconst XML_Char
      *ATTR_UNUSED(notationName))"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/smallapp/unbound-anchor.c:1610,1
    - Dst: XML_SetUserData
      Src: /src/unbound/smallapp/unbound-anchor.c:1611,1
    - Dst: BIO_new
      Src: /src/unbound/smallapp/unbound-anchor.c:1614,1
    - Dst: BIO_s_mem
      Src: /src/unbound/smallapp/unbound-anchor.c:1614,1
    - Dst: BIO_new
      Src: /src/unbound/smallapp/unbound-anchor.c:1615,1
    - Dst: BIO_s_mem
      Src: /src/unbound/smallapp/unbound-anchor.c:1615,1
    - Dst: BIO_new
      Src: /src/unbound/smallapp/unbound-anchor.c:1616,1
    - Dst: BIO_s_mem
      Src: /src/unbound/smallapp/unbound-anchor.c:1616,1
    - Dst: BIO_new
      Src: /src/unbound/smallapp/unbound-anchor.c:1617,1
    - Dst: BIO_s_mem
      Src: /src/unbound/smallapp/unbound-anchor.c:1617,1
    - Dst: BIO_new
      Src: /src/unbound/smallapp/unbound-anchor.c:1618,1
    - Dst: BIO_s_mem
      Src: /src/unbound/smallapp/unbound-anchor.c:1618,1
    - Dst: BIO_new
      Src: /src/unbound/smallapp/unbound-anchor.c:1619,1
    - Dst: BIO_s_mem
      Src: /src/unbound/smallapp/unbound-anchor.c:1619,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1622,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:1623,1
    - Dst: snprintf
      Src: /src/unbound/smallapp/unbound-anchor.c:1625,1
    - Dst: ctime
      Src: /src/unbound/smallapp/unbound-anchor.c:1626,1
    - Dst: BIO_write
      Src: /src/unbound/smallapp/unbound-anchor.c:1627,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-anchor.c:1627,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1628,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:1629,1
    - Dst: XML_SetEntityDeclHandler
      Src: /src/unbound/smallapp/unbound-anchor.c:1631,1
    - Dst: XML_SetElementHandler
      Src: /src/unbound/smallapp/unbound-anchor.c:1632,1
    - Dst: XML_SetCharacterDataHandler
      Src: /src/unbound/smallapp/unbound-anchor.c:1633,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 25
    argCount: 3
    argNames:
    - parser
    - data
    - now
    argTypes:
    - XML_Parser
    - struct xml_data*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1634
      start: 1606
    functionDepth: 2
    functionLinenumber: 1606
    functionLinenumberEnd: 1634
    functionName: xml_parse_setup
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - BIO_write
    - XML_SetElementHandler
    - XML_SetCharacterDataHandler
    - BIO_s_mem
    - snprintf
    - BIO_new
    - ctime
    - printf
    - XML_SetEntityDeclHandler
    - strlen
    - memset
    - XML_SetUserData
    linkageType: ''
    returnType: void
    signature: void xml_parse_setup(XML_Parser parser, struct xml_data* data, time_t
      now)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: XML_ParserCreate
      Src: /src/unbound/smallapp/unbound-anchor.c:1654,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1656,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:1657,1
    - Dst: xml_parse_setup
      Src: /src/unbound/smallapp/unbound-anchor.c:1661,1
    - Dst: BIO_seek
      Src: /src/unbound/smallapp/unbound-anchor.c:1664,1
    - Dst: BIO_get_mem_data
      Src: /src/unbound/smallapp/unbound-anchor.c:1665,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1667,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:1668,1
    - Dst: XML_Parse
      Src: /src/unbound/smallapp/unbound-anchor.c:1670,1
    - Dst: XML_ErrorString
      Src: /src/unbound/smallapp/unbound-anchor.c:1671,1
    - Dst: XML_GetErrorCode
      Src: /src/unbound/smallapp/unbound-anchor.c:1671,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1672,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:1673,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1677,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-anchor.c:1679,1
    - Dst: XML_ParserFree
      Src: /src/unbound/smallapp/unbound-anchor.c:1680,1
    - Dst: BIO_seek
      Src: /src/unbound/smallapp/unbound-anchor.c:1683,1
    - Dst: BIO_get_mem_data
      Src: /src/unbound/smallapp/unbound-anchor.c:1684,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1685,1
    - Dst: fwrite
      Src: /src/unbound/smallapp/unbound-anchor.c:1686,1
    - Dst: fprintf
      Src: /src/unbound/smallapp/unbound-anchor.c:1688,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1689,1
    - Dst: BIO_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1691,1
    - Dst: BIO_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1692,1
    - Dst: BIO_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1693,1
    - Dst: BIO_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1694,1
    - Dst: BIO_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1695,1
    - Dst: BIO_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1699,1
    CyclomaticComplexity: 11
    EdgeCount: 11
    ICount: 43
    argCount: 2
    argNames:
    - xml
    - now
    argTypes:
    - BIO*
    - time_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1704
      start: 1646
    functionDepth: 3
    functionLinenumber: 1646
    functionLinenumberEnd: 1704
    functionName: xml_parse
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - BIO_free
    - XML_ParserCreate
    - BIO_seek
    - fwrite
    - BIO_get_mem_data
    - printf
    - free
    - fprintf
    - XML_GetErrorCode
    - XML_ParserFree
    - XML_ErrorString
    - xml_parse_setup
    - XML_Parse
    linkageType: ''
    returnType: BIO
    signature: 'BIO *

      xml_parse(BIO* xml, time_t now)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: X509_get_key_usage
      Src: /src/unbound/smallapp/unbound-anchor.c:1712,1
    - Dst: X509_get_ext_d2i
      Src: /src/unbound/smallapp/unbound-anchor.c:1717,1
    - Dst: ASN1_STRING_get0_data
      Src: /src/unbound/smallapp/unbound-anchor.c:1719,1
    - Dst: ASN1_STRING_data
      Src: /src/unbound/smallapp/unbound-anchor.c:1721,1
    - Dst: ASN1_STRING_length
      Src: /src/unbound/smallapp/unbound-anchor.c:1723,1
    - Dst: ASN1_BIT_STRING_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1729,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 13
    argCount: 1
    argNames:
    - cert
    argTypes:
    - X509*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1733
      start: 1707
    functionDepth: 0
    functionLinenumber: 1707
    functionLinenumberEnd: 1733
    functionName: get_usage_of_ex
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - ASN1_STRING_length
    - X509_get_key_usage
    - ASN1_STRING_get0_data
    - ASN1_BIT_STRING_free
    - ASN1_STRING_data
    - X509_get_ext_d2i
    linkageType: ''
    returnType: unsigned long
    signature: unsigned long get_usage_of_ex(X509* cert)
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: STACK_OF
      Src: /src/unbound/smallapp/unbound-anchor.c:1826,1
    - Dst: sk_X509_new_null
      Src: /src/unbound/smallapp/unbound-anchor.c:1826,1
    - Dst: STACK_OF
      Src: /src/unbound/smallapp/unbound-anchor.c:1827,1
    - Dst: PKCS7_get0_signers
      Src: /src/unbound/smallapp/unbound-anchor.c:1827,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1830,1
    - Dst: sk_X509_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1831,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1835,1
    - Dst: sk_X509_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1836,1
    - Dst: sk_X509_num
      Src: /src/unbound/smallapp/unbound-anchor.c:1839,1
    - Dst: X509_get_subject_name
      Src: /src/unbound/smallapp/unbound-anchor.c:1843,1
    - Dst: sk_X509_value
      Src: /src/unbound/smallapp/unbound-anchor.c:1844,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1847,1
    - Dst: X509_NAME_oneline
      Src: /src/unbound/smallapp/unbound-anchor.c:1851,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1853,1
    - Dst: print_name_ext
      Src: /src/unbound/smallapp/unbound-anchor.c:1857,1
    - Dst: print_name_ext
      Src: /src/unbound/smallapp/unbound-anchor.c:1859,1
    - Dst: X509_NAME_get_text_by_NID
      Src: /src/unbound/smallapp/unbound-anchor.c:1863,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1865,1
    - Dst: X509_NAME_get_text_by_NID
      Src: /src/unbound/smallapp/unbound-anchor.c:1866,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1868,1
    - Dst: X509_get_ext_by_NID
      Src: /src/unbound/smallapp/unbound-anchor.c:1872,1
    - Dst: sk_X509_value
      Src: /src/unbound/smallapp/unbound-anchor.c:1873,1
    - Dst: X509_get_ext
      Src: /src/unbound/smallapp/unbound-anchor.c:1878,1
    - Dst: sk_X509_value
      Src: /src/unbound/smallapp/unbound-anchor.c:1879,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1881,1
    - Dst: X509V3_EXT_print_fp
      Src: /src/unbound/smallapp/unbound-anchor.c:1882,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1883,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-anchor.c:1887,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1889,1
    - Dst: has_valid_emailaddr
      Src: /src/unbound/smallapp/unbound-anchor.c:1892,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1893,1
    - Dst: X509_NAME_get_text_by_NID
      Src: /src/unbound/smallapp/unbound-anchor.c:1897,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1900,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-anchor.c:1903,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1904,1
    - Dst: get_usage_of_ex
      Src: /src/unbound/smallapp/unbound-anchor.c:1912,1
    - Dst: sk_X509_value
      Src: /src/unbound/smallapp/unbound-anchor.c:1912,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:1914,1
    - Dst: sk_X509_push
      Src: /src/unbound/smallapp/unbound-anchor.c:1920,1
    - Dst: sk_X509_value
      Src: /src/unbound/smallapp/unbound-anchor.c:1920,1
    - Dst: sk_X509_free
      Src: /src/unbound/smallapp/unbound-anchor.c:1922,1
    CyclomaticComplexity: 36
    EdgeCount: 36
    ICount: 71
    argCount: 2
    argNames:
    - p7
    - p7signer
    argTypes:
    - PKCS7*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1924
      start: 1822
    functionDepth: 1
    functionLinenumber: 1822
    functionLinenumberEnd: 1924
    functionName: get_valid_signers
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - X509_get_ext
    - get_usage_of_ex
    - STACK_OF
    - sk_X509_value
    - print_name_ext
    - X509V3_EXT_print_fp
    - strcmp
    - has_valid_emailaddr
    - sk_X509_push
    - printf
    - sk_X509_num
    - X509_NAME_get_text_by_NID
    - X509_get_ext_by_NID
    - PKCS7_get0_signers
    - X509_get_subject_name
    - sk_X509_new_null
    - sk_X509_free
    - X509_NAME_oneline
    linkageType: ''
    returnType: STACK_OF
    signature: 'STACK_OF *

      get_valid_signers(PKCS7* p7, const char* p7signer)'
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/smallapp/unbound-anchor.c:2008,1
    - Dst: fopen
      Src: /src/unbound/smallapp/unbound-anchor.c:2009,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - tempf
    - tempflen
    - fname
    - mode
    argTypes:
    - char*
    - size_t
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2010
      start: 2005
    functionDepth: 2
    functionLinenumber: 2005
    functionLinenumberEnd: 2010
    functionName: tempfile_open
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - snprintf
    - fopen
    linkageType: ''
    returnType: FILE
    signature: 'FILE *

      tempfile_open(char* tempf, size_t tempflen, const char* fname, const char* mode)'
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: fflush
      Src: /src/unbound/smallapp/unbound-anchor.c:2016,1
    - Dst: fsync
      Src: /src/unbound/smallapp/unbound-anchor.c:2018,1
    - Dst: fileno
      Src: /src/unbound/smallapp/unbound-anchor.c:2018,1
    - Dst: FlushFileBuffers
      Src: /src/unbound/smallapp/unbound-anchor.c:2020,1
    - Dst: _get_osfhandle
      Src: /src/unbound/smallapp/unbound-anchor.c:2020,1
    - Dst: _fileno
      Src: /src/unbound/smallapp/unbound-anchor.c:2020,1
    - Dst: fclose
      Src: /src/unbound/smallapp/unbound-anchor.c:2022,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2023,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:2024,1
    - Dst: unlink
      Src: /src/unbound/smallapp/unbound-anchor.c:2025,1
    - Dst: unlink
      Src: /src/unbound/smallapp/unbound-anchor.c:2030,1
    - Dst: rename
      Src: /src/unbound/smallapp/unbound-anchor.c:2032,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2033,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:2033,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 13
    argCount: 3
    argNames:
    - fd
    - tempf
    - fname
    argTypes:
    - FILE*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2035
      start: 2013
    functionDepth: 0
    functionLinenumber: 2013
    functionLinenumberEnd: 2035
    functionName: tempfile_close
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - fileno
    - _fileno
    - rename
    - fclose
    - printf
    - fsync
    - _get_osfhandle
    - strerror
    - unlink
    - FlushFileBuffers
    - fflush
    linkageType: ''
    returnType: void
    signature: void tempfile_close(FILE* fd, const char* tempf, const char* fname)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: time
      Src: /src/unbound/smallapp/unbound-anchor.c:2042,1
    - Dst: tempfile_open
      Src: /src/unbound/smallapp/unbound-anchor.c:2044,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2046,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:2046,1
    - Dst: fprintf
      Src: /src/unbound/smallapp/unbound-anchor.c:2049,1
    - Dst: ctime
      Src: /src/unbound/smallapp/unbound-anchor.c:2056,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2057,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2059,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:2059,1
    - Dst: tempfile_close
      Src: /src/unbound/smallapp/unbound-anchor.c:2061,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 1
    argNames:
    - root_anchor_file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2062
      start: 2038
    functionDepth: 3
    functionLinenumber: 2038
    functionLinenumberEnd: 2062
    functionName: write_unsigned_root
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - tempfile_open
    - time
    - printf
    - ctime
    - tempfile_close
    - strerror
    - fprintf
    linkageType: ''
    returnType: void
    signature: void write_unsigned_root(const char* root_anchor_file)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: BIO_seek
      Src: /src/unbound/smallapp/unbound-anchor.c:2072,1
    - Dst: BIO_get_mem_data
      Src: /src/unbound/smallapp/unbound-anchor.c:2073,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2075,1
    - Dst: tempfile_open
      Src: /src/unbound/smallapp/unbound-anchor.c:2078,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2080,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:2080,1
    - Dst: fwrite
      Src: /src/unbound/smallapp/unbound-anchor.c:2083,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2084,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2086,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:2086,1
    - Dst: tempfile_close
      Src: /src/unbound/smallapp/unbound-anchor.c:2088,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 21
    argCount: 2
    argNames:
    - root_anchor_file
    - ds
    argTypes:
    - char*
    - BIO*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2089
      start: 2065
    functionDepth: 3
    functionLinenumber: 2065
    functionLinenumberEnd: 2089
    functionName: write_root_anchor
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - BIO_seek
    - fwrite
    - BIO_get_mem_data
    - tempfile_open
    - printf
    - tempfile_close
    - strerror
    linkageType: ''
    returnType: void
    signature: void write_root_anchor(const char* root_anchor_file, BIO* ds)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: verify_p7sig
      Src: /src/unbound/smallapp/unbound-anchor.c:2099,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2100,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:2101,1
    - Dst: xml_parse
      Src: /src/unbound/smallapp/unbound-anchor.c:2105,1
    - Dst: time
      Src: /src/unbound/smallapp/unbound-anchor.c:2105,1
    - Dst: write_unsigned_root
      Src: /src/unbound/smallapp/unbound-anchor.c:2108,1
    - Dst: write_root_anchor
      Src: /src/unbound/smallapp/unbound-anchor.c:2111,1
    - Dst: BIO_free
      Src: /src/unbound/smallapp/unbound-anchor.c:2113,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 5
    argNames:
    - root_anchor_file
    - xml
    - p7s
    - cert
    - p7signer
    argTypes:
    - char*
    - BIO*
    - BIO*
    - STACK_OF*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2114
      start: 2092
    functionDepth: 4
    functionLinenumber: 2092
    functionLinenumberEnd: 2114
    functionName: verify_and_update_anchor
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - BIO_free
    - write_unsigned_root
    - time
    - printf
    - xml_parse
    - verify_p7sig
    - write_root_anchor
    linkageType: ''
    returnType: void
    signature: "void verify_and_update_anchor(const char* root_anchor_file, BIO* xml,
      BIO* p7s,\n\tSTACK_OF(X509)* cert, const char* p7signer)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: WSACleanup
      Src: /src/unbound/smallapp/unbound-anchor.c:2117,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2117
      start: 2117
    functionDepth: 0
    functionLinenumber: 2117
    functionLinenumberEnd: 2117
    functionName: do_wsa_cleanup
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - WSACleanup
    linkageType: ''
    returnType: void
    signature: void do_wsa_cleanup(void)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: STACK_OF
      Src: /src/unbound/smallapp/unbound-anchor.c:2129,1
    - Dst: read_cert_or_builtin
      Src: /src/unbound/smallapp/unbound-anchor.c:2135,1
    - Dst: resolve_name
      Src: /src/unbound/smallapp/unbound-anchor.c:2138,1
    - Dst: parse_ip_addr
      Src: /src/unbound/smallapp/unbound-anchor.c:2141,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2142,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:2143,1
    - Dst: WSAStartup
      Src: /src/unbound/smallapp/unbound-anchor.c:2150,1
    - Dst: MAKEWORD
      Src: /src/unbound/smallapp/unbound-anchor.c:2150,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2151,1
    - Dst: wsa_strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:2152,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:2153,1
    - Dst: atexit
      Src: /src/unbound/smallapp/unbound-anchor.c:2155,1
    - Dst: https
      Src: /src/unbound/smallapp/unbound-anchor.c:2160,1
    - Dst: https
      Src: /src/unbound/smallapp/unbound-anchor.c:2161,1
    - Dst: verify_and_update_anchor
      Src: /src/unbound/smallapp/unbound-anchor.c:2164,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2165,1
    - Dst: BIO_free
      Src: /src/unbound/smallapp/unbound-anchor.c:2168,1
    - Dst: BIO_free
      Src: /src/unbound/smallapp/unbound-anchor.c:2169,1
    - Dst: sk_X509_pop_free
      Src: /src/unbound/smallapp/unbound-anchor.c:2171,1
    - Dst: ip_list_free
      Src: /src/unbound/smallapp/unbound-anchor.c:2173,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 27
    argCount: 14
    argNames:
    - root_anchor_file
    - root_cert_file
    - urlname
    - xmlname
    - p7sname
    - p7signer
    - res_conf
    - root_hints
    - debugconf
    - srcaddr
    - ip4only
    - ip6only
    - port
    - use_sni
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2175
      start: 2121
    functionDepth: 17
    functionLinenumber: 2121
    functionLinenumberEnd: 2175
    functionName: do_certupdate
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - BIO_free
    - STACK_OF
    - wsa_strerror
    - ip_list_free
    - read_cert_or_builtin
    - printf
    - https
    - atexit
    - verify_and_update_anchor
    - sk_X509_pop_free
    - MAKEWORD
    - resolve_name
    - WSAStartup
    - parse_ip_addr
    linkageType: ''
    returnType: int
    signature: "int do_certupdate(const char* root_anchor_file, const char* root_cert_file,\n\tconst
      char* urlname, const char* xmlname, const char* p7sname,\n\tconst char* p7signer,
      const char* res_conf, const char* root_hints,\n\tconst char* debugconf, const
      char* srcaddr, int ip4only, int ip6only,\n\tint port, int use_sni)"
  - BBCount: 12
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/smallapp/unbound-anchor.c:2191,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2195,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:2195,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2196,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:2197,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2199,1
    - Dst: fgets
      Src: /src/unbound/smallapp/unbound-anchor.c:2202,1
    - Dst: strncmp
      Src: /src/unbound/smallapp/unbound-anchor.c:2204,1
    - Dst: fclose
      Src: /src/unbound/smallapp/unbound-anchor.c:2205,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2206,1
    - Dst: fclose
      Src: /src/unbound/smallapp/unbound-anchor.c:2219,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2221,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2224,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 37
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2226
      start: 2185
    functionDepth: 0
    functionLinenumber: 2185
    functionLinenumberEnd: 2226
    functionName: try_read_anchor
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - strncmp
    - fclose
    - printf
    - fopen
    - strerror
    - fgets
    linkageType: ''
    returnType: int
    signature: int try_read_anchor(const char* file)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: get_builtin_ds
      Src: /src/unbound/smallapp/unbound-anchor.c:2233,1
    - Dst: tempfile_open
      Src: /src/unbound/smallapp/unbound-anchor.c:2234,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2236,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:2237,1
    - Dst: fwrite
      Src: /src/unbound/smallapp/unbound-anchor.c:2240,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-anchor.c:2240,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2241,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:2242,1
    - Dst: tempfile_close
      Src: /src/unbound/smallapp/unbound-anchor.c:2244,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2245
      start: 2229
    functionDepth: 3
    functionLinenumber: 2229
    functionLinenumberEnd: 2245
    functionName: write_builtin_anchor
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - fwrite
    - tempfile_open
    - printf
    - tempfile_close
    - strerror
    - strlen
    - get_builtin_ds
    linkageType: ''
    returnType: void
    signature: void write_builtin_anchor(const char* file)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: try_read_anchor
      Src: /src/unbound/smallapp/unbound-anchor.c:2260,1
    - Dst: write_builtin_anchor
      Src: /src/unbound/smallapp/unbound-anchor.c:2263,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 13
    argCount: 2
    argNames:
    - root_anchor_file
    - used_builtin
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2273
      start: 2256
    functionDepth: 4
    functionLinenumber: 2256
    functionLinenumberEnd: 2273
    functionName: provide_builtin
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - try_read_anchor
    - write_builtin_anchor
    linkageType: ''
    returnType: int
    signature: int provide_builtin(const char* root_anchor_file, int* used_builtin)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ub_ctx_set_option
      Src: /src/unbound/smallapp/unbound-anchor.c:2282,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2284,1
    - Dst: ub_strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:2284,1
    - Dst: ub_ctx_delete
      Src: /src/unbound/smallapp/unbound-anchor.c:2285,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:2286,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 8
    argCount: 2
    argNames:
    - ctx
    - root_anchor_file
    argTypes:
    - struct ub_ctx*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2288
      start: 2278
    functionDepth: 6
    functionLinenumber: 2278
    functionLinenumberEnd: 2288
    functionName: add_5011_probe_root
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - printf
    - ub_strerror
    - ub_ctx_delete
    - ub_ctx_set_option
    linkageType: ''
    returnType: void
    signature: void add_5011_probe_root(struct ub_ctx* ctx, const char* root_anchor_file)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: ub_resolve
      Src: /src/unbound/smallapp/unbound-anchor.c:2300,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2302,1
    - Dst: ub_strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:2302,1
    - Dst: ub_ctx_delete
      Src: /src/unbound/smallapp/unbound-anchor.c:2303,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:2304,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2307,1
    - Dst: ub_ctx_delete
      Src: /src/unbound/smallapp/unbound-anchor.c:2308,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-anchor.c:2309,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 15
    argCount: 1
    argNames:
    - ctx
    argTypes:
    - struct ub_ctx*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2312
      start: 2295
    functionDepth: 15
    functionLinenumber: 2295
    functionLinenumberEnd: 2312
    functionName: prime_root_key
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - exit
    - ub_resolve
    - printf
    - ub_strerror
    - ub_ctx_delete
    linkageType: ''
    returnType: struct ub_result
    signature: 'struct ub_result *

      prime_root_key(struct ub_ctx* ctx)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/smallapp/unbound-anchor.c:2318,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2321,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:2321,1
    - Dst: fgets
      Src: /src/unbound/smallapp/unbound-anchor.c:2324,1
    - Dst: strstr
      Src: /src/unbound/smallapp/unbound-anchor.c:2326,1
    - Dst: fclose
      Src: /src/unbound/smallapp/unbound-anchor.c:2327,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2328,1
    - Dst: fclose
      Src: /src/unbound/smallapp/unbound-anchor.c:2332,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 18
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2334
      start: 2315
    functionDepth: 0
    functionLinenumber: 2315
    functionLinenumberEnd: 2334
    functionName: read_if_pending_keys
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - fclose
    - printf
    - fopen
    - strerror
    - fgets
    - strstr
    linkageType: ''
    returnType: int
    signature: int read_if_pending_keys(const char* file)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: fopen
      Src: /src/unbound/smallapp/unbound-anchor.c:2340,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2343,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-anchor.c:2343,1
    - Dst: fgets
      Src: /src/unbound/smallapp/unbound-anchor.c:2346,1
    - Dst: strncmp
      Src: /src/unbound/smallapp/unbound-anchor.c:2347,1
    - Dst: strtol
      Src: /src/unbound/smallapp/unbound-anchor.c:2349,1
    - Dst: fclose
      Src: /src/unbound/smallapp/unbound-anchor.c:2350,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2352,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2356,1
    - Dst: ctime
      Src: /src/unbound/smallapp/unbound-anchor.c:2356,1
    - Dst: fclose
      Src: /src/unbound/smallapp/unbound-anchor.c:2360,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2361,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 23
    argCount: 1
    argNames:
    - file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2363
      start: 2337
    functionDepth: 0
    functionLinenumber: 2337
    functionLinenumberEnd: 2363
    functionName: read_last_success_time
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - strncmp
    - fclose
    - ctime
    - printf
    - fopen
    - strerror
    - fgets
    - strtol
    linkageType: ''
    returnType: int32_t
    signature: int32_t read_last_success_time(const char* file)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: read_if_pending_keys
      Src: /src/unbound/smallapp/unbound-anchor.c:2377,1
    - Dst: read_last_success_time
      Src: /src/unbound/smallapp/unbound-anchor.c:2378,1
    - Dst: time
      Src: /src/unbound/smallapp/unbound-anchor.c:2379,1
    - Dst: time
      Src: /src/unbound/smallapp/unbound-anchor.c:2383,1
    - Dst: xml_convertdate
      Src: /src/unbound/smallapp/unbound-anchor.c:2383,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2384,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2398,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2403,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2407,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 23
    argCount: 1
    argNames:
    - root_anchor_file
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2409
      start: 2374
    functionDepth: 4
    functionLinenumber: 2374
    functionLinenumberEnd: 2409
    functionName: probe_date_allows_certupdate
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - read_last_success_time
    - time
    - read_if_pending_keys
    - printf
    - xml_convertdate
    linkageType: ''
    returnType: int
    signature: int probe_date_allows_certupdate(const char* root_anchor_file)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: create_unbound_context
      Src: /src/unbound/smallapp/unbound-anchor.c:2419,1
    - Dst: add_5011_probe_root
      Src: /src/unbound/smallapp/unbound-anchor.c:2421,1
    - Dst: prime_root_key
      Src: /src/unbound/smallapp/unbound-anchor.c:2422,1
    - Dst: ub_ctx_delete
      Src: /src/unbound/smallapp/unbound-anchor.c:2423,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 6
    argCount: 7
    argNames:
    - root_anchor_file
    - res_conf
    - root_hints
    - debugconf
    - srcaddr
    - ip4only
    - ip6only
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2425
      start: 2411
    functionDepth: 16
    functionLinenumber: 2411
    functionLinenumberEnd: 2425
    functionName: fetch_root_key
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - ub_ctx_delete
    - add_5011_probe_root
    - create_unbound_context
    - prime_root_key
    linkageType: ''
    returnType: struct ub_result
    signature: "struct ub_result *\nfetch_root_key(const char* root_anchor_file, const
      char* res_conf,\n\tconst char* root_hints, const char* debugconf, const char*
      srcaddr,\n\tint ip4only, int ip6only)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: provide_builtin
      Src: /src/unbound/smallapp/unbound-anchor.c:2441,1
    - Dst: fetch_root_key
      Src: /src/unbound/smallapp/unbound-anchor.c:2446,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2451,1
    - Dst: ub_resolve_free
      Src: /src/unbound/smallapp/unbound-anchor.c:2452,1
    - Dst: fetch_root_key
      Src: /src/unbound/smallapp/unbound-anchor.c:2454,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2464,1
    - Dst: ub_resolve_free
      Src: /src/unbound/smallapp/unbound-anchor.c:2465,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2468,1
    - Dst: ub_resolve_free
      Src: /src/unbound/smallapp/unbound-anchor.c:2469,1
    - Dst: probe_date_allows_certupdate
      Src: /src/unbound/smallapp/unbound-anchor.c:2473,1
    - Dst: do_certupdate
      Src: /src/unbound/smallapp/unbound-anchor.c:2474,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-anchor.c:2480,1
    CyclomaticComplexity: 17
    EdgeCount: 17
    ICount: 32
    argCount: 16
    argNames:
    - root_anchor_file
    - root_cert_file
    - urlname
    - xmlname
    - p7sname
    - p7signer
    - res_conf
    - root_hints
    - debugconf
    - srcaddr
    - ip4only
    - ip6only
    - force
    - res_conf_fallback
    - port
    - use_sni
    argTypes:
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - char*
    - int
    - int
    - int
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2482
      start: 2428
    functionDepth: 18
    functionLinenumber: 2428
    functionLinenumberEnd: 2482
    functionName: do_root_update_work
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 0
    functionsReached:
    - provide_builtin
    - fetch_root_key
    - printf
    - do_certupdate
    - ub_resolve_free
    - probe_date_allows_certupdate
    linkageType: ''
    returnType: int
    signature: "int do_root_update_work(const char* root_anchor_file, const char*
      root_cert_file,\n\tconst char* urlname, const char* xmlname, const char* p7sname,\n\tconst
      char* p7signer, const char* res_conf, const char* root_hints,\n\tconst char*
      debugconf, const char* srcaddr, int ip4only, int ip6only, \n\tint force, int
      res_conf_fallback, int port, int use_sni)"
  - BBCount: 24
    BranchProfiles: []
    Callsites:
    - Dst: getopt
      Src: /src/unbound/smallapp/unbound-anchor.c:2507,1
    - Dst: atoi
      Src: /src/unbound/smallapp/unbound-anchor.c:2558,1
    - Dst: usage
      Src: /src/unbound/smallapp/unbound-anchor.c:2566,1
    - Dst: usage
      Src: /src/unbound/smallapp/unbound-anchor.c:2572,1
    - Dst: ERR_load_crypto_strings
      Src: /src/unbound/smallapp/unbound-anchor.c:2575,1
    - Dst: ERR_load_SSL_strings
      Src: /src/unbound/smallapp/unbound-anchor.c:2578,1
    - Dst: OpenSSL_add_all_algorithms
      Src: /src/unbound/smallapp/unbound-anchor.c:2582,1
    - Dst: OPENSSL_init_crypto
      Src: /src/unbound/smallapp/unbound-anchor.c:2585,1
    - Dst: defined
      Src: /src/unbound/smallapp/unbound-anchor.c:2588,1
    - Dst: SSL_library_init
      Src: /src/unbound/smallapp/unbound-anchor.c:2594,1
    - Dst: OPENSSL_init_ssl
      Src: /src/unbound/smallapp/unbound-anchor.c:2596,1
    - Dst: defined
      Src: /src/unbound/smallapp/unbound-anchor.c:2597,1
    - Dst: do_list_builtin
      Src: /src/unbound/smallapp/unbound-anchor.c:2603,1
    - Dst: do_root_update_work
      Src: /src/unbound/smallapp/unbound-anchor.c:2605,1
    CyclomaticComplexity: 27
    EdgeCount: 27
    ICount: 75
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 2608
      start: 2490
    functionDepth: 19
    functionLinenumber: 2490
    functionLinenumberEnd: 2608
    functionName: main
    functionSourceFile: /src/unbound/smallapp/unbound-anchor.c
    functionUses: 34
    functionsReached:
    - getopt
    - do_root_update_work
    - OpenSSL_add_all_algorithms
    - ERR_load_SSL_strings
    - defined
    - SSL_library_init
    - do_list_builtin
    - OPENSSL_init_ssl
    - atoi
    - ERR_load_crypto_strings
    - OPENSSL_init_crypto
    - usage
    linkageType: ''
    returnType: int
    signature: int main(int argc, char* argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:94,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:95,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:96,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:97,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:98,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:99,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:100,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:101,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:102,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:103,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:104,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:105,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:106,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:107,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:108,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:109,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:110,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:111,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:112,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:113,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:114,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:115,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:116,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:117,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:118,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:119,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:120,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:121,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:122,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:123,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:125,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:127,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:128,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:129,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:130,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:131,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:132,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:133,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:134,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:135,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:136,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:137,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:138,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:139,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:140,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:141,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:142,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:143,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:144,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:145,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:146,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:147,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:148,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:149,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:150,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:151,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:152,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:153,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:154,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:155,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:156,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:157,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:158,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:159,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:160,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:161,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:162,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:163,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:164,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:165,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:166,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:167,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:168,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:169,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:170,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:171,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:172,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:173,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:174,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:175,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:176,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:177,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:178,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:179,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:180,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:181,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:182,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:183,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:184,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:185,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:186,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:187,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:188,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:189,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:190,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:191,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:192,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:193,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:194,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:195,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:196,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:197,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:198,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:199,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:200,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:201,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:202,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:203,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:204,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:205,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:206,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:207,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-control.c:208,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 114
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 209
      start: 91
    functionDepth: 0
    functionLinenumber: 91
    functionLinenumberEnd: 209
    functionName: usage
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 22
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 216
      start: 215
    functionDepth: 0
    functionLinenumber: 215
    functionLinenumberEnd: 216
    functionName: PR_UL_NM
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PR_UL_NM(str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 216
    functionDepth: 0
    functionLinenumber: 216
    functionLinenumberEnd: 217
    functionName: PR_UL
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PR_UL(str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - str
    - ','
    - nm
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 218
      start: 217
    functionDepth: 0
    functionLinenumber: 217
    functionLinenumberEnd: 218
    functionName: PR_UL_SUB
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PR_UL_SUB(str, nm, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 220
      start: 218
    functionDepth: 0
    functionLinenumber: 218
    functionLinenumberEnd: 220
    functionName: PR_TIMEVAL
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PR_TIMEVAL(str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 222
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 222
    functionName: PR_STATSTIME
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PR_STATSTIME(str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 5
    argNames:
    - (
    - str
    - ','
    - var
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 223
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 223
    functionName: PR_LL
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: PR_LL(str, var)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:228,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:229,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:231,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:233,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:235,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:237,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:239,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:241,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:242,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:244,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:245,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:246,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:247,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:248,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:249,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:251,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:252,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:253,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:254,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:257,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:258,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:263,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:264,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:265,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:266,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:267,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:268,1
    - Dst: timeval_divide
      Src: /src/unbound/smallapp/unbound-control.c:273,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:274,1
    - Dst: PR_TIMEVAL
      Src: /src/unbound/smallapp/unbound-control.c:275,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:276,1
    - Dst: PR_UL_NM
      Src: /src/unbound/smallapp/unbound-control.c:277,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 35
    argCount: 2
    argNames:
    - nm
    - s
    argTypes:
    - char*
    - struct ub_stats_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 225
    functionDepth: 1
    functionLinenumber: 225
    functionLinenumberEnd: 278
    functionName: pr_stats
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached:
    - timeval_divide
    - PR_UL_NM
    - printf
    - PR_TIMEVAL
    linkageType: ''
    returnType: void
    signature: void pr_stats(const char* nm, struct ub_stats_info* s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PR_STATSTIME
      Src: /src/unbound/smallapp/unbound-control.c:283,1
    - Dst: PR_STATSTIME
      Src: /src/unbound/smallapp/unbound-control.c:284,1
    - Dst: PR_STATSTIME
      Src: /src/unbound/smallapp/unbound-control.c:285,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - shm_stat
    argTypes:
    - struct ub_shm_stat_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 286
    functionName: print_uptime
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 1
    functionsReached:
    - PR_STATSTIME
    linkageType: ''
    returnType: void
    signature: void print_uptime(struct ub_shm_stat_info* shm_stat)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: PR_LL
      Src: /src/unbound/smallapp/unbound-control.c:292,1
    - Dst: PR_LL
      Src: /src/unbound/smallapp/unbound-control.c:293,1
    - Dst: PR_LL
      Src: /src/unbound/smallapp/unbound-control.c:294,1
    - Dst: PR_LL
      Src: /src/unbound/smallapp/unbound-control.c:295,1
    - Dst: PR_LL
      Src: /src/unbound/smallapp/unbound-control.c:296,1
    - Dst: PR_LL
      Src: /src/unbound/smallapp/unbound-control.c:298,1
    - Dst: PR_LL
      Src: /src/unbound/smallapp/unbound-control.c:301,1
    - Dst: PR_LL
      Src: /src/unbound/smallapp/unbound-control.c:304,1
    - Dst: PR_LL
      Src: /src/unbound/smallapp/unbound-control.c:307,1
    - Dst: PR_LL
      Src: /src/unbound/smallapp/unbound-control.c:309,1
    - Dst: PR_LL
      Src: /src/unbound/smallapp/unbound-control.c:312,1
    - Dst: PR_LL
      Src: /src/unbound/smallapp/unbound-control.c:313,1
    - Dst: PR_LL
      Src: /src/unbound/smallapp/unbound-control.c:314,1
    - Dst: PR_LL
      Src: /src/unbound/smallapp/unbound-control.c:316,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 15
    argCount: 2
    argNames:
    - shm_stat
    - s
    argTypes:
    - struct ub_shm_stat_info*
    - struct ub_stats_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 318
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 318
    functionName: print_mem
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 1
    functionsReached:
    - PR_LL
    linkageType: ''
    returnType: void
    signature: "void print_mem(struct ub_shm_stat_info* shm_stat,\n\tstruct ub_stats_info*
      s)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: timehist_setup
      Src: /src/unbound/smallapp/unbound-control.c:325,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:327,1
    - Dst: timehist_import
      Src: /src/unbound/smallapp/unbound-control.c:328,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:330,1
    - Dst: timehist_delete
      Src: /src/unbound/smallapp/unbound-control.c:337,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 9
    argCount: 1
    argNames:
    - s
    argTypes:
    - struct ub_stats_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 321
    functionDepth: 3
    functionLinenumber: 321
    functionLinenumberEnd: 338
    functionName: print_hist
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 1
    functionsReached:
    - timehist_setup
    - timehist_delete
    - printf
    - fatal_exit
    - timehist_import
    linkageType: ''
    returnType: void
    signature: void print_hist(struct ub_stats_info* s)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/smallapp/unbound-control.c:350,1
    - Dst: PR_UL_SUB
      Src: /src/unbound/smallapp/unbound-control.c:351,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:354,1
    - Dst: sldns_wire2str_class_buf
      Src: /src/unbound/smallapp/unbound-control.c:361,1
    - Dst: PR_UL_SUB
      Src: /src/unbound/smallapp/unbound-control.c:362,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:365,1
    - Dst: sldns_wire2str_opcode_buf
      Src: /src/unbound/smallapp/unbound-control.c:372,1
    - Dst: PR_UL_SUB
      Src: /src/unbound/smallapp/unbound-control.c:373,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:377,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:378,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:379,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:380,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:381,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:382,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:383,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:385,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:389,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:390,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:391,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:392,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:393,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:394,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:395,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:396,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:397,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:398,1
    - Dst: sldns_wire2str_rcode_buf
      Src: /src/unbound/smallapp/unbound-control.c:405,1
    - Dst: PR_UL_SUB
      Src: /src/unbound/smallapp/unbound-control.c:406,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:409,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:412,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:414,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:415,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:416,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:417,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:418,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:419,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:421,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:422,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:424,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:425,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:426,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:427,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:429,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:430,1
    - Dst: PR_UL_SUB
      Src: /src/unbound/smallapp/unbound-control.c:437,1
    - Dst: rpz_action_to_string
      Src: /src/unbound/smallapp/unbound-control.c:437,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:440,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:442,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:444,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:445,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:448,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:449,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:451,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:452,1
    - Dst: PR_UL
      Src: /src/unbound/smallapp/unbound-control.c:455,1
    CyclomaticComplexity: 29
    EdgeCount: 29
    ICount: 83
    argCount: 2
    argNames:
    - s
    - inhibit_zero
    argTypes:
    - struct ub_stats_info*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 457
      start: 341
    functionDepth: 2
    functionLinenumber: 341
    functionLinenumberEnd: 457
    functionName: print_extended
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_type_buf
    - sldns_wire2str_opcode_buf
    - sldns_wire2str_rcode_buf
    - PR_UL
    - sldns_wire2str_class_buf
    - rpz_action_to_string
    - PR_UL_SUB
    linkageType: ''
    returnType: void
    signature: void print_extended(struct ub_stats_info* s, int inhibit_zero)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/smallapp/unbound-control.c:466,1
    - Dst: pr_stats
      Src: /src/unbound/smallapp/unbound-control.c:467,1
    - Dst: pr_stats
      Src: /src/unbound/smallapp/unbound-control.c:469,1
    - Dst: print_uptime
      Src: /src/unbound/smallapp/unbound-control.c:470,1
    - Dst: print_mem
      Src: /src/unbound/smallapp/unbound-control.c:472,1
    - Dst: print_hist
      Src: /src/unbound/smallapp/unbound-control.c:473,1
    - Dst: print_extended
      Src: /src/unbound/smallapp/unbound-control.c:474,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 12
    argCount: 3
    argNames:
    - cfg
    - stats
    - shm_stat
    argTypes:
    - struct config_file*
    - struct ub_stats_info*
    - struct ub_shm_stat_info*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 476
      start: 460
    functionDepth: 3
    functionLinenumber: 460
    functionLinenumberEnd: 476
    functionName: do_stats_shm
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached:
    - pr_stats
    - print_extended
    - snprintf
    - print_uptime
    - print_hist
    - print_mem
    linkageType: ''
    returnType: void
    signature: "void do_stats_shm(struct config_file* cfg, struct ub_stats_info* stats,\n\tstruct
      ub_shm_stat_info* shm_stat)"
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: config_create
      Src: /src/unbound/smallapp/unbound-control.c:488,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:489,1
    - Dst: config_read
      Src: /src/unbound/smallapp/unbound-control.c:490,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:491,1
    - Dst: shmget
      Src: /src/unbound/smallapp/unbound-control.c:493,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:495,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-control.c:495,1
    - Dst: shmget
      Src: /src/unbound/smallapp/unbound-control.c:497,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:499,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-control.c:499,1
    - Dst: shmat
      Src: /src/unbound/smallapp/unbound-control.c:501,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:503,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-control.c:503,1
    - Dst: shmat
      Src: /src/unbound/smallapp/unbound-control.c:505,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:507,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-control.c:507,1
    - Dst: do_stats_shm
      Src: /src/unbound/smallapp/unbound-control.c:513,1
    - Dst: shmdt
      Src: /src/unbound/smallapp/unbound-control.c:517,1
    - Dst: shmdt
      Src: /src/unbound/smallapp/unbound-control.c:518,1
    - Dst: config_delete
      Src: /src/unbound/smallapp/unbound-control.c:519,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 29
    argCount: 2
    argNames:
    - cfgfile
    - quiet
    argTypes:
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 524
      start: 480
    functionDepth: 5
    functionLinenumber: 480
    functionLinenumberEnd: 524
    functionName: print_stats_shm
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached:
    - shmdt
    - config_create
    - fatal_exit
    - do_stats_shm
    - strerror
    - config_delete
    - config_read
    - shmget
    - shmat
    linkageType: ''
    returnType: void
    signature: void print_stats_shm(const char* cfgfile, int quiet)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/unbound/smallapp/unbound-control.c:529,1
    - Dst: ERR_print_errors_fp
      Src: /src/unbound/smallapp/unbound-control.c:530,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-control.c:531,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 4
    argCount: 1
    argNames:
    - s
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 532
      start: 527
    functionDepth: 0
    functionLinenumber: 527
    functionLinenumberEnd: 532
    functionName: ssl_err
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached:
    - exit
    - fprintf
    - ERR_print_errors_fp
    linkageType: ''
    returnType: void
    signature: void ssl_err(const char* s)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ERR_peek_error
      Src: /src/unbound/smallapp/unbound-control.c:538,1
    - Dst: ERR_GET_LIB
      Src: /src/unbound/smallapp/unbound-control.c:539,1
    - Dst: fprintf
      Src: /src/unbound/smallapp/unbound-control.c:540,1
    - Dst: ERR_reason_error_string
      Src: /src/unbound/smallapp/unbound-control.c:541,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-control.c:542,1
    - Dst: ssl_err
      Src: /src/unbound/smallapp/unbound-control.c:544,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 8
    argCount: 2
    argNames:
    - s
    - path
    argTypes:
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 546
      start: 535
    functionDepth: 1
    functionLinenumber: 535
    functionLinenumberEnd: 546
    functionName: ssl_path_err
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached:
    - exit
    - ssl_err
    - ERR_peek_error
    - ERR_reason_error_string
    - fprintf
    - ERR_GET_LIB
    linkageType: ''
    returnType: void
    signature: void ssl_path_err(const char* s, const char *path)
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: options_remote_is_address
      Src: /src/unbound/smallapp/unbound-control.c:555,1
    - Dst: fname_after_chroot
      Src: /src/unbound/smallapp/unbound-control.c:557,1
    - Dst: fname_after_chroot
      Src: /src/unbound/smallapp/unbound-control.c:558,1
    - Dst: fname_after_chroot
      Src: /src/unbound/smallapp/unbound-control.c:559,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:561,1
    - Dst: SSL_CTX_new
      Src: /src/unbound/smallapp/unbound-control.c:562,1
    - Dst: SSLv23_client_method
      Src: /src/unbound/smallapp/unbound-control.c:562,1
    - Dst: ssl_err
      Src: /src/unbound/smallapp/unbound-control.c:564,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/smallapp/unbound-control.c:566,1
    - Dst: ssl_err
      Src: /src/unbound/smallapp/unbound-control.c:568,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/smallapp/unbound-control.c:570,1
    - Dst: ssl_err
      Src: /src/unbound/smallapp/unbound-control.c:572,1
    - Dst: SSL_CTX_set_options
      Src: /src/unbound/smallapp/unbound-control.c:575,1
    - Dst: ssl_err
      Src: /src/unbound/smallapp/unbound-control.c:577,1
    - Dst: SSL_CTX_use_certificate_chain_file
      Src: /src/unbound/smallapp/unbound-control.c:579,1
    - Dst: ssl_path_err
      Src: /src/unbound/smallapp/unbound-control.c:580,1
    - Dst: SSL_CTX_use_PrivateKey_file
      Src: /src/unbound/smallapp/unbound-control.c:581,1
    - Dst: ssl_path_err
      Src: /src/unbound/smallapp/unbound-control.c:582,1
    - Dst: SSL_CTX_check_private_key
      Src: /src/unbound/smallapp/unbound-control.c:583,1
    - Dst: ssl_err
      Src: /src/unbound/smallapp/unbound-control.c:584,1
    - Dst: SSL_CTX_load_verify_locations
      Src: /src/unbound/smallapp/unbound-control.c:585,1
    - Dst: ssl_path_err
      Src: /src/unbound/smallapp/unbound-control.c:586,1
    - Dst: SSL_CTX_set_verify
      Src: /src/unbound/smallapp/unbound-control.c:588,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-control.c:590,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-control.c:591,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-control.c:592,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 594
      start: 549
    functionDepth: 2
    functionLinenumber: 549
    functionLinenumberEnd: 594
    functionName: setup_ctx
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 2
    functionsReached:
    - fname_after_chroot
    - SSL_CTX_check_private_key
    - SSL_CTX_load_verify_locations
    - SSL_CTX_use_certificate_chain_file
    - SSL_CTX_set_options
    - SSL_CTX_new
    - options_remote_is_address
    - ssl_err
    - fatal_exit
    - free
    - SSLv23_client_method
    - ssl_path_err
    - SSL_CTX_use_PrivateKey_file
    - SSL_CTX_set_verify
    linkageType: ''
    returnType: SSL_CTX
    signature: 'SSL_CTX *

      setup_ctx(struct config_file* cfg)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: log_err
      Src: /src/unbound/smallapp/unbound-control.c:602,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-control.c:602,1
    - Dst: log_err_addr
      Src: /src/unbound/smallapp/unbound-control.c:603,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-control.c:603,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:605,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-control.c:606,1
    - Dst: log_err
      Src: /src/unbound/smallapp/unbound-control.c:610,1
    - Dst: wsa_strerror
      Src: /src/unbound/smallapp/unbound-control.c:610,1
    - Dst: log_err_addr
      Src: /src/unbound/smallapp/unbound-control.c:611,1
    - Dst: wsa_strerror
      Src: /src/unbound/smallapp/unbound-control.c:611,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:613,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-control.c:614,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-control.c:617,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 16
    argCount: 6
    argNames:
    - err
    - svr
    - addr
    - addrlen
    - statuscmd
    - useport
    argTypes:
    - int
    - char*
    - struct sockaddr_storage*
    - socklen_t
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 618
      start: 597
    functionDepth: 7
    functionLinenumber: 597
    functionLinenumberEnd: 618
    functionName: checkconnecterr
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached:
    - exit
    - log_err
    - wsa_strerror
    - printf
    - log_err_addr
    - strerror
    linkageType: ''
    returnType: void
    signature: "void checkconnecterr(int err, const char* svr, struct sockaddr_storage*
      addr,\n\tsocklen_t addrlen, int statuscmd, int useport)"
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: extstrtoaddr
      Src: /src/unbound/smallapp/unbound-control.c:635,1
    - Dst: resolve_interface_names
      Src: /src/unbound/smallapp/unbound-control.c:639,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:642,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:645,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:655,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:657,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:658,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:659,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:660,1
    - Dst: strchr
      Src: /src/unbound/smallapp/unbound-control.c:663,1
    - Dst: extstrtoaddr
      Src: /src/unbound/smallapp/unbound-control.c:664,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:665,1
    - Dst: strlcpy
      Src: /src/unbound/smallapp/unbound-control.c:673,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/smallapp/unbound-control.c:680,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:681,1
    - Dst: addr_is_ip6
      Src: /src/unbound/smallapp/unbound-control.c:685,1
    - Dst: socket
      Src: /src/unbound/smallapp/unbound-control.c:686,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:688,1
    - Dst: sock_strerror
      Src: /src/unbound/smallapp/unbound-control.c:688,1
    - Dst: fd_set_nonblock
      Src: /src/unbound/smallapp/unbound-control.c:690,1
    - Dst: connect
      Src: /src/unbound/smallapp/unbound-control.c:691,1
    - Dst: checkconnecterr
      Src: /src/unbound/smallapp/unbound-control.c:695,1
    - Dst: WSAGetLastError
      Src: /src/unbound/smallapp/unbound-control.c:700,1
    - Dst: WSAGetLastError
      Src: /src/unbound/smallapp/unbound-control.c:701,1
    - Dst: checkconnecterr
      Src: /src/unbound/smallapp/unbound-control.c:702,1
    - Dst: WSAGetLastError
      Src: /src/unbound/smallapp/unbound-control.c:702,1
    - Dst: FD_ZERO
      Src: /src/unbound/smallapp/unbound-control.c:710,1
    - Dst: FD_ZERO
      Src: /src/unbound/smallapp/unbound-control.c:712,1
    - Dst: FD_ZERO
      Src: /src/unbound/smallapp/unbound-control.c:714,1
    - Dst: select
      Src: /src/unbound/smallapp/unbound-control.c:718,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:719,1
    - Dst: sock_strerror
      Src: /src/unbound/smallapp/unbound-control.c:719,1
    - Dst: FD_ISSET
      Src: /src/unbound/smallapp/unbound-control.c:721,1
    - Dst: FD_ISSET
      Src: /src/unbound/smallapp/unbound-control.c:721,1
    - Dst: FD_ISSET
      Src: /src/unbound/smallapp/unbound-control.c:722,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:723,1
    - Dst: getsockopt
      Src: /src/unbound/smallapp/unbound-control.c:728,1
    - Dst: WSAGetLastError
      Src: /src/unbound/smallapp/unbound-control.c:733,1
    - Dst: checkconnecterr
      Src: /src/unbound/smallapp/unbound-control.c:752,1
    - Dst: fd_set_block
      Src: /src/unbound/smallapp/unbound-control.c:758,1
    - Dst: config_del_strarray
      Src: /src/unbound/smallapp/unbound-control.c:759,1
    CyclomaticComplexity: 38
    EdgeCount: 38
    ICount: 92
    argCount: 3
    argNames:
    - svr
    - cfg
    - statuscmd
    argTypes:
    - char*
    - struct config_file*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 761
      start: 621
    functionDepth: 8
    functionLinenumber: 621
    functionLinenumberEnd: 761
    functionName: contact_server
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached:
    - getsockopt
    - strcmp
    - checkconnecterr
    - addr_is_ip6
    - config_del_strarray
    - select
    - socket
    - FD_ZERO
    - sock_strerror
    - fd_set_block
    - strchr
    - strlcpy
    - FD_ISSET
    - resolve_interface_names
    - extstrtoaddr
    - ipstrtoaddr
    - fatal_exit
    - WSAGetLastError
    - fd_set_nonblock
    - connect
    linkageType: ''
    returnType: int
    signature: int contact_server(const char* svr, struct config_file* cfg, int statuscmd)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: SSL_new
      Src: /src/unbound/smallapp/unbound-control.c:772,1
    - Dst: ssl_err
      Src: /src/unbound/smallapp/unbound-control.c:774,1
    - Dst: SSL_set_connect_state
      Src: /src/unbound/smallapp/unbound-control.c:775,1
    - Dst: SSL_set_mode
      Src: /src/unbound/smallapp/unbound-control.c:776,1
    - Dst: SSL_set_fd
      Src: /src/unbound/smallapp/unbound-control.c:777,1
    - Dst: ssl_err
      Src: /src/unbound/smallapp/unbound-control.c:778,1
    - Dst: ERR_clear_error
      Src: /src/unbound/smallapp/unbound-control.c:780,1
    - Dst: SSL_do_handshake
      Src: /src/unbound/smallapp/unbound-control.c:781,1
    - Dst: SSL_get_error
      Src: /src/unbound/smallapp/unbound-control.c:783,1
    - Dst: ssl_err
      Src: /src/unbound/smallapp/unbound-control.c:785,1
    - Dst: SSL_get_verify_result
      Src: /src/unbound/smallapp/unbound-control.c:790,1
    - Dst: ssl_err
      Src: /src/unbound/smallapp/unbound-control.c:791,1
    - Dst: SSL_get1_peer_certificate
      Src: /src/unbound/smallapp/unbound-control.c:793,1
    - Dst: SSL_get_peer_certificate
      Src: /src/unbound/smallapp/unbound-control.c:795,1
    - Dst: ssl_err
      Src: /src/unbound/smallapp/unbound-control.c:798,1
    - Dst: X509_free
      Src: /src/unbound/smallapp/unbound-control.c:799,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 26
    argCount: 2
    argNames:
    - ctx
    - fd
    argTypes:
    - SSL_CTX*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 802
      start: 764
    functionDepth: 1
    functionLinenumber: 764
    functionLinenumberEnd: 802
    functionName: setup_ssl
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 2
    functionsReached:
    - SSL_get_verify_result
    - ssl_err
    - SSL_set_mode
    - SSL_set_connect_state
    - SSL_do_handshake
    - SSL_get_peer_certificate
    - X509_free
    - SSL_new
    - SSL_set_fd
    - SSL_get1_peer_certificate
    - ERR_clear_error
    - SSL_get_error
    linkageType: ''
    returnType: SSL
    signature: 'SSL *

      setup_ssl(SSL_CTX* ctx, int fd)'
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: ERR_clear_error
      Src: /src/unbound/smallapp/unbound-control.c:810,1
    - Dst: SSL_read
      Src: /src/unbound/smallapp/unbound-control.c:811,1
    - Dst: SSL_get_error
      Src: /src/unbound/smallapp/unbound-control.c:812,1
    - Dst: ssl_err
      Src: /src/unbound/smallapp/unbound-control.c:816,1
    - Dst: recv
      Src: /src/unbound/smallapp/unbound-control.c:820,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:826,1
    - Dst: sock_strerror
      Src: /src/unbound/smallapp/unbound-control.c:826,1
    CyclomaticComplexity: 5
    EdgeCount: 5
    ICount: 20
    argCount: 4
    argNames:
    - ssl
    - fd
    - buf
    - len
    argTypes:
    - SSL*
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 831
      start: 805
    functionDepth: 1
    functionLinenumber: 805
    functionLinenumberEnd: 831
    functionName: remote_read
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached:
    - ssl_err
    - SSL_read
    - fatal_exit
    - sock_strerror
    - recv
    - ERR_clear_error
    - SSL_get_error
    linkageType: ''
    returnType: int
    signature: int remote_read(SSL* ssl, int fd, char* buf, size_t len)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: SSL_write
      Src: /src/unbound/smallapp/unbound-control.c:838,1
    - Dst: ssl_err
      Src: /src/unbound/smallapp/unbound-control.c:839,1
    - Dst: send
      Src: /src/unbound/smallapp/unbound-control.c:841,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:842,1
    - Dst: sock_strerror
      Src: /src/unbound/smallapp/unbound-control.c:842,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 9
    argCount: 4
    argNames:
    - ssl
    - fd
    - buf
    - len
    argTypes:
    - SSL*
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 845
      start: 834
    functionDepth: 1
    functionLinenumber: 834
    functionLinenumberEnd: 845
    functionName: remote_write
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached:
    - ssl_err
    - SSL_write
    - fatal_exit
    - sock_strerror
    - send
    linkageType: ''
    returnType: void
    signature: void remote_write(SSL* ssl, int fd, const char* buf, size_t len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:853,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:854,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:855,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:856,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:858,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:861,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:862,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:864,1
    CyclomaticComplexity: 10
    EdgeCount: 10
    ICount: 7
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 867
      start: 850
    functionDepth: 0
    functionLinenumber: 850
    functionLinenumberEnd: 867
    functionName: check_args_for_listcmd
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached:
    - strcmp
    - fatal_exit
    linkageType: ''
    returnType: void
    signature: void check_args_for_listcmd(int argc, char* argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: fgets
      Src: /src/unbound/smallapp/unbound-control.c:873,1
    - Dst: remote_write
      Src: /src/unbound/smallapp/unbound-control.c:874,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-control.c:874,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 5
    argNames:
    - ssl
    - fd
    - in
    - buf
    - sz
    argTypes:
    - SSL*
    - int
    - FILE*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 876
      start: 870
    functionDepth: 2
    functionLinenumber: 870
    functionLinenumberEnd: 876
    functionName: send_file
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached:
    - fgets
    - remote_write
    - strlen
    linkageType: ''
    returnType: void
    signature: void send_file(SSL* ssl, int fd, FILE* in, char* buf, size_t sz)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: remote_write
      Src: /src/unbound/smallapp/unbound-control.c:883,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ssl
    - fd
    argTypes:
    - SSL*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 884
      start: 879
    functionDepth: 2
    functionLinenumber: 879
    functionLinenumberEnd: 884
    functionName: send_eof
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached:
    - remote_write
    linkageType: ''
    returnType: void
    signature: void send_eof(SSL* ssl, int fd)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: snprintf
      Src: /src/unbound/smallapp/unbound-control.c:896,1
    - Dst: remote_write
      Src: /src/unbound/smallapp/unbound-control.c:897,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-control.c:897,1
    - Dst: remote_write
      Src: /src/unbound/smallapp/unbound-control.c:899,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-control.c:899,1
    - Dst: remote_write
      Src: /src/unbound/smallapp/unbound-control.c:900,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-control.c:900,1
    - Dst: remote_write
      Src: /src/unbound/smallapp/unbound-control.c:902,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-control.c:902,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:904,1
    - Dst: send_file
      Src: /src/unbound/smallapp/unbound-control.c:905,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:907,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:908,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:909,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:910,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:911,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:912,1
    - Dst: send_file
      Src: /src/unbound/smallapp/unbound-control.c:913,1
    - Dst: send_eof
      Src: /src/unbound/smallapp/unbound-control.c:914,1
    - Dst: remote_read
      Src: /src/unbound/smallapp/unbound-control.c:918,1
    - Dst: strncmp
      Src: /src/unbound/smallapp/unbound-control.c:921,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:922,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-control.c:925,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 29
    argCount: 5
    argNames:
    - ssl
    - fd
    - quiet
    - argc
    - argv
    argTypes:
    - SSL*
    - int
    - int
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 931
      start: 887
    functionDepth: 3
    functionLinenumber: 887
    functionLinenumberEnd: 931
    functionName: go_cmd
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 0
    functionsReached:
    - strcmp
    - send_file
    - strncmp
    - snprintf
    - remote_write
    - send_eof
    - printf
    - strlen
    - remote_read
    linkageType: ''
    returnType: int
    signature: int go_cmd(SSL* ssl, int fd, int quiet, int argc, char* argv[])
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: config_create
      Src: /src/unbound/smallapp/unbound-control.c:943,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:944,1
    - Dst: config_read
      Src: /src/unbound/smallapp/unbound-control.c:945,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:946,1
    - Dst: log_warn
      Src: /src/unbound/smallapp/unbound-control.c:948,1
    - Dst: w_config_adjust_directory
      Src: /src/unbound/smallapp/unbound-control.c:950,1
    - Dst: setup_ctx
      Src: /src/unbound/smallapp/unbound-control.c:952,1
    - Dst: contact_server
      Src: /src/unbound/smallapp/unbound-control.c:955,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:955,1
    - Dst: setup_ssl
      Src: /src/unbound/smallapp/unbound-control.c:956,1
    - Dst: go_cmd
      Src: /src/unbound/smallapp/unbound-control.c:959,1
    - Dst: SSL_free
      Src: /src/unbound/smallapp/unbound-control.c:961,1
    - Dst: sock_close
      Src: /src/unbound/smallapp/unbound-control.c:962,1
    - Dst: SSL_CTX_free
      Src: /src/unbound/smallapp/unbound-control.c:963,1
    - Dst: config_delete
      Src: /src/unbound/smallapp/unbound-control.c:964,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 19
    argCount: 5
    argNames:
    - cfgfile
    - svr
    - quiet
    - argc
    - argv
    argTypes:
    - char*
    - char*
    - int
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 966
      start: 934
    functionDepth: 9
    functionLinenumber: 934
    functionLinenumberEnd: 966
    functionName: go
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 26
    functionsReached:
    - setup_ssl
    - strcmp
    - SSL_CTX_free
    - sock_close
    - go_cmd
    - config_create
    - SSL_free
    - fatal_exit
    - setup_ctx
    - w_config_adjust_directory
    - log_warn
    - contact_server
    - config_delete
    - config_read
    linkageType: ''
    returnType: int
    signature: int go(const char* cfgfile, char* svr, int quiet, int argc, char* argv[])
  - BBCount: 14
    BranchProfiles: []
    Callsites:
    - Dst: checklock_start
      Src: /src/unbound/smallapp/unbound-control.c:989,1
    - Dst: log_ident_set
      Src: /src/unbound/smallapp/unbound-control.c:990,1
    - Dst: log_init
      Src: /src/unbound/smallapp/unbound-control.c:991,1
    - Dst: w_lookup_reg_str
      Src: /src/unbound/smallapp/unbound-control.c:994,1
    - Dst: getopt
      Src: /src/unbound/smallapp/unbound-control.c:998,1
    - Dst: usage
      Src: /src/unbound/smallapp/unbound-control.c:1012,1
    - Dst: usage
      Src: /src/unbound/smallapp/unbound-control.c:1018,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:1019,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:1021,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-control.c:1022,1
    - Dst: execlp
      Src: /src/unbound/smallapp/unbound-control.c:1024,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:1026,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-control.c:1027,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-control.c:1031,1
    - Dst: print_stats_shm
      Src: /src/unbound/smallapp/unbound-control.c:1032,1
    - Dst: check_args_for_listcmd
      Src: /src/unbound/smallapp/unbound-control.c:1035,1
    - Dst: WSAStartup
      Src: /src/unbound/smallapp/unbound-control.c:1038,1
    - Dst: MAKEWORD
      Src: /src/unbound/smallapp/unbound-control.c:1038,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-control.c:1039,1
    - Dst: wsa_strerror
      Src: /src/unbound/smallapp/unbound-control.c:1039,1
    - Dst: ERR_load_crypto_strings
      Src: /src/unbound/smallapp/unbound-control.c:1043,1
    - Dst: ERR_load_SSL_strings
      Src: /src/unbound/smallapp/unbound-control.c:1046,1
    - Dst: OpenSSL_add_all_algorithms
      Src: /src/unbound/smallapp/unbound-control.c:1050,1
    - Dst: OPENSSL_init_crypto
      Src: /src/unbound/smallapp/unbound-control.c:1053,1
    - Dst: defined
      Src: /src/unbound/smallapp/unbound-control.c:1056,1
    - Dst: SSL_library_init
      Src: /src/unbound/smallapp/unbound-control.c:1062,1
    - Dst: OPENSSL_init_ssl
      Src: /src/unbound/smallapp/unbound-control.c:1064,1
    - Dst: defined
      Src: /src/unbound/smallapp/unbound-control.c:1065,1
    - Dst: RAND_status
      Src: /src/unbound/smallapp/unbound-control.c:1071,1
    - Dst: time
      Src: /src/unbound/smallapp/unbound-control.c:1074,1
    - Dst: getpid
      Src: /src/unbound/smallapp/unbound-control.c:1074,1
    - Dst: memmove
      Src: /src/unbound/smallapp/unbound-control.c:1078,1
    - Dst: RAND_seed
      Src: /src/unbound/smallapp/unbound-control.c:1081,1
    - Dst: log_warn
      Src: /src/unbound/smallapp/unbound-control.c:1082,1
    - Dst: go
      Src: /src/unbound/smallapp/unbound-control.c:1085,1
    - Dst: WSACleanup
      Src: /src/unbound/smallapp/unbound-control.c:1088,1
    - Dst: checklock_stop
      Src: /src/unbound/smallapp/unbound-control.c:1090,1
    CyclomaticComplexity: 23
    EdgeCount: 23
    ICount: 59
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1092
      start: 974
    functionDepth: 10
    functionLinenumber: 974
    functionLinenumberEnd: 1092
    functionName: main
    functionSourceFile: /src/unbound/smallapp/unbound-control.c
    functionUses: 34
    functionsReached:
    - getopt
    - strcmp
    - WSACleanup
    - log_init
    - getpid
    - check_args_for_listcmd
    - ERR_load_SSL_strings
    - SSL_library_init
    - log_ident_set
    - wsa_strerror
    - defined
    - time
    - OPENSSL_init_ssl
    - checklock_stop
    - strerror
    - w_lookup_reg_str
    - MAKEWORD
    - execlp
    - log_warn
    - ERR_load_crypto_strings
    - go
    - print_stats_shm
    - OpenSSL_add_all_algorithms
    - memmove
    - RAND_seed
    - fatal_exit
    - OPENSSL_init_crypto
    - WSAStartup
    - checklock_start
    - usage
    - RAND_status
    linkageType: ''
    returnType: int
    signature: int main(int argc, char* argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-checkconf.c:90,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-checkconf.c:91,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-checkconf.c:92,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-checkconf.c:93,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-checkconf.c:94,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-checkconf.c:95,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-checkconf.c:96,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-checkconf.c:97,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-checkconf.c:98,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-checkconf.c:99,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:100,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 12
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 101
      start: 87
    functionDepth: 0
    functionLinenumber: 87
    functionLinenumberEnd: 101
    functionName: usage
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 23
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:113,1
    - Dst: fname_after_chroot
      Src: /src/unbound/smallapp/unbound-checkconf.c:114,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:115,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-checkconf.c:116,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-checkconf.c:117,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:120,1
    - Dst: fname_after_chroot
      Src: /src/unbound/smallapp/unbound-checkconf.c:123,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:124,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-checkconf.c:125,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-checkconf.c:126,1
    - Dst: config_get_option
      Src: /src/unbound/smallapp/unbound-checkconf.c:130,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:131,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 19
    argCount: 3
    argNames:
    - cfg
    - opt
    - final
    argTypes:
    - struct config_file*
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 110
    functionDepth: 2
    functionLinenumber: 110
    functionLinenumberEnd: 132
    functionName: print_option
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - fname_after_chroot
    - strcmp
    - printf
    - fatal_exit
    - free
    - config_get_option
    linkageType: ''
    returnType: void
    signature: void print_option(struct config_file* cfg, const char* opt, int final)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: memset
      Src: /src/unbound/smallapp/unbound-checkconf.c:139,1
    - Dst: regional_create
      Src: /src/unbound/smallapp/unbound-checkconf.c:141,1
    - Dst: sldns_buffer_new
      Src: /src/unbound/smallapp/unbound-checkconf.c:142,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:144,1
    - Dst: edns_known_options_init
      Src: /src/unbound/smallapp/unbound-checkconf.c:145,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:146,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:148,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:150,1
    - Dst: sldns_buffer_free
      Src: /src/unbound/smallapp/unbound-checkconf.c:154,1
    - Dst: regional_destroy
      Src: /src/unbound/smallapp/unbound-checkconf.c:155,1
    - Dst: edns_known_options_delete
      Src: /src/unbound/smallapp/unbound-checkconf.c:156,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 2
    argNames:
    - cfg
    - fb
    argTypes:
    - struct config_file*
    - struct module_func_block*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 157
      start: 135
    functionDepth: 4
    functionLinenumber: 135
    functionLinenumberEnd: 157
    functionName: check_mod
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - sldns_buffer_new
    - regional_create
    - edns_known_options_delete
    - fatal_exit
    - sldns_buffer_free
    - edns_known_options_init
    - memset
    - regional_destroy
    linkageType: ''
    returnType: void
    signature: void check_mod(struct config_file* cfg, struct module_func_block* fb)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: strncmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:164,1
    - Dst: strncmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:165,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - a
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 167
      start: 161
    functionDepth: 0
    functionLinenumber: 161
    functionLinenumberEnd: 167
    functionName: str_addr_is_localhost
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - strncmp
    linkageType: ''
    returnType: int
    signature: int str_addr_is_localhost(const char* a)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: str_addr_is_localhost
      Src: /src/unbound/smallapp/unbound-checkconf.c:178,1
    - Dst: fprintf
      Src: /src/unbound/smallapp/unbound-checkconf.c:179,1
    - Dst: str_addr_is_localhost
      Src: /src/unbound/smallapp/unbound-checkconf.c:186,1
    - Dst: fprintf
      Src: /src/unbound/smallapp/unbound-checkconf.c:187,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 17
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 193
      start: 170
    functionDepth: 1
    functionLinenumber: 170
    functionLinenumberEnd: 193
    functionName: donotquerylocalhostcheck
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - str_addr_is_localhost
    - fprintf
    linkageType: ''
    returnType: void
    signature: void donotquerylocalhostcheck(struct config_file* cfg)
  - BBCount: 6
    BranchProfiles: []
    Callsites:
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-checkconf.c:211,1
    - Dst: COMPARE_ZONE_NAME
      Src: /src/unbound/smallapp/unbound-checkconf.c:212,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-checkconf.c:217,1
    - Dst: COMPARE_ZONE_NAME
      Src: /src/unbound/smallapp/unbound-checkconf.c:218,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-checkconf.c:222,1
    - Dst: COMPARE_ZONE_NAME
      Src: /src/unbound/smallapp/unbound-checkconf.c:223,1
    - Dst: COMPARE_ZONE_NAME
      Src: /src/unbound/smallapp/unbound-checkconf.c:226,1
    - Dst: fprintf
      Src: /src/unbound/smallapp/unbound-checkconf.c:228,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 30
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 195
    functionDepth: 1
    functionLinenumber: 195
    functionLinenumberEnd: 237
    functionName: nodefaultzonescheck
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - fprintf
    - strlen
    - COMPARE_ZONE_NAME
    linkageType: ''
    returnType: void
    signature: void nodefaultzonescheck(struct config_file* cfg)
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 7
    argNames:
    - (
    - confname
    - ','
    - builtname
    - ','
    - len
    - )
    argTypes:
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 202
    functionDepth: 0
    functionLinenumber: 202
    functionLinenumberEnd: 207
    functionName: COMPARE_ZONE_NAME
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 1
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: COMPARE_ZONE_NAME(confname, builtname, len)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: nodefaultzonescheck
      Src: /src/unbound/smallapp/unbound-checkconf.c:244,1
    - Dst: local_zones_create
      Src: /src/unbound/smallapp/unbound-checkconf.c:245,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:246,1
    - Dst: local_zones_apply_cfg
      Src: /src/unbound/smallapp/unbound-checkconf.c:247,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:248,1
    - Dst: local_zones_delete
      Src: /src/unbound/smallapp/unbound-checkconf.c:249,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 7
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 250
      start: 240
    functionDepth: 12
    functionLinenumber: 240
    functionLinenumberEnd: 250
    functionName: localzonechecks
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - local_zones_delete
    - fatal_exit
    - local_zones_create
    - local_zones_apply_cfg
    - nodefaultzonescheck
    linkageType: ''
    returnType: void
    signature: void localzonechecks(struct config_file* cfg)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: netblockstrtoaddr
      Src: /src/unbound/smallapp/unbound-checkconf.c:266,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:268,1
    - Dst: views_find_view
      Src: /src/unbound/smallapp/unbound-checkconf.c:271,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:273,1
    - Dst: lock_rw_unlock
      Src: /src/unbound/smallapp/unbound-checkconf.c:277,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/smallapp/unbound-checkconf.c:282,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:284,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/smallapp/unbound-checkconf.c:292,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:294,1
    - Dst: find_tag_id
      Src: /src/unbound/smallapp/unbound-checkconf.c:298,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:299,1
    - Dst: local_zone_str2type
      Src: /src/unbound/smallapp/unbound-checkconf.c:303,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:304,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/smallapp/unbound-checkconf.c:316,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:318,1
    - Dst: find_tag_id
      Src: /src/unbound/smallapp/unbound-checkconf.c:321,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:322,1
    - Dst: snprintf
      Src: /src/unbound/smallapp/unbound-checkconf.c:328,1
    - Dst: sldns_str2wire_rr_buf
      Src: /src/unbound/smallapp/unbound-checkconf.c:329,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:332,1
    - Dst: LDNS_WIREPARSE_OFFSET
      Src: /src/unbound/smallapp/unbound-checkconf.c:333,1
    - Dst: sldns_get_errorstr_parse
      Src: /src/unbound/smallapp/unbound-checkconf.c:334,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 40
    argCount: 2
    argNames:
    - cfg
    - views
    argTypes:
    - struct config_file*
    - struct views*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 338
      start: 253
    functionDepth: 7
    functionLinenumber: 253
    functionLinenumberEnd: 338
    functionName: acl_view_tag_checks
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - netblockstrtoaddr
    - lock_rw_unlock
    - snprintf
    - sldns_str2wire_rr_buf
    - fatal_exit
    - LDNS_WIREPARSE_OFFSET
    - views_find_view
    - sldns_get_errorstr_parse
    - find_tag_id
    - local_zone_str2type
    linkageType: ''
    returnType: void
    signature: void acl_view_tag_checks(struct config_file* cfg, struct views* views)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: views_create
      Src: /src/unbound/smallapp/unbound-checkconf.c:348,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:349,1
    - Dst: respip_set_create
      Src: /src/unbound/smallapp/unbound-checkconf.c:350,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:351,1
    - Dst: views_apply_cfg
      Src: /src/unbound/smallapp/unbound-checkconf.c:352,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:353,1
    - Dst: respip_global_apply_cfg
      Src: /src/unbound/smallapp/unbound-checkconf.c:354,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:355,1
    - Dst: respip_views_apply_cfg
      Src: /src/unbound/smallapp/unbound-checkconf.c:356,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:357,1
    - Dst: respip_set_is_empty
      Src: /src/unbound/smallapp/unbound-checkconf.c:358,1
    - Dst: strstr
      Src: /src/unbound/smallapp/unbound-checkconf.c:359,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:360,1
    - Dst: acl_view_tag_checks
      Src: /src/unbound/smallapp/unbound-checkconf.c:361,1
    - Dst: views_delete
      Src: /src/unbound/smallapp/unbound-checkconf.c:362,1
    - Dst: respip_set_delete
      Src: /src/unbound/smallapp/unbound-checkconf.c:363,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 17
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 364
      start: 341
    functionDepth: 12
    functionLinenumber: 341
    functionLinenumberEnd: 364
    functionName: view_and_respipchecks
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - acl_view_tag_checks
    - respip_views_apply_cfg
    - views_apply_cfg
    - views_delete
    - respip_set_delete
    - respip_set_create
    - views_create
    - fatal_exit
    - respip_global_apply_cfg
    - respip_set_is_empty
    - strstr
    linkageType: ''
    returnType: void
    signature: void view_and_respipchecks(struct config_file* cfg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: extstrtoaddr
      Src: /src/unbound/smallapp/unbound-checkconf.c:376,1
    - Dst: fprintf
      Src: /src/unbound/smallapp/unbound-checkconf.c:377,1
    - Dst: addr_is_ip6
      Src: /src/unbound/smallapp/unbound-checkconf.c:382,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 8
    argCount: 2
    argNames:
    - typ
    - list
    argTypes:
    - char*
    - struct config_stub*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 386
      start: 367
    functionDepth: 2
    functionLinenumber: 367
    functionLinenumberEnd: 386
    functionName: warn_hosts
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - fprintf
    - extstrtoaddr
    - addr_is_ip6
    linkageType: ''
    returnType: void
    signature: void warn_hosts(const char* typ, struct config_stub* list)
  - BBCount: 17
    BranchProfiles: []
    Callsites:
    - Dst: calloc
      Src: /src/unbound/smallapp/unbound-checkconf.c:400,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:401,1
    - Dst: calloc
      Src: /src/unbound/smallapp/unbound-checkconf.c:402,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:403,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:408,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:409,1
    - Dst: resolve_interface_names
      Src: /src/unbound/smallapp/unbound-checkconf.c:414,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:416,1
    - Dst: if_is_pp2
      Src: /src/unbound/smallapp/unbound-checkconf.c:420,1
    - Dst: if_is_dnscrypt
      Src: /src/unbound/smallapp/unbound-checkconf.c:421,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:423,1
    - Dst: if_is_https
      Src: /src/unbound/smallapp/unbound-checkconf.c:425,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:427,1
    - Dst: if_is_quic
      Src: /src/unbound/smallapp/unbound-checkconf.c:429,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:431,1
    - Dst: extstrtoaddr
      Src: /src/unbound/smallapp/unbound-checkconf.c:437,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:438,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:439,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:442,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:447,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:450,1
    - Dst: snprintf
      Src: /src/unbound/smallapp/unbound-checkconf.c:451,1
    - Dst: snprintf
      Src: /src/unbound/smallapp/unbound-checkconf.c:452,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:453,1
    - Dst: snprintf
      Src: /src/unbound/smallapp/unbound-checkconf.c:454,1
    - Dst: snprintf
      Src: /src/unbound/smallapp/unbound-checkconf.c:455,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:456,1
    - Dst: config_del_strarray
      Src: /src/unbound/smallapp/unbound-checkconf.c:464,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-checkconf.c:466,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-checkconf.c:467,1
    - Dst: ipstrtoaddr
      Src: /src/unbound/smallapp/unbound-checkconf.c:470,1
    - Dst: netblockstrtoaddr
      Src: /src/unbound/smallapp/unbound-checkconf.c:471,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:472,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:476,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:477,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 64
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 482
      start: 389
    functionDepth: 4
    functionLinenumber: 389
    functionLinenumberEnd: 482
    functionName: interfacechecks
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - strcmp
    - if_is_dnscrypt
    - if_is_https
    - snprintf
    - if_is_quic
    - if_is_pp2
    - extstrtoaddr
    - fatal_exit
    - ipstrtoaddr
    - free
    - netblockstrtoaddr
    - calloc
    - config_del_strarray
    - resolve_interface_names
    linkageType: ''
    returnType: void
    signature: void interfacechecks(struct config_file* cfg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isspace
      Src: /src/unbound/smallapp/unbound-checkconf.c:492,1
    - Dst: strtol
      Src: /src/unbound/smallapp/unbound-checkconf.c:497,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:499,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:501,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 14
    argCount: 1
    argNames:
    - ifautomaticports
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 504
      start: 485
    functionDepth: 0
    functionLinenumber: 485
    functionLinenumberEnd: 504
    functionName: ifautomaticportschecks
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - isspace
    - fatal_exit
    - strtol
    linkageType: ''
    returnType: void
    signature: void ifautomaticportschecks(char* ifautomaticports)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: resolve_interface_names
      Src: /src/unbound/smallapp/unbound-checkconf.c:519,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:521,1
    - Dst: extstrtoaddr
      Src: /src/unbound/smallapp/unbound-checkconf.c:525,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:527,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:528,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:531,1
    - Dst: config_del_strarray
      Src: /src/unbound/smallapp/unbound-checkconf.c:535,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 16
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 537
      start: 507
    functionDepth: 2
    functionLinenumber: 507
    functionLinenumberEnd: 537
    functionName: controlinterfacechecks
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - strcmp
    - extstrtoaddr
    - fatal_exit
    - config_del_strarray
    - resolve_interface_names
    linkageType: ''
    returnType: void
    signature: void controlinterfacechecks(struct config_file* cfg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: netblockstrtoaddr
      Src: /src/unbound/smallapp/unbound-checkconf.c:548,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:550,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 554
      start: 540
    functionDepth: 4
    functionLinenumber: 540
    functionLinenumberEnd: 554
    functionName: aclchecks
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - netblockstrtoaddr
    - fatal_exit
    linkageType: ''
    returnType: void
    signature: void aclchecks(struct config_file* cfg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: netblockstrtoaddr
      Src: /src/unbound/smallapp/unbound-checkconf.c:565,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:567,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 571
      start: 557
    functionDepth: 4
    functionLinenumber: 557
    functionLinenumberEnd: 571
    functionName: tcpconnlimitchecks
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - netblockstrtoaddr
    - fatal_exit
    linkageType: ''
    returnType: void
    signature: void tcpconnlimitchecks(struct config_file* cfg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/unbound/smallapp/unbound-checkconf.c:578,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-checkconf.c:580,1
    - Dst: perror
      Src: /src/unbound/smallapp/unbound-checkconf.c:583,1
    - Dst: S_ISDIR
      Src: /src/unbound/smallapp/unbound-checkconf.c:586,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-checkconf.c:587,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 591
      start: 574
    functionDepth: 0
    functionLinenumber: 574
    functionLinenumberEnd: 591
    functionName: is_file
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - perror
    - printf
    - S_ISDIR
    - stat
    linkageType: ''
    returnType: int
    signature: int is_file(const char* fname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: stat
      Src: /src/unbound/smallapp/unbound-checkconf.c:598,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-checkconf.c:600,1
    - Dst: perror
      Src: /src/unbound/smallapp/unbound-checkconf.c:603,1
    - Dst: S_ISDIR
      Src: /src/unbound/smallapp/unbound-checkconf.c:606,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-checkconf.c:607,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 611
      start: 594
    functionDepth: 0
    functionLinenumber: 594
    functionLinenumberEnd: 611
    functionName: is_dir
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - perror
    - printf
    - S_ISDIR
    - stat
    linkageType: ''
    returnType: int
    signature: int is_dir(const char* fname)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:618,1
    - Dst: strrchr
      Src: /src/unbound/smallapp/unbound-checkconf.c:619,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 10
    argCount: 1
    argNames:
    - fname
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 624
      start: 614
    functionDepth: 0
    functionLinenumber: 614
    functionLinenumberEnd: 624
    functionName: basedir
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - strrchr
    - fatal_exit
    linkageType: ''
    returnType: char
    signature: 'char *

      basedir(char* fname)'
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fname_after_chroot
      Src: /src/unbound/smallapp/unbound-checkconf.c:633,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:634,1
    - Dst: is_file
      Src: /src/unbound/smallapp/unbound-checkconf.c:635,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:637,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:640,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-checkconf.c:644,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 4
    argNames:
    - desc
    - ss
    - chrootdir
    - cfg
    argTypes:
    - char*
    - char**
    - char*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 646
      start: 627
    functionDepth: 2
    functionLinenumber: 627
    functionLinenumberEnd: 646
    functionName: check_chroot_string
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - fname_after_chroot
    - is_file
    - fatal_exit
    - free
    linkageType: ''
    returnType: void
    signature: "void check_chroot_string(const char* desc, char** ss,\n\tconst char*
      chrootdir, struct config_file* cfg)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: check_chroot_string
      Src: /src/unbound/smallapp/unbound-checkconf.c:655,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 4
    argCount: 4
    argNames:
    - desc
    - list
    - chrootdir
    - cfg
    argTypes:
    - char*
    - struct config_strlist*
    - char*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 657
      start: 649
    functionDepth: 3
    functionLinenumber: 649
    functionLinenumberEnd: 657
    functionName: check_chroot_filelist
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - check_chroot_string
    linkageType: ''
    returnType: void
    signature: "void check_chroot_filelist(const char* desc, struct config_strlist*
      list,\n\tconst char* chrootdir, struct config_file* cfg)"
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: strchr
      Src: /src/unbound/smallapp/unbound-checkconf.c:667,1
    - Dst: strchr
      Src: /src/unbound/smallapp/unbound-checkconf.c:667,1
    - Dst: strchr
      Src: /src/unbound/smallapp/unbound-checkconf.c:668,1
    - Dst: strchr
      Src: /src/unbound/smallapp/unbound-checkconf.c:668,1
    - Dst: strchr
      Src: /src/unbound/smallapp/unbound-checkconf.c:669,1
    - Dst: fname_after_chroot
      Src: /src/unbound/smallapp/unbound-checkconf.c:672,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-checkconf.c:673,1
    - Dst: check_chroot_string
      Src: /src/unbound/smallapp/unbound-checkconf.c:676,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 8
    argCount: 4
    argNames:
    - desc
    - list
    - chrootdir
    - cfg
    argTypes:
    - char*
    - struct config_strlist*
    - char*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 678
      start: 660
    functionDepth: 3
    functionLinenumber: 660
    functionLinenumberEnd: 678
    functionName: check_chroot_filelist_wild
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - strchr
    - check_chroot_string
    - fname_after_chroot
    - free
    linkageType: ''
    returnType: void
    signature: "void check_chroot_filelist_wild(const char* desc, struct config_strlist*
      list,\n\tconst char* chrootdir, struct config_file* cfg)"
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: ecs_whitelist_create
      Src: /src/unbound/smallapp/unbound-checkconf.c:686,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:687,1
    - Dst: ecs_whitelist_apply_cfg
      Src: /src/unbound/smallapp/unbound-checkconf.c:688,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:689,1
    - Dst: ecs_whitelist_delete
      Src: /src/unbound/smallapp/unbound-checkconf.c:690,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 6
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 691
      start: 682
    functionDepth: 5
    functionLinenumber: 682
    functionLinenumberEnd: 691
    functionName: ecs_conf_checks
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - ecs_whitelist_create
    - ecs_whitelist_apply_cfg
    - ecs_whitelist_delete
    - fatal_exit
    linkageType: ''
    returnType: void
    signature: void ecs_conf_checks(struct config_file* cfg)
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: module_list_avail
      Src: /src/unbound/smallapp/unbound-checkconf.c:698,1
    - Dst: isspace
      Src: /src/unbound/smallapp/unbound-checkconf.c:703,1
    - Dst: strncmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:707,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-checkconf.c:707,1
    - Dst: isspace
      Src: /src/unbound/smallapp/unbound-checkconf.c:719,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:725,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-checkconf.c:730,1
    CyclomaticComplexity: 13
    EdgeCount: 13
    ICount: 27
    argCount: 1
    argNames:
    - module_conf
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 732
      start: 695
    functionDepth: 1
    functionLinenumber: 695
    functionLinenumberEnd: 732
    functionName: check_modules_exist
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - module_list_avail
    - strncmp
    - isspace
    - fatal_exit
    - strlen
    linkageType: ''
    returnType: void
    signature: void check_modules_exist(const char* module_conf)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fname_after_chroot
      Src: /src/unbound/smallapp/unbound-checkconf.c:743,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:744,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:745,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-checkconf.c:746,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-checkconf.c:749,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 12
    argCount: 3
    argNames:
    - str
    - fname
    - cfg
    argTypes:
    - char*
    - char*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 751
      start: 736
    functionDepth: 2
    functionLinenumber: 736
    functionLinenumberEnd: 751
    functionName: file_string_matches
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - fname_after_chroot
    - strcmp
    - fatal_exit
    - free
    linkageType: ''
    returnType: int
    signature: int file_string_matches(char* str, char* fname, struct config_file*
      cfg)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: fname_after_chroot
      Src: /src/unbound/smallapp/unbound-checkconf.c:765,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:766,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:767,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-checkconf.c:768,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-checkconf.c:771,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 14
    argCount: 3
    argNames:
    - list
    - fname
    - cfg
    argTypes:
    - struct config_strlist*
    - char*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 774
      start: 755
    functionDepth: 2
    functionLinenumber: 755
    functionLinenumberEnd: 774
    functionName: file_list_contains
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - fname_after_chroot
    - strcmp
    - fatal_exit
    - free
    linkageType: ''
    returnType: int
    signature: "int file_list_contains(struct config_strlist* list, char* fname,\n\tstruct
      config_file* cfg)"
  - BBCount: 5
    BranchProfiles: []
    Callsites:
    - Dst: fname_after_chroot
      Src: /src/unbound/smallapp/unbound-checkconf.c:788,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:789,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:790,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-checkconf.c:791,1
    - Dst: fnmatch
      Src: /src/unbound/smallapp/unbound-checkconf.c:795,1
    - Dst: log_err
      Src: /src/unbound/smallapp/unbound-checkconf.c:796,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-checkconf.c:798,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-checkconf.c:802,1
    CyclomaticComplexity: 7
    EdgeCount: 7
    ICount: 19
    argCount: 3
    argNames:
    - list
    - fname
    - cfg
    argTypes:
    - struct config_strlist*
    - char*
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 805
      start: 778
    functionDepth: 7
    functionLinenumber: 778
    functionLinenumberEnd: 805
    functionName: file_list_contains_wild
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - fname_after_chroot
    - log_err
    - strcmp
    - fatal_exit
    - free
    - fnmatch
    linkageType: ''
    returnType: int
    signature: "int file_list_contains_wild(struct config_strlist* list, char* fname,\n\tstruct
      config_file* cfg)"
  - BBCount: 11
    BranchProfiles: []
    Callsites:
    - Dst: fname_after_chroot
      Src: /src/unbound/smallapp/unbound-checkconf.c:820,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:821,1
    - Dst: file_list_contains
      Src: /src/unbound/smallapp/unbound-checkconf.c:822,1
    - Dst: file_list_contains
      Src: /src/unbound/smallapp/unbound-checkconf.c:825,1
    - Dst: file_list_contains_wild
      Src: /src/unbound/smallapp/unbound-checkconf.c:828,1
    - Dst: file_list_contains
      Src: /src/unbound/smallapp/unbound-checkconf.c:831,1
    - Dst: file_list_contains
      Src: /src/unbound/smallapp/unbound-checkconf.c:833,1
    - Dst: file_string_matches
      Src: /src/unbound/smallapp/unbound-checkconf.c:838,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:842,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-checkconf.c:846,1
    CyclomaticComplexity: 16
    EdgeCount: 16
    ICount: 25
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 848
      start: 810
    functionDepth: 8
    functionLinenumber: 810
    functionLinenumberEnd: 848
    functionName: check_file_clobber
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - fname_after_chroot
    - file_list_contains
    - file_list_contains_wild
    - fatal_exit
    - free
    - file_string_matches
    linkageType: ''
    returnType: void
    signature: void check_file_clobber(struct config_file* cfg)
  - BBCount: 26
    BranchProfiles: []
    Callsites:
    - Dst: warn_hosts
      Src: /src/unbound/smallapp/unbound-checkconf.c:854,1
    - Dst: warn_hosts
      Src: /src/unbound/smallapp/unbound-checkconf.c:855,1
    - Dst: interfacechecks
      Src: /src/unbound/smallapp/unbound-checkconf.c:856,1
    - Dst: ifautomaticportschecks
      Src: /src/unbound/smallapp/unbound-checkconf.c:857,1
    - Dst: aclchecks
      Src: /src/unbound/smallapp/unbound-checkconf.c:858,1
    - Dst: tcpconnlimitchecks
      Src: /src/unbound/smallapp/unbound-checkconf.c:859,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:862,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:864,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:866,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:868,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:870,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:872,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:874,1
    - Dst: w_config_adjust_directory
      Src: /src/unbound/smallapp/unbound-checkconf.c:877,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-checkconf.c:880,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:881,1
    - Dst: is_dir
      Src: /src/unbound/smallapp/unbound-checkconf.c:884,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:885,1
    - Dst: fname_after_chroot
      Src: /src/unbound/smallapp/unbound-checkconf.c:888,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:889,1
    - Dst: is_dir
      Src: /src/unbound/smallapp/unbound-checkconf.c:890,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:890,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-checkconf.c:891,1
    - Dst: strdup
      Src: /src/unbound/smallapp/unbound-checkconf.c:896,1
    - Dst: fname_after_chroot
      Src: /src/unbound/smallapp/unbound-checkconf.c:897,1
    - Dst: basedir
      Src: /src/unbound/smallapp/unbound-checkconf.c:898,1
    - Dst: is_dir
      Src: /src/unbound/smallapp/unbound-checkconf.c:899,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:900,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-checkconf.c:901,1
    - Dst: fname_after_chroot
      Src: /src/unbound/smallapp/unbound-checkconf.c:904,1
    - Dst: basedir
      Src: /src/unbound/smallapp/unbound-checkconf.c:905,1
    - Dst: is_dir
      Src: /src/unbound/smallapp/unbound-checkconf.c:906,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:907,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-checkconf.c:908,1
    - Dst: check_chroot_filelist
      Src: /src/unbound/smallapp/unbound-checkconf.c:912,1
    - Dst: check_chroot_filelist
      Src: /src/unbound/smallapp/unbound-checkconf.c:914,1
    - Dst: check_chroot_filelist
      Src: /src/unbound/smallapp/unbound-checkconf.c:916,1
    - Dst: check_chroot_filelist_wild
      Src: /src/unbound/smallapp/unbound-checkconf.c:918,1
    - Dst: strstr
      Src: /src/unbound/smallapp/unbound-checkconf.c:920,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:935,1
    - Dst: strstr
      Src: /src/unbound/smallapp/unbound-checkconf.c:938,1
    - Dst: check_chroot_string
      Src: /src/unbound/smallapp/unbound-checkconf.c:940,1
    - Dst: check_file_clobber
      Src: /src/unbound/smallapp/unbound-checkconf.c:944,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-checkconf.c:946,1
    - Dst: check_modules_exist
      Src: /src/unbound/smallapp/unbound-checkconf.c:950,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:952,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:953,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:954,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:955,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:956,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:957,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:958,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:959,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:961,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:962,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:963,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:964,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:965,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:966,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:967,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:968,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:969,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:970,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:973,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:974,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:975,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:976,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:977,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:978,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:979,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:980,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:981,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:982,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:983,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:984,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:985,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:986,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:987,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:988,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:989,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:990,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:991,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:992,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:993,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:994,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:995,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:996,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:997,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:998,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:999,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1000,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1001,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1002,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1003,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1004,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1005,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1006,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1007,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1008,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1009,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1010,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1011,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1012,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1013,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1014,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1015,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1016,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1017,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1018,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1019,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1020,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1021,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1022,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1023,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1024,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1025,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1026,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1027,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1028,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1031,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1032,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1033,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1034,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1035,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1036,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1037,1
    - Dst: defined
      Src: /src/unbound/smallapp/unbound-checkconf.c:1039,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1040,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1041,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1042,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1043,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1044,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1045,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1046,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1047,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1048,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1049,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1050,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1051,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1052,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1053,1
    - Dst: defined
      Src: /src/unbound/smallapp/unbound-checkconf.c:1055,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1056,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1057,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1060,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1061,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1062,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1063,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1064,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1065,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1066,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1067,1
    - Dst: defined
      Src: /src/unbound/smallapp/unbound-checkconf.c:1069,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1070,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1071,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1072,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1073,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1074,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1075,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1076,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1077,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1078,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1079,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1082,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1083,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1084,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1085,1
    - Dst: defined
      Src: /src/unbound/smallapp/unbound-checkconf.c:1087,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1088,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1089,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1090,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1091,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1092,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1093,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1094,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1095,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1096,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1097,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1098,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1099,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1102,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1103,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1104,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-checkconf.c:1105,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:1108,1
    CyclomaticComplexity: 188
    EdgeCount: 188
    ICount: 72
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1110
      start: 851
    functionDepth: 9
    functionLinenumber: 851
    functionLinenumberEnd: 1110
    functionName: morechecks
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - strcmp
    - aclchecks
    - check_modules_exist
    - basedir
    - check_chroot_filelist_wild
    - check_chroot_filelist
    - is_dir
    - interfacechecks
    - w_config_adjust_directory
    - strlen
    - ifautomaticportschecks
    - strstr
    - defined
    - warn_hosts
    - check_file_clobber
    - free
    - strdup
    - fname_after_chroot
    - check_chroot_string
    - fatal_exit
    - tcpconnlimitchecks
    linkageType: ''
    returnType: void
    signature: void morechecks(struct config_file* cfg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: forwards_create
      Src: /src/unbound/smallapp/unbound-checkconf.c:1149,1
    - Dst: forwards_apply_cfg
      Src: /src/unbound/smallapp/unbound-checkconf.c:1150,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:1151,1
    - Dst: forwards_delete
      Src: /src/unbound/smallapp/unbound-checkconf.c:1153,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1154
      start: 1146
    functionDepth: 7
    functionLinenumber: 1146
    functionLinenumberEnd: 1154
    functionName: check_fwd
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - fatal_exit
    - forwards_delete
    - forwards_apply_cfg
    - forwards_create
    linkageType: ''
    returnType: void
    signature: void check_fwd(struct config_file* cfg)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: hints_create
      Src: /src/unbound/smallapp/unbound-checkconf.c:1160,1
    - Dst: hints_apply_cfg
      Src: /src/unbound/smallapp/unbound-checkconf.c:1161,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:1162,1
    - Dst: hints_delete
      Src: /src/unbound/smallapp/unbound-checkconf.c:1164,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 5
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1165
      start: 1157
    functionDepth: 11
    functionLinenumber: 1157
    functionLinenumberEnd: 1165
    functionName: check_hints
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - hints_create
    - hints_apply_cfg
    - fatal_exit
    - hints_delete
    linkageType: ''
    returnType: void
    signature: void check_hints(struct config_file* cfg)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: auth_zones_create
      Src: /src/unbound/smallapp/unbound-checkconf.c:1172,1
    - Dst: auth_zones_apply_cfg
      Src: /src/unbound/smallapp/unbound-checkconf.c:1173,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:1174,1
    - Dst: strstr
      Src: /src/unbound/smallapp/unbound-checkconf.c:1176,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:1177,1
    - Dst: auth_zones_delete
      Src: /src/unbound/smallapp/unbound-checkconf.c:1178,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 7
    argCount: 1
    argNames:
    - cfg
    argTypes:
    - struct config_file*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1179
      start: 1168
    functionDepth: 12
    functionLinenumber: 1168
    functionLinenumberEnd: 1179
    functionName: check_auth
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - fatal_exit
    - auth_zones_apply_cfg
    - auth_zones_create
    - strstr
    - auth_zones_delete
    linkageType: ''
    returnType: void
    signature: void check_auth(struct config_file* cfg)
  - BBCount: 8
    BranchProfiles: []
    Callsites:
    - Dst: config_create
      Src: /src/unbound/smallapp/unbound-checkconf.c:1186,1
    - Dst: fatal_exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:1188,1
    - Dst: getcwd
      Src: /src/unbound/smallapp/unbound-checkconf.c:1190,1
    - Dst: log_err
      Src: /src/unbound/smallapp/unbound-checkconf.c:1191,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-checkconf.c:1191,1
    - Dst: config_read
      Src: /src/unbound/smallapp/unbound-checkconf.c:1194,1
    - Dst: config_delete
      Src: /src/unbound/smallapp/unbound-checkconf.c:1196,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-checkconf.c:1197,1
    - Dst: chdir
      Src: /src/unbound/smallapp/unbound-checkconf.c:1199,1
    - Dst: log_err
      Src: /src/unbound/smallapp/unbound-checkconf.c:1200,1
    - Dst: strerror
      Src: /src/unbound/smallapp/unbound-checkconf.c:1200,1
    - Dst: print_option
      Src: /src/unbound/smallapp/unbound-checkconf.c:1202,1
    - Dst: config_delete
      Src: /src/unbound/smallapp/unbound-checkconf.c:1203,1
    - Dst: morechecks
      Src: /src/unbound/smallapp/unbound-checkconf.c:1206,1
    - Dst: check_mod
      Src: /src/unbound/smallapp/unbound-checkconf.c:1207,1
    - Dst: iter_get_funcblock
      Src: /src/unbound/smallapp/unbound-checkconf.c:1207,1
    - Dst: check_mod
      Src: /src/unbound/smallapp/unbound-checkconf.c:1208,1
    - Dst: val_get_funcblock
      Src: /src/unbound/smallapp/unbound-checkconf.c:1208,1
    - Dst: strstr
      Src: /src/unbound/smallapp/unbound-checkconf.c:1210,1
    - Dst: check_mod
      Src: /src/unbound/smallapp/unbound-checkconf.c:1211,1
    - Dst: pythonmod_get_funcblock
      Src: /src/unbound/smallapp/unbound-checkconf.c:1211,1
    - Dst: check_fwd
      Src: /src/unbound/smallapp/unbound-checkconf.c:1213,1
    - Dst: check_hints
      Src: /src/unbound/smallapp/unbound-checkconf.c:1214,1
    - Dst: check_auth
      Src: /src/unbound/smallapp/unbound-checkconf.c:1215,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-checkconf.c:1216,1
    - Dst: config_delete
      Src: /src/unbound/smallapp/unbound-checkconf.c:1217,1
    CyclomaticComplexity: 8
    EdgeCount: 8
    ICount: 31
    argCount: 4
    argNames:
    - cfgfile
    - opt
    - final
    - quiet
    argTypes:
    - char*
    - char*
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1218
      start: 1182
    functionDepth: 13
    functionLinenumber: 1182
    functionLinenumberEnd: 1218
    functionName: checkconf
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 0
    functionsReached:
    - config_read
    - print_option
    - check_fwd
    - morechecks
    - log_err
    - config_create
    - check_mod
    - check_auth
    - printf
    - val_get_funcblock
    - strstr
    - strerror
    - check_hints
    - config_delete
    - iter_get_funcblock
    - exit
    - fatal_exit
    - pythonmod_get_funcblock
    - getcwd
    - chdir
    linkageType: ''
    returnType: void
    signature: void checkconf(const char* cfgfile, const char* opt, int final, int
      quiet)
  - BBCount: 10
    BranchProfiles: []
    Callsites:
    - Dst: checklock_start
      Src: /src/unbound/smallapp/unbound-checkconf.c:1234,1
    - Dst: log_ident_set
      Src: /src/unbound/smallapp/unbound-checkconf.c:1235,1
    - Dst: log_init
      Src: /src/unbound/smallapp/unbound-checkconf.c:1236,1
    - Dst: w_lookup_reg_str
      Src: /src/unbound/smallapp/unbound-checkconf.c:1239,1
    - Dst: getopt
      Src: /src/unbound/smallapp/unbound-checkconf.c:1243,1
    - Dst: usage
      Src: /src/unbound/smallapp/unbound-checkconf.c:1257,1
    - Dst: usage
      Src: /src/unbound/smallapp/unbound-checkconf.c:1263,1
    - Dst: checkconf
      Src: /src/unbound/smallapp/unbound-checkconf.c:1267,1
    - Dst: checklock_stop
      Src: /src/unbound/smallapp/unbound-checkconf.c:1268,1
    CyclomaticComplexity: 9
    EdgeCount: 9
    ICount: 33
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 1270
      start: 1226
    functionDepth: 14
    functionLinenumber: 1226
    functionLinenumberEnd: 1270
    functionName: main
    functionSourceFile: /src/unbound/smallapp/unbound-checkconf.c
    functionUses: 34
    functionsReached:
    - getopt
    - checklock_start
    - log_init
    - checklock_stop
    - w_lookup_reg_str
    - usage
    - log_ident_set
    - checkconf
    linkageType: ''
    returnType: int
    signature: int main(int argc, char* argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 1
    argCount: 3
    argNames:
    - (
    - s
    - )
    argTypes:
    - auto
    - auto
    - auto
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 63
      start: 62
    functionDepth: 0
    functionLinenumber: 62
    functionLinenumberEnd: 63
    functionName: unbound_lite_wrapstr
    functionSourceFile: /src/unbound/smallapp/unbound-host.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: auto
    signature: unbound_lite_wrapstr(s)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:87,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:88,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:89,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:90,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:91,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:92,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:93,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:94,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:95,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:96,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:97,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:98,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:99,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:100,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:101,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:102,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:103,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:104,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:105,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:106,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:107,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:108,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:109,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:110,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:111,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:112,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:113,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-host.c:114,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 29
    argCount: 0
    argNames: []
    argTypes: []
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 115
      start: 84
    functionDepth: 0
    functionLinenumber: 84
    functionLinenumberEnd: 115
    functionName: usage
    functionSourceFile: /src/unbound/smallapp/unbound-host.c
    functionUses: 24
    functionsReached:
    - exit
    - printf
    linkageType: ''
    returnType: void
    signature: void usage(void)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/unbound/smallapp/unbound-host.c:124,1
    - Dst: snprintf
      Src: /src/unbound/smallapp/unbound-host.c:127,1
    - Dst: strdup
      Src: /src/unbound/smallapp/unbound-host.c:130,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 7
    argCount: 2
    argNames:
    - nm
    - res
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 132
      start: 118
    functionDepth: 2
    functionLinenumber: 118
    functionLinenumberEnd: 132
    functionName: isip4
    functionSourceFile: /src/unbound/smallapp/unbound-host.c
    functionUses: 0
    functionsReached:
    - snprintf
    - strdup
    - inet_pton
    linkageType: ''
    returnType: int
    signature: int isip4(const char* nm, char** res)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: inet_pton
      Src: /src/unbound/smallapp/unbound-host.c:144,1
    - Dst: snprintf
      Src: /src/unbound/smallapp/unbound-host.c:155,1
    - Dst: strdup
      Src: /src/unbound/smallapp/unbound-host.c:156,1
    - Dst: fprintf
      Src: /src/unbound/smallapp/unbound-host.c:158,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-host.c:159,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 18
    argCount: 2
    argNames:
    - nm
    - res
    argTypes:
    - char*
    - char**
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 162
      start: 135
    functionDepth: 2
    functionLinenumber: 135
    functionLinenumberEnd: 162
    functionName: isip6
    functionSourceFile: /src/unbound/smallapp/unbound-host.c
    functionUses: 0
    functionsReached:
    - exit
    - snprintf
    - fprintf
    - strdup
    - inet_pton
    linkageType: ''
    returnType: int
    signature: int isip6(const char* nm, char** res)
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: isip4
      Src: /src/unbound/smallapp/unbound-host.c:170,1
    - Dst: isip6
      Src: /src/unbound/smallapp/unbound-host.c:172,1
    - Dst: strdup
      Src: /src/unbound/smallapp/unbound-host.c:175,1
    - Dst: fprintf
      Src: /src/unbound/smallapp/unbound-host.c:178,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-host.c:179,1
    CyclomaticComplexity: 3
    EdgeCount: 3
    ICount: 14
    argCount: 2
    argNames:
    - nm
    - reverse
    argTypes:
    - char*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 182
      start: 165
    functionDepth: 3
    functionLinenumber: 165
    functionLinenumberEnd: 182
    functionName: massage_qname
    functionSourceFile: /src/unbound/smallapp/unbound-host.c
    functionUses: 0
    functionsReached:
    - exit
    - isip6
    - fprintf
    - strdup
    - isip4
    linkageType: ''
    returnType: char
    signature: 'char *

      massage_qname(const char* nm, int* reverse)'
  - BBCount: 4
    BranchProfiles: []
    Callsites:
    - Dst: sldns_get_rr_type_by_name
      Src: /src/unbound/smallapp/unbound-host.c:189,1
    - Dst: strcasecmp
      Src: /src/unbound/smallapp/unbound-host.c:190,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-host.c:191,1
    - Dst: fprintf
      Src: /src/unbound/smallapp/unbound-host.c:192,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-host.c:193,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 12
    argCount: 3
    argNames:
    - t
    - reverse
    - multi
    argTypes:
    - char*
    - int
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 201
      start: 185
    functionDepth: 1
    functionLinenumber: 185
    functionLinenumberEnd: 201
    functionName: massage_type
    functionSourceFile: /src/unbound/smallapp/unbound-host.c
    functionUses: 0
    functionsReached:
    - exit
    - strcmp
    - fprintf
    - strcasecmp
    - sldns_get_rr_type_by_name
    linkageType: ''
    returnType: int
    signature: int massage_type(const char* t, int reverse, int* multi)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: sldns_get_rr_class_by_name
      Src: /src/unbound/smallapp/unbound-host.c:208,1
    - Dst: strcasecmp
      Src: /src/unbound/smallapp/unbound-host.c:209,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-host.c:210,1
    - Dst: fprintf
      Src: /src/unbound/smallapp/unbound-host.c:211,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-host.c:212,1
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 9
    argCount: 1
    argNames:
    - c
    argTypes:
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 217
      start: 204
    functionDepth: 2
    functionLinenumber: 204
    functionLinenumberEnd: 217
    functionName: massage_class
    functionSourceFile: /src/unbound/smallapp/unbound-host.c
    functionUses: 0
    functionsReached:
    - exit
    - strcmp
    - sldns_get_rr_class_by_name
    - fprintf
    - strcasecmp
    linkageType: ''
    returnType: int
    signature: int massage_class(const char* c)
  - BBCount: 4
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 8
    argCount: 1
    argNames:
    - result
    argTypes:
    - struct ub_result*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 227
      start: 220
    functionDepth: 0
    functionLinenumber: 220
    functionLinenumberEnd: 227
    functionName: secure_str
    functionSourceFile: /src/unbound/smallapp/unbound-host.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: char
    signature: "char * \nsecure_str(struct ub_result* result)"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_type_buf
      Src: /src/unbound/smallapp/unbound-host.c:234,1
    - Dst: snprintf
      Src: /src/unbound/smallapp/unbound-host.c:235,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - s
    - len
    - t
    argTypes:
    - char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 236
      start: 230
    functionDepth: 2
    functionLinenumber: 230
    functionLinenumberEnd: 236
    functionName: pretty_type
    functionSourceFile: /src/unbound/smallapp/unbound-host.c
    functionUses: 0
    functionsReached:
    - snprintf
    - sldns_wire2str_type_buf
    linkageType: ''
    returnType: void
    signature: void pretty_type(char* s, size_t len, int t)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_class_buf
      Src: /src/unbound/smallapp/unbound-host.c:243,1
    - Dst: snprintf
      Src: /src/unbound/smallapp/unbound-host.c:244,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - s
    - len
    - c
    argTypes:
    - char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 245
      start: 239
    functionDepth: 2
    functionLinenumber: 239
    functionLinenumberEnd: 245
    functionName: pretty_class
    functionSourceFile: /src/unbound/smallapp/unbound-host.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_class_buf
    - snprintf
    linkageType: ''
    returnType: void
    signature: void pretty_class(char* s, size_t len, int c)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_rcode_buf
      Src: /src/unbound/smallapp/unbound-host.c:252,1
    - Dst: snprintf
      Src: /src/unbound/smallapp/unbound-host.c:253,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - s
    - len
    - r
    argTypes:
    - char*
    - size_t
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 254
      start: 248
    functionDepth: 2
    functionLinenumber: 248
    functionLinenumberEnd: 254
    functionName: pretty_rcode
    functionSourceFile: /src/unbound/smallapp/unbound-host.c
    functionUses: 0
    functionsReached:
    - snprintf
    - sldns_wire2str_rcode_buf
    linkageType: ''
    returnType: void
    signature: void pretty_rcode(char* s, size_t len, int r)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: sldns_wire2str_rdata_buf
      Src: /src/unbound/smallapp/unbound-host.c:261,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 3
    argNames:
    - t
    - data
    - len
    argTypes:
    - int
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 257
    functionDepth: 2
    functionLinenumber: 257
    functionLinenumberEnd: 263
    functionName: print_rd
    functionSourceFile: /src/unbound/smallapp/unbound-host.c
    functionUses: 0
    functionsReached:
    - sldns_wire2str_rdata_buf
    - printf
    linkageType: ''
    returnType: void
    signature: void print_rd(int t, char* data, size_t len)
  - BBCount: 7
    BranchProfiles: []
    Callsites:
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:270,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-host.c:271,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:272,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:274,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:276,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:278,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:280,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:281,1
    - Dst: print_rd
      Src: /src/unbound/smallapp/unbound-host.c:282,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:284,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:285,1
    CyclomaticComplexity: 6
    EdgeCount: 6
    ICount: 17
    argCount: 7
    argNames:
    - q
    - cstr
    - tstr
    - t
    - sec
    - data
    - len
    argTypes:
    - char*
    - char*
    - char*
    - int
    - char*
    - char*
    - size_t
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 286
      start: 266
    functionDepth: 3
    functionLinenumber: 266
    functionLinenumberEnd: 286
    functionName: pretty_rdata
    functionSourceFile: /src/unbound/smallapp/unbound-host.c
    functionUses: 0
    functionsReached:
    - print_rd
    - strcmp
    - printf
    linkageType: ''
    returnType: void
    signature: "void pretty_rdata(char* q, char* cstr, char* tstr, int t, const char*
      sec, \n\tchar* data, size_t len)"
  - BBCount: 18
    BranchProfiles: []
    Callsites:
    - Dst: secure_str
      Src: /src/unbound/smallapp/unbound-host.c:293,1
    - Dst: pretty_type
      Src: /src/unbound/smallapp/unbound-host.c:297,1
    - Dst: pretty_class
      Src: /src/unbound/smallapp/unbound-host.c:298,1
    - Dst: pretty_rcode
      Src: /src/unbound/smallapp/unbound-host.c:299,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:302,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:305,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:306,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:308,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:313,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:316,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:317,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-host.c:320,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-host.c:321,1
    - Dst: strlen
      Src: /src/unbound/smallapp/unbound-host.c:322,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:325,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-host.c:326,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:327,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:329,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:331,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:333,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:335,1
    - Dst: sldns_wire2str_pkt
      Src: /src/unbound/smallapp/unbound-host.c:337,1
    - Dst: fprintf
      Src: /src/unbound/smallapp/unbound-host.c:341,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-host.c:342,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:344,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-host.c:345,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:346,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:347,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:351,1
    - Dst: pretty_rdata
      Src: /src/unbound/smallapp/unbound-host.c:357,1
    - Dst: printf
      Src: /src/unbound/smallapp/unbound-host.c:364,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 56
    argCount: 5
    argNames:
    - q
    - t
    - c
    - result
    - docname
    argTypes:
    - char*
    - int
    - int
    - struct ub_result*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 365
      start: 289
    functionDepth: 4
    functionLinenumber: 289
    functionLinenumberEnd: 365
    functionName: pretty_output
    functionSourceFile: /src/unbound/smallapp/unbound-host.c
    functionUses: 0
    functionsReached:
    - exit
    - pretty_type
    - strcmp
    - pretty_rcode
    - sldns_wire2str_pkt
    - printf
    - secure_str
    - free
    - strlen
    - fprintf
    - pretty_class
    - pretty_rdata
    linkageType: ''
    returnType: void
    signature: void pretty_output(char* q, int t, int c, struct ub_result* result,
      int docname)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: ub_resolve
      Src: /src/unbound/smallapp/unbound-host.c:374,1
    - Dst: fprintf
      Src: /src/unbound/smallapp/unbound-host.c:376,1
    - Dst: ub_strerror
      Src: /src/unbound/smallapp/unbound-host.c:376,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-host.c:377,1
    - Dst: pretty_output
      Src: /src/unbound/smallapp/unbound-host.c:379,1
    - Dst: ub_resolve_free
      Src: /src/unbound/smallapp/unbound-host.c:381,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 10
    argCount: 5
    argNames:
    - ctx
    - q
    - t
    - c
    - docname
    argTypes:
    - struct ub_ctx*
    - char*
    - int
    - int
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 383
      start: 368
    functionDepth: 15
    functionLinenumber: 368
    functionLinenumberEnd: 383
    functionName: dnslook
    functionSourceFile: /src/unbound/smallapp/unbound-host.c
    functionUses: 0
    functionsReached:
    - exit
    - ub_resolve
    - ub_strerror
    - ub_resolve_free
    - pretty_output
    - fprintf
    linkageType: ''
    returnType: int
    signature: int dnslook(struct ub_ctx* ctx, char* q, int t, int c, int docname)
  - BBCount: 3
    BranchProfiles: []
    Callsites:
    - Dst: massage_qname
      Src: /src/unbound/smallapp/unbound-host.c:392,1
    - Dst: massage_type
      Src: /src/unbound/smallapp/unbound-host.c:393,1
    - Dst: massage_class
      Src: /src/unbound/smallapp/unbound-host.c:394,1
    - Dst: dnslook
      Src: /src/unbound/smallapp/unbound-host.c:398,1
    - Dst: dnslook
      Src: /src/unbound/smallapp/unbound-host.c:400,1
    - Dst: dnslook
      Src: /src/unbound/smallapp/unbound-host.c:401,1
    - Dst: dnslook
      Src: /src/unbound/smallapp/unbound-host.c:404,1
    - Dst: ub_ctx_delete
      Src: /src/unbound/smallapp/unbound-host.c:406,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-host.c:407,1
    CyclomaticComplexity: 2
    EdgeCount: 2
    ICount: 11
    argCount: 4
    argNames:
    - ctx
    - nm
    - qt
    - qc
    argTypes:
    - struct ub_ctx*
    - char*
    - char*
    - char*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 408
      start: 386
    functionDepth: 16
    functionLinenumber: 386
    functionLinenumberEnd: 408
    functionName: lookup
    functionSourceFile: /src/unbound/smallapp/unbound-host.c
    functionUses: 114
    functionsReached:
    - massage_class
    - massage_type
    - ub_ctx_delete
    - dnslook
    - free
    - massage_qname
    linkageType: ''
    returnType: void
    signature: void lookup(struct ub_ctx* ctx, const char* nm, const char* qt, const
      char* qc)
  - BBCount: 2
    BranchProfiles: []
    Callsites:
    - Dst: fprintf
      Src: /src/unbound/smallapp/unbound-host.c:415,1
    - Dst: ub_strerror
      Src: /src/unbound/smallapp/unbound-host.c:415,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-host.c:416,1
    CyclomaticComplexity: 1
    EdgeCount: 1
    ICount: 5
    argCount: 1
    argNames:
    - r
    argTypes:
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 418
      start: 411
    functionDepth: 1
    functionLinenumber: 411
    functionLinenumberEnd: 418
    functionName: check_ub_res
    functionSourceFile: /src/unbound/smallapp/unbound-host.c
    functionUses: 0
    functionsReached:
    - ub_strerror
    - fprintf
    - exit
    linkageType: ''
    returnType: void
    signature: void check_ub_res(int r)
  - BBCount: 23
    BranchProfiles: []
    Callsites:
    - Dst: ub_ctx_create
      Src: /src/unbound/smallapp/unbound-host.c:435,1
    - Dst: fprintf
      Src: /src/unbound/smallapp/unbound-host.c:437,1
    - Dst: exit
      Src: /src/unbound/smallapp/unbound-host.c:438,1
    - Dst: check_ub_res
      Src: /src/unbound/smallapp/unbound-host.c:441,1
    - Dst: ub_ctx_set_option
      Src: /src/unbound/smallapp/unbound-host.c:441,1
    - Dst: getopt
      Src: /src/unbound/smallapp/unbound-host.c:444,1
    - Dst: check_ub_res
      Src: /src/unbound/smallapp/unbound-host.c:447,1
    - Dst: ub_ctx_set_option
      Src: /src/unbound/smallapp/unbound-host.c:447,1
    - Dst: check_ub_res
      Src: /src/unbound/smallapp/unbound-host.c:450,1
    - Dst: ub_ctx_set_option
      Src: /src/unbound/smallapp/unbound-host.c:450,1
    - Dst: check_ub_res
      Src: /src/unbound/smallapp/unbound-host.c:456,1
    - Dst: ub_ctx_config
      Src: /src/unbound/smallapp/unbound-host.c:456,1
    - Dst: check_ub_res
      Src: /src/unbound/smallapp/unbound-host.c:459,1
    - Dst: ub_ctx_add_ta_file
      Src: /src/unbound/smallapp/unbound-host.c:459,1
    - Dst: check_ub_res
      Src: /src/unbound/smallapp/unbound-host.c:467,1
    - Dst: ub_ctx_resolvconf
      Src: /src/unbound/smallapp/unbound-host.c:467,1
    - Dst: check_ub_res
      Src: /src/unbound/smallapp/unbound-host.c:476,1
    - Dst: ub_ctx_add_ta
      Src: /src/unbound/smallapp/unbound-host.c:476,1
    - Dst: check_ub_res
      Src: /src/unbound/smallapp/unbound-host.c:479,1
    - Dst: ub_ctx_add_ta_file
      Src: /src/unbound/smallapp/unbound-host.c:479,1
    - Dst: check_ub_res
      Src: /src/unbound/smallapp/unbound-host.c:482,1
    - Dst: ub_ctx_trustedkeys
      Src: /src/unbound/smallapp/unbound-host.c:482,1
    - Dst: ub_ctx_delete
      Src: /src/unbound/smallapp/unbound-host.c:487,1
    - Dst: usage
      Src: /src/unbound/smallapp/unbound-host.c:488,1
    - Dst: check_ub_res
      Src: /src/unbound/smallapp/unbound-host.c:492,1
    - Dst: ub_ctx_debuglevel
      Src: /src/unbound/smallapp/unbound-host.c:492,1
    - Dst: ub_ctx_get_option
      Src: /src/unbound/smallapp/unbound-host.c:493,1
    - Dst: strcmp
      Src: /src/unbound/smallapp/unbound-host.c:494,1
    - Dst: check_ub_res
      Src: /src/unbound/smallapp/unbound-host.c:495,1
    - Dst: ub_ctx_set_option
      Src: /src/unbound/smallapp/unbound-host.c:495,1
    - Dst: unbound_stat_free_log
      Src: /src/unbound/smallapp/unbound-host.c:498,1
    - Dst: free
      Src: /src/unbound/smallapp/unbound-host.c:500,1
    - Dst: ub_ctx_delete
      Src: /src/unbound/smallapp/unbound-host.c:506,1
    - Dst: usage
      Src: /src/unbound/smallapp/unbound-host.c:507,1
    - Dst: ERR_load_crypto_strings
      Src: /src/unbound/smallapp/unbound-host.c:512,1
    - Dst: ERR_load_SSL_strings
      Src: /src/unbound/smallapp/unbound-host.c:515,1
    - Dst: OpenSSL_add_all_algorithms
      Src: /src/unbound/smallapp/unbound-host.c:519,1
    - Dst: OPENSSL_init_crypto
      Src: /src/unbound/smallapp/unbound-host.c:522,1
    - Dst: defined
      Src: /src/unbound/smallapp/unbound-host.c:525,1
    - Dst: SSL_library_init
      Src: /src/unbound/smallapp/unbound-host.c:531,1
    - Dst: OPENSSL_init_ssl
      Src: /src/unbound/smallapp/unbound-host.c:533,1
    - Dst: defined
      Src: /src/unbound/smallapp/unbound-host.c:534,1
    - Dst: NSS_NoDB_Init
      Src: /src/unbound/smallapp/unbound-host.c:541,1
    - Dst: fprintf
      Src: /src/unbound/smallapp/unbound-host.c:542,1
    - Dst: lookup
      Src: /src/unbound/smallapp/unbound-host.c:546,1
    CyclomaticComplexity: 26
    EdgeCount: 26
    ICount: 80
    argCount: 2
    argNames:
    - argc
    - argv
    argTypes:
    - int
    - char*[]
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 548
      start: 426
    functionDepth: 17
    functionLinenumber: 426
    functionLinenumberEnd: 548
    functionName: main
    functionSourceFile: /src/unbound/smallapp/unbound-host.c
    functionUses: 34
    functionsReached:
    - getopt
    - strcmp
    - unbound_stat_free_log
    - ub_ctx_add_ta
    - NSS_NoDB_Init
    - ub_ctx_create
    - ERR_load_SSL_strings
    - SSL_library_init
    - ub_ctx_delete
    - ub_ctx_config
    - ub_ctx_trustedkeys
    - ub_ctx_get_option
    - defined
    - OPENSSL_init_ssl
    - free
    - ub_ctx_debuglevel
    - lookup
    - fprintf
    - ub_ctx_set_option
    - exit
    - ub_ctx_resolvconf
    - check_ub_res
    - OpenSSL_add_all_algorithms
    - ub_ctx_add_ta_file
    - OPENSSL_init_crypto
    - ERR_load_crypto_strings
    - usage
    linkageType: ''
    returnType: int
    signature: int main(int argc, char* argv[])
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:58,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ATTR_UNUSED(tube)
    - ATTR_UNUSED(buffer)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - struct tube*
    - uint8_t*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 59
      start: 54
    functionDepth: 1
    functionLinenumber: 54
    functionLinenumberEnd: 59
    functionName: worker_handle_control_cmd
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void worker_handle_control_cmd(struct tube* ATTR_UNUSED(tube),\n\tuint8_t*
      ATTR_UNUSED(buffer), size_t ATTR_UNUSED(len),\n\tint ATTR_UNUSED(error), void*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:65,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 67
      start: 61
    functionDepth: 1
    functionLinenumber: 61
    functionLinenumberEnd: 67
    functionName: worker_handle_request
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int worker_handle_request(struct comm_point* ATTR_UNUSED(c), \n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:73,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(reply_info)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 75
      start: 69
    functionDepth: 1
    functionLinenumber: 69
    functionLinenumberEnd: 75
    functionName: worker_handle_service_reply
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int worker_handle_service_reply(struct comm_point* ATTR_UNUSED(c),
      \n\tvoid* ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply*
      ATTR_UNUSED(reply_info))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:81,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 83
      start: 77
    functionDepth: 1
    functionLinenumber: 77
    functionLinenumberEnd: 83
    functionName: remote_accept_callback
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int remote_accept_callback(struct comm_point* ATTR_UNUSED(c), \n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:89,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 91
      start: 85
    functionDepth: 1
    functionLinenumber: 85
    functionLinenumberEnd: 91
    functionName: remote_control_callback
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 1
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int remote_control_callback(struct comm_point* ATTR_UNUSED(c), \n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:95,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 96
      start: 93
    functionDepth: 1
    functionLinenumber: 93
    functionLinenumberEnd: 96
    functionName: worker_sighandler
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 1
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_sighandler(int ATTR_UNUSED(sig), void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:108,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 16
    argNames:
    - ATTR_UNUSED(qinfo)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(addr)
    - ATTR_UNUSED
    - ATTR_UNUSED(zone)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(tls_auth_name)
    - ATTR_UNUSED(q)
    - ATTR_UNUSED(was_ratelimited)
    - ATTR_UNUSED(ratelimit_incremented)
    argTypes:
    - struct query_info*
    - uint16_t
    - int
    - int
    - int
    - int
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - int
    - int
    - char*
    - struct module_qstate*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 110
      start: 98
    functionDepth: 1
    functionLinenumber: 98
    functionLinenumberEnd: 110
    functionName: worker_send_query
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: struct outbound_entry
    signature: "struct outbound_entry * worker_send_query(\n\tstruct query_info* ATTR_UNUSED(qinfo),
      uint16_t ATTR_UNUSED(flags),\n\tint ATTR_UNUSED(dnssec), int ATTR_UNUSED(want_dnssec),\n\tint
      ATTR_UNUSED(nocaps), int ATTR_UNUSED(check_ratelimit),\n\tstruct sockaddr_storage*
      ATTR_UNUSED(addr),\n\tsocklen_t ATTR_UNUSED(addrlen), uint8_t* ATTR_UNUSED(zone),\n\tsize_t
      ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream), int ATTR_UNUSED(ssl_upstream),\n\tchar*
      ATTR_UNUSED(tls_auth_name), struct module_qstate* ATTR_UNUSED(q),\n\tint* ATTR_UNUSED(was_ratelimited),
      int* ATTR_UNUSED(ratelimit_incremented))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:116,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 117
      start: 113
    functionDepth: 1
    functionLinenumber: 113
    functionLinenumberEnd: 117
    functionName: worker_win_stop_cb
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void worker_win_stop_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),
      void* \n\tATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:122,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 123
      start: 119
    functionDepth: 1
    functionLinenumber: 119
    functionLinenumberEnd: 123
    functionName: wsvc_cron_cb
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void wsvc_cron_cb(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:129,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 130
      start: 126
    functionDepth: 1
    functionLinenumber: 126
    functionLinenumberEnd: 130
    functionName: worker_alloc_cleanup
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_alloc_cleanup(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:135,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 136
      start: 132
    functionDepth: 1
    functionLinenumber: 132
    functionLinenumberEnd: 136
    functionName: libworker_alloc_cleanup
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void libworker_alloc_cleanup(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:148,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 16
    argNames:
    - ATTR_UNUSED(qinfo)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(addr)
    - ATTR_UNUSED
    - ATTR_UNUSED(zone)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(tls_auth_name)
    - ATTR_UNUSED(q)
    - ATTR_UNUSED(was_ratelimited)
    - ATTR_UNUSED(ratelimit_incremented)
    argTypes:
    - struct query_info*
    - uint16_t
    - int
    - int
    - int
    - int
    - struct sockaddr_storage*
    - socklen_t
    - uint8_t*
    - size_t
    - int
    - int
    - char*
    - struct module_qstate*
    - int*
    - int*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 150
      start: 138
    functionDepth: 1
    functionLinenumber: 138
    functionLinenumberEnd: 150
    functionName: libworker_send_query
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: struct outbound_entry
    signature: "struct outbound_entry * libworker_send_query(\n\tstruct query_info*
      ATTR_UNUSED(qinfo), uint16_t ATTR_UNUSED(flags),\n\tint ATTR_UNUSED(dnssec),
      int ATTR_UNUSED(want_dnssec),\n\tint ATTR_UNUSED(nocaps), int ATTR_UNUSED(check_ratelimit),\n\tstruct
      sockaddr_storage* ATTR_UNUSED(addr),\n\tsocklen_t ATTR_UNUSED(addrlen), uint8_t*
      ATTR_UNUSED(zone),\n\tsize_t ATTR_UNUSED(zonelen), int ATTR_UNUSED(tcp_upstream),
      int ATTR_UNUSED(ssl_upstream),\n\tchar* ATTR_UNUSED(tls_auth_name), struct module_qstate*
      ATTR_UNUSED(q),\n\tint* ATTR_UNUSED(was_ratelimited), int* ATTR_UNUSED(ratelimit_incremented))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:156,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(reply_info)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 158
      start: 152
    functionDepth: 1
    functionLinenumber: 152
    functionLinenumberEnd: 158
    functionName: libworker_handle_service_reply
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int libworker_handle_service_reply(struct comm_point* ATTR_UNUSED(c),
      \n\tvoid* ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply*
      ATTR_UNUSED(reply_info))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:164,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 5
    argNames:
    - ATTR_UNUSED(tube)
    - ATTR_UNUSED(buffer)
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - struct tube*
    - uint8_t*
    - size_t
    - int
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 165
      start: 160
    functionDepth: 1
    functionLinenumber: 160
    functionLinenumberEnd: 165
    functionName: libworker_handle_control_cmd
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void libworker_handle_control_cmd(struct tube* ATTR_UNUSED(tube),\n
      \       uint8_t* ATTR_UNUSED(buffer), size_t ATTR_UNUSED(len),\n        int
      ATTR_UNUSED(error), void* ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:171,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(buf)
    - ATTR_UNUSED
    - ATTR_UNUSED(why_bogus)
    - ATTR_UNUSED
    argTypes:
    - void*
    - int
    - struct sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 172
      start: 167
    functionDepth: 1
    functionLinenumber: 167
    functionLinenumberEnd: 172
    functionName: libworker_fg_done_cb
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void libworker_fg_done_cb(void* ATTR_UNUSED(arg), int ATTR_UNUSED(rcode),
      \n\tstruct sldns_buffer* ATTR_UNUSED(buf), enum sec_status ATTR_UNUSED(s),\n\tchar*
      ATTR_UNUSED(why_bogus), int ATTR_UNUSED(was_ratelimited))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:178,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(buf)
    - ATTR_UNUSED
    - ATTR_UNUSED(why_bogus)
    - ATTR_UNUSED
    argTypes:
    - void*
    - int
    - struct sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 179
      start: 174
    functionDepth: 1
    functionLinenumber: 174
    functionLinenumberEnd: 179
    functionName: libworker_bg_done_cb
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void libworker_bg_done_cb(void* ATTR_UNUSED(arg), int ATTR_UNUSED(rcode),
      \n\tstruct sldns_buffer* ATTR_UNUSED(buf), enum sec_status ATTR_UNUSED(s),\n\tchar*
      ATTR_UNUSED(why_bogus), int ATTR_UNUSED(was_ratelimited))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:185,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 6
    argNames:
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(buf)
    - ATTR_UNUSED
    - ATTR_UNUSED(why_bogus)
    - ATTR_UNUSED
    argTypes:
    - void*
    - int
    - struct sldns_buffer*
    - enum sec_status
    - char*
    - int
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 186
      start: 181
    functionDepth: 1
    functionLinenumber: 181
    functionLinenumberEnd: 186
    functionName: libworker_event_done_cb
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 1
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void libworker_event_done_cb(void* ATTR_UNUSED(arg), int ATTR_UNUSED(rcode),
      \n\tstruct sldns_buffer* ATTR_UNUSED(buf), enum sec_status ATTR_UNUSED(s),\n\tchar*
      ATTR_UNUSED(why_bogus), int ATTR_UNUSED(was_ratelimited))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:190,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED(a)
    - ATTR_UNUSED(b)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 192
      start: 188
    functionDepth: 1
    functionLinenumber: 188
    functionLinenumberEnd: 192
    functionName: context_query_cmp
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int context_query_cmp(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:196,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 197
      start: 194
    functionDepth: 1
    functionLinenumber: 194
    functionLinenumberEnd: 197
    functionName: worker_stat_timer_cb
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_stat_timer_cb(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:201,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 202
      start: 199
    functionDepth: 1
    functionLinenumber: 199
    functionLinenumberEnd: 202
    functionName: worker_probe_timer_cb
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_probe_timer_cb(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:206,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 207
      start: 204
    functionDepth: 1
    functionLinenumber: 204
    functionLinenumberEnd: 207
    functionName: worker_start_accept
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_start_accept(void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:211,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 1
    argNames:
    - ATTR_UNUSED(arg)
    argTypes:
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 212
      start: 209
    functionDepth: 1
    functionLinenumber: 209
    functionLinenumberEnd: 212
    functionName: worker_stop_accept
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void worker_stop_accept(void* ATTR_UNUSED(arg))
  - BBCount: 5
    BranchProfiles: []
    Callsites: []
    CyclomaticComplexity: 4
    EdgeCount: 4
    ICount: 10
    argCount: 2
    argNames:
    - e1
    - e2
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 231
      start: 222
    functionDepth: 0
    functionLinenumber: 222
    functionLinenumberEnd: 231
    functionName: order_lock_cmp
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached: []
    linkageType: ''
    returnType: int
    signature: int order_lock_cmp(const void* e1, const void* e2)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: strcmp
      Src: /src/unbound/smallapp/worker_cb.c:236,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - a
    - b
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 237
      start: 233
    functionDepth: 0
    functionLinenumber: 233
    functionLinenumberEnd: 237
    functionName: codeline_cmp
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - strcmp
    linkageType: ''
    returnType: int
    signature: int codeline_cmp(const void* a, const void* b)
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:241,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 2
    argNames:
    - ATTR_UNUSED(a)
    - ATTR_UNUSED(b)
    argTypes:
    - void*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 243
      start: 239
    functionDepth: 1
    functionLinenumber: 239
    functionLinenumberEnd: 243
    functionName: replay_var_compare
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: int replay_var_compare(const void* ATTR_UNUSED(a), const void* ATTR_UNUSED(b))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:247,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 2
    argNames:
    - ATTR_UNUSED(str)
    - ATTR_UNUSED(arg)
    argTypes:
    - char*
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 248
      start: 245
    functionDepth: 1
    functionLinenumber: 245
    functionLinenumberEnd: 248
    functionName: remote_get_opt_ssl
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: void remote_get_opt_ssl(char* ATTR_UNUSED(str), void* ATTR_UNUSED(arg))
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:254,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 255
      start: 251
    functionDepth: 1
    functionLinenumber: 251
    functionLinenumberEnd: 255
    functionName: dtio_tap_callback
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void dtio_tap_callback(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:262,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 263
      start: 259
    functionDepth: 1
    functionLinenumber: 259
    functionLinenumberEnd: 263
    functionName: dtio_mainfdcallback
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void dtio_mainfdcallback(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:269,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 270
      start: 266
    functionDepth: 1
    functionLinenumber: 266
    functionLinenumberEnd: 270
    functionName: fast_reload_service_cb
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void fast_reload_service_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:276,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 3
    argCount: 4
    argNames:
    - ATTR_UNUSED(c)
    - ATTR_UNUSED(arg)
    - ATTR_UNUSED
    - ATTR_UNUSED(repinfo)
    argTypes:
    - struct comm_point*
    - void*
    - int
    - struct comm_reply*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 278
      start: 272
    functionDepth: 1
    functionLinenumber: 272
    functionLinenumberEnd: 278
    functionName: fast_reload_client_callback
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: int
    signature: "int fast_reload_client_callback(struct comm_point* ATTR_UNUSED(c),\n\tvoid*
      ATTR_UNUSED(arg), int ATTR_UNUSED(error),\n        struct comm_reply* ATTR_UNUSED(repinfo))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:284,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 285
      start: 281
    functionDepth: 1
    functionLinenumber: 281
    functionLinenumberEnd: 285
    functionName: doq_client_event_cb
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void doq_client_event_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
  - BBCount: 1
    BranchProfiles: []
    Callsites:
    - Dst: log_assert
      Src: /src/unbound/smallapp/worker_cb.c:292,1
    CyclomaticComplexity: 0
    EdgeCount: 0
    ICount: 2
    argCount: 3
    argNames:
    - ATTR_UNUSED
    - ATTR_UNUSED
    - ATTR_UNUSED(arg)
    argTypes:
    - int
    - short
    - void*
    assertStmts: []
    constantsTouched: []
    func_position:
      end: 293
      start: 289
    functionDepth: 1
    functionLinenumber: 289
    functionLinenumberEnd: 293
    functionName: doq_client_timer_cb
    functionSourceFile: /src/unbound/smallapp/worker_cb.c
    functionUses: 0
    functionsReached:
    - log_assert
    linkageType: ''
    returnType: void
    signature: "void doq_client_timer_cb(int ATTR_UNUSED(fd), short ATTR_UNUSED(ev),\n\tvoid*
      ATTR_UNUSED(arg))"
Fuzzer filename: /src/unbound/testcode/testbound.c
Fuzzing method: LLVMFuzzerTestOneInput
included-header-files:
- sha.h
- linux/netfilter/ipset/ip_set.h
- util/tube.h
- Security/SecRandom.h
- services/rpz.h
- sys/mman.h
- unistd.h
- util/storage/lruhash.h
- asn1.h
- sys/select.h
- linux/sysctl.h
- stddef.h
- sldns/parseutil.h
- openssl/core_names.h
- TargetConditionals.h
- eddsa.h
- validator/val_kentry.h
- dnstap/dnstap.h
- ngtcp2/ngtcp2_crypto.h
- util/fptr_wlist.h
- systemd/sd-daemon.h
- keyhi.h
- util/ub_event.h
- dnscrypt/dnscrypt.h
- util/as112.h
- sys/syscall.h
- dns64/dns64.h
- ipsecmod/ipsecmod-whitelist.h
- testcode/readhex.h
- netinet/in.h
- openssl/engine.h
- libunbound/worker.h
- dnstap/dnstap_fstrm.h
- timeval_func.h
- fcntl.h
- openssl/evp.h
- assert.h
- ngtcp2/ngtcp2_crypto_quictls.h
- daemon/daemon.h
- iterator/iter_resptype.h
- event2/event_compat.h
- edns-subnet/edns-subnet.h
- sldns/pkthdr.h
- dsa-compat.h
- services/view.h
- sys/socket.h
- sys/sysctl.h
- sys/statfs.h
- util/config_file.h
- netinet/tcp.h
- openssl/x509v3.h
- nghttp2/nghttp2.h
- sys/ipc.h
- yarrow.h
- netioapi.h
- net/if.h
- sldns/rrdef.h
- util/shm_side/shm_main.h
- validator/val_nsec3.h
- ngtcp2/ngtcp2_crypto_openssl.h
- pwd.h
- dnstap/dtstream.h
- openssl/rand.h
- linux/random.h
- shm_main.h
- sys/auxv.h
- dlfcn.h
- libkern/OSByteOrder.h
- inttypes.h
- libunbound/libworker.h
- net/pfvar.h
- cryptohi.h
- iterator/iter_priv.h
- daemon/stats.h
- validator/val_neg.h
- openssl/crypto.h
- util/storage/dnstree.h
- stdarg.h
- dnstap/dnstap.pb-c.h
- hiredis/hiredis.h
- time.h
- util/data/packed_rrset.h
- netdb.h
- nettle/sha.h
- ../dynlibmod.h
- iterator/iter_fwd.h
- iterator/iter_delegpt.h
- ifaddrs.h
- testcode/testpkts.h
- libunbound/unbound-event.h
- getopt.h
- pythonmod/interface.h
- login_cap.h
- winrc/win_svc.h
- sys/shm.h
- sys/time.h
- openssl/sha.h
- util/tcp_conn_limit.h
- dnstap/dnstap_config.h
- validator/val_utils.h
- validator/autotrust.h
- daemon/acl_list.h
- sys/types.h
- chacha_private.h
- testcode/unitmain.h
- util/mini_event.h
- fnmatch.h
- util/netevent.h
- util/log.h
- util/alloc.h
- bignum.h
- dnscrypt/cert.h
- services/cache/dns.h
- util/data/msgreply.h
- prerror.h
- fptr_wlist.h
- util/regional.h
- openssl/bn.h
- iterator/iter_utils.h
- edns-subnet/addrtree.h
- util/random.h
- util/module.h
- stdint.h
- event.h
- libunbound/unbound.h
- cachedb/redis.h
- stdio.h
- ipset/ipset.h
- windows.h
- event2/event_struct.h
- util/data/dname.h
- openssl/param_build.h
- config.h
- daemon/cachedump.h
- math.h
- validator/val_kcache.h
- iterator/iter_scrub.h
- ipsecmod/ipsecmod.h
- linux/netfilter/nfnetlink.h
- util/siphash.h
- util/data/msgencode.h
- daemon/unbound.c
- edns-subnet/subnet-whitelist.h
- ldns/ldns.h
- syslog.h
- sldns/parse.h
- process.h
- libunbound/remote.h
- services/outside_network.h
- dsa.h
- linux/net_tstamp.h
- dynlibmod/dynlibmod.h
- macros.h
- util/storage/slabhash.h
- endian.h
- machine/endian.h
- arpa/inet.h
- sys/vfs.h
- ../../config.h
- secerr.h
- dnscrypt/dnscrypt_config.h
- validator/val_sigcrypt.h
- iterator/iter_hints.h
- sys/statvfs.h
- util/edns.h
- ../../util/module.h
- openssl/rsa.h
- event2/event.h
- services/modstack.h
- thread.h
- testcode/replay.h
- sys/endian.h
- rsa.h
- services/listen_dnsport.h
- services/cache/rrset.h
- services/authzone.h
- sldns/str2wire.h
- util/data/msgparse.h
- iphlpapi.h
- sldns/ldns.h
- ngtcp2/ngtcp2.h
- util/rfc_1982.h
- pythonmod/pythonmod.h
- openssl/pem.h
- sldns/wire2str.h
- pythonmod_utils.h
- util/proxy_protocol.h
- util/rtt.h
- winrc/w_inst.h
- pythonmod/pythonmod_utils.h
- sys/mount.h
- strings.h
- termios.h
- expat.h
- cachedb/cachedb.h
- sys/loadavg.h
- services/cache/infra.h
- sldns/sbuffer.h
- openssl/conf.h
- util/winsock_event.h
- services/outbound_list.h
- openssl/dsa.h
- edns-subnet/subnetmod.h
- log.h
- util/configyyrename.h
- pthread.h
- sldns/keyraw.h
- nss.h
- sys/sha2.h
- errno.h
- ecc-curve.h
- sodium.h
- sechash.h
- signal.h
- openssl/dh.h
- ecdsa.h
- compat/fake-rfc2553.h
- grp.h
- libmnl/libmnl.h
- addrtree.h
- sys/param.h
- validator/validator.h
- stdlib.h
- sys/stat.h
- util/storage/lookup3.h
- util/timehist.h
- openssl/err.h
- openssl/ssl.h
- poll.h
- glob.h
- iterator/iterator.h
- linux/types.h
- sldns/packet.h
- rbtree.h
- testcode/fake_event.h
- ctype.h
- util/configparser.h
- ../../sldns/parseutil.h
- secport.h
- daemon/remote.h
- Python.h
- util/net_help.h
- validator/val_nsec.h
- services/mesh.h
- protobuf-c/protobuf-c.h
- respip/respip.h
- sys/wait.h
- validator/val_anchor.h
- iterator/iter_donotq.h
- services/localzone.h
- string.h
- sys/ioctl.h
- openssl/md5.h
- util/rbtree.h
- sys/resource.h
- link.h
- ngtcp2/ngtcp2_crypto_ossl.h
- openssl/x509.h
- stdatomic.h
- sys/un.h
- util/timeval_func.h
- daemon/worker.h
- pk11pub.h
- testcode/checklocks.h
- util/locks.h
- validator/val_secalgo.h
- wincrypt.h
- synch.h
- libunbound/context.h
- pthread_np.h
- limits.h
report: name
sources:
- function_names:
  - LLVMFuzzerTestOneInput
  source_file: /src/unbound/fuzz_4.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LLVMFuzzerTestOneInput
  source_file: /src/unbound/fuzz_3.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SZ
      pos:
        line_end: 7
        line_start: 6
        source_file: /src/unbound/fuzz_3.c
      type_or_value: '1000'
    - item_type: preproc_def
      name: SZ2
      pos:
        line_end: 8
        line_start: 7
        source_file: /src/unbound/fuzz_3.c
      type_or_value: '100'
    structs: []
    typedefs: []
    union: []
- function_names:
  - LLVMFuzzerTestOneInput
  source_file: /src/unbound/fuzz_2.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LLVMFuzzerTestOneInput
  source_file: /src/unbound/fuzz_1.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LLVMFuzzerTestOneInput
  source_file: /src/unbound/parse_packet_fuzzer.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - stats_timeval_add
  - server_stats_init
  - server_stats_querymiss
  - server_stats_prefetch
  - server_stats_log
  - set_subnet_stats
  - set_neg_cache_stats
  - get_rrset_bogus
  - get_queries_ratelimit
  - get_dnscrypt_cache_miss
  - get_dnscrypt_replay
  - server_stats_compile
  - server_stats_obtain
  - server_stats_reply
  - server_stats_add
  - server_stats_insquery
  - server_stats_insrcode
  - server_stats_downstream_cookie
  source_file: /src/unbound/daemon/stats.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: STATS_THREAD_WAIT
      pos:
        line_end: 74
        line_start: 73
        source_file: /src/unbound/daemon/stats.c
      type_or_value: '60000'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/daemon/acl_list.h
  types:
    enum:
    - enumerators:
      - name: acl_deny
        value: '0'
      - name: acl_refuse
      - name: acl_allow
      - name: acl_refuse_non_local
      - name: acl_deny_non_local
      - name: acl_allow_snoop
      - name: acl_allow_setrd
      - name: acl_allow_cookie
      item_type: enum
      name: acl_access
      pos:
        line_end: 72
        line_start: 53
        source_file: /src/unbound/daemon/acl_list.h
    preproc_defs: []
    structs:
    - fields:
      - name: '* region'
        type: struct regional
      - name: tree
        type: rbtree_type
      item_type: struct
      name: acl_list
      pos:
        line_end: 85
        line_start: 77
        source_file: /src/unbound/daemon/acl_list.h
    - fields:
      - name: node
        type: struct addr_tree_node
      - name: control
        type: enum acl_access
      - name: '* taglist'
        type: uint8_t
      - name: taglen
        type: size_t
      - name: '* tag_actions'
        type: uint8_t
      - name: tag_actions_size
        type: size_t
      - name: '** tag_datas'
        type: struct config_strlist
      - name: tag_datas_size
        type: size_t
      - name: is_interface
        type: int
      - name: '* view'
        type: struct view
      item_type: struct
      name: acl_addr
      pos:
        line_end: 113
        line_start: 91
        source_file: /src/unbound/daemon/acl_list.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/daemon/cachedump.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - print_build_options
  - usage
  - replay_var_compare
  - apply_settings
  - readpid
  - writepid
  - checkoldpid
  - detach
  - setup_sslctx_remote
  - perform_setup
  - run_daemon
  - main
  source_file: /src/unbound/daemon/unbound.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/daemon/worker.h
  types:
    enum:
    - enumerators:
      - name: worker_cmd_quit
      - name: worker_cmd_reload_stop
      - name: worker_cmd_stats
      - name: worker_cmd_stats_noreset
      - name: worker_cmd_remote
      - name: worker_cmd_reload_start
      - name: worker_cmd_reload_poll
      item_type: enum
      name: worker_commands
      pos:
        line_end: 81
        line_start: 66
        source_file: /src/unbound/daemon/worker.h
    preproc_defs: []
    structs:
    - fields:
      - name: thread_num
        type: int
      - name: '* daemon'
        type: struct daemon
      - name: thr_id
        type: ub_thread_type
      - name: '* cmd'
        type: struct tube
      - name: '* base'
        type: struct comm_base
      - name: '* front'
        type: struct listen_dnsport
      - name: '* back'
        type: struct outside_network
      - name: '* comsig'
        type: struct comm_signal
      - name: '* cmd_com'
        type: struct comm_point
      - name: '* stat_timer'
        type: struct comm_timer
      - name: err_limit_time
        type: time_t
      - name: err_limit_count
        type: unsigned int
      - name: '* rndstate'
        type: struct ub_randstate
      - name: need_to_exit
        type: int
      - name: '*alloc'
        type: struct alloc_cache
      - name: stats
        type: struct ub_server_stats
      - name: '* scratchpad'
        type: struct regional
      - name: env
        type: struct module_env
      - name: reuse_cache
        type: int
      item_type: struct
      name: worker
      pos:
        line_end: 137
        line_start: 87
        source_file: /src/unbound/daemon/worker.h
    typedefs: []
    union: []
- function_names:
  - acl_list_create
  - acl_list_delete
  - acl_list_insert
  - parse_acl_access
  - acl_list_str_cfg
  - acl_find_or_create_str2addr
  - acl_find_or_create
  - acl_interface_str_cfg
  - acl_interface_insert
  - acl_list_tags_cfg
  - acl_list_view_cfg
  - acl_list_tag_action_cfg
  - check_data
  - acl_list_tag_data_cfg
  - read_acl_list
  - read_acl_view
  - read_acl_tags
  - read_acl_tag_actions
  - read_acl_tag_datas
  - acl_list_apply_cfg
  - acl_interface_init
  - read_acl_interface_action
  - read_acl_interface_view
  - read_acl_interface_tags
  - read_acl_interface_tag_actions
  - read_acl_interface_tag_datas
  - acl_interface_apply_cfg
  - acl_get_control
  - acl_addr_lookup
  - acl_list_get_mem
  - acl_access_to_str
  - log_acl_action
  - acl_list_swap_tree
  source_file: /src/unbound/daemon/acl_list.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - spool_txt_string
  - spool_txt_vmsg
  - spool_txt_printf
  - dump_rrset_line
  - dump_rrset
  - spool_strlist
  - dump_lruhash
  - dump_slabhash
  - dump_rrset_entry
  - dump_rrset_cache
  - dump_msg_ref
  - dump_msg
  - copy_msg
  - dump_msg_entry
  - dump_msg_cache
  - dump_cache
  - ssl_read_buf
  - read_fixed
  - load_rr
  - move_into_cache
  - load_rrset
  - load_rrset_cache
  - load_qinfo
  - load_ref
  - load_msg
  - load_msg_cache
  - load_cache
  - print_dp_details
  - print_dp_main
  - print_deleg_lookup
  source_file: /src/unbound/daemon/cachedump.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* worker'
        type: struct worker
      - name: '* ssl'
        type: RES
      item_type: struct
      name: dump_info
      pos:
        line_end: 257
        line_start: 252
        source_file: /src/unbound/daemon/cachedump.c
    typedefs: []
    union: []
- function_names:
  - remote_setup_ctx
  - daemon_remote_create
  - daemon_remote_clear
  - daemon_remote_delete
  - add_open
  - daemon_remote_open_ports
  - accept_open
  - daemon_remote_open_accept
  - daemon_remote_stop_accept
  - daemon_remote_start_accept
  - remote_accept_callback
  - state_list_remove_elem
  - clean_point
  - ssl_print_text
  - ssl_print_vmsg
  - ssl_printf
  - ssl_read_line
  - skipwhite
  - send_ok
  - distribute_cmd
  - do_stop
  - do_reload
  - fr_parse_options
  - do_fast_reload
  - do_verbosity
  - print_stats
  - print_thread_stats
  - print_longnum
  - print_mem
  - print_uptime
  - print_hist
  - print_ext
  - do_stats
  - parse_arg_name
  - find_arg2
  - perform_zone_add
  - do_zone_add
  - do_zones_add
  - perform_zone_remove
  - do_zone_remove
  - do_zones_remove
  - check_RR_syntax
  - perform_data_add
  - do_data_add
  - do_datas_add
  - perform_data_remove_rr
  - perform_data_remove
  - do_data_remove
  - do_datas_remove
  - do_view_zone_add
  - do_view_zone_remove
  - do_view_data_add
  - do_view_datas_add
  - do_view_data_remove
  - do_view_datas_remove
  - cache_lookup_subnet_addrnode
  - addrtree_traverse_visit_edge
  - addrtree_traverse_visit_node
  - addrtree_traverse
  - cache_lookup_subnet_msg
  - cache_lookup_rrset
  - cache_lookup_msg
  - do_cache_lookup_domain
  - do_cache_lookup
  - do_lookup
  - do_cache_remove
  - parse_remcachedb
  - do_flush_type
  - do_flush_stats
  - infra_del_host
  - do_flush_infra
  - do_flush_requestlist
  - zone_del_rrset
  - zone_del_msg
  - zone_del_kcache
  - do_flush_zone
  - bogus_del_rrset
  - bogus_del_msg
  - bogus_del_kcache
  - do_flush_bogus
  - negative_del_rrset
  - negative_del_msg
  - negative_del_kcache
  - do_flush_negative
  - do_flush_name
  - ssl_print_name_dp
  - print_root_fwds
  - parse_delegpt
  - do_forward
  - parse_fs_args
  - do_forward_add
  - do_forward_remove
  - do_stub_add
  - do_stub_remove
  - do_insecure_add
  - do_insecure_remove
  - do_insecure_list
  - RBTREE_FOR
  - do_status
  - get_mesh_age
  - get_mesh_status
  - RBTREE_FOR
  - do_dump_requestlist
  - RBTREE_FOR
  - dump_infra_host
  - do_dump_infra
  - do_log_reopen
  - do_auth_zone_reload
  - do_auth_zone_transfer
  - do_set_option
  - remote_get_opt_ssl
  - do_get_option
  - do_list_forwards
  - RBTREE_FOR
  - do_list_stubs
  - RBTREE_FOR
  - do_list_auth_zones
  - RBTREE_FOR
  - do_list_local_zones
  - RBTREE_FOR
  - do_list_local_data
  - RBTREE_FOR
  - RBTREE_FOR
  - do_view_list_local_zones
  - do_view_list_local_data
  - rate_list
  - ip_rate_list
  - do_ratelimit_list
  - do_ip_ratelimit_list
  - do_rpz_enable_disable
  - do_rpz_enable
  - do_rpz_disable
  - cookie_secret_file_dump
  - do_activate_cookie_secret
  - do_drop_cookie_secret
  - do_add_cookie_secret
  - do_print_cookie_secrets
  - cmd_no_args
  - cmdcmp
  - execute_cmd
  - daemon_remote_exec
  - handle_req
  - remote_handshake_later
  - remote_control_callback
  - sock_poll_timeout
  - fr_notification_to_string
  - fr_poll_for_quit
  - fr_send_notification
  - fr_output_text
  - fr_output_vmsg
  - fr_output_printf
  - fr_init_time
  - fr_read_config
  - taglist_equal
  - taglist_change_at_end
  - fr_check_tag_defines
  - fr_add_incompatible_option
  - FR_CHECK_CHANGED_CFG
  - FR_CHECK_CHANGED_CFG_STR
  - FR_CHECK_CHANGED_CFG_STRLIST
  - fr_check_changed_cfg_strlist
  - FR_CHECK_CHANGED_CFG_STR2LIST
  - fr_check_changed_cfg_str2list
  - FR_CHECK_CHANGED_CFG_STR3LIST
  - fr_check_changed_cfg_str3list
  - fr_check_tag_datas
  - fr_check_compat_cfg
  - fr_check_nopause_compat_cfg
  - fr_construct_clear
  - getmem_config_strlist
  - getmem_config_str2list
  - getmem_config_str3list
  - getmem_config_strbytelist
  - getmem_ifs
  - getmem_config_stub
  - getmem_config_auth
  - getmem_config_view
  - config_file_getmem
  - fr_printmem
  - ct_acl_interface_setup_ports
  - fr_add_auth_zone_change
  - xfr_auth_master_equal
  - xfr_masterlist_equal
  - xfr_config_equal
  - xfr_masters_equal
  - auth_zones_check_changes
  - RBTREE_FOR
  - RBTREE_FOR
  - fr_check_sslctx_change
  - ct_create_sslctxs
  - fr_construct_from_config
  - fr_finish_time
  - auth_zones_swap
  - void_ptr_swap
  - char_ptr_swap
  - sslctxs_swap
  - fr_atomic_copy_cfg
  - COPY_VAR_int
  - COPY_VAR_ptr
  - COPY_VAR_unsigned_int
  - COPY_VAR_size_t
  - COPY_VAR_uint8_t
  - COPY_VAR_uint16_t
  - COPY_VAR_uint32_t
  - COPY_VAR_int32_t
  - fr_adjust_cache
  - fr_adjust_iter_env
  - fr_adjust_val_env
  - fr_adjust_infra
  - fr_reload_config
  - fr_poll_for_ack
  - fr_reload_ipc
  - fr_load_config
  - fast_reload_thread_main
  - create_socketpair
  - fast_reload_thread_setup
  - fr_auth_change_list_delete
  - fast_reload_thread_desetup
  - fr_send_cmd_to
  - fr_main_perform_done
  - cfg_strlist_append_listhead
  - fr_main_perform_printout
  - fr_read_ack_from_workers
  - fr_poll_for_reload_start
  - fr_worker_pickup_mesh
  - tcl_remove_old
  - auth_zone_zonemd_stop_lookup
  - fr_pickup_auth_locks
  - fr_worker_auth_del
  - auth_xfr_pickup_config
  - fr_worker_auth_add
  - fr_worker_auth_cha
  - fr_worker_pickup_auth_changes
  - fr_worker_pickup_listen_dnsport
  - fr_worker_pickup_outside_network
  - fr_worker_pickup_dnstap_changes
  - fast_reload_worker_pickup_changes
  - fr_main_perform_reload_stop
  - fr_main_perform_reload_nopause_poll
  - fr_main_perform_cmd
  - fr_main_handle_cmd
  - fr_check_cmd_from_thread
  - fast_reload_service_cb
  - fr_client_send_item_ssl
  - fr_client_send_item_fd
  - fr_client_pickup_next_item
  - fast_reload_client_callback
  - fr_printq_create
  - fr_printq_delete
  - fr_printq_empty
  - fr_printq_list_insert
  - fast_reload_printq_list_delete
  - fr_printq_list_remove
  - fr_printq_remove
  - fr_send_stop
  - fast_reload_thread_start
  - fast_reload_thread_stop
  source_file: /src/unbound/daemon/remote.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SQ
      pos:
        line_end: 128
        line_start: 127
        source_file: /src/unbound/daemon/remote.c
      type_or_value: '"="'
    - item_type: preproc_def
      name: MAX_CMD_STRLINE
      pos:
        line_end: 131
        line_start: 130
        source_file: /src/unbound/daemon/remote.c
      type_or_value: '1024'
    - item_type: preproc_def
      name: MAX_STDIN_STRLINE
      pos:
        line_end: 132
        line_start: 131
        source_file: /src/unbound/daemon/remote.c
      type_or_value: '2048'
    - item_type: preproc_def
      name: IPC_LOOP_MAX
      pos:
        line_end: 134
        line_start: 133
        source_file: /src/unbound/daemon/remote.c
      type_or_value: '200'
    - item_type: preproc_def
      name: IPC_NOTIFICATION_WAIT
      pos:
        line_end: 136
        line_start: 135
        source_file: /src/unbound/daemon/remote.c
      type_or_value: '200'
    - item_type: preproc_def
      name: ip_ratelimit_list_arg
      pos:
        line_end: 3678
        line_start: 3677
        source_file: /src/unbound/daemon/remote.c
      type_or_value: ratelimit_list_arg
    structs:
    - fields:
      - name: '* ssl'
        type: RES
      - name: '* worker'
        type: struct worker
      - name: '* nm'
        type: uint8_t
      - name: nmlen
        type: size_t
      item_type: struct
      name: cache_lookup_info
      pos:
        line_end: 1875
        line_start: 1866
        source_file: /src/unbound/daemon/remote.c
    - fields:
      - name: '* worker'
        type: struct worker
      - name: '* name'
        type: uint8_t
      - name: len
        type: size_t
      - name: labs
        type: int
      - name: expired
        type: time_t
      - name: num_rrsets
        type: size_t
      - name: num_msgs
        type: size_t
      - name: num_keys
        type: size_t
      - name: addrlen
        type: socklen_t
      - name: addr
        type: struct sockaddr_storage
      - name: remcachedb
        type: int
      item_type: struct
      name: del_info
      pos:
        line_end: 2316
        line_start: 2293
        source_file: /src/unbound/daemon/remote.c
    - fields:
      - name: '* infra'
        type: struct infra_cache
      - name: '* ssl'
        type: RES
      - name: now
        type: time_t
      - name: ssl_failed
        type: int
      item_type: struct
      name: infra_arg
      pos:
        line_end: 3237
        line_start: 3227
        source_file: /src/unbound/daemon/remote.c
    - fields:
      - name: '* infra'
        type: struct infra_cache
      - name: '* ssl'
        type: RES
      - name: all
        type: int
      - name: now
        type: time_t
      - name: backoff
        type: int
      item_type: struct
      name: ratelimit_list_arg
      pos:
        line_end: 3675
        line_start: 3664
        source_file: /src/unbound/daemon/remote.c
    - fields:
      - name: '* listen_dot_sslctx'
        type: void
      - name: '* connect_dot_sslctx'
        type: void
      - name: '* listen_doh_sslctx'
        type: void
      - name: '* listen_quic_sslctx'
        type: void
      - name: '* ssl_service_key'
        type: char
      - name: '* ssl_service_pem'
        type: char
      - name: mtime_ssl_service_key
        type: time_t
      - name: mtime_ns_ssl_service_key
        type: long
      - name: mtime_ssl_service_pem
        type: time_t
      - name: mtime_ns_ssl_service_pem
        type: long
      - name: '* views'
        type: struct views
      - name: '* auth_zones'
        type: struct auth_zones
      - name: '* fwds'
        type: struct iter_forwards
      - name: '* hints'
        type: struct iter_hints
      - name: '* respip_set'
        type: struct respip_set
      - name: '* acl'
        type: struct acl_list
      - name: '* acl_interface'
        type: struct acl_list
      - name: '* tcl'
        type: struct tcl_list
      - name: '* local_zones'
        type: struct local_zones
      - name: use_response_ip
        type: int
      - name: use_rpz
        type: int
      - name: '* edns_strings'
        type: struct edns_strings
      - name: '* anchors'
        type: struct val_anchors
      - name: '* nsec3_keysize'
        type: size_t
      - name: '* nsec3_maxiter'
        type: size_t
      - name: nsec3_keyiter_count
        type: int
      - name: '* target_fetch_policy'
        type: int
      - name: max_dependency_depth
        type: int
      - name: '* donotq'
        type: struct iter_donotq
      - name: '* priv'
        type: struct iter_priv
      - name: '* caps_white'
        type: struct rbtree_type
      - name: nat64
        type: struct iter_nat64
      - name: wait_limits_netblock
        type: struct rbtree_type
      - name: wait_limits_cookie_netblock
        type: struct rbtree_type
      - name: domain_limits
        type: struct rbtree_type
      - name: '* oldcfg'
        type: struct config_file
      item_type: struct
      name: fast_reload_construct
      pos:
        line_end: 4848
        line_start: 4774
        source_file: /src/unbound/daemon/remote.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/daemon/remote.h
  types:
    enum:
    - enumerators:
      - name: fast_reload_notification_none
        value: '0'
      - name: fast_reload_notification_exit
        value: '3'
      - name: fast_reload_notification_exited
        value: '4'
      - name: fast_reload_notification_done
        value: '1'
      - name: fast_reload_notification_done_error
        value: '2'
      - name: fast_reload_notification_printout
        value: '5'
      - name: fast_reload_notification_reload_stop
        value: '6'
      - name: fast_reload_notification_reload_ack
        value: '7'
      - name: fast_reload_notification_reload_start
        value: '8'
      - name: fast_reload_notification_reload_nopause_poll
        value: '9'
      item_type: enum
      name: fast_reload_notification
      pos:
        line_end: 150
        line_start: 127
        source_file: /src/unbound/daemon/remote.h
    preproc_defs:
    - item_type: preproc_def
      name: REMOTE_CONTROL_TCP_TIMEOUT
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/unbound/daemon/remote.h
      type_or_value: '120000'
    structs:
    - fields:
      - name: '* next'
        type: struct rc_state
      - name: '* c'
        type: struct comm_point
      - name: shake_state
        type: enum { rc_none, rc_hs_read, rc_hs_write }
      - name: fd
        type: int
      - name: '* rc'
        type: struct daemon_remote
      item_type: struct
      name: rc_state
      pos:
        line_end: 82
        line_start: 67
        source_file: /src/unbound/daemon/remote.h
    - fields:
      - name: '* worker'
        type: struct worker
      - name: '* accept_list'
        type: struct listen_list
      - name: use_cert
        type: int
      - name: active
        type: int
      - name: max_active
        type: int
      - name: '* busy_list'
        type: struct rc_state
      item_type: struct
      name: daemon_remote
      pos:
        line_end: 108
        line_start: 91
        source_file: /src/unbound/daemon/remote.h
    - fields:
      - name: fd
        type: int
      item_type: struct
      name: remote_stream
      pos:
        line_end: 120
        line_start: 113
        source_file: /src/unbound/daemon/remote.h
    - fields:
      - name: '*prev'
        type: struct fast_reload_printq
      - name: in_list
        type: int
      - name: '* to_print'
        type: struct config_strlist_head
      - name: '* client_item'
        type: char
      - name: client_len
        type: int
      - name: client_byte_count
        type: int
      - name: '* client_cp'
        type: struct comm_point
      - name: remote
        type: struct remote_stream
      - name: '* worker'
        type: struct worker
      item_type: struct
      name: fast_reload_printq
      pos:
        line_end: 176
        line_start: 156
        source_file: /src/unbound/daemon/remote.h
    - fields:
      - name: '* next'
        type: struct fast_reload_auth_change
      - name: '* old_z'
        type: struct auth_zone
      - name: '* new_z'
        type: struct auth_zone
      - name: is_deleted
        type: int
      - name: is_added
        type: int
      - name: is_changed
        type: int
      item_type: struct
      name: fast_reload_auth_change
      pos:
        line_end: 196
        line_start: 183
        source_file: /src/unbound/daemon/remote.h
    - fields:
      - name: threadnum
        type: int
      - name: commpair[2]
        type: int
      - name: tid
        type: ub_thread_type
      - name: started
        type: int
      - name: need_to_quit
        type: int
      - name: fr_verb
        type: int
      - name: fr_nopause
        type: int
      - name: fr_drop_mesh
        type: int
      - name: '* service_event'
        type: void
      - name: service_event_is_added
        type: int
      - name: service_read_cmd
        type: uint32_t
      - name: service_read_cmd_count
        type: int
      - name: '* worker'
        type: struct worker
      - name: '*printq'
        type: struct fast_reload_printq
      - name: fr_output_lock
        type: lock_basic_type
      - name: '* fr_output'
        type: struct config_strlist_head
      - name: commreload[2]
        type: int
      - name: '* auth_zone_change_list'
        type: struct fast_reload_auth_change
      - name: '* old_auth_zones'
        type: struct auth_zones
      - name: sslctxs_changed
        type: int
      item_type: struct
      name: fast_reload_thread
      pos:
        line_end: 260
        line_start: 201
        source_file: /src/unbound/daemon/remote.h
    typedefs:
    - item_type: typedef
      name: RES
      pos:
        line_end: 121
        line_start: 121
        source_file: /src/unbound/daemon/remote.h
      type: remote_stream
    union: []
- function_names:
  - worker_mem_report
  - worker_send_cmd
  - worker_handle_service_reply
  - worker_err_ratelimit
  - query_error
  - worker_check_request
  - worker_send_reload_ack
  - worker_stop_and_wait
  - worker_handle_control_cmd
  - check_delegation_secure
  - deleg_remove_nonsecure_additional
  - answer_norec_from_cache
  - apply_respip_action
  - answer_from_cache
  - reply_and_prefetch
  - chaos_replystr
  - chaos_replyonestr
  - chaos_trustanchor
  - RBTREE_FOR
  - answer_chaos
  - answer_notify
  - deny_refuse
  - deny_refuse_all
  - deny_refuse_non_local
  - check_ip_ratelimit
  - worker_handle_request
  - worker_sighandler
  - worker_restart_timer
  - worker_stat_timer_cb
  - worker_probe_timer_cb
  - worker_create
  - worker_init
  - worker_work
  - worker_delete
  - worker_send_query
  - worker_alloc_cleanup
  - worker_stats_clear
  - worker_start_accept
  - worker_stop_accept
  - libworker_send_query
  - libworker_handle_service_reply
  - libworker_handle_control_cmd
  - libworker_fg_done_cb
  - libworker_bg_done_cb
  - libworker_event_done_cb
  - libworker_alloc_cleanup
  - context_query_cmp
  - order_lock_cmp
  - codeline_cmp
  - dtio_tap_callback
  - dtio_mainfdcallback
  - doq_client_event_cb
  - doq_client_timer_cb
  source_file: /src/unbound/daemon/worker.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NORMAL_UDP_SIZE
      pos:
        line_end: 99
        line_start: 98
        source_file: /src/unbound/daemon/worker.c
      type_or_value: '512 '
    - item_type: preproc_def
      name: ERROR_RATELIMIT
      pos:
        line_end: 101
        line_start: 100
        source_file: /src/unbound/daemon/worker.c
      type_or_value: '100 '
    - item_type: preproc_def
      name: PREFETCH_EXPIRY_ADD
      pos:
        line_end: 113
        line_start: 112
        source_file: /src/unbound/daemon/worker.c
      type_or_value: '60'
    - item_type: preproc_def
      name: TA_RESPONSE_MAX_TXT
      pos:
        line_end: 1075
        line_start: 1074
        source_file: /src/unbound/daemon/worker.c
      type_or_value: '16 '
    - item_type: preproc_def
      name: TA_RESPONSE_MAX_TAGS
      pos:
        line_end: 1076
        line_start: 1075
        source_file: /src/unbound/daemon/worker.c
      type_or_value: '32 '
    structs:
    - fields:
      - name: checked
        type: int
      - name: value
        type: int
      item_type: struct
      name: check_request_result
      pos:
        line_end: 341
        line_start: 338
        source_file: /src/unbound/daemon/worker.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/daemon/daemon.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* cfg'
        type: struct config_file
      - name: '* chroot'
        type: char
      - name: '* pidfile'
        type: char
      - name: listening_port
        type: int
      - name: '** ports'
        type: struct listen_port
      - name: num_ports
        type: size_t
      - name: reuseport
        type: int
      - name: rc_port
        type: int
      - name: '* rc_ports'
        type: struct listen_port
      - name: '* shared_ports'
        type: struct shared_ports
      - name: '* rc'
        type: struct daemon_remote
      - name: '* listen_dot_sslctx'
        type: void
      - name: '* connect_dot_sslctx'
        type: void
      - name: '* listen_doh_sslctx'
        type: void
      - name: '* listen_quic_sslctx'
        type: void
      - name: '* ssl_service_key'
        type: char
      - name: '* ssl_service_pem'
        type: char
      - name: mtime_ssl_service_key
        type: time_t
      - name: mtime_ns_ssl_service_key
        type: long
      - name: mtime_ssl_service_pem
        type: time_t
      - name: mtime_ns_ssl_service_pem
        type: long
      - name: num
        type: int
      - name: old_num
        type: int
      - name: '** workers'
        type: struct worker
      - name: '**worker_allocs'
        type: struct alloc_cache
      - name: need_to_exit
        type: int
      - name: '* rand'
        type: struct ub_randstate
      - name: superalloc
        type: struct alloc_cache
      - name: '* env'
        type: struct module_env
      - name: mods
        type: struct module_stack
      - name: mods_inited
        type: int
      - name: '* acl'
        type: struct acl_list
      - name: '* acl_interface'
        type: struct acl_list
      - name: '* tcl'
        type: struct tcl_list
      - name: '* local_zones'
        type: struct local_zones
      - name: time_last_stat
        type: struct timeval
      - name: time_boot
        type: struct timeval
      - name: '* shm_info'
        type: struct shm_main_info
      - name: stat_time_specific
        type: int
      - name: stat_time_offset
        type: int
      - name: use_response_ip
        type: int
      - name: use_rpz
        type: int
      - name: '* doq_table'
        type: struct doq_table
      - name: reuse_cache
        type: int
      - name: '* cookie_secrets'
        type: struct cookie_secrets
      - name: '* fast_reload_thread'
        type: struct fast_reload_thread
      - name: '* fast_reload_printq_list'
        type: struct fast_reload_printq
      - name: fast_reload_drop_mesh
        type: int
      - name: fast_reload_tcl_has_changes
        type: int
      - name: '* cfgfile'
        type: char
      item_type: struct
      name: daemon
      pos:
        line_end: 193
        line_start: 80
        source_file: /src/unbound/daemon/daemon.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/daemon/stats.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - record_sigh
  - signal_handling_record
  - signal_handling_playback
  - setup_listen_sslctx
  - daemon_setup_listen_dot_sslctx
  - daemon_setup_listen_doh_sslctx
  - daemon_setup_listen_quic_sslctx
  - daemon_setup_connect_dot_sslctx
  - daemon_setup_sslctxs
  - daemon_delete_sslctxs
  - ssl_cert_changed
  - daemon_reload_sslctxs
  - daemon_init
  - setup_acl_for_ports
  - daemon_open_shared_ports
  - daemon_privileged
  - daemon_setup_modules
  - daemon_get_shufport
  - daemon_clear_allocs
  - daemon_create_workers
  - close_other_pipes
  - set_log_thread_id
  - thread_start
  - daemon_start_others
  - daemon_stop_others
  - daemon_fork
  - daemon_cleanup
  - daemon_delete
  - daemon_apply_cfg
  source_file: /src/unbound/daemon/daemon.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RET_ERR
  - RET_ERR_SHIFT
  - sldns_str2wire_dname_buf_rel
  - sldns_str2wire_dname_buf
  - sldns_str2wire_dname_buf_origin
  - sldns_str2wire_dname
  - rrinternal_get_owner
  - rrinternal_get_ttl
  - rrinternal_get_class
  - rrinternal_get_type
  - rrinternal_write_typeclassttl
  - rrinternal_get_delims
  - sldns_rdf_type_maybe_quoted
  - rrinternal_get_quoted
  - rrinternal_spool_hex
  - rrinternal_parse_unknown
  - rrinternal_parse_rdf
  - sldns_parse_rdf_token
  - sldns_affix_token
  - sldns_str2wire_svcparam_key_cmp
  - sldns_str2wire_check_svcbparams
  - rrinternal_parse_rdata
  - sldns_str2wire_rr_buf_internal
  - sldns_str2wire_rr_buf
  - sldns_str2wire_rr_question_buf
  - sldns_wirerr_get_type
  - sldns_wirerr_get_class
  - sldns_wirerr_get_ttl
  - sldns_wirerr_get_rdatalen
  - sldns_wirerr_get_rdata
  - sldns_wirerr_get_rdatawl
  - sldns_get_errorstr_parse
  - sldns_strip_ws
  - sldns_fp2wire_rr_buf
  - sldns_str2wire_svcparam_key_lookup
  - sldns_str2wire_svcparam_port
  - sldns_str2wire_svcbparam_ipv4hint
  - sldns_str2wire_svcbparam_ipv6hint
  - sldns_network_uint16_cmp
  - sldns_str2wire_svcbparam_mandatory
  - sldns_str2wire_svcbparam_ech_value
  - sldns_str2wire_svcbparam_parse_next_unescaped_comma
  - sldns_str2wire_svcbparam_parse_copy_unescaped
  - sldns_str2wire_svcbparam_alpn_value
  - sldns_str2wire_svcbparam_dohpath_value
  - sldns_str2wire_svcparam_value
  - sldns_str2wire_svcparam_buf
  - sldns_str2wire_rdf_buf
  - sldns_str2wire_int8_buf
  - sldns_str2wire_int16_buf
  - sldns_str2wire_int32_buf
  - sldns_str2wire_a_buf
  - sldns_str2wire_aaaa_buf
  - sldns_str2wire_str_buf
  - sldns_str2wire_apl_buf
  - sldns_str2wire_b64_buf
  - sldns_str2wire_b32_ext_buf
  - sldns_is_last_of_string
  - sldns_str2wire_hex_buf
  - sldns_str2wire_nsec_buf
  - sldns_str2wire_type_buf
  - sldns_str2wire_class_buf
  - sldns_str2wire_cert_alg_buf
  - sldns_str2wire_alg_buf
  - sldns_str2wire_tsigerror_buf
  - sldns_str2wire_time_buf
  - sldns_str2wire_tsigtime_buf
  - sldns_str2wire_period_buf
  - loc_parse_cm
  - sldns_str2wire_loc_buf
  - ldns_tolower_str
  - sldns_str2wire_wks_buf
  - sldns_str2wire_nsap_buf
  - sldns_str2wire_atma_buf
  - sldns_str2wire_ipseckey_buf
  - sldns_str2wire_nsec3_salt_buf
  - sldns_str2wire_ilnp64_buf
  - sldns_str2wire_eui48_buf
  - sldns_str2wire_eui64_buf
  - sldns_str2wire_unquoted_buf
  - sldns_str2wire_tag_buf
  - sldns_str2wire_long_str_buf
  - sldns_str2wire_hip_buf
  - sldns_str2wire_int16_data_buf
  source_file: /src/unbound/sldns/str2wire.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: RET_OFFSET_MASK
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/unbound/sldns/str2wire.c
      type_or_value: (((unsigned)(~LDNS_WIREPARSE_MASK))>>LDNS_WIREPARSE_SHIFT)
    structs: []
    typedefs: []
    union: []
- function_names:
  - sldns_rr_descript
  - sldns_rr_descriptor_minimum
  - sldns_rr_descriptor_maximum
  - sldns_rr_descriptor_field_type
  - sldns_get_rr_type_by_name
  - sldns_get_rr_class_by_name
  source_file: /src/unbound/sldns/rrdef.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LDNS_RDATA_FIELD_DESCRIPTORS_COUNT
      pos:
        line_end: 643
        line_start: 641
        source_file: /src/unbound/sldns/rrdef.c
      type_or_value: (sizeof(rdata_field_descriptors)/sizeof(rdata_field_descriptors[0]))
    structs: []
    typedefs: []
    union: []
- function_names:
  - sldns_buffer_new
  - sldns_buffer_new_frm_data
  - sldns_buffer_init_frm_data
  - sldns_buffer_set_capacity
  - sldns_buffer_reserve
  - sldns_buffer_printf
  - sldns_buffer_free
  - sldns_buffer_copy
  source_file: /src/unbound/sldns/sbuffer.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - sldns_wire2str_pkt
  - sldns_wire2str_rr
  - sldns_wire2str_type
  - sldns_wire2str_class
  - sldns_wire2str_dname
  - sldns_wire2str_rcode
  - sldns_wire2str_pkt_buf
  - sldns_wire2str_rr_buf
  - sldns_wire2str_rrquestion_buf
  - sldns_wire2str_rdata_buf
  - sldns_wire2str_rr_unknown_buf
  - sldns_wire2str_rr_comment_buf
  - sldns_wire2str_type_buf
  - sldns_wire2str_class_buf
  - sldns_wire2str_rcode_buf
  - sldns_wire2str_opcode_buf
  - sldns_wire2str_dname_buf
  - sldns_str_vprint
  - sldns_str_print
  - print_hex_buf
  - print_remainder_hex
  - sldns_wire2str_pkt_scan
  - sldns_rr_tcttl_scan
  - sldns_wire2str_rr_scan
  - sldns_wire2str_rrquestion_scan
  - sldns_wire2str_rr_unknown_scan
  - rr_comment_dnskey
  - rr_comment_rrsig
  - rr_comment_nsec3
  - sldns_wire2str_rr_comment_print
  - sldns_wire2str_header_scan
  - sldns_wire2str_rdata_scan
  - sldns_wire2str_rdata_unknown_scan
  - dname_char_print
  - sldns_wire2str_dname_scan
  - sldns_wire2str_opcode_print
  - sldns_wire2str_rcode_print
  - sldns_wire2str_class_print
  - sldns_wire2str_type_print
  - sldns_wire2str_edns_option_code_print
  - sldns_wire2str_class_scan
  - sldns_wire2str_type_scan
  - sldns_wire2str_ttl_scan
  - sldns_print_svcparamkey
  - sldns_wire2str_svcparam_port2str
  - sldns_wire2str_svcparam_ipv4hint2str
  - sldns_wire2str_svcparam_ipv6hint2str
  - sldns_wire2str_svcparam_mandatory2str
  - sldns_wire2str_svcparam_alpn2str
  - sldns_wire2str_svcparam_ech2str
  - sldns_wire2str_svcparam_scan
  - sldns_wire2str_rdf_scan
  - sldns_wire2str_int8_scan
  - sldns_wire2str_int16_scan
  - sldns_wire2str_int32_scan
  - sldns_wire2str_period_scan
  - sldns_wire2str_tsigtime_scan
  - sldns_wire2str_a_scan
  - sldns_wire2str_aaaa_scan
  - str_char_print
  - sldns_wire2str_str_scan
  - sldns_wire2str_apl_scan
  - sldns_wire2str_b32_ext_scan
  - sldns_wire2str_b64_scan_num
  - sldns_wire2str_b64_scan
  - sldns_wire2str_hex_scan
  - sldns_wire2str_nsec_scan
  - sldns_wire2str_nsec3_salt_scan
  - sldns_wire2str_cert_alg_scan
  - sldns_wire2str_alg_scan
  - sldns_wire2str_unknown_scan
  - sldns_wire2str_time_scan
  - loc_cm_print
  - sldns_wire2str_loc_scan
  - sldns_wire2str_wks_scan
  - sldns_wire2str_nsap_scan
  - sldns_wire2str_atma_scan
  - sldns_wire2str_ipseckey_scan_internal
  - sldns_wire2str_ipseckey_scan
  - sldns_wire2str_hip_scan
  - sldns_wire2str_int16_data_scan
  - sldns_wire2str_nsec3_next_owner_scan
  - sldns_wire2str_ilnp64_scan
  - sldns_wire2str_eui48_scan
  - sldns_wire2str_eui64_scan
  - sldns_wire2str_unquoted_scan
  - sldns_wire2str_tag_scan
  - sldns_wire2str_long_str_scan
  - sldns_wire2str_tsigerror_scan
  - sldns_wire2str_edns_llq_print
  - sldns_wire2str_edns_ul_print
  - sldns_wire2str_edns_nsid_print
  - sldns_wire2str_edns_dau_print
  - sldns_wire2str_edns_dhu_print
  - sldns_wire2str_edns_n3u_print
  - sldns_wire2str_edns_subnet_print
  - sldns_wire2str_edns_keepalive_print
  - sldns_wire2str_edns_ede_print
  - sldns_wire2str_edns_option_print
  - print_edns_opts
  - sldns_wire2str_edns_scan
  source_file: /src/unbound/sldns/wire2str.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/sldns/parseutil.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: id
        type: int
      - name: '*name'
        type: char
      item_type: struct
      name: sldns_struct_lookup_table
      pos:
        line_end: 29
        line_start: 26
        source_file: /src/unbound/sldns/parseutil.h
    typedefs:
    - item_type: typedef
      name: sldns_lookup_table
      pos:
        line_end: 30
        line_start: 30
        source_file: /src/unbound/sldns/parseutil.h
      type: sldns_struct_lookup_table
    union: []
- function_names:
  - sldns_lookup_by_name
  - sldns_lookup_by_id
  - LDNS_MOD
  - LDNS_DIV
  - is_leap_year
  - leap_days
  - sldns_mktime_from_utc
  - sldns_year_and_yday_from_days_since_epoch
  - sldns_mon_and_mday_from_year_and_yday
  - sldns_wday_from_year_and_yday
  - sldns_gmtime64_r
  - sldns_serial_arithmetics_time
  - sldns_serial_arithmetics_gmtime_r
  - sldns_hexdigit_to_int
  - sldns_str2period
  - sldns_parse_escape
  - sldns_parse_char
  - sldns_b32_ntop_calculate_size
  - sldns_b32_ntop_calculate_size_no_padding
  - sldns_b32_ntop_base
  - sldns_b32_ntop
  - sldns_b32_ntop_extended_hex
  - sldns_b32_pton_calculate_size
  - sldns_b32_pton_base
  - sldns_b32_pton
  - sldns_b32_pton_extended_hex
  - sldns_b64_ntop_calculate_size
  - sldns_b64_ntop_base
  - sldns_b64_ntop
  - sldns_b64url_ntop
  - sldns_b64_pton_calculate_size
  - sldns_b64_pton_base
  - sldns_b64_pton
  - sldns_b64url_pton
  - sldns_b64_contains_nonurl
  source_file: /src/unbound/sldns/parseutil.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - sldns_fget_token
  - sldns_fget_token_l
  - sldns_fget_keyword_data
  - sldns_fget_keyword_data_l
  - sldns_bgetc
  - sldns_bget_token
  - sldns_bget_token_par
  - sldns_bskipcs
  - sldns_fskipcs
  - sldns_fskipcs_l
  - sldns_bget_keyword_data
  source_file: /src/unbound/sldns/parse.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/sldns/parse.h
  types:
    enum:
    - enumerators:
      - name: LDNS_DIR_TTL
      - name: LDNS_DIR_ORIGIN
      - name: LDNS_DIR_INCLUDE
      item_type: enum
      name: sldns_enum_directive
      pos:
        line_end: 42
        line_start: 37
        source_file: /src/unbound/sldns/parse.h
    preproc_defs:
    - item_type: preproc_def
      name: LDNS_PARSE_SKIP_SPACE
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/unbound/sldns/parse.h
      type_or_value: '"\f\n\r\v"'
    - item_type: preproc_def
      name: LDNS_PARSE_NORMAL
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/unbound/sldns/parse.h
      type_or_value: '" \f\n\r\t\v"'
    - item_type: preproc_def
      name: LDNS_PARSE_NO_NL
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/unbound/sldns/parse.h
      type_or_value: '" \t"'
    - item_type: preproc_def
      name: LDNS_MAX_LINELEN
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/unbound/sldns/parse.h
      type_or_value: '10230'
    - item_type: preproc_def
      name: LDNS_MAX_KEYWORDLEN
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/unbound/sldns/parse.h
      type_or_value: '32'
    structs: []
    typedefs:
    - item_type: typedef
      name: sldns_directive
      pos:
        line_end: 43
        line_start: 43
        source_file: /src/unbound/sldns/parse.h
      type: sldns_enum_directive
    union: []
- function_names:
  - LDNS_RD_WIRE
  - LDNS_RD_SET
  - LDNS_RD_CLR
  - LDNS_TC_WIRE
  - LDNS_TC_SET
  - LDNS_TC_CLR
  - LDNS_AA_WIRE
  - LDNS_AA_SET
  - LDNS_AA_CLR
  - LDNS_OPCODE_WIRE
  - LDNS_OPCODE_SET
  - LDNS_QR_WIRE
  - LDNS_QR_SET
  - LDNS_QR_CLR
  - LDNS_RCODE_WIRE
  - LDNS_RCODE_SET
  - LDNS_CD_WIRE
  - LDNS_CD_SET
  - LDNS_CD_CLR
  - LDNS_AD_WIRE
  - LDNS_AD_SET
  - LDNS_AD_CLR
  - LDNS_Z_WIRE
  - LDNS_Z_SET
  - LDNS_Z_CLR
  - LDNS_RA_WIRE
  - LDNS_RA_SET
  - LDNS_RA_CLR
  - LDNS_ID_WIRE
  - LDNS_ID_SET
  - LDNS_QDCOUNT
  - LDNS_QDCOUNT_SET
  - LDNS_ANCOUNT
  - LDNS_ANCOUNT_SET
  - LDNS_NSCOUNT
  - LDNS_NSCOUNT_SET
  - LDNS_ARCOUNT
  - LDNS_ARCOUNT_SET
  source_file: /src/unbound/sldns/pkthdr.h
  types:
    enum:
    - enumerators:
      - name: LDNS_SECTION_QUESTION
        value: '0'
      - name: LDNS_SECTION_AUTHORITY
        value: '2'
      - name: LDNS_SECTION_ANSWER
        value: '1'
      - name: LDNS_SECTION_ADDITIONAL
        value: '3'
      - name: LDNS_SECTION_ANY
        value: '4'
      - name: LDNS_SECTION_ANY_NOQUESTION
        value: '5'
      item_type: enum
      name: sldns_enum_pkt_section
      pos:
        line_end: 128
        line_start: 119
        source_file: /src/unbound/sldns/pkthdr.h
    - enumerators:
      - name: LDNS_PACKET_QUERY
        value: '0'
      - name: LDNS_PACKET_STATUS
        value: '2'
      - name: LDNS_PACKET_IQUERY
        value: '1'
      - name: LDNS_PACKET_UPDATE
        value: '5'
      - name: LDNS_PACKET_NOTIFY
        value: '4'
      item_type: enum
      name: sldns_enum_pkt_opcode
      pos:
        line_end: 138
        line_start: 132
        source_file: /src/unbound/sldns/pkthdr.h
    - enumerators:
      - name: LDNS_RCODE_NOERROR
        value: '0'
      - name: LDNS_RCODE_NXDOMAIN
        value: '3'
      - name: LDNS_RCODE_SERVFAIL
        value: '2'
      - name: LDNS_RCODE_FORMERR
        value: '1'
      - name: LDNS_RCODE_NOTIMPL
        value: '4'
      - name: LDNS_RCODE_REFUSED
        value: '5'
      - name: LDNS_RCODE_YXDOMAIN
        value: '6'
      - name: LDNS_RCODE_YXRRSET
        value: '7'
      - name: LDNS_RCODE_NXRRSET
        value: '8'
      - name: LDNS_RCODE_NOTAUTH
        value: '9'
      - name: LDNS_RCODE_NOTZONE
        value: '10'
      item_type: enum
      name: sldns_enum_pkt_rcode
      pos:
        line_end: 154
        line_start: 142
        source_file: /src/unbound/sldns/pkthdr.h
    preproc_defs:
    - item_type: preproc_def
      name: LDNS_HEADER_SIZE
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: '12'
    - item_type: preproc_def
      name: LDNS_RD_MASK
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: 0x01U
    - item_type: preproc_def
      name: LDNS_RD_SHIFT
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: '0'
    - item_type: preproc_def
      name: LDNS_TC_MASK
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: 0x02U
    - item_type: preproc_def
      name: LDNS_TC_SHIFT
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: '1'
    - item_type: preproc_def
      name: LDNS_AA_MASK
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: 0x04U
    - item_type: preproc_def
      name: LDNS_AA_SHIFT
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: '2'
    - item_type: preproc_def
      name: LDNS_OPCODE_MASK
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: 0x78U
    - item_type: preproc_def
      name: LDNS_OPCODE_SHIFT
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: '3'
    - item_type: preproc_def
      name: LDNS_QR_MASK
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: 0x80U
    - item_type: preproc_def
      name: LDNS_QR_SHIFT
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: '7'
    - item_type: preproc_def
      name: LDNS_RCODE_MASK
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: 0x0fU
    - item_type: preproc_def
      name: LDNS_RCODE_SHIFT
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: '0'
    - item_type: preproc_def
      name: LDNS_CD_MASK
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: 0x10U
    - item_type: preproc_def
      name: LDNS_CD_SHIFT
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: '4'
    - item_type: preproc_def
      name: LDNS_AD_MASK
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: 0x20U
    - item_type: preproc_def
      name: LDNS_AD_SHIFT
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: '5'
    - item_type: preproc_def
      name: LDNS_Z_MASK
      pos:
        line_end: 78
        line_start: 77
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: 0x40U
    - item_type: preproc_def
      name: LDNS_Z_SHIFT
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: '6'
    - item_type: preproc_def
      name: LDNS_RA_MASK
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: 0x80U
    - item_type: preproc_def
      name: LDNS_RA_SHIFT
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: '7'
    - item_type: preproc_def
      name: LDNS_QDCOUNT_OFF
      pos:
        line_end: 95
        line_start: 94
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: '4'
    - item_type: preproc_def
      name: LDNS_ANCOUNT_OFF
      pos:
        line_end: 103
        line_start: 102
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: '6'
    - item_type: preproc_def
      name: LDNS_NSCOUNT_OFF
      pos:
        line_end: 108
        line_start: 107
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: '8'
    - item_type: preproc_def
      name: LDNS_ARCOUNT_OFF
      pos:
        line_end: 113
        line_start: 112
        source_file: /src/unbound/sldns/pkthdr.h
      type_or_value: '10'
    structs: []
    typedefs:
    - item_type: typedef
      name: sldns_pkt_section
      pos:
        line_end: 129
        line_start: 129
        source_file: /src/unbound/sldns/pkthdr.h
      type: sldns_enum_pkt_section
    - item_type: typedef
      name: sldns_pkt_opcode
      pos:
        line_end: 139
        line_start: 139
        source_file: /src/unbound/sldns/pkthdr.h
      type: sldns_enum_pkt_opcode
    - item_type: typedef
      name: sldns_pkt_rcode
      pos:
        line_end: 155
        line_start: 155
        source_file: /src/unbound/sldns/pkthdr.h
      type: sldns_enum_pkt_rcode
    union: []
- function_names: []
  source_file: /src/unbound/sldns/wire2str.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/sldns/keyraw.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/sldns/rrdef.h
  types:
    enum:
    - enumerators:
      - name: LDNS_RR_CLASS_IN
        value: '1'
      - name: LDNS_RR_CLASS_HS
        value: '4'
      - name: LDNS_RR_CLASS_CH
        value: '3'
      - name: LDNS_RR_CLASS_ANY
        value: '255'
      - name: LDNS_RR_CLASS_NONE
        value: '254'
      - name: LDNS_RR_CLASS_FIRST
        value: '0'
      - name: LDNS_RR_CLASS_LAST
        value: '65535'
      - name: LDNS_RR_CLASS_COUNT
        value: LDNS_RR_CLASS_LAST - LDNS_RR_CLASS_FIRST + 1
      item_type: enum
      name: sldns_enum_rr_class
      pos:
        line_end: 64
        line_start: 48
        source_file: /src/unbound/sldns/rrdef.h
    - enumerators:
      - name: LDNS_RR_COMPRESS
      - name: LDNS_RR_NO_COMPRESS
      item_type: enum
      name: sldns_enum_rr_compress
      pos:
        line_end: 75
        line_start: 70
        source_file: /src/unbound/sldns/rrdef.h
    - enumerators:
      - name: LDNS_RR_TYPE_CNAME
        value: '5'
      - name: LDNS_RR_TYPE_HINFO
        value: '13'
      - name: LDNS_RR_TYPE_IPSECKEY
        value: '45'
      - name: LDNS_RR_TYPE_HTTPS
        value: '65'
      - name: LDNS_RR_TYPE_CERT
        value: '37'
      - name: LDNS_RR_TYPE_RT
        value: '21'
      - name: LDNS_RR_TYPE_TLSA
        value: '52'
      - name: LDNS_RR_TYPE_LOC
        value: '29'
      - name: LDNS_RR_TYPE_TSIG
        value: '250'
      - name: LDNS_RR_TYPE_HIP
        value: '55'
      - name: LDNS_RR_TYPE_AXFR
        value: '252'
      - name: LDNS_RR_TYPE_RESINFO
        value: '261'
      - name: LDNS_RR_TYPE_UID
        value: '101'
      - name: LDNS_RR_TYPE_LP
        value: '107'
      - name: LDNS_RR_TYPE_NIMLOC
        value: '32'
      - name: LDNS_RR_TYPE_MG
        value: '8'
      - name: LDNS_RR_TYPE_TXT
        value: '16'
      - name: LDNS_RR_TYPE_DNSKEY
        value: '48'
      - name: LDNS_RR_TYPE_SIG
        value: '24'
      - name: LDNS_RR_TYPE_SINK
        value: '40'
      - name: LDNS_RR_TYPE_CDNSKEY
        value: '60'
      - name: LDNS_RR_TYPE_TALINK
        value: '58'
      - name: LDNS_RR_TYPE_MB
        value: '7'
      - name: LDNS_RR_TYPE_MX
        value: '15'
      - name: LDNS_RR_TYPE_NSEC
        value: '47'
      - name: LDNS_RR_TYPE_UINFO
        value: '100'
      - name: LDNS_RR_TYPE_NSAP_PTR
        value: '23'
      - name: LDNS_RR_TYPE_DNAME
        value: '39'
      - name: LDNS_RR_TYPE_L64
        value: '106'
      - name: LDNS_RR_TYPE_EID
        value: '31'
      - name: LDNS_RR_TYPE_RKEY
        value: '57'
      - name: LDNS_RR_TYPE_GID
        value: '102'
      - name: LDNS_RR_TYPE_EUI64
        value: '109'
      - name: LDNS_RR_TYPE_ATMA
        value: '34'
      - name: LDNS_RR_TYPE_NSEC3
        value: '50'
      - name: LDNS_RR_TYPE_NS
        value: '2'
      - name: LDNS_RR_TYPE_NULL
        value: '10'
      - name: LDNS_RR_TYPE_AFSDB
        value: '18'
      - name: LDNS_RR_TYPE_PX
        value: '26'
      - name: LDNS_RR_TYPE_APL
        value: '42'
      - name: LDNS_RR_TYPE_CSYNC
        value: '62'
      - name: LDNS_RR_TYPE_MAILA
        value: '254'
      - name: LDNS_RR_TYPE_NID
        value: '104'
      - name: LDNS_RR_TYPE_TA
        value: '32768'
      - name: LDNS_RR_TYPE_A
        value: '1'
      - name: LDNS_RR_TYPE_MR
        value: '9'
      - name: LDNS_RR_TYPE_RP
        value: '17'
      - name: LDNS_RR_TYPE_DHCID
        value: '49'
      - name: LDNS_RR_TYPE_KEY
        value: '25'
      - name: LDNS_RR_TYPE_OPT
        value: '41'
      - name: LDNS_RR_TYPE_OPENPGPKEY
        value: '61'
      - name: LDNS_RR_TYPE_EUI48
        value: '108'
      - name: LDNS_RR_TYPE_SRV
        value: '33'
      - name: LDNS_RR_TYPE_MAILB
        value: '253'
      - name: LDNS_RR_TYPE_CDS
        value: '59'
      - name: LDNS_RR_TYPE_TKEY
        value: '249'
      - name: LDNS_RR_TYPE_KX
        value: '36'
      - name: LDNS_RR_TYPE_NSEC3PARAMS
        value: '51'
      - name: LDNS_RR_TYPE_MF
        value: '4'
      - name: LDNS_RR_TYPE_PTR
        value: '12'
      - name: LDNS_RR_TYPE_ISDN
        value: '20'
      - name: LDNS_RR_TYPE_AAAA
        value: '28'
      - name: LDNS_RR_TYPE_SSHFP
        value: '44'
      - name: LDNS_RR_TYPE_SVCB
        value: '64'
      - name: LDNS_RR_TYPE_URI
        value: '256'
      - name: LDNS_RR_TYPE_LAST
        value: '65535'
      - name: LDNS_RR_TYPE_SMIMEA
        value: '53'
      - name: LDNS_RR_TYPE_AVC
        value: '258'
      - name: LDNS_RR_TYPE_FIRST
        value: '0'
      - name: LDNS_RR_TYPE_COUNT
        value: LDNS_RR_TYPE_LAST - LDNS_RR_TYPE_FIRST + 1
      - name: LDNS_RR_TYPE_MD
        value: '3'
      - name: LDNS_RR_TYPE_WKS
        value: '11'
      - name: LDNS_RR_TYPE_X25
        value: '19'
      - name: LDNS_RR_TYPE_GPOS
        value: '27'
      - name: LDNS_RR_TYPE_DS
        value: '43'
      - name: LDNS_RR_TYPE_ZONEMD
        value: '63'
      - name: LDNS_RR_TYPE_UNSPEC
        value: '103'
      - name: LDNS_RR_TYPE_NAPTR
        value: '35'
      - name: LDNS_RR_TYPE_NSEC3PARAM
        value: '51'
      - name: LDNS_RR_TYPE_ANY
        value: '255'
      - name: LDNS_RR_TYPE_CAA
        value: '257'
      - name: LDNS_RR_TYPE_DLV
        value: '32769'
      - name: LDNS_RR_TYPE_A6
        value: '38'
      - name: LDNS_RR_TYPE_L32
        value: '105'
      - name: LDNS_RR_TYPE_NXT
        value: '30'
      - name: LDNS_RR_TYPE_SOA
        value: '6'
      - name: LDNS_RR_TYPE_MINFO
        value: '14'
      - name: LDNS_RR_TYPE_RRSIG
        value: '46'
      - name: LDNS_RR_TYPE_SPF
        value: '99'
      - name: LDNS_RR_TYPE_NSAP
        value: '22'
      - name: LDNS_RR_TYPE_IXFR
        value: '251'
      - name: LDNS_RR_TYPE_NINFO
        value: '56'
      item_type: enum
      name: sldns_enum_rr_type
      pos:
        line_end: 244
        line_start: 81
        source_file: /src/unbound/sldns/rrdef.h
    - enumerators:
      - name: LDNS_RDF_TYPE_TSIGERROR
      - name: LDNS_RDF_TYPE_ATMA
      - name: LDNS_RDF_TYPE_SERVICE
      - name: LDNS_RDF_TYPE_WKS
      - name: LDNS_RDF_TYPE_DNAME
      - name: LDNS_RDF_TYPE_INT16
      - name: LDNS_RDF_TYPE_A
      - name: LDNS_RDF_TYPE_STR
      - name: LDNS_RDF_TYPE_B32_EXT
      - name: LDNS_RDF_TYPE_CERT_ALG
      - name: LDNS_RDF_TYPE_HEX
      - name: LDNS_RDF_TYPE_UNKNOWN
      - name: LDNS_RDF_TYPE_TYPE
      - name: LDNS_RDF_TYPE_PERIOD
      - name: LDNS_RDF_TYPE_HIP
      - name: LDNS_RDF_TYPE_EUI48
      - name: LDNS_RDF_TYPE_TAG
      - name: LDNS_RDF_TYPE_NSEC3_NEXT_OWNER
      - name: LDNS_RDF_TYPE_LONG_STR
      - name: LDNS_RDF_TYPE_NSAP
      - name: LDNS_RDF_TYPE_SVCPARAM
      - name: LDNS_RDF_TYPE_IPSECKEY
      - name: LDNS_RDF_TYPE_UNQUOTED
      - name: LDNS_RDF_TYPE_LOC
      - name: LDNS_RDF_TYPE_NONE
      - name: LDNS_RDF_TYPE_INT32
      - name: LDNS_RDF_TYPE_INT8
      - name: LDNS_RDF_TYPE_AAAA
      - name: LDNS_RDF_TYPE_APL
      - name: LDNS_RDF_TYPE_B64
      - name: LDNS_RDF_TYPE_NSEC
      - name: LDNS_RDF_TYPE_ALG
      - name: LDNS_RDF_TYPE_CLASS
      - name: LDNS_RDF_TYPE_TIME
      - name: LDNS_RDF_TYPE_ILNP64
      - name: LDNS_RDF_TYPE_EUI64
      - name: LDNS_RDF_TYPE_INT16_DATA
      - name: LDNS_RDF_TYPE_NSEC3_SALT
      - name: LDNS_RDF_TYPE_BITMAP
        value: LDNS_RDF_TYPE_NSEC
      - name: LDNS_RDF_TYPE_TSIGTIME
      item_type: enum
      name: sldns_enum_rdf_type
      pos:
        line_end: 369
        line_start: 267
        source_file: /src/unbound/sldns/rrdef.h
    - enumerators:
      - name: LDNS_RSAMD5
        value: '1'
      - name: LDNS_DH
        value: '2'
      - name: LDNS_DSA
        value: '3'
      - name: LDNS_RSASHA1
        value: '5'
      - name: LDNS_ECC
        value: '4'
      - name: LDNS_DSA_NSEC3
        value: '6'
      - name: LDNS_RSASHA1_NSEC3
        value: '7'
      - name: LDNS_RSASHA256
        value: '8'
      - name: LDNS_RSASHA512
        value: '10'
      - name: LDNS_ECC_GOST
        value: '12'
      - name: LDNS_ECDSAP256SHA256
        value: '13'
      - name: LDNS_PRIVATEDNS
        value: '253'
      - name: LDNS_ECDSAP384SHA384
        value: '14'
      - name: LDNS_ED448
        value: '16'
      - name: LDNS_PRIVATEOID
        value: '254'
      - name: LDNS_ED25519
        value: '15'
      - name: LDNS_INDIRECT
        value: '252'
      item_type: enum
      name: sldns_enum_algorithm
      pos:
        line_end: 394
        line_start: 375
        source_file: /src/unbound/sldns/rrdef.h
    - enumerators:
      - name: LDNS_SHA1
        value: '1'
      - name: LDNS_SHA384
        value: '4'
      - name: LDNS_HASH_GOST
        value: '3'
      - name: LDNS_SHA256
        value: '2'
      item_type: enum
      name: sldns_enum_hash
      pos:
        line_end: 406
        line_start: 400
        source_file: /src/unbound/sldns/rrdef.h
    - enumerators:
      - name: LDNS_CERT_PKIX
        value: '1'
      - name: LDNS_CERT_SPKI
        value: '2'
      - name: LDNS_CERT_IPKIX
        value: '4'
      - name: LDNS_CERT_PGP
        value: '3'
      - name: LDNS_CERT_ISPKI
        value: '5'
      - name: LDNS_CERT_IPGP
        value: '6'
      - name: LDNS_CERT_ACPKIX
        value: '7'
      - name: LDNS_CERT_IACPKIX
        value: '8'
      - name: LDNS_CERT_URI
        value: '253'
      - name: LDNS_CERT_OID
        value: '254'
      item_type: enum
      name: sldns_enum_cert_algorithm
      pos:
        line_end: 424
        line_start: 412
        source_file: /src/unbound/sldns/rrdef.h
    - enumerators:
      - name: LDNS_EDNS_LLQ
        value: '1'
      - name: LDNS_EDNS_UL
        value: '2'
      - name: LDNS_EDNS_DHU
        value: '6'
      - name: LDNS_EDNS_DAU
        value: '5'
      - name: LDNS_EDNS_NSID
        value: '3'
      - name: LDNS_EDNS_N3U
        value: '7'
      - name: LDNS_EDNS_CLIENT_SUBNET
        value: '8'
      - name: LDNS_EDNS_COOKIE
        value: '10'
      - name: LDNS_EDNS_KEEPALIVE
        value: '11'
      - name: LDNS_EDNS_PADDING
        value: '12'
      - name: LDNS_EDNS_EDE
        value: '15'
      - name: LDNS_EDNS_REPORT_CHANNEL
        value: '18'
      - name: LDNS_EDNS_CLIENT_TAG
        value: '16'
      - name: LDNS_EDNS_UNBOUND_CACHEDB_TESTFRAME_TEST
        value: '65534'
      item_type: enum
      name: sldns_enum_edns_option
      pos:
        line_end: 447
        line_start: 430
        source_file: /src/unbound/sldns/rrdef.h
    - enumerators:
      - name: LDNS_EDE_NONE
        value: '-1'
      - name: LDNS_EDE_STALE_ANSWER
        value: '3'
      - name: LDNS_EDE_UNSUPPORTED_DNSKEY_ALG
        value: '1'
      - name: LDNS_EDE_SIGNATURE_EXPIRED
        value: '7'
      - name: LDNS_EDE_NO_ZONE_KEY_BIT_SET
        value: '11'
      - name: LDNS_EDE_BLOCKED
        value: '15'
      - name: LDNS_EDE_STALE_NXDOMAIN_ANSWER
        value: '19'
      - name: LDNS_EDE_NETWORK_ERROR
        value: '23'
      - name: LDNS_EDE_UNSUPPORTED_NSEC3_ITERATIONS
        value: '27'
      - name: LDNS_EDE_UNSUPPORTED_DS_DIGEST
        value: '2'
      - name: LDNS_EDE_DNSSEC_BOGUS
        value: '6'
      - name: LDNS_EDE_NOT_READY
        value: '14'
      - name: LDNS_EDE_RRSIGS_MISSING
        value: '10'
      - name: LDNS_EDE_PROHIBITED
        value: '18'
      - name: LDNS_EDE_NO_REACHABLE_AUTHORITY
        value: '22'
      - name: LDNS_EDE_TOO_EARLY
        value: '26'
      - name: LDNS_EDE_OTHER
        value: '0'
      - name: LDNS_EDE_DNSSEC_INDETERMINATE
        value: '5'
      - name: LDNS_EDE_CACHED_ERROR
        value: '13'
      - name: LDNS_EDE_DNSKEY_MISSING
        value: '9'
      - name: LDNS_EDE_FILTERED
        value: '17'
      - name: LDNS_EDE_NOT_SUPPORTED
        value: '21'
      - name: LDNS_EDE_SIGNATURE_EXPIRED_BEFORE_VALID
        value: '25'
      - name: LDNS_EDE_SYNTHESIZED
        value: '29'
      - name: LDNS_EDE_FORGED_ANSWER
        value: '4'
      - name: LDNS_EDE_SIGNATURE_NOT_YET_VALID
        value: '8'
      - name: LDNS_EDE_NSEC_MISSING
        value: '12'
      - name: LDNS_EDE_CENSORED
        value: '16'
      - name: LDNS_EDE_NOT_AUTHORITATIVE
        value: '20'
      - name: LDNS_EDE_INVALID_DATA
        value: '24'
      - name: LDNS_EDE_BADPROXYPOLICY
        value: '28'
      - name: LDNS_EDE_INVALID_QUERY_TYPE
        value: '30'
      item_type: enum
      name: sldns_enum_ede_code
      pos:
        line_end: 484
        line_start: 450
        source_file: /src/unbound/sldns/rrdef.h
    preproc_defs:
    - item_type: preproc_def
      name: LDNS_MAX_LABELLEN
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '63'
    - item_type: preproc_def
      name: LDNS_MAX_DOMAINLEN
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '255'
    - item_type: preproc_def
      name: LDNS_MAX_POINTERS
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '65535'
    - item_type: preproc_def
      name: LDNS_RR_OVERHEAD
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '10'
    - item_type: preproc_def
      name: LDNS_DNSSEC_KEYPROTO
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '3'
    - item_type: preproc_def
      name: LDNS_KEY_ZONE_KEY
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '0x0100 '
    - item_type: preproc_def
      name: LDNS_KEY_SEP_KEY
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '0x0001 '
    - item_type: preproc_def
      name: LDNS_KEY_REVOKE_KEY
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '0x0080 '
    - item_type: preproc_def
      name: LDNS_RDATA_FIELD_DESCRIPTORS_COMMON
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '259'
    - item_type: preproc_def
      name: LDNS_MAX_RDFLEN
      pos:
        line_end: 249
        line_start: 248
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '65535'
    - item_type: preproc_def
      name: LDNS_RDF_SIZE_BYTE
      pos:
        line_end: 251
        line_start: 250
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '1'
    - item_type: preproc_def
      name: LDNS_RDF_SIZE_WORD
      pos:
        line_end: 252
        line_start: 251
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '2'
    - item_type: preproc_def
      name: LDNS_RDF_SIZE_DOUBLEWORD
      pos:
        line_end: 253
        line_start: 252
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '4'
    - item_type: preproc_def
      name: LDNS_RDF_SIZE_6BYTES
      pos:
        line_end: 254
        line_start: 253
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '6'
    - item_type: preproc_def
      name: LDNS_RDF_SIZE_8BYTES
      pos:
        line_end: 255
        line_start: 254
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '8'
    - item_type: preproc_def
      name: LDNS_RDF_SIZE_16BYTES
      pos:
        line_end: 256
        line_start: 255
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '16'
    - item_type: preproc_def
      name: LDNS_NSEC3_VARS_OPTOUT_MASK
      pos:
        line_end: 258
        line_start: 257
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: LDNS_APL_IP4
      pos:
        line_end: 260
        line_start: 259
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '1'
    - item_type: preproc_def
      name: LDNS_APL_IP6
      pos:
        line_end: 261
        line_start: 260
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '2'
    - item_type: preproc_def
      name: LDNS_APL_MASK
      pos:
        line_end: 262
        line_start: 261
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '0x7f'
    - item_type: preproc_def
      name: LDNS_APL_NEGATION
      pos:
        line_end: 263
        line_start: 262
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '0x80'
    - item_type: preproc_def
      name: LDNS_EDNS_MASK_DO_BIT
      pos:
        line_end: 488
        line_start: 487
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '0x8000'
    - item_type: preproc_def
      name: LDNS_EDNS_MASK_CO_BIT
      pos:
        line_end: 489
        line_start: 488
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '0x4000'
    - item_type: preproc_def
      name: LDNS_TSIG_ERROR_NOERROR
      pos:
        line_end: 492
        line_start: 491
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '0'
    - item_type: preproc_def
      name: LDNS_TSIG_ERROR_BADSIG
      pos:
        line_end: 493
        line_start: 492
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '16'
    - item_type: preproc_def
      name: LDNS_TSIG_ERROR_BADKEY
      pos:
        line_end: 494
        line_start: 493
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '17'
    - item_type: preproc_def
      name: LDNS_TSIG_ERROR_BADTIME
      pos:
        line_end: 495
        line_start: 494
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '18'
    - item_type: preproc_def
      name: LDNS_TSIG_ERROR_BADMODE
      pos:
        line_end: 496
        line_start: 495
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '19'
    - item_type: preproc_def
      name: LDNS_TSIG_ERROR_BADNAME
      pos:
        line_end: 497
        line_start: 496
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '20'
    - item_type: preproc_def
      name: LDNS_TSIG_ERROR_BADALG
      pos:
        line_end: 498
        line_start: 497
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '21'
    - item_type: preproc_def
      name: LDNS_EXT_RCODE_BADCOOKIE
      pos:
        line_end: 501
        line_start: 500
        source_file: /src/unbound/sldns/rrdef.h
      type_or_value: '23'
    structs:
    - fields:
      - name: _type
        type: sldns_rr_type
      - name: '*_name'
        type: char
      - name: _minimum
        type: uint8_t
      - name: _maximum
        type: uint8_t
      - name: '*_wireformat'
        type: sldns_rdf_type
      - name: _variable
        type: sldns_rdf_type
      - name: _compress
        type: sldns_rr_compress
      - name: _dname_count
        type: uint8_t
      item_type: struct
      name: sldns_struct_rr_descriptor
      pos:
        line_end: 525
        line_start: 507
        source_file: /src/unbound/sldns/rrdef.h
    typedefs:
    - item_type: typedef
      name: sldns_rr_class
      pos:
        line_end: 65
        line_start: 65
        source_file: /src/unbound/sldns/rrdef.h
      type: sldns_enum_rr_class
    - item_type: typedef
      name: sldns_rr_compress
      pos:
        line_end: 76
        line_start: 76
        source_file: /src/unbound/sldns/rrdef.h
      type: sldns_enum_rr_compress
    - item_type: typedef
      name: sldns_rr_type
      pos:
        line_end: 245
        line_start: 245
        source_file: /src/unbound/sldns/rrdef.h
      type: sldns_enum_rr_type
    - item_type: typedef
      name: sldns_rdf_type
      pos:
        line_end: 370
        line_start: 370
        source_file: /src/unbound/sldns/rrdef.h
      type: sldns_enum_rdf_type
    - item_type: typedef
      name: sldns_algorithm
      pos:
        line_end: 395
        line_start: 395
        source_file: /src/unbound/sldns/rrdef.h
      type: sldns_enum_algorithm
    - item_type: typedef
      name: sldns_hash
      pos:
        line_end: 407
        line_start: 407
        source_file: /src/unbound/sldns/rrdef.h
      type: sldns_enum_hash
    - item_type: typedef
      name: sldns_cert_algorithm
      pos:
        line_end: 425
        line_start: 425
        source_file: /src/unbound/sldns/rrdef.h
      type: sldns_enum_cert_algorithm
    - item_type: typedef
      name: sldns_edns_option
      pos:
        line_end: 448
        line_start: 448
        source_file: /src/unbound/sldns/rrdef.h
      type: sldns_enum_edns_option
    - item_type: typedef
      name: sldns_ede_code
      pos:
        line_end: 485
        line_start: 485
        source_file: /src/unbound/sldns/rrdef.h
      type: sldns_enum_ede_code
    - item_type: typedef
      name: sldns_rr_descriptor
      pos:
        line_end: 526
        line_start: 526
        source_file: /src/unbound/sldns/rrdef.h
      type: sldns_struct_rr_descriptor
    union: []
- function_names:
  - LDNS_WIREPARSE_ERROR
  - LDNS_WIREPARSE_OFFSET
  source_file: /src/unbound/sldns/str2wire.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LDNS_IP4ADDRLEN
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: (32/8)
    - item_type: preproc_def
      name: LDNS_IP6ADDRLEN
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: (128/8)
    - item_type: preproc_def
      name: LDNS_RR_BUF_SIZE
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '65535 '
    - item_type: preproc_def
      name: LDNS_DEFAULT_TTL
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '3600'
    - item_type: preproc_def
      name: SVCB_KEY_MANDATORY
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '0'
    - item_type: preproc_def
      name: SVCB_KEY_ALPN
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '1'
    - item_type: preproc_def
      name: SVCB_KEY_NO_DEFAULT_ALPN
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '2'
    - item_type: preproc_def
      name: SVCB_KEY_PORT
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '3'
    - item_type: preproc_def
      name: SVCB_KEY_IPV4HINT
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '4'
    - item_type: preproc_def
      name: SVCB_KEY_ECH
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '5'
    - item_type: preproc_def
      name: SVCB_KEY_IPV6HINT
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '6'
    - item_type: preproc_def
      name: SVCB_KEY_DOHPATH
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '7'
    - item_type: preproc_def
      name: SVCPARAMKEY_COUNT
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '8'
    - item_type: preproc_def
      name: MAX_NUMBER_OF_SVCPARAMS
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '64'
    - item_type: preproc_def
      name: SVCB_MAX_COMMA_SEPARATED_VALUES
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '1000'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_MASK
      pos:
        line_end: 188
        line_start: 187
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '0x0fff'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_SHIFT
      pos:
        line_end: 189
        line_start: 188
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '12'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_OK
      pos:
        line_end: 193
        line_start: 192
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '0'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_GENERAL
      pos:
        line_end: 194
        line_start: 193
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '342'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_DOMAINNAME_OVERFLOW
      pos:
        line_end: 195
        line_start: 194
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '343'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_DOMAINNAME_UNDERFLOW
      pos:
        line_end: 196
        line_start: 195
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '344'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_BUFFER_TOO_SMALL
      pos:
        line_end: 197
        line_start: 196
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '345'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_LABEL_OVERFLOW
      pos:
        line_end: 198
        line_start: 197
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '346'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_EMPTY_LABEL
      pos:
        line_end: 199
        line_start: 198
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '347'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_BAD_ESCAPE
      pos:
        line_end: 200
        line_start: 199
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '348'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX
      pos:
        line_end: 201
        line_start: 200
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '349'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_TTL
      pos:
        line_end: 202
        line_start: 201
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '350'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_TYPE
      pos:
        line_end: 203
        line_start: 202
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '351'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_CLASS
      pos:
        line_end: 204
        line_start: 203
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '352'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_RDATA
      pos:
        line_end: 205
        line_start: 204
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '353'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_MISSING_VALUE
      pos:
        line_end: 206
        line_start: 205
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '354'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_INVALID_STR
      pos:
        line_end: 207
        line_start: 206
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '355'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_B64
      pos:
        line_end: 208
        line_start: 207
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '356'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_B32_EXT
      pos:
        line_end: 209
        line_start: 208
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '357'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_HEX
      pos:
        line_end: 210
        line_start: 209
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '358'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_CERT_BAD_ALGORITHM
      pos:
        line_end: 211
        line_start: 210
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '359'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_TIME
      pos:
        line_end: 212
        line_start: 211
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '360'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_PERIOD
      pos:
        line_end: 213
        line_start: 212
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '361'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_ILNP64
      pos:
        line_end: 214
        line_start: 213
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '362'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_EUI48
      pos:
        line_end: 215
        line_start: 214
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '363'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_EUI64
      pos:
        line_end: 216
        line_start: 215
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '364'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_TAG
      pos:
        line_end: 217
        line_start: 216
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '365'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_NOT_IMPL
      pos:
        line_end: 218
        line_start: 217
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '366'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_INT
      pos:
        line_end: 219
        line_start: 218
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '367'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_IP4
      pos:
        line_end: 220
        line_start: 219
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '368'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_IP6
      pos:
        line_end: 221
        line_start: 220
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '369'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SYNTAX_INTEGER_OVERFLOW
      pos:
        line_end: 222
        line_start: 221
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '370'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_INCLUDE
      pos:
        line_end: 223
        line_start: 222
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '371'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_PARENTHESIS
      pos:
        line_end: 224
        line_start: 223
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '372'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SVCB_UNKNOWN_KEY
      pos:
        line_end: 225
        line_start: 224
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '373'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SVCB_MISSING_PARAM
      pos:
        line_end: 226
        line_start: 225
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '374'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SVCB_TOO_MANY_PARAMS
      pos:
        line_end: 227
        line_start: 226
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '375'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SVCB_DUPLICATE_KEYS
      pos:
        line_end: 228
        line_start: 227
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '376'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SVCB_MANDATORY_TOO_MANY_KEYS
      pos:
        line_end: 229
        line_start: 228
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '377'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SVCB_MANDATORY_MISSING_PARAM
      pos:
        line_end: 230
        line_start: 229
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '378'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SVCB_MANDATORY_DUPLICATE_KEY
      pos:
        line_end: 231
        line_start: 230
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '379'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SVCB_MANDATORY_IN_MANDATORY
      pos:
        line_end: 232
        line_start: 231
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '380'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SVCB_PORT_VALUE_SYNTAX
      pos:
        line_end: 233
        line_start: 232
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '381'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SVCB_IPV4_TOO_MANY_ADDRESSES
      pos:
        line_end: 234
        line_start: 233
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '382'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SVCB_IPV6_TOO_MANY_ADDRESSES
      pos:
        line_end: 235
        line_start: 234
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '383'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SVCB_ALPN_KEY_TOO_LARGE
      pos:
        line_end: 236
        line_start: 235
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '384'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SVCB_NO_DEFAULT_ALPN_VALUE
      pos:
        line_end: 237
        line_start: 236
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '385'
    - item_type: preproc_def
      name: LDNS_WIREPARSE_ERR_SVCPARAM_BROKEN_RDATA
      pos:
        line_end: 238
        line_start: 237
        source_file: /src/unbound/sldns/str2wire.h
      type_or_value: '386'
    structs:
    - fields:
      - name: origin[LDNS_MAX_DOMAINLEN+1]
        type: uint8_t
      - name: origin_len
        type: size_t
      - name: prev_rr[LDNS_MAX_DOMAINLEN+1]
        type: uint8_t
      - name: prev_rr_len
        type: size_t
      - name: default_ttl
        type: uint32_t
      - name: lineno
        type: int
      item_type: struct
      name: sldns_file_parse_state
      pos:
        line_end: 264
        line_start: 250
        source_file: /src/unbound/sldns/str2wire.h
    typedefs: []
    union: []
- function_names:
  - sldns_rr_dnskey_key_size_raw
  - sldns_calc_keytag_raw
  - sldns_key_EVP_load_gost_id
  - sldns_key_EVP_unload_gost
  - sldns_key_dsa_buf_bignum
  - sldns_key_buf2dsa_raw
  - sldns_key_dsa2pkey_raw
  - sldns_key_rsa_buf_bignum
  - sldns_key_buf2rsa_raw
  - sldns_key_rsa2pkey_raw
  - sldns_gost2pkey_raw
  - sldns_ecdsa2pkey_raw
  - sldns_ed255192pkey_raw
  - sldns_ed4482pkey_raw
  - sldns_digest_evp
  source_file: /src/unbound/sldns/keyraw.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - sldns_read_uint16
  - sldns_read_uint32
  - sldns_write_uint16
  - sldns_write_uint32
  - sldns_write_uint48
  - sldns_buffer_invariant
  - sldns_buffer_invariant
  - sldns_buffer_clear
  - sldns_buffer_flip
  - sldns_buffer_rewind
  - sldns_buffer_position
  - sldns_buffer_set_position
  - sldns_buffer_skip
  - sldns_buffer_limit
  - sldns_buffer_set_limit
  - sldns_buffer_capacity
  - sldns_buffer_at
  - sldns_buffer_begin
  - sldns_buffer_end
  - sldns_buffer_current
  - sldns_buffer_remaining_at
  - sldns_buffer_remaining
  - sldns_buffer_available_at
  - sldns_buffer_available
  - sldns_buffer_write_at
  - sldns_buffer_set_at
  - sldns_buffer_write
  - sldns_buffer_write_string_at
  - sldns_buffer_write_string
  - sldns_buffer_write_u8_at
  - sldns_buffer_write_u8
  - sldns_buffer_write_u16_at
  - sldns_buffer_write_u16
  - sldns_buffer_write_u32_at
  - sldns_buffer_write_u48_at
  - sldns_buffer_write_u32
  - sldns_buffer_write_u48
  - sldns_buffer_read_at
  - sldns_buffer_read
  - sldns_buffer_read_u8_at
  - sldns_buffer_read_u8
  - sldns_buffer_read_u16_at
  - sldns_buffer_read_u16
  - sldns_buffer_read_u32_at
  - sldns_buffer_read_u32
  - sldns_buffer_status
  - sldns_buffer_status_ok
  source_file: /src/unbound/sldns/sbuffer.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: INLINE
      pos:
        line_end: 22
        line_start: 20
        source_file: /src/unbound/sldns/sbuffer.h
      type_or_value: '#else'
    - item_type: preproc_def
      name: INLINE
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/unbound/sldns/sbuffer.h
      type_or_value: static
    - item_type: preproc_def
      name: INLINE
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/unbound/sldns/sbuffer.h
      type_or_value: static inline
    structs:
    - fields:
      - name: _position
        type: size_t
      - name: _limit
        type: size_t
      - name: _capacity
        type: size_t
      - name: '*_data'
        type: uint8_t
      - name: _fixed
        type: unsigned
      - name: _status_err
        type: unsigned
      item_type: struct
      name: sldns_buffer
      pos:
        line_end: 136
        line_start: 115
        source_file: /src/unbound/sldns/sbuffer.h
    typedefs:
    - item_type: typedef
      name: sldns_buffer
      pos:
        line_end: 137
        line_start: 137
        source_file: /src/unbound/sldns/sbuffer.h
      type: sldns_buffer
    union: []
- function_names:
  - autr_global_create
  - autr_global_delete
  - probetree_cmp
  - autr_get_num_anchors
  - position_in_string
  - verbose_key
  - parse_comments
  - str_contains_data
  - dnskey_flags
  - rr_is_dnskey_sep
  - ta_is_dnskey_sep
  - rr_is_dnskey_revoked
  - autr_ta_create
  - autr_tp_create
  - autr_rrset_delete
  - autr_ta_delete
  - autr_point_delete
  - find_add_tp
  - add_trustanchor_frm_rr
  - add_trustanchor_frm_str
  - load_trustanchor
  - assemble_iterate_ds
  - assemble_iterate_dnskey
  - assemble_iterate_hasfirst
  - assemble_iterate_count
  - ub_packed_rrset_heap_key
  - packed_rrset_heap_data
  - autr_assemble
  - parse_int
  - parse_id
  - parse_var_line
  - handle_origin
  - read_multiline
  - autr_read_file
  - trustanchor_state2str
  - autr_ctime_r
  - print_id
  - autr_write_contents
  - autr_write_file
  - verify_dnskey
  - rrsig_get_expiry
  - min_expiry
  - rr_is_selfsigned_revoked
  - seen_trustanchor
  - seen_revoked_trustanchor
  - revoke_dnskey
  - dnskey_compare_skip_revbit
  - ta_compare
  - find_key
  - add_key
  - key_ttl
  - set_tp_times
  - init_events
  - check_contains_revoked
  - key_matches_a_ds
  - update_events
  - check_holddown
  - reset_holddown
  - set_trustanchor_state
  - do_newkey
  - do_addtime
  - do_remtime
  - do_keyrem
  - do_keypres
  - do_revoked
  - anchor_state_update
  - init_zsk_to_ksk
  - remove_missing_trustanchors
  - do_statetable
  - autr_holddown_exceed
  - autr_cleanup_keys
  - calc_next_probe
  - wait_probe_time
  - reset_worker_timer_at
  - reset_worker_timer
  - set_next_probe
  - autr_tp_remove
  - autr_process_prime
  - autr_debug_print_ta
  - autr_debug_print_tp
  - autr_debug_print
  - RBTREE_FOR
  - probe_answer_cb
  - probe_anchor
  - todo_probe
  - autr_probe_timer
  source_file: /src/unbound/validator/autotrust.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MIN_PENDINGCOUNT
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/unbound/validator/autotrust.c
      type_or_value: '2'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/validator/val_neg.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: lock
        type: lock_basic_type
      - name: tree
        type: rbtree_type
      - name: '* first'
        type: struct val_neg_data
      - name: '* last'
        type: struct val_neg_data
      - name: use
        type: size_t
      - name: max
        type: size_t
      - name: nsec3_max_iter
        type: size_t
      - name: num_neg_cache_noerror
        type: size_t
      - name: num_neg_cache_nxdomain
        type: size_t
      item_type: struct
      name: val_neg_cache
      pos:
        line_end: 88
        line_start: 66
        source_file: /src/unbound/validator/val_neg.h
    - fields:
      - name: node
        type: rbnode_type
      - name: '* name'
        type: uint8_t
      - name: len
        type: size_t
      - name: labs
        type: int
      - name: '* parent'
        type: struct val_neg_zone
      - name: count
        type: int
      - name: nsec3_hash
        type: int
      - name: nsec3_iter
        type: size_t
      - name: '* nsec3_salt'
        type: uint8_t
      - name: nsec3_saltlen
        type: size_t
      - name: tree
        type: rbtree_type
      - name: dclass
        type: uint16_t
      - name: in_use
        type: uint8_t
      item_type: struct
      name: val_neg_zone
      pos:
        line_end: 128
        line_start: 93
        source_file: /src/unbound/validator/val_neg.h
    - fields:
      - name: node
        type: rbnode_type
      - name: '* name'
        type: uint8_t
      - name: len
        type: size_t
      - name: labs
        type: int
      - name: '* parent'
        type: struct val_neg_data
      - name: count
        type: int
      - name: '* zone'
        type: struct val_neg_zone
      - name: '* prev'
        type: struct val_neg_data
      - name: '* next'
        type: struct val_neg_data
      - name: in_use
        type: uint8_t
      item_type: struct
      name: val_neg_data
      pos:
        line_end: 169
        line_start: 141
        source_file: /src/unbound/validator/val_neg.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/validator/val_anchor.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: lock
        type: lock_basic_type
      - name: '* tree'
        type: rbtree_type
      - name: '* autr'
        type: struct autr_global_data
      item_type: struct
      name: val_anchors
      pos:
        line_end: 71
        line_start: 59
        source_file: /src/unbound/validator/val_anchor.h
    - fields:
      - name: '* next'
        type: struct ta_key
      - name: '* data'
        type: uint8_t
      - name: len
        type: size_t
      - name: type
        type: uint16_t
      item_type: struct
      name: ta_key
      pos:
        line_end: 85
        line_start: 76
        source_file: /src/unbound/validator/val_anchor.h
    - fields:
      - name: node
        type: rbnode_type
      - name: lock
        type: lock_basic_type
      - name: '* name'
        type: uint8_t
      - name: namelen
        type: size_t
      - name: namelabs
        type: int
      - name: '* parent'
        type: struct trust_anchor
      - name: '* keylist'
        type: struct ta_key
      - name: '* autr'
        type: struct autr_point_data
      - name: numDS
        type: size_t
      - name: numDNSKEY
        type: size_t
      - name: '* ds_rrset'
        type: struct ub_packed_rrset_key
      - name: '* dnskey_rrset'
        type: struct ub_packed_rrset_key
      - name: dclass
        type: uint16_t
      item_type: struct
      name: trust_anchor
      pos:
        line_end: 120
        line_start: 91
        source_file: /src/unbound/validator/val_anchor.h
    typedefs: []
    union: []
- function_names:
  - log_crypto_error
  - log_crypto_verbose
  - nsec3_hash_algo_size_supported
  - secalgo_nsec3_hash
  - secalgo_hash_sha256
  - secalgo_hash_create_md
  - secalgo_hash_create_sha384
  - secalgo_hash_create_sha512
  - secalgo_hash_update
  - secalgo_hash_final
  - secalgo_hash_delete
  - ds_digest_size_supported
  - do_gost94
  - secalgo_ds_digest
  - dnskey_algo_id_is_supported
  - setup_dsa_sig
  - setup_ecdsa_sig
  - ecdsa_evp_workaround_init
  - setup_key_digest
  - digest_ctx_free
  - digest_error_status
  - verify_canonrrset
  - nsec3_hash_algo_size_supported
  - secalgo_nsec3_hash
  - secalgo_hash_sha256
  - secalgo_hash_create_type
  - secalgo_hash_create_sha384
  - secalgo_hash_create_sha512
  - secalgo_hash_update
  - secalgo_hash_final
  - secalgo_hash_delete
  - ds_digest_size_supported
  - secalgo_ds_digest
  - dnskey_algo_id_is_supported
  - nss_key_create
  - nss_buf2ecdsa
  - nss_buf2dsa
  - nss_buf2rsa
  - nss_setup_key_digest
  - verify_canonrrset
  - _digest_nettle
  - nsec3_hash_algo_size_supported
  - secalgo_nsec3_hash
  - secalgo_hash_sha256
  - secalgo_hash_create_sha384
  - secalgo_hash_create_sha512
  - secalgo_hash_update
  - secalgo_hash_final
  - secalgo_hash_delete
  - ds_digest_size_supported
  - secalgo_ds_digest
  - dnskey_algo_id_is_supported
  - _verify_nettle_dsa
  - _verify_nettle_rsa
  - _verify_nettle_ecdsa
  - _verify_nettle_ed25519
  - verify_canonrrset
  source_file: /src/unbound/validator/val_secalgo.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* ctx'
        type: EVP_MD_CTX
      item_type: struct
      name: secalgo_hash
      pos:
        line_end: 164
        line_start: 161
        source_file: /src/unbound/validator/val_secalgo.c
    - fields:
      - name: '* ctx'
        type: HASHContext
      item_type: struct
      name: secalgo_hash
      pos:
        line_end: 892
        line_start: 889
        source_file: /src/unbound/validator/val_secalgo.c
    - fields:
      - name: active
        type: int
      - name: ctx384
        type: struct sha384_ctx
      - name: ctx512
        type: struct sha512_ctx
      item_type: struct
      name: secalgo_hash
      pos:
        line_end: 1582
        line_start: 1575
        source_file: /src/unbound/validator/val_secalgo.c
    typedefs: []
    union: []
- function_names:
  - anchor_cmp
  - anchors_create
  - assembled_rrset_delete
  - anchors_delfunc
  - anchors_delete
  - anchors_init_parents_locked
  - RBTREE_FOR
  - init_parents
  - anchor_find
  - anchor_new_ta
  - anchor_find_key
  - anchor_new_ta_key
  - anchor_store_new_key
  - anchor_store_new_rr
  - anchor_insert_insecure
  - anchor_store_str
  - anchor_read_file
  - skip_to_eol
  - is_bind_special
  - readkeyword_bindfile
  - skip_to_special
  - process_bind_contents
  - anchor_read_bind_file
  - anchor_read_bind_file_wild
  - assemble_it
  - anchors_assemble
  - anchors_ds_unsupported
  - anchors_dnskey_unsupported
  - anchors_assemble_rrsets
  - anchors_apply_cfg
  - anchors_lookup
  - assembled_rrset_get_mem
  - anchors_get_mem
  - RBTREE_FOR
  - anchors_add_insecure
  - anchors_delete_insecure
  - keytag_compare
  - anchor_list_keytags
  - anchor_has_keytag
  - anchors_find_any_noninsecure
  - anchors_swap_tree
  source_file: /src/unbound/validator/val_anchor.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/validator/autotrust.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* next'
        type: struct autr_ta
      - name: '* rr'
        type: uint8_t
      - name: rr_len
        type: size_t
      - name: last_change
        type: time_t
      - name: s
        type: autr_state_type
      - name: pending_count
        type: uint8_t
      - name: fetched
        type: uint8_t
      - name: revoked
        type: uint8_t
      item_type: struct
      name: autr_ta
      pos:
        line_end: 83
        line_start: 66
        source_file: /src/unbound/validator/autotrust.h
    - fields:
      - name: '* file'
        type: char
      - name: pnode
        type: rbnode_type
      - name: '* keys'
        type: struct autr_ta
      - name: last_queried
        type: time_t
      - name: last_success
        type: time_t
      - name: next_probe_time
        type: time_t
      - name: query_interval
        type: time_t
      - name: retry_time
        type: time_t
      - name: query_failed
        type: uint8_t
      - name: revoked
        type: uint8_t
      item_type: struct
      name: autr_point_data
      pos:
        line_end: 121
        line_start: 89
        source_file: /src/unbound/validator/autotrust.h
    - fields:
      - name: probe
        type: rbtree_type
      item_type: struct
      name: autr_global_data
      pos:
        line_end: 130
        line_start: 126
        source_file: /src/unbound/validator/autotrust.h
    typedefs: []
    union: []
- function_names:
  - update_reason_bogus
  - fill_nsec3_iter
  - val_env_parse_key_iter
  - val_env_apply_cfg
  - val_apply_cfg
  - val_init
  - val_deinit
  - val_new_getmsg
  - val_new
  - val_restart
  - val_error
  - needs_validation
  - already_validated
  - generate_request
  - generate_keytag_query
  - sentinel_get_keytag
  - prime_trust_anchor
  - validate_msg_signatures
  - validate_suspend_timer_cb
  - validate_suspend_setup_timer
  - detect_wrongly_truncated
  - remove_spurious_authority
  - shorten_answer_any
  - validate_positive_response
  - validate_nodata_response
  - validate_nameerror_response
  - validate_referral_response
  - validate_any_response
  - validate_cname_response
  - validate_cname_noanswer_response
  - processInit
  - processFindKey
  - processValidate
  - processFinished
  - val_handle
  - val_operate
  - primeResponseToKE
  - ds_response_to_ke
  - process_ds_response
  - process_dnskey_response
  - process_prime_response
  - val_inform_super
  - val_clear
  - val_get_mem
  - val_get_funcblock
  - val_state_to_string
  source_file: /src/unbound/validator/validator.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_VALIDATE_AT_ONCE
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/unbound/validator/validator.c
      type_or_value: '8'
    - item_type: preproc_def
      name: MAX_VALIDATION_SUSPENDS
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/unbound/validator/validator.c
      type_or_value: '16'
    - item_type: preproc_def
      name: MAX_RRSETS_ANY_VALIDATED
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/unbound/validator/validator.c
      type_or_value: '24'
    - item_type: preproc_def
      name: MAX_LABEL_TAGS
      pos:
        line_end: 549
        line_start: 548
        source_file: /src/unbound/validator/validator.c
      type_or_value: (LDNS_MAX_LABELLEN-3)/5
    structs: []
    typedefs: []
    union: []
- function_names:
  - val_neg_data_compare
  - val_neg_zone_compare
  - val_neg_create
  - val_neg_get_mem
  - neg_clear_datas
  - neg_clear_zones
  - neg_cache_delete
  - neg_lru_front
  - neg_lru_remove
  - neg_lru_touch
  - neg_delete_zone
  - neg_delete_data
  - neg_make_space
  - neg_find_zone
  - neg_find_data
  - calc_data_need
  - calc_zone_need
  - neg_closest_zone_parent
  - neg_closest_data_parent
  - neg_setup_zone_node
  - neg_zone_chain
  - val_neg_zone_take_inuse
  - neg_create_zone
  - reply_find_soa
  - reply_has_nsec
  - neg_setup_data_node
  - neg_data_chain
  - wipeout
  - neg_insert_data
  - reply_nsec_signer
  - val_neg_addreply
  - neg_closest_data
  - val_neg_addreferral
  - nsec3_no_type
  - grab_nsec
  - neg_find_nsec
  - neg_find_nsec3_ce
  - neg_params_ok
  - neg_nsec3_getnc
  - neg_nsec3_proof_ds
  - add_soa
  - val_neg_getmsg
  - val_neg_adjust_size
  source_file: /src/unbound/validator/val_neg.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NSEC3_SHA_LEN
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/unbound/validator/val_neg.c
      type_or_value: SHA_DIGEST_LENGTH
    - item_type: preproc_def
      name: NSEC3_SHA_LEN
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/unbound/validator/val_neg.c
      type_or_value: '20'
    - item_type: preproc_def
      name: MAX_SALT_LENGTH
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/unbound/validator/val_neg.c
      type_or_value: '64'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/validator/val_kcache.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* slab'
        type: struct slabhash
      item_type: struct
      name: key_cache
      pos:
        line_end: 56
        line_start: 53
        source_file: /src/unbound/validator/val_kcache.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/validator/val_kentry.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: entry
        type: struct lruhash_entry
      - name: '* name'
        type: uint8_t
      - name: namelen
        type: size_t
      - name: key_class
        type: uint16_t
      item_type: struct
      name: key_entry_key
      pos:
        line_end: 64
        line_start: 55
        source_file: /src/unbound/validator/val_kentry.h
    - fields:
      - name: ttl
        type: time_t
      - name: '* rrset_data'
        type: struct packed_rrset_data
      - name: '* reason'
        type: char
      - name: reason_bogus
        type: sldns_ede_code
      - name: '* algo'
        type: uint8_t
      - name: rrset_type
        type: uint16_t
      - name: isbad
        type: uint8_t
      item_type: struct
      name: key_entry_data
      pos:
        line_end: 91
        line_start: 76
        source_file: /src/unbound/validator/val_kentry.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/validator/validator.h
  types:
    enum:
    - enumerators:
      - name: VAL_INIT_STATE
        value: '0'
      - name: VAL_FINISHED_STATE
      - name: VAL_FINDKEY_STATE
      - name: VAL_VALIDATE_STATE
      item_type: enum
      name: val_state
      pos:
        line_end: 142
        line_start: 133
        source_file: /src/unbound/validator/validator.h
    preproc_defs:
    - item_type: preproc_def
      name: NULL_KEY_TTL
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/unbound/validator/validator.h
      type_or_value: '60 '
    - item_type: preproc_def
      name: BOGUS_KEY_TTL
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/unbound/validator/validator.h
      type_or_value: '60 '
    - item_type: preproc_def
      name: SENTINEL_IS
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/unbound/validator/validator.h
      type_or_value: '"root-key-sentinel-is-ta-"'
    - item_type: preproc_def
      name: SENTINEL_NOT
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/unbound/validator/validator.h
      type_or_value: '"root-key-sentinel-not-ta-"'
    - item_type: preproc_def
      name: SENTINEL_KEYTAG_LEN
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/unbound/validator/validator.h
      type_or_value: '5'
    structs:
    - fields:
      - name: '* kcache'
        type: struct key_cache
      - name: '* neg_cache'
        type: struct val_neg_cache
      - name: date_override
        type: int32_t
      - name: skew_min
        type: int32_t
      - name: skew_max
        type: int32_t
      - name: max_restart
        type: int
      - name: bogus_ttl
        type: uint32_t
      - name: nsec3_keyiter_count
        type: int
      - name: '* nsec3_keysize'
        type: size_t
      - name: '* nsec3_maxiter'
        type: size_t
      - name: bogus_lock
        type: lock_basic_type
      - name: num_rrset_bogus
        type: size_t
      item_type: struct
      name: val_env
      pos:
        line_end: 128
        line_start: 79
        source_file: /src/unbound/validator/validator.h
    - fields:
      - name: state
        type: enum val_state
      - name: '* orig_msg'
        type: struct dns_msg
      - name: restart_count
        type: int
      - name: '* chain_blacklist'
        type: struct sock_list
      - name: qchase
        type: struct query_info
      - name: '* chase_reply'
        type: struct reply_info
      - name: rrset_skip
        type: size_t
      - name: '* trust_anchor_name'
        type: uint8_t
      - name: trust_anchor_labs
        type: int
      - name: trust_anchor_len
        type: size_t
      - name: '* ds_rrset'
        type: struct ub_packed_rrset_key
      - name: '* empty_DS_name'
        type: uint8_t
      - name: empty_DS_len
        type: size_t
      - name: '* key_entry'
        type: struct key_entry_key
      - name: subtype
        type: enum val_classification
      - name: '* signer_name'
        type: uint8_t
      - name: signer_len
        type: size_t
      - name: wait_prime_ta
        type: int
      - name: msg_signatures_state
        type: int
      - name: msg_signatures_index
        type: size_t
      - name: nsec3_cache_table
        type: struct nsec3_cache_table
      - name: '* sub_ds_msg'
        type: struct dns_msg
      - name: '* suspend_timer'
        type: struct comm_timer
      - name: suspend_count
        type: int
      item_type: struct
      name: val_qstate
      pos:
        line_end: 233
        line_start: 147
        source_file: /src/unbound/validator/validator.h
    typedefs: []
    union: []
- function_names:
  - rrset_get_count
  - rrset_get_sigcount
  - rrset_get_sig_keytag
  - rrset_get_sig_algo
  - rrset_get_rdata
  - dnskey_get_flags
  - dnskey_get_protocol
  - dnskey_get_algo
  - dnskey_get_pubkey
  - ds_get_key_algo
  - ds_get_digest_algo
  - ds_get_keytag
  - ds_get_sigdata
  - ds_digest_size_algo
  - ds_create_dnskey_digest
  - ds_digest_match_dnskey
  - ds_digest_algo_is_supported
  - ds_key_algo_is_supported
  - dnskey_calc_keytag
  - dnskey_algo_is_supported
  - dnskey_size_is_supported
  - dnskeyset_size_is_supported
  - algo_needs_init_dnskey_add
  - algo_needs_init_list
  - algo_needs_init_ds
  - algo_needs_set_secure
  - algo_needs_set_bogus
  - algo_needs_num_missing
  - algo_needs_missing
  - dnskeyset_verify_rrset_sig
  - dnskeyset_verify_rrset
  - algo_needs_reason
  - dnskey_verify_rrset
  - canonical_compare_byfield
  - canonical_compare
  - canonical_tree_compare
  - canonical_sort
  - insert_can_owner
  - canon_dname_tolower
  - canonicalize_rdata
  - rrset_canonical_equal
  - rrset_canonical
  - RBTREE_FOR
  - rrset_canonicalize_to_buffer
  - RBTREE_FOR
  - sigdate_error
  - check_dates
  - adjust_ttl
  - dnskey_verify_rrset_sig
  source_file: /src/unbound/validator/val_sigcrypt.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_VALIDATE_RRSIGS
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/unbound/validator/val_sigcrypt.c
      type_or_value: '8'
    structs:
    - fields:
      - name: node
        type: rbnode_type
      - name: '* rrset'
        type: struct ub_packed_rrset_key
      - name: rr_idx
        type: size_t
      item_type: struct
      name: canon_rr
      pos:
        line_end: 778
        line_start: 771
        source_file: /src/unbound/validator/val_sigcrypt.c
    typedefs: []
    union: []
- function_names:
  - key_entry_sizefunc
  - key_entry_compfunc
  - key_entry_delkeyfunc
  - key_entry_deldatafunc
  - key_entry_hash
  - key_entry_copy_toregion
  - key_entry_copy
  - key_entry_isnull
  - key_entry_isgood
  - key_entry_isbad
  - key_entry_get_reason
  - key_entry_get_reason_bogus
  - key_entry_setup
  - key_entry_create_null
  - key_entry_create_rrset
  - key_entry_create_bad
  - key_entry_get_rrset
  - dnskey_get_keysize
  - kd_get_flags
  - key_entry_keysize
  source_file: /src/unbound/validator/val_kentry.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - val_classify_response
  - rrsig_get_signer
  - val_find_rrset_signer
  - val_find_best_signer
  - cname_under_previous_dname
  - val_find_signer
  - rrset_get_count
  - rrset_get_ttl
  - val_verify_rrset
  - val_verify_rrset_entry
  - verify_dnskeys_with_ds_rr
  - val_favorite_ds_algo
  - val_verify_DNSKEY_with_DS
  - val_verify_new_DNSKEYs
  - val_verify_DNSKEY_with_TA
  - val_verify_new_DNSKEYs_with_ta
  - val_dsset_isusable
  - rrsig_get_labcount
  - val_rrset_wildcard
  - val_chase_cname
  - rrset_has_signer
  - val_fill_reply
  - val_reply_remove_answers
  - val_reply_remove_auth
  - val_check_nonsecure
  - check_no_anchor
  - val_mark_indeterminate
  - val_mark_insecure
  - val_next_unchecked
  - val_classification_to_string
  - sock_list_logentry
  - val_blacklist
  - val_has_signed_nsecs
  - val_has_auth_nsecs
  - val_find_DS
  - derive_cname_from_dname
  - nsec_nextowner_subdomain
  source_file: /src/unbound/validator/val_utils.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_DS_MATCH_FAILURES
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/unbound/validator/val_utils.c
      type_or_value: '4'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/validator/val_sigcrypt.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ALGO_NEEDS_MAX
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/unbound/validator/val_sigcrypt.h
      type_or_value: '256'
    structs:
    - fields:
      - name: needs[ALGO_NEEDS_MAX]
        type: uint8_t
      - name: num
        type: size_t
      item_type: struct
      name: algo_needs
      pos:
        line_end: 72
        line_start: 62
        source_file: /src/unbound/validator/val_sigcrypt.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/validator/val_nsec.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - rrset_get_ttl
  - nsecbitmap_has_type_rdata
  - nsec_has_type
  - nsec_get_next
  - val_nsec_proves_no_ds
  - nsec_verify_rrset
  - val_nsec_prove_nodata_dsreply
  - nsec_proves_nodata
  - val_nsec_proves_name_error
  - val_nsec_proves_insecuredelegation
  - nsec_closest_encloser
  - val_nsec_proves_positive_wildcard
  - val_nsec_proves_no_wc
  source_file: /src/unbound/validator/val_nsec.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - key_cache_create
  - key_cache_delete
  - key_cache_insert
  - key_cache_search
  - key_cache_obtain
  - key_cache_get_mem
  - key_cache_remove
  source_file: /src/unbound/validator/val_kcache.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - rrset_get_count
  - nsec3_unknown_flags
  - nsec3_has_optout
  - nsec3_get_algo
  - nsec3_known_algo
  - nsec3_get_iter
  - nsec3_get_salt
  - nsec3_get_params
  - nsec3_get_nextowner
  - nsec3_hash_to_b32
  - nsec3_get_nextowner_b32
  - nsec3_has_type
  - filter_next
  - filter_first
  - nsec3_rrset_has_known
  - filter_init
  - param_set_same
  - get_max_iter
  - nsec3_iteration_count_high
  - nsec3_hash_cmp
  - nsec3_cache_table_init
  - nsec3_get_hashed
  - nsec3_calc_hash
  - nsec3_calc_b32
  - nsec3_hash_name
  - label_compare_lower
  - nsec3_hash_matches_owner
  - find_matching_nsec3
  - nsec3_covers
  - find_covering_nsec3
  - nsec3_find_closest_encloser
  - next_closer
  - nsec3_prove_closest_encloser
  - nsec3_ce_wildcard
  - nsec3_do_prove_nameerror
  - nsec3_prove_nameerror
  - nsec3_do_prove_nodata
  - nsec3_prove_nodata
  - nsec3_prove_wildcard
  - list_is_secure
  - nsec3_prove_nods
  - nsec3_prove_nxornodata
  source_file: /src/unbound/validator/val_nsec3.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_NSEC3_ERRORS
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/unbound/validator/val_nsec3.c
      type_or_value: '-1'
    structs:
    - fields:
      - name: '* ce'
        type: uint8_t
      - name: ce_len
        type: size_t
      - name: '* ce_rrset'
        type: struct ub_packed_rrset_key
      - name: ce_rr
        type: int
      - name: '* nc_rrset'
        type: struct ub_packed_rrset_key
      - name: nc_rr
        type: int
      item_type: struct
      name: ce_response
      pos:
        line_end: 98
        line_start: 85
        source_file: /src/unbound/validator/val_nsec3.c
    - fields:
      - name: '* zone'
        type: uint8_t
      - name: zone_len
        type: size_t
      - name: '** list'
        type: struct ub_packed_rrset_key
      - name: num
        type: size_t
      - name: fclass
        type: uint16_t
      item_type: struct
      name: nsec3_filter
      pos:
        line_end: 115
        line_start: 104
        source_file: /src/unbound/validator/val_nsec3.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/validator/val_utils.h
  types:
    enum:
    - enumerators:
      - name: VAL_CLASS_UNTYPED
        value: '0'
      - name: VAL_CLASS_POSITIVE
      - name: VAL_CLASS_CNAME
      - name: VAL_CLASS_NODATA
      - name: VAL_CLASS_UNKNOWN
      - name: VAL_CLASS_NAMEERROR
      - name: VAL_CLASS_CNAMENOANSWER
      - name: VAL_CLASS_REFERRAL
      - name: VAL_CLASS_ANY
      item_type: enum
      name: val_classification
      pos:
        line_end: 81
        line_start: 61
        source_file: /src/unbound/validator/val_utils.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/validator/val_secalgo.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/validator/val_nsec3.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NSEC3_OPTOUT
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/unbound/validator/val_nsec3.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: NSEC3_UNKNOWN_FLAGS
      pos:
        line_end: 96
        line_start: 95
        source_file: /src/unbound/validator/val_nsec3.h
      type_or_value: '0xFE'
    - item_type: preproc_def
      name: NSEC3_HASH_SHA1
      pos:
        line_end: 99
        line_start: 98
        source_file: /src/unbound/validator/val_nsec3.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: MAX_NSEC3_CALCULATIONS
      pos:
        line_end: 105
        line_start: 104
        source_file: /src/unbound/validator/val_nsec3.h
      type_or_value: '8'
    structs:
    - fields:
      - name: '* ct'
        type: rbtree_type
      - name: '* region'
        type: struct regional
      item_type: struct
      name: nsec3_cache_table
      pos:
        line_end: 113
        line_start: 110
        source_file: /src/unbound/validator/val_nsec3.h
    - fields:
      - name: node
        type: rbnode_type
      - name: '* nsec3'
        type: struct ub_packed_rrset_key
      - name: rr
        type: int
      - name: '* dname'
        type: uint8_t
      - name: dname_len
        type: size_t
      - name: '* hash'
        type: uint8_t
      - name: hash_len
        type: size_t
      - name: '* b32'
        type: uint8_t
      - name: b32_len
        type: size_t
      item_type: struct
      name: nsec3_cached_hash
      pos:
        line_end: 283
        line_start: 264
        source_file: /src/unbound/validator/val_nsec3.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/ipset/ipset.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* dev'
        type: void
      - name: v4_enabled
        type: int
      - name: v6_enabled
        type: int
      - name: '*name_v4'
        type: char
      - name: '*name_v6'
        type: char
      item_type: struct
      name: ipset_env
      pos:
        line_end: 46
        line_start: 38
        source_file: /src/unbound/ipset/ipset.h
    - fields:
      - name: dummy
        type: int
      item_type: struct
      name: ipset_qstate
      pos:
        line_end: 50
        line_start: 48
        source_file: /src/unbound/ipset/ipset.h
    typedefs: []
    union: []
- function_names:
  - error_response
  - open_filter
  - open_filter
  - add_to_ipset
  - add_to_ipset
  - ipset_add_rrset_data
  - ipset_check_zones_for_rrset
  - ipset_update
  - ipset_startup
  - ipset_destartup
  - ipset_init
  - ipset_deinit
  - ipset_new
  - ipset_operate
  - ipset_inform_super
  - ipset_clear
  - ipset_get_mem
  - ipset_get_funcblock
  source_file: /src/unbound/ipset/ipset.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BUFF_LEN
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/unbound/ipset/ipset.c
      type_or_value: '256'
    structs: []
    typedefs:
    - item_type: typedef
      name: filter_dev
      pos:
        line_end: 25
        line_start: 25
        source_file: /src/unbound/ipset/ipset.c
      type: intptr_t
    - item_type: typedef
      name: '* filter_dev'
      pos:
        line_end: 30
        line_start: 30
        source_file: /src/unbound/ipset/ipset.c
      type: mnl_socket
    union: []
- function_names:
  - usage
  - tap_data_list_try_to_free_tail
  - tap_data_free
  - tap_data_list_insert
  - tap_data_list_delete
  - tap_socket_delev
  - tap_socket_close
  - tap_socket_delete
  - tap_socket_new_local
  - tap_socket_new_tcpaccept
  - tap_socket_new_tlsaccept
  - make_tcp_accept
  - tap_socket_setup
  - tap_socket_list_insert
  - tap_socket_list_delete
  - tap_socket_list_addevs
  - log_control_frame
  - mtype_to_str
  - str_of_addr
  - q_of_msg
  - possible_str
  - tv_to_str
  - log_data_frame
  - receive_bytes
  - tap_enable_brief_write
  - tap_disable_brief_write
  - ssl_read_bytes
  - tap_receive
  - reply_with_accept
  - reply_with_finish
  - tap_check_peer
  - tap_handshake
  - dtio_tap_callback
  - dtio_mainfdcallback
  - setup_local_list
  - setup_tcp_list
  - setup_tls_list
  - main_sigh
  - setup_and_run
  - internal_unittest
  - main
  - worker_handle_control_cmd
  - worker_handle_request
  - worker_handle_service_reply
  - remote_accept_callback
  - remote_control_callback
  - worker_sighandler
  - worker_send_query
  - worker_win_stop_cb
  - wsvc_cron_cb
  - worker_alloc_cleanup
  - libworker_send_query
  - libworker_handle_service_reply
  - libworker_handle_control_cmd
  - libworker_fg_done_cb
  - libworker_bg_done_cb
  - libworker_event_done_cb
  - libworker_alloc_cleanup
  - context_query_cmp
  - worker_stat_timer_cb
  - worker_probe_timer_cb
  - worker_start_accept
  - worker_stop_accept
  - order_lock_cmp
  - codeline_cmp
  - replay_var_compare
  - remote_get_opt_ssl
  - fast_reload_service_cb
  - fast_reload_client_callback
  - doq_client_event_cb
  - doq_client_timer_cb
  source_file: /src/unbound/dnstap/unbound-dnstap-socket.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LISTEN_BACKLOG
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/unbound/dnstap/unbound-dnstap-socket.c
      type_or_value: '16'
    - item_type: preproc_def
      name: unit_tap_datas_max
      pos:
        line_end: 1347
        line_start: 1346
        source_file: /src/unbound/dnstap/unbound-dnstap-socket.c
      type_or_value: '5'
    structs:
    - fields:
      - name: '* base'
        type: struct ub_event_base
      - name: '* acceptlist'
        type: struct tap_socket_list
      item_type: struct
      name: main_tap_data
      pos:
        line_end: 103
        line_start: 98
        source_file: /src/unbound/dnstap/unbound-dnstap-socket.c
    - fields:
      - name: '* next'
        type: struct tap_data_list
      - name: '* d'
        type: struct tap_data
      item_type: struct
      name: tap_data_list
      pos:
        line_end: 111
        line_start: 106
        source_file: /src/unbound/dnstap/unbound-dnstap-socket.c
    - fields:
      - name: fd
        type: int
      - name: '* ev'
        type: struct ub_event
      - name: '* ssl'
        type: SSL
      - name: ssl_handshake_done
        type: int
      - name: ssl_brief_write
        type: int
      - name: '* id'
        type: char
      - name: len_done
        type: int
      - name: data_done
        type: size_t
      - name: control_frame
        type: int
      - name: is_bidirectional
        type: int
      - name: '* frame'
        type: uint8_t
      - name: len
        type: size_t
      - name: '* data_list'
        type: struct tap_data_list
      item_type: struct
      name: tap_data
      pos:
        line_end: 143
        line_start: 114
        source_file: /src/unbound/dnstap/unbound-dnstap-socket.c
    - fields:
      - name: '* next'
        type: struct tap_socket_list
      - name: '* s'
        type: struct tap_socket
      item_type: struct
      name: tap_socket_list
      pos:
        line_end: 151
        line_start: 146
        source_file: /src/unbound/dnstap/unbound-dnstap-socket.c
    - fields:
      - name: fd
        type: int
      - name: '*ev'
        type: struct ub_event
      - name: ev_added
        type: int
      - name: (*ev_cb)(int, short, void*)
        type: void
      - name: '* data'
        type: void
      - name: '* socketpath'
        type: char
      - name: '* ip'
        type: char
      - name: '* sslctx'
        type: SSL_CTX
      - name: '* data_list'
        type: struct tap_data_list
      item_type: struct
      name: tap_socket
      pos:
        line_end: 175
        line_start: 154
        source_file: /src/unbound/dnstap/unbound-dnstap-socket.c
    - fields:
      - name: thr
        type: int
      - name: instance
        type: int
      item_type: struct
      name: order_id
      pos:
        line_end: 1776
        line_start: 1771
        source_file: /src/unbound/dnstap/unbound-dnstap-socket.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/dnstap/dnstap_fstrm.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FSTRM_CONTENT_TYPE_LENGTH_MAX
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/unbound/dnstap/dnstap_fstrm.h
      type_or_value: '256'
    - item_type: preproc_def
      name: FSTRM_CONTROL_FRAME_ACCEPT
      pos:
        line_end: 100
        line_start: 99
        source_file: /src/unbound/dnstap/dnstap_fstrm.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: FSTRM_CONTROL_FRAME_START
      pos:
        line_end: 102
        line_start: 101
        source_file: /src/unbound/dnstap/dnstap_fstrm.h
      type_or_value: '0x02'
    - item_type: preproc_def
      name: FSTRM_CONTROL_FRAME_STOP
      pos:
        line_end: 104
        line_start: 103
        source_file: /src/unbound/dnstap/dnstap_fstrm.h
      type_or_value: '0x03'
    - item_type: preproc_def
      name: FSTRM_CONTROL_FRAME_READY
      pos:
        line_end: 106
        line_start: 105
        source_file: /src/unbound/dnstap/dnstap_fstrm.h
      type_or_value: '0x04'
    - item_type: preproc_def
      name: FSTRM_CONTROL_FRAME_FINISH
      pos:
        line_end: 108
        line_start: 107
        source_file: /src/unbound/dnstap/dnstap_fstrm.h
      type_or_value: '0x05'
    - item_type: preproc_def
      name: FSTRM_CONTROL_FIELD_TYPE_CONTENT_TYPE
      pos:
        line_end: 111
        line_start: 110
        source_file: /src/unbound/dnstap/dnstap_fstrm.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: DNSTAP_CONTENT_TYPE
      pos:
        line_end: 113
        line_start: 112
        source_file: /src/unbound/dnstap/dnstap_fstrm.h
      type_or_value: '"protobuf:dnstap.Dnstap"'
    structs: []
    typedefs: []
    union: []
- function_names:
  - dt_pack
  - dt_sample_rate_limited
  - dt_send
  - dt_msg_init
  - check_socket_file
  - dt_create
  - dt_apply_identity
  - dt_apply_version
  - dt_apply_logcfg
  - dt_apply_cfg
  - dt_init
  - dt_deinit
  - dt_delete
  - dt_fill_timeval
  - dt_fill_buffer
  - dt_msg_fill_net
  - dt_msg_send_client_query
  - dt_msg_send_client_response
  - dt_msg_send_outside_query
  - dt_msg_send_outside_response
  source_file: /src/unbound/dnstap/dnstap.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DNSTAP_INITIAL_BUF_SIZE
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/unbound/dnstap/dnstap.c
      type_or_value: '256'
    structs:
    - fields:
      - name: '*buf'
        type: void
      - name: len_buf
        type: size_t
      - name: d
        type: Dnstap__Dnstap
      - name: m
        type: Dnstap__Message
      item_type: struct
      name: dt_msg
      pos:
        line_end: 64
        line_start: 59
        source_file: /src/unbound/dnstap/dnstap.c
    typedefs: []
    union: []
- function_names:
  - dt_msg_queue_create
  - dt_msg_queue_clear
  - dt_msg_queue_delete
  - dtio_wakeup
  - mq_wakeup_cb
  - dt_msg_queue_start_timer
  - dt_msg_queue_submit
  - dt_io_thread_create
  - dt_io_thread_delete
  - dt_io_thread_apply_cfg
  - dt_io_thread_register_queue
  - dt_io_thread_unregister_queue
  - dt_msg_queue_pop
  - dtio_find_in_queue
  - dtio_find_msg
  - dtio_reconnect_timeout_cb
  - dtio_reconnect_enable
  - dtio_reconnect_del
  - dtio_reconnect_clear
  - dtio_reconnect_slow
  - dtio_cur_msg_free
  - dtio_read_frame_free
  - dtio_del_output_event
  - dtio_close_fd
  - dtio_close_output
  - dtio_check_nb_connect
  - dtio_write_ssl
  - dtio_write_buf
  - dtio_write_with_writev
  - dtio_write_more_of_len
  - dtio_write_more_of_data
  - dtio_write_more
  - receive_bytes
  - ssl_read_bytes
  - dtio_check_close
  - dtio_add_output_event_read
  - dtio_add_output_event_write
  - dtio_sleep
  - dtio_enable_brief_read
  - dtio_disable_brief_read
  - dtio_enable_brief_write
  - dtio_disable_brief_write
  - dtio_ssl_check_peer
  - dtio_ssl_handshake
  - dtio_output_cb
  - dtio_cmd_cb
  - dtio_setup_base
  - dtio_setup_cmd
  - dtio_setup_reconnect
  - dtio_stop_flush_exit
  - dtio_control_stop_send
  - dtio_stop_timer_cb
  - dtio_stop_ev_cb
  - dtio_control_stop_flush
  - dtio_desetup
  - dtio_control_start_send
  - dtio_control_ready_send
  - dtio_open_output_local
  - dtio_open_output_tcp
  - dtio_setup_ssl
  - dtio_open_output
  - dtio_setup_on_base
  - dnstap_io
  - dt_io_thread_start
  - dt_io_thread_stop
  source_file: /src/unbound/dnstap/dtstream.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DTIO_MESSAGES_PER_CALLBACK
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/unbound/dnstap/dtstream.c
      type_or_value: '100'
    - item_type: preproc_def
      name: DTIO_RECONNECT_TIMEOUT_MIN
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/unbound/dnstap/dtstream.c
      type_or_value: '10'
    - item_type: preproc_def
      name: DTIO_RECONNECT_TIMEOUT_MAX
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/unbound/dnstap/dtstream.c
      type_or_value: '1000'
    - item_type: preproc_def
      name: DTIO_RECONNECT_TIMEOUT_SLOW
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/unbound/dnstap/dtstream.c
      type_or_value: '1000'
    - item_type: preproc_def
      name: DTIO_MSG_FOR_WAKEUP
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/unbound/dnstap/dtstream.c
      type_or_value: '32'
    - item_type: preproc_def
      name: DTIO_RECV_FRAME_MAX_LEN
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/unbound/dnstap/dtstream.c
      type_or_value: '1000'
    structs:
    - fields:
      - name: '* base'
        type: struct ub_event_base
      - name: want_to_exit_flush
        type: int
      - name: timer_done
        type: int
      - name: '* dtio'
        type: struct dt_io_thread
      - name: '* stop_frame'
        type: void
      - name: stop_frame_len
        type: size_t
      - name: stop_frame_done
        type: size_t
      item_type: struct
      name: stop_flush_info
      pos:
        line_end: 1686
        line_start: 1671
        source_file: /src/unbound/dnstap/dtstream.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/dnstap/dtstream.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: lock
        type: lock_basic_type
      - name: maxsize
        type: size_t
      - name: cursize
        type: size_t
      - name: msgcount
        type: int
      - name: '* first'
        type: struct dt_msg_entry
      - name: '* dtio'
        type: struct dt_io_thread
      - name: '* wakeup_timer'
        type: struct comm_timer
      item_type: struct
      name: dt_msg_queue
      pos:
        line_end: 80
        line_start: 59
        source_file: /src/unbound/dnstap/dtstream.h
    - fields:
      - name: '* next'
        type: struct dt_msg_entry
      - name: '* buf'
        type: void
      - name: len
        type: size_t
      item_type: struct
      name: dt_msg_entry
      pos:
        line_end: 93
        line_start: 86
        source_file: /src/unbound/dnstap/dtstream.h
    - fields:
      - name: '* buf'
        type: void
      - name: buf_count
        type: size_t
      - name: buf_cap
        type: size_t
      - name: frame_len
        type: uint32_t
      - name: frame_len_done
        type: size_t
      - name: control_frame
        type: int
      item_type: struct
      name: dt_frame_read_buf
      pos:
        line_end: 114
        line_start: 98
        source_file: /src/unbound/dnstap/dtstream.h
    - fields:
      - name: threadnum
        type: int
      - name: '* event_base'
        type: void
      - name: '* io_list'
        type: struct dt_io_list_item
      - name: '* io_list_iter'
        type: struct dt_io_list_item
      - name: tid
        type: ub_thread_type
      - name: started
        type: int
      - name: '* ssl_ctx'
        type: void
      - name: tls_use_sni
        type: int
      - name: fd
        type: int
      - name: '* event'
        type: void
      - name: event_added
        type: int
      - name: event_added_is_write
        type: int
      - name: check_nb_connect
        type: int
      - name: '* ssl'
        type: void
      - name: ssl_handshake_done
        type: int
      - name: ssl_brief_read
        type: int
      - name: ssl_brief_write
        type: int
      - name: '* cur_msg'
        type: void
      - name: cur_msg_len
        type: size_t
      - name: cur_msg_done
        type: size_t
      - name: cur_msg_len_done
        type: size_t
      - name: wakeup_timer_lock
        type: lock_basic_type
      - name: wakeup_timer_enabled
        type: int
      - name: commandpipe[2]
        type: int
      - name: '* command_event'
        type: void
      - name: want_to_exit
        type: int
      - name: '* stop_flush_event'
        type: void
      - name: '* reconnect_timer'
        type: void
      - name: reconnect_is_added
        type: int
      - name: reconnect_timeout
        type: int
      - name: upstream_is_unix
        type: int
      - name: upstream_is_tcp
        type: int
      - name: upstream_is_tls
        type: int
      - name: is_bidirectional
        type: int
      - name: ready_frame_sent
        type: int
      - name: accept_frame_received
        type: int
      - name: read_frame
        type: struct dt_frame_read_buf
      - name: '* socket_path'
        type: char
      - name: '* ip_str'
        type: char
      - name: '* tls_server_name'
        type: char
      - name: use_client_certs
        type: int
      - name: '* client_key_file'
        type: char
      - name: '* client_cert_file'
        type: char
      item_type: struct
      name: dt_io_thread
      pos:
        line_end: 235
        line_start: 119
        source_file: /src/unbound/dnstap/dtstream.h
    - fields:
      - name: '* next'
        type: struct dt_io_list_item
      - name: '* queue'
        type: struct dt_msg_queue
      item_type: struct
      name: dt_io_list_item
      pos:
        line_end: 246
        line_start: 241
        source_file: /src/unbound/dnstap/dtstream.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/dnstap/dnstap.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* dtio'
        type: struct dt_io_thread
      - name: '* msgqueue'
        type: struct dt_msg_queue
      - name: '*identity'
        type: char
      - name: '*version'
        type: char
      - name: len_identity
        type: unsigned
      - name: len_version
        type: unsigned
      - name: log_resolver_query_messages
        type: unsigned
      - name: log_resolver_response_messages
        type: unsigned
      - name: log_client_query_messages
        type: unsigned
      - name: log_client_response_messages
        type: unsigned
      - name: log_forwarder_query_messages
        type: unsigned
      - name: log_forwarder_response_messages
        type: unsigned
      - name: sample_lock
        type: lock_basic_type
      - name: sample_rate
        type: unsigned int
      - name: sample_rate_count
        type: unsigned int
      item_type: struct
      name: dt_env
      pos:
        line_end: 85
        line_start: 46
        source_file: /src/unbound/dnstap/dnstap.h
    typedefs: []
    union: []
- function_names:
  - fstrm_create_control_frame_start
  - fstrm_create_control_frame_stop
  - fstrm_create_control_frame_ready
  - fstrm_create_control_frame_accept
  - fstrm_create_control_frame_finish
  - fstrm_describe_control
  source_file: /src/unbound/dnstap/dnstap_fstrm.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - reallocarray
  source_file: /src/unbound/compat/reallocarray.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MUL_NO_OVERFLOW
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/unbound/compat/reallocarray.c
      type_or_value: ((size_t)1 << (sizeof(size_t) * 4))
    structs: []
    typedefs: []
    union: []
- function_names:
  - strlcpy
  source_file: /src/unbound/compat/strlcpy.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - memcmp
  source_file: /src/unbound/compat/memcmp.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - U8C
  - U32C
  - U8V
  - U32V
  - ROTL32
  - U8TO32_LITTLE
  - U32TO8_LITTLE
  - ROTATE
  - XOR
  - PLUS
  - PLUSONE
  - QUARTERROUND
  - chacha_keysetup
  - chacha_ivsetup
  - chacha_encrypt_bytes
  source_file: /src/unbound/compat/chacha_private.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: input[16]
        type: u32
      item_type: struct
      name: chacha_ctx
      pos:
        line_end: 14
        line_start: 11
        source_file: /src/unbound/compat/chacha_private.h
    typedefs:
    - item_type: typedef
      name: u8
      pos:
        line_end: 8
        line_start: 8
        source_file: /src/unbound/compat/chacha_private.h
      type: unsigned char
    - item_type: typedef
      name: u32
      pos:
        line_end: 9
        line_start: 9
        source_file: /src/unbound/compat/chacha_private.h
      type: unsigned int
    union: []
- function_names:
  - REVERSE32
  - REVERSE64
  - ADDINC128
  - MEMSET_BZERO
  - MEMCPY_BCOPY
  - MEMSET_BZERO
  - MEMCPY_BCOPY
  - R
  - S64
  - Ch
  - Maj
  - Sigma0_512
  - Sigma1_512
  - sigma0_512
  - sigma1_512
  - SHA512_Init
  - SHA512_Transform
  - SHA512_Update
  - SHA512_Last
  - SHA512_Final
  - SHA512
  source_file: /src/unbound/compat/sha512.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SHA512_BLOCK_LENGTH
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/unbound/compat/sha512.c
      type_or_value: '128'
    - item_type: preproc_def
      name: SHA512_DIGEST_LENGTH
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/unbound/compat/sha512.c
      type_or_value: '64'
    - item_type: preproc_def
      name: SHA512_DIGEST_STRING_LENGTH
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/unbound/compat/sha512.c
      type_or_value: (SHA512_DIGEST_LENGTH * 2 + 1)
    - item_type: preproc_def
      name: SHA512_SHORT_BLOCK_LENGTH
      pos:
        line_end: 107
        line_start: 106
        source_file: /src/unbound/compat/sha512.c
      type_or_value: (SHA512_BLOCK_LENGTH - 16)
    - item_type: preproc_def
      name: SHA2_USE_MEMSET_MEMCPY
      pos:
        line_end: 158
        line_start: 157
        source_file: /src/unbound/compat/sha512.c
      type_or_value: '1'
    structs:
    - fields:
      - name: state[8]
        type: uint64_t
      - name: bitcount[2]
        type: uint64_t
      - name: buffer[SHA512_BLOCK_LENGTH]
        type: uint8_t
      item_type: struct
      name: _SHA512_CTX
      pos:
        line_end: 56
        line_start: 52
        source_file: /src/unbound/compat/sha512.c
    typedefs:
    - item_type: typedef
      name: sha2_byte
      pos:
        line_end: 97
        line_start: 97
        source_file: /src/unbound/compat/sha512.c
      type: uint8_t
    - item_type: typedef
      name: sha2_word32
      pos:
        line_end: 98
        line_start: 98
        source_file: /src/unbound/compat/sha512.c
      type: uint32_t
    - item_type: typedef
      name: sha2_word64
      pos:
        line_end: 100
        line_start: 100
        source_file: /src/unbound/compat/sha512.c
      type: unsigned long long
    - item_type: typedef
      name: sha2_word64
      pos:
        line_end: 102
        line_start: 102
        source_file: /src/unbound/compat/sha512.c
      type: uint64_t
    union:
    - fields:
      - name: '*  theChars'
        type: uint8_t
      - name: '* theLongs'
        type: uint64_t
      item_type: union
      name: _ldns_sha2_buffer_union
      pos:
        line_end: 258
        line_start: 255
        source_file: /src/unbound/compat/sha512.c
- function_names:
  - in_delim
  - strsep
  source_file: /src/unbound/compat/strsep.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - inet_addr
  - inet_aton
  source_file: /src/unbound/compat/inet_aton.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - inet_pton
  - inet_pton4
  - inet_pton6
  source_file: /src/unbound/compat/inet_pton.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NS_INT16SZ
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/unbound/compat/inet_pton.c
      type_or_value: '2'
    - item_type: preproc_def
      name: NS_IN6ADDRSZ
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/unbound/compat/inet_pton.c
      type_or_value: '16'
    - item_type: preproc_def
      name: NS_INADDRSZ
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/unbound/compat/inet_pton.c
      type_or_value: '4'
    structs: []
    typedefs: []
    union: []
- function_names:
  - SHA512_Init
  - SHA512_Update
  - SHA512_Final
  - min
  - HX
  - HR
  - HD
  - HF
  - getentropy
  - getentropy_getrandom
  - getentropy_urandom
  - getentropy_sysctl
  - getentropy_phdr
  - getentropy_fallback
  source_file: /src/unbound/compat/getentropy_linux.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SHA512_CTX
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/unbound/compat/getentropy_linux.c
      type_or_value: struct sha512_ctx
    - item_type: preproc_def
      name: MAP_ANON
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/unbound/compat/getentropy_linux.c
      type_or_value: MAP_ANONYMOUS
    - item_type: preproc_def
      name: REPEAT
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/unbound/compat/getentropy_linux.c
      type_or_value: '5'
    structs:
    - fields:
      - name: npg
        type: size_t
      - name: '*p'
        type: void
      item_type: struct
      name: mm
      pos:
        line_end: 429
        line_start: 426
        source_file: /src/unbound/compat/getentropy_linux.c
    typedefs: []
    union: []
- function_names:
  - arc4random_uniform
  source_file: /src/unbound/compat/arc4random_uniform.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getnameinfo
  - gai_strerror
  - freeaddrinfo
  - malloc_ai
  - getaddrinfo
  source_file: /src/unbound/compat/fake-rfc2553.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ctime_r_cleanup
  - ctime_r
  source_file: /src/unbound/compat/ctime_r.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - strlcat
  source_file: /src/unbound/compat/strlcat.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - memmove
  source_file: /src/unbound/compat/memmove.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - __explicit_bzero_hook
  - explicit_bzero
  source_file: /src/unbound/compat/explicit_bzero.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - LOCKRET
  - _ARC4_LOCK
  - _ARC4_UNLOCK
  - _ARC4_LOCK_DESTROY
  - _ARC4_LOCK
  - _ARC4_UNLOCK
  - _ARC4_LOCK_DESTROY
  source_file: /src/unbound/compat/arc4_lock.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getentropy
  source_file: /src/unbound/compat/getentropy_win.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - isleap
  - timesub
  - LEAPS_THRU_END_OF
  - gmtime_r
  source_file: /src/unbound/compat/gmtime_r.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MONSPERYEAR
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/unbound/compat/gmtime_r.c
      type_or_value: '12'
    - item_type: preproc_def
      name: DAYSPERNYEAR
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/unbound/compat/gmtime_r.c
      type_or_value: '365'
    - item_type: preproc_def
      name: DAYSPERLYEAR
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/unbound/compat/gmtime_r.c
      type_or_value: '366'
    - item_type: preproc_def
      name: SECSPERMIN
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/unbound/compat/gmtime_r.c
      type_or_value: '60'
    - item_type: preproc_def
      name: SECSPERHOUR
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/unbound/compat/gmtime_r.c
      type_or_value: (60*60)
    - item_type: preproc_def
      name: SECSPERDAY
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/unbound/compat/gmtime_r.c
      type_or_value: (24*60*60)
    - item_type: preproc_def
      name: DAYSPERWEEK
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/unbound/compat/gmtime_r.c
      type_or_value: '7'
    - item_type: preproc_def
      name: TM_SUNDAY
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/unbound/compat/gmtime_r.c
      type_or_value: '0'
    - item_type: preproc_def
      name: TM_MONDAY
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/unbound/compat/gmtime_r.c
      type_or_value: '1'
    - item_type: preproc_def
      name: TM_TUESDAY
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/unbound/compat/gmtime_r.c
      type_or_value: '2'
    - item_type: preproc_def
      name: TM_WEDNESDAY
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/unbound/compat/gmtime_r.c
      type_or_value: '3'
    - item_type: preproc_def
      name: TM_THURSDAY
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/unbound/compat/gmtime_r.c
      type_or_value: '4'
    - item_type: preproc_def
      name: TM_FRIDAY
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/unbound/compat/gmtime_r.c
      type_or_value: '5'
    - item_type: preproc_def
      name: TM_SATURDAY
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/unbound/compat/gmtime_r.c
      type_or_value: '6'
    - item_type: preproc_def
      name: TM_YEAR_BASE
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/unbound/compat/gmtime_r.c
      type_or_value: '1900'
    - item_type: preproc_def
      name: EPOCH_YEAR
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/unbound/compat/gmtime_r.c
      type_or_value: '1970'
    - item_type: preproc_def
      name: EPOCH_WDAY
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/unbound/compat/gmtime_r.c
      type_or_value: TM_THURSDAY
    structs: []
    typedefs: []
    union: []
- function_names:
  - match_string
  - str2int
  - unbound_strptime
  source_file: /src/unbound/compat/strptime.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TM_YEAR_BASE
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/unbound/compat/strptime.c
      type_or_value: '1900'
    structs: []
    typedefs: []
    union: []
- function_names:
  - snprintf
  - print_pad
  - get_negsign
  - print_dec
  - print_dec_l
  - print_dec_ll
  - print_hex
  - print_hex_l
  - print_hex_ll
  - spool_str_rev
  - spool_str
  - print_num
  - print_num_d
  - print_num_ld
  - print_num_lld
  - print_num_u
  - print_num_lu
  - print_num_llu
  - print_num_x
  - print_num_lx
  - print_num_llx
  - print_num_llp
  - print_remainder
  - print_float
  - print_num_f
  - print_float_g
  - print_num_g
  - my_strnlen
  - print_str
  - print_char
  - vsnprintf
  - DOTEST
  - main
  source_file: /src/unbound/compat/snprintf.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: snprintf
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/unbound/compat/snprintf.c
      type_or_value: my_snprintf
    - item_type: preproc_def
      name: vsnprintf
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/unbound/compat/snprintf.c
      type_or_value: my_vsnprintf
    - item_type: preproc_def
      name: PRINT_DEC_BUFSZ
      pos:
        line_end: 103
        line_start: 102
        source_file: /src/unbound/compat/snprintf.c
      type_or_value: '32 '
    - item_type: preproc_def
      name: PRINT_FLOAT_BUFSZ
      pos:
        line_end: 457
        line_start: 456
        source_file: /src/unbound/compat/snprintf.c
      type_or_value: '64 '
    structs: []
    typedefs: []
    union: []
- function_names:
  - arc4_min
  - fallback_gotdata
  - fallback_getentropy_urandom
  - _rs_init
  - _rs_stir
  - _rs_stir_if_needed
  - _rs_rekey
  - _rs_random_buf
  - _rs_random_u32
  - arc4random
  - arc4random_buf
  source_file: /src/unbound/compat/arc4random.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: inline
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/unbound/compat/arc4random.c
      type_or_value: __inline
    - item_type: preproc_def
      name: MAP_ANON
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/unbound/compat/arc4random.c
      type_or_value: MAP_ANONYMOUS
    - item_type: preproc_def
      name: KEYSZ
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/unbound/compat/arc4random.c
      type_or_value: '32'
    - item_type: preproc_def
      name: IVSZ
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/unbound/compat/arc4random.c
      type_or_value: '8'
    - item_type: preproc_def
      name: BLOCKSZ
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/unbound/compat/arc4random.c
      type_or_value: '64'
    - item_type: preproc_def
      name: RSBUFSZ
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/unbound/compat/arc4random.c
      type_or_value: (16*BLOCKSZ)
    - item_type: preproc_def
      name: REKEY_BASE
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/unbound/compat/arc4random.c
      type_or_value: '(1024*1024) '
    structs:
    - fields:
      - name: rs_have
        type: size_t
      - name: rs_count
        type: size_t
      item_type: struct
      name: '*rs'
      pos:
        line_end: 68
        line_start: 65
        source_file: /src/unbound/compat/arc4random.c
    - fields:
      - name: rs_chacha
        type: chacha_ctx
      - name: rs_buf[RSBUFSZ]
        type: u_char
      item_type: struct
      name: '*rsx'
      pos:
        line_end: 74
        line_start: 71
        source_file: /src/unbound/compat/arc4random.c
    typedefs: []
    union: []
- function_names:
  - getentropy_sysctl
  - getentropy
  source_file: /src/unbound/compat/getentropy_freebsd.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - getentropy
  source_file: /src/unbound/compat/getentropy_osx.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/compat/memcmp.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - isblank
  source_file: /src/unbound/compat/isblank.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - min
  - HX
  - HR
  - HD
  - HF
  - getentropy
  - gotdata
  - getentropy_urandom
  - getentropy_fallback
  source_file: /src/unbound/compat/getentropy_solaris.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SHA512_Init
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/unbound/compat/getentropy_solaris.c
      type_or_value: SHA512Init
    - item_type: preproc_def
      name: SHA512_Update
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/unbound/compat/getentropy_solaris.c
      type_or_value: SHA512Update
    - item_type: preproc_def
      name: SHA512_Final
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/unbound/compat/getentropy_solaris.c
      type_or_value: SHA512Final
    - item_type: preproc_def
      name: REPEAT
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/unbound/compat/getentropy_solaris.c
      type_or_value: '5'
    structs:
    - fields:
      - name: npg
        type: size_t
      - name: '*p'
        type: void
      item_type: struct
      name: mm
      pos:
        line_end: 332
        line_start: 329
        source_file: /src/unbound/compat/getentropy_solaris.c
    typedefs: []
    union: []
- function_names:
  - rpl_malloc_unbound
  source_file: /src/unbound/compat/malloc.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - IN6_IS_ADDR_LOOPBACK
  - getaddrinfo
  - gai_strerror
  - freeaddrinfo
  - getnameinfo
  source_file: /src/unbound/compat/fake-rfc2553.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: _SS_MAXSIZE
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/unbound/compat/fake-rfc2553.h
      type_or_value: "128\t"
    - item_type: preproc_def
      name: _SS_PADSIZE
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/unbound/compat/fake-rfc2553.h
      type_or_value: (_SS_MAXSIZE - sizeof (struct sockaddr))
    - item_type: preproc_def
      name: ss_family
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/unbound/compat/fake-rfc2553.h
      type_or_value: ss_sa.sa_family
    - item_type: preproc_def
      name: AF_INET6
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/unbound/compat/fake-rfc2553.h
      type_or_value: AF_MAX
    - item_type: preproc_def
      name: NI_NUMERICHOST
      pos:
        line_end: 92
        line_start: 91
        source_file: /src/unbound/compat/fake-rfc2553.h
      type_or_value: (1)
    - item_type: preproc_def
      name: NI_NAMEREQD
      pos:
        line_end: 95
        line_start: 94
        source_file: /src/unbound/compat/fake-rfc2553.h
      type_or_value: (1<<1)
    - item_type: preproc_def
      name: NI_NUMERICSERV
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/unbound/compat/fake-rfc2553.h
      type_or_value: (1<<2)
    - item_type: preproc_def
      name: AI_PASSIVE
      pos:
        line_end: 102
        line_start: 101
        source_file: /src/unbound/compat/fake-rfc2553.h
      type_or_value: (1)
    - item_type: preproc_def
      name: AI_CANONNAME
      pos:
        line_end: 105
        line_start: 104
        source_file: /src/unbound/compat/fake-rfc2553.h
      type_or_value: (1<<1)
    - item_type: preproc_def
      name: AI_NUMERICHOST
      pos:
        line_end: 108
        line_start: 107
        source_file: /src/unbound/compat/fake-rfc2553.h
      type_or_value: (1<<2)
    - item_type: preproc_def
      name: NI_MAXSERV
      pos:
        line_end: 112
        line_start: 111
        source_file: /src/unbound/compat/fake-rfc2553.h
      type_or_value: '32'
    - item_type: preproc_def
      name: NI_MAXHOST
      pos:
        line_end: 115
        line_start: 114
        source_file: /src/unbound/compat/fake-rfc2553.h
      type_or_value: '1025'
    - item_type: preproc_def
      name: INT_MAX
      pos:
        line_end: 119
        line_start: 118
        source_file: /src/unbound/compat/fake-rfc2553.h
      type_or_value: '0xffffffff'
    - item_type: preproc_def
      name: EAI_NODATA
      pos:
        line_end: 123
        line_start: 122
        source_file: /src/unbound/compat/fake-rfc2553.h
      type_or_value: (INT_MAX - 1)
    - item_type: preproc_def
      name: EAI_MEMORY
      pos:
        line_end: 126
        line_start: 125
        source_file: /src/unbound/compat/fake-rfc2553.h
      type_or_value: (INT_MAX - 2)
    - item_type: preproc_def
      name: EAI_NONAME
      pos:
        line_end: 129
        line_start: 128
        source_file: /src/unbound/compat/fake-rfc2553.h
      type_or_value: (INT_MAX - 3)
    - item_type: preproc_def
      name: EAI_SYSTEM
      pos:
        line_end: 132
        line_start: 131
        source_file: /src/unbound/compat/fake-rfc2553.h
      type_or_value: (INT_MAX - 4)
    structs:
    - fields:
      - name: ss_sa
        type: struct sockaddr
      - name: __ss_pad2[_SS_PADSIZE]
        type: char
      item_type: struct
      name: sockaddr_storage
      pos:
        line_end: 56
        line_start: 53
        source_file: /src/unbound/compat/fake-rfc2553.h
    - fields:
      - name: s6_addr[16]
        type: uint8_t
      item_type: struct
      name: in6_addr
      pos:
        line_end: 69
        line_start: 67
        source_file: /src/unbound/compat/fake-rfc2553.h
    - fields:
      - name: sin6_family
        type: unsigned short
      - name: sin6_port
        type: uint16_t
      - name: sin6_flowinfo
        type: uint32_t
      - name: sin6_addr
        type: struct in6_addr
      item_type: struct
      name: sockaddr_in6
      pos:
        line_end: 78
        line_start: 73
        source_file: /src/unbound/compat/fake-rfc2553.h
    - fields:
      - name: ai_flags
        type: int
      - name: ai_family
        type: int
      - name: ai_socktype
        type: int
      - name: ai_protocol
        type: int
      - name: ai_addrlen
        type: size_t
      - name: '*ai_canonname'
        type: char
      - name: '*ai_addr'
        type: struct sockaddr
      - name: '*ai_next'
        type: struct addrinfo
      item_type: struct
      name: addrinfo
      pos:
        line_end: 144
        line_start: 135
        source_file: /src/unbound/compat/fake-rfc2553.h
    typedefs: []
    union: []
- function_names:
  - inet_ntop
  - inet_ntop4
  - inet_ntop6
  source_file: /src/unbound/compat/inet_ntop.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IN6ADDRSZ
      pos:
        line_end: 36
        line_start: 36
        source_file: /src/unbound/compat/inet_ntop.c
      type_or_value: '16   '
    - item_type: preproc_def
      name: INT16SZ
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/unbound/compat/inet_ntop.c
      type_or_value: '2    '
    structs:
    - fields:
      - name: base
        type: int
      item_type: struct
      name: best
      pos:
        line_end: 123
        line_start: 123
        source_file: /src/unbound/compat/inet_ntop.c
    typedefs: []
    union: []
- function_names:
  - view_cmp
  - views_create
  - view_delete
  - delviewnode
  - views_delete
  - view_create
  - views_enter_view_name
  - views_apply_cfg
  - views_find_view
  - views_print
  - views_get_mem
  - RBTREE_FOR
  - view_get_mem
  - views_swap_tree
  source_file: /src/unbound/services/view.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - outbound_list_init
  - outbound_list_clear
  - outbound_list_insert
  - outbound_list_remove
  source_file: /src/unbound/services/outbound_list.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - rpz_action_to_string
  - rpz_config_to_action
  - rpz_trigger_to_string
  - get_tld_label
  - rpz_type_ignored
  - rpz_rr_to_action
  - rpz_action_to_localzone_type
  - rpz_action_to_respip_action
  - localzone_type_to_rpz_action
  - respip_action_to_rpz_action
  - rpz_dname_to_trigger
  - rpz_clientip_synthesized_set_create
  - rpz_clientip_synthesized_rr_delete
  - rpz_clientip_synthesized_set_delete
  - rpz_delete
  - rpz_clear
  - rpz_finish_config
  - new_cname_override
  - delete_cname_override
  - rpz_apply_cfg_elements
  - rpz_create
  - rpz_config
  - strip_dname_origin
  - rpz_insert_local_zones_trigger
  - rpz_log_dname
  - rpz_insert_qname_trigger
  - rpz_strip_nsdname_suffix
  - rpz_insert_nsdname_trigger
  - rpz_insert_ipaddr_based_trigger
  - rpz_clientip_ensure_entry
  - rpz_report_rrset_error
  - rpz_clientip_new_rrset
  - rpz_clientip_enter_rr
  - rpz_clientip_insert_trigger_rr
  - rpz_insert_clientip_trigger
  - rpz_insert_nsip_trigger
  - rpz_insert_response_ip_trigger
  - rpz_insert_rr
  - rpz_find_zone
  - rpz_find_synthesized_rrset
  - rpz_data_delete_rr
  - rpz_rrset_delete_rr
  - rpz_remove_local_zones_trigger
  - rpz_remove_qname_trigger
  - rpz_remove_response_ip_trigger
  - del_local_rrset_from_list
  - rpz_remove_clientip_rr
  - rpz_clientip_remove_trigger_rr
  - rpz_remove_clientip_trigger
  - rpz_remove_nsip_trigger
  - rpz_remove_nsdname_trigger
  - rpz_remove_rr
  - log_rpz_apply
  - rpz_ipbased_trigger_lookup
  - rpz_resolve_client_action_and_zone
  - rpz_is_udp_query
  - rpz_local_encode
  - make_soa_ubrrset
  - rpz_apply_clientip_localdata_action
  - rpz_apply_cname_override_action
  - rpz_add_soa
  - rpz_dns_msg_new
  - rpz_synthesize_nodata
  - rpz_synthesize_nxdomain
  - rpz_synthesize_localdata_from_rrset
  - rpz_synthesize_nsip_localdata
  - local_data_find_type
  - rpz_synthesize_nsdname_localdata
  - rpz_synthesize_qname_localdata_msg
  - rpz_synthesize_cname_override_msg
  - rpz_synthesize_qname_localdata
  - rpz_delegation_point_ipbased_trigger_lookup
  - rpz_apply_nsip_trigger
  - rpz_apply_nsdname_trigger
  - rpz_delegation_point_zone_lookup
  - rpz_callback_from_iterator_module
  - rpz_callback_from_iterator_cname
  - rpz_apply_maybe_clientip_trigger
  - rpz_callback_from_worker_request
  - rpz_enable
  - rpz_disable
  - rpz_clientip_synthesized_set_get_mem
  - rpz_get_mem
  source_file: /src/unbound/services/rpz.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* dname'
        type: uint8_t
      - name: dname_len
        type: size_t
      item_type: struct
      name: matched_delegation_point
      pos:
        line_end: 63
        line_start: 60
        source_file: /src/unbound/services/rpz.c
    typedefs:
    - item_type: typedef
      name: rpz_aclnode_type
      pos:
        line_end: 58
        line_start: 58
        source_file: /src/unbound/services/rpz.c
      type: resp_addr
    union: []
- function_names:
  - verbose_print_addr
  - verbose_print_unbound_socket
  - systemd_get_activated
  - set_ip_dscp
  - make_sock
  - make_sock_port
  - port_insert
  - set_recvtimestamp
  - set_recvpktinfo
  - ports_create_if
  - listen_cp_insert
  - listen_setup_locks
  - listen_desetup_locks
  - listen_create
  - listen_list_delete
  - listen_delete
  - resolve_ifa_name
  - resolve_interface_names
  - listening_ports_open
  - listening_ports_free
  - listen_get_mem
  - listen_stop_accept
  - listen_start_accept
  - tcp_req_info_create
  - tcp_req_info_delete
  - tcp_req_info_clear
  - tcp_req_info_remove_mesh_state
  - tcp_req_info_setup_listen
  - tcp_req_info_pop_done
  - tcp_req_info_start_write_buf
  - tcp_req_pickup_next_result
  - tcp_req_info_handle_read_close
  - tcp_req_info_handle_writedone
  - tcp_req_info_handle_readdone
  - tcp_req_info_add_meshstate
  - tcp_req_info_add_result
  - tcp_req_info_send_reply
  - tcp_req_info_get_stream_buffer_size
  - http2_get_query_buffer_size
  - http2_get_response_buffer_size
  - http2_submit_response_read_callback
  - http2_submit_rst_stream
  - http2_submit_dns_response
  - http2_submit_dns_response
  - http_status_to_str
  - http2_submit_error_read_callback
  - http2_submit_error
  - http2_query_read_done
  - http2_req_frame_recv_cb
  - http2_req_begin_headers_cb
  - http2_buffer_uri_query
  - http2_req_header_cb
  - http2_req_data_chunk_recv_cb
  - http2_req_stream_clear
  - http2_req_callbacks_create
  - doq_table_create
  - conn_tree_del
  - conid_tree_del
  - doq_table_delete
  - doq_timer_find_time
  - doq_timer_tree_remove
  - doq_timer_list_remove
  - doq_timer_list_append
  - doq_timer_unset
  - doq_timer_set
  - doq_conn_create
  - stream_tree_del
  - doq_conn_delete
  - doq_conn_cmp
  - doq_conid_cmp
  - doq_timer_cmp
  - doq_stream_cmp
  - doq_repinfo_store_localaddr
  - doq_repinfo_retrieve_localaddr
  - doq_conn_key_store_repinfo
  - doq_conn_key_from_repinfo
  - doq_conn_add_stream
  - doq_conn_del_stream
  - doq_stream_create
  - doq_stream_delete
  - doq_stream_find
  - doq_stream_on_write_list
  - doq_stream_off_write_list
  - doq_stream_remove_in_buffer
  - doq_stream_remove_out_buffer
  - doq_stream_close
  - doq_stream_pickup_answer
  - doq_stream_send_reply
  - doq_stream_add_meshstate
  - doq_stream_remove_mesh_state
  - doq_stream_datalen_complete
  - doq_stream_data_complete
  - doq_stream_recv_data
  - doq_stream_recv_fin
  - doq_fill_rand
  - doq_conn_generate_new_conid
  - doq_rand_cb
  - doq_get_new_connection_id_cb
  - doq_remove_connection_id_cb
  - doq_submit_new_token
  - doq_handshake_completed_cb
  - doq_stream_open_cb
  - doq_recv_stream_data_cb
  - doq_stream_close_cb
  - doq_stream_reset_cb
  - doq_extend_max_stream_data_cb
  - doq_acked_stream_data_offset_cb
  - doq_log_printf_cb
  - doq_application_tx_key_cb
  - doq_set_encryption_secrets
  - doq_add_handshake_data
  - doq_flush_flight
  - doq_send_alert
  - doq_alpn_select_cb
  - quic_sslctx_create
  - doq_conn_ref_get_conn
  - doq_ssl_server_setup
  - doq_conn_setup
  - doq_conid_find
  - doq_conid_list_insert
  - doq_conid_list_remove
  - doq_conid_create
  - doq_conid_delete
  - conid_is_for_conn
  - doq_conn_associate_conid
  - doq_conn_dissociate_conid
  - doq_conn_setup_id_array_and_dcid
  - doq_conn_setup_conids
  - doq_conn_clear_conids
  - doq_get_timevalue
  - doq_conn_start_closing_period
  - doq_conn_send_close
  - doq_conn_close_error
  - doq_conn_recv
  - doq_stream_write_is_done
  - doq_conn_write_streams
  - doq_conn_write_enable
  - doq_conn_write_disable
  - doq_conn_write_list_append
  - doq_conn_write_list_remove
  - doq_conn_set_write_list
  - doq_table_pop_first
  - doq_conn_check_timer
  - doq_conn_log_line
  - doq_conn_handle_timeout
  - doq_table_quic_size_add
  - doq_table_quic_size_subtract
  - doq_table_quic_size_available
  - doq_table_quic_size_get
  source_file: /src/unbound/services/listen_dnsport.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAKE_QUIC_METHOD
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/unbound/services/listen_dnsport.c
      type_or_value: '1'
    - item_type: preproc_def
      name: TCP_BACKLOG
      pos:
        line_end: 111
        line_start: 110
        source_file: /src/unbound/services/listen_dnsport.c
      type_or_value: '256'
    - item_type: preproc_def
      name: HTTP_QUERY_PARAM
      pos:
        line_end: 3102
        line_start: 3101
        source_file: /src/unbound/services/listen_dnsport.c
      type_or_value: '"?dns="'
    structs:
    - fields:
      - name: '* table'
        type: struct doq_table
      - name: '* conn'
        type: struct doq_conn
      item_type: struct
      name: doq_stream_tree_del_args
      pos:
        line_end: 3623
        line_start: 3618
        source_file: /src/unbound/services/listen_dnsport.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/services/rpz.h
  types:
    enum:
    - enumerators:
      - name: RPZ_QNAME_TRIGGER
        value: '0'
      - name: RPZ_RESPONSE_IP_TRIGGER
      - name: RPZ_NSDNAME_TRIGGER
      - name: RPZ_NSIP_TRIGGER
      - name: RPZ_CLIENT_IP_TRIGGER
      - name: RPZ_INVALID_TRIGGER
      item_type: enum
      name: rpz_trigger
      pos:
        line_end: 65
        line_start: 57
        source_file: /src/unbound/services/rpz.h
    - enumerators:
      - name: RPZ_NXDOMAIN_ACTION
        value: '0'
      - name: RPZ_TCP_ONLY_ACTION
      - name: RPZ_NODATA_ACTION
      - name: RPZ_PASSTHRU_ACTION
      - name: RPZ_DROP_ACTION
      - name: RPZ_INVALID_ACTION
      - name: RPZ_LOCAL_DATA_ACTION
      - name: RPZ_DISABLED_ACTION
      - name: RPZ_NO_OVERRIDE_ACTION
      - name: RPZ_CNAME_OVERRIDE_ACTION
      item_type: enum
      name: rpz_action
      pos:
        line_end: 84
        line_start: 70
        source_file: /src/unbound/services/rpz.h
    preproc_defs: []
    structs:
    - fields:
      - name: '* region'
        type: struct regional
      - name: entries
        type: struct rbtree_type
      - name: lock
        type: lock_rw_type
      item_type: struct
      name: clientip_synthesized_rrset
      pos:
        line_end: 91
        line_start: 86
        source_file: /src/unbound/services/rpz.h
    - fields:
      - name: node
        type: struct addr_tree_node
      - name: lock
        type: lock_rw_type
      - name: action
        type: enum rpz_action
      - name: '* data'
        type: struct local_rrset
      item_type: struct
      name: clientip_synthesized_rr
      pos:
        line_end: 102
        line_start: 93
        source_file: /src/unbound/services/rpz.h
    - fields:
      - name: '* local_zones'
        type: struct local_zones
      - name: '* respip_set'
        type: struct respip_set
      - name: '* client_set'
        type: struct clientip_synthesized_rrset
      - name: '* ns_set'
        type: struct clientip_synthesized_rrset
      - name: '* nsdname_zones'
        type: struct local_zones
      - name: '* taglist'
        type: uint8_t
      - name: taglistlen
        type: size_t
      - name: action_override
        type: enum rpz_action
      - name: '* cname_override'
        type: struct ub_packed_rrset_key
      - name: log
        type: int
      - name: '* log_name'
        type: char
      - name: signal_nxdomain_ra
        type: int
      - name: '* region'
        type: struct regional
      - name: disabled
        type: int
      item_type: struct
      name: rpz
      pos:
        line_end: 126
        line_start: 110
        source_file: /src/unbound/services/rpz.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/services/listen_dnsport.h
  types:
    enum:
    - enumerators:
      - name: listen_type_udp
      - name: listen_type_tcp
      - name: listen_type_udp_dnscrypt
      - name: listen_type_udpancil
      - name: listen_type_ssl
      - name: listen_type_tcp_dnscrypt
      - name: listen_type_udpancil_dnscrypt
      - name: listen_type_http
      - name: listen_type_doq
      item_type: enum
      name: listen_type
      pos:
        line_end: 116
        line_start: 97
        source_file: /src/unbound/services/listen_dnsport.h
    preproc_defs:
    - item_type: preproc_def
      name: DOQ_APP_ERROR_CODE
      pos:
        line_end: 707
        line_start: 706
        source_file: /src/unbound/services/listen_dnsport.h
      type_or_value: '1'
    structs:
    - fields:
      - name: '* base'
        type: struct comm_base
      - name: '* udp_buff'
        type: struct sldns_buffer
      - name: '* cps'
        type: struct listen_list
      item_type: struct
      name: listen_dnsport
      pos:
        line_end: 82
        line_start: 70
        source_file: /src/unbound/services/listen_dnsport.h
    - fields:
      - name: '* next'
        type: struct listen_list
      - name: '* com'
        type: struct comm_point
      item_type: struct
      name: listen_list
      pos:
        line_end: 92
        line_start: 87
        source_file: /src/unbound/services/listen_dnsport.h
    - fields:
      - name: '* addr'
        type: struct sockaddr
      - name: addrlen
        type: socklen_t
      - name: s
        type: int
      - name: fam
        type: int
      - name: '* acl'
        type: struct acl_addr
      item_type: struct
      name: unbound_socket
      pos:
        line_end: 132
        line_start: 121
        source_file: /src/unbound/services/listen_dnsport.h
    - fields:
      - name: '* next'
        type: struct listen_port
      - name: fd
        type: int
      - name: ftype
        type: enum listen_type
      - name: pp2_enabled
        type: int
      - name: '* socket'
        type: struct unbound_socket
      item_type: struct
      name: listen_port
      pos:
        line_end: 150
        line_start: 138
        source_file: /src/unbound/services/listen_dnsport.h
    - fields:
      - name: '* cp'
        type: struct comm_point
      - name: '* spool_buffer'
        type: struct sldns_buffer
      - name: in_worker_handle
        type: int
      - name: is_drop
        type: int
      - name: is_reply
        type: int
      - name: read_is_closed
        type: int
      - name: read_again
        type: int
      - name: num_open_req
        type: int
      - name: '* open_req_list'
        type: struct tcp_req_open_item
      - name: num_done_req
        type: int
      - name: '* done_req_list'
        type: struct tcp_req_done_item
      item_type: struct
      name: tcp_req_info
      pos:
        line_end: 349
        line_start: 322
        source_file: /src/unbound/services/listen_dnsport.h
    - fields:
      - name: '* next'
        type: struct tcp_req_open_item
      - name: '* mesh'
        type: struct mesh_area
      - name: '* mesh_state'
        type: struct mesh_state
      item_type: struct
      name: tcp_req_open_item
      pos:
        line_end: 361
        line_start: 354
        source_file: /src/unbound/services/listen_dnsport.h
    - fields:
      - name: '* next'
        type: struct tcp_req_done_item
      - name: '* buf'
        type: uint8_t
      - name: len
        type: size_t
      item_type: struct
      name: tcp_req_done_item
      pos:
        line_end: 373
        line_start: 366
        source_file: /src/unbound/services/listen_dnsport.h
    - fields:
      - name: lock
        type: lock_rw_type
      - name: '* conn_tree'
        type: struct rbtree_type
      - name: conid_lock
        type: lock_rw_type
      - name: '* conid_tree'
        type: struct rbtree_type
      - name: sv_scidlen
        type: int
      - name: '* static_secret'
        type: uint8_t
      - name: static_secret_len
        type: size_t
      - name: idle_timeout
        type: uint64_t
      - name: '* write_list_first'
        type: struct doq_conn
      - name: '* timer_tree'
        type: struct rbtree_type
      - name: size_lock
        type: lock_basic_type
      - name: current_size
        type: size_t
      item_type: struct
      name: doq_table
      pos:
        line_end: 518
        line_start: 486
        source_file: /src/unbound/services/listen_dnsport.h
    - fields:
      - name: node
        type: struct rbnode_type
      - name: time_mono
        type: ngtcp2_tstamp
      - name: time_real
        type: struct timeval
      - name: timer_in_tree
        type: int
      - name: '* setlist_first'
        type: struct doq_timer
      - name: timer_in_list
        type: int
      - name: '* setlist_next'
        type: struct doq_timer
      - name: '* conn'
        type: struct doq_conn
      - name: '* worker_doq_socket'
        type: struct doq_server_socket
      item_type: struct
      name: doq_timer
      pos:
        line_end: 565
        line_start: 539
        source_file: /src/unbound/services/listen_dnsport.h
    - fields:
      - name: paddr
        type: struct doq_pkt_addr
      - name: '* dcid'
        type: uint8_t
      - name: dcidlen
        type: size_t
      item_type: struct
      name: doq_conn_key
      pos:
        line_end: 577
        line_start: 570
        source_file: /src/unbound/services/listen_dnsport.h
    - fields:
      - name: node
        type: struct rbnode_type
      - name: lock
        type: lock_basic_type
      - name: key
        type: struct doq_conn_key
      - name: '* doq_socket'
        type: struct doq_server_socket
      - name: '* table'
        type: struct doq_table
      - name: is_deleted
        type: uint8_t
      - name: version
        type: uint32_t
      - name: '* conn'
        type: struct ngtcp2_conn
      - name: '* conid_list'
        type: struct doq_conid
      - name: tls_alert
        type: uint8_t
      - name: '* ssl'
        type: void
      - name: '* close_pkt'
        type: uint8_t
      - name: close_pkt_len
        type: size_t
      - name: close_ecn
        type: uint32_t
      - name: stream_tree
        type: struct rbtree_type
      - name: '* stream_write_first'
        type: struct doq_stream
      - name: write_interest
        type: uint8_t
      - name: on_write_list
        type: uint8_t
      - name: '* write_prev'
        type: struct doq_conn
      - name: timer
        type: struct doq_timer
      item_type: struct
      name: doq_conn
      pos:
        line_end: 647
        line_start: 584
        source_file: /src/unbound/services/listen_dnsport.h
    - fields:
      - name: node
        type: struct rbnode_type
      - name: '* next'
        type: struct doq_conid
      - name: key
        type: struct doq_conn_key
      - name: '* cid'
        type: uint8_t
      - name: cidlen
        type: size_t
      item_type: struct
      name: doq_conid
      pos:
        line_end: 664
        line_start: 653
        source_file: /src/unbound/services/listen_dnsport.h
    - fields:
      - name: node
        type: rbnode_type
      - name: stream_id
        type: int64_t
      - name: is_closed
        type: uint8_t
      - name: is_query_complete
        type: uint8_t
      - name: nread
        type: size_t
      - name: inlen
        type: size_t
      - name: '* in'
        type: uint8_t
      - name: is_answer_available
        type: uint8_t
      - name: nwrite
        type: size_t
      - name: outlen
        type: size_t
      - name: outlen_wire
        type: uint16_t
      - name: '* out'
        type: uint8_t
      - name: on_write_list
        type: uint8_t
      - name: '* mesh'
        type: struct mesh_area
      - name: '* mesh_state'
        type: struct mesh_state
      - name: '* write_prev'
        type: struct doq_stream
      item_type: struct
      name: doq_stream
      pos:
        line_end: 703
        line_start: 669
        source_file: /src/unbound/services/listen_dnsport.h
    typedefs: []
    union: []
- function_names:
  - pending_cmp
  - serviced_cmp
  - reuse_cmp_addrportssl
  - reuse_cmp
  - reuse_id_cmp
  - waiting_tcp_delete
  - pick_outgoing_tcp
  - outnet_tcp_connect
  - log_reuse_tcp
  - reuse_write_wait_pop
  - reuse_write_wait_remove
  - reuse_write_wait_push_back
  - reuse_tree_by_id_insert
  - reuse_tcp_by_id_find
  - tree_by_id_get_id
  - reuse_tcp_insert
  - reuse_tcp_find
  - outnet_tcp_take_query_setup
  - reuse_tcp_lru_touch
  - reuse_tcp_lru_snip
  - outnet_waiting_tcp_list_remove
  - outnet_waiting_tcp_list_pop
  - outnet_waiting_tcp_list_add
  - outnet_waiting_tcp_list_add_first
  - waiting_tcp_callback
  - use_free_buffer
  - reuse_tree_by_id_delete
  - reuse_move_writewait_away
  - reuse_tcp_remove_tree_list
  - reuse_del_readwait_elem
  - reuse_del_readwait
  - decommission_pending_tcp
  - reuse_cb_readwait_for_failure
  - mark_for_cb_and_decommission
  - reuse_cb_and_decommission
  - reuse_tcp_setup_timeout
  - reuse_tcp_setup_read_and_timeout
  - outnet_tcp_cb
  - portcomm_loweruse
  - outnet_send_wait_udp
  - outnet_udp_cb
  - calc_num46
  - pending_udp_timer_delay_cb
  - pending_udp_timer_cb
  - create_pending_tcp
  - setup_if
  - outside_network_create
  - pending_node_del
  - serviced_node_del
  - outside_network_quit_prepare
  - outside_network_delete
  - pending_delete
  - sai6_putrandom
  - udp_sockport
  - select_id
  - udp_connect_needs_log
  - select_ifport
  - randomize_and_send_udp
  - pending_udp_query
  - outnet_tcptimer
  - reuse_tcp_close_oldest
  - tcp_select_id
  - reuse_tcp_select_id
  - pending_tcp_query
  - serviced_gen_query
  - lookup_serviced
  - serviced_timer_cb
  - serviced_create
  - reuse_tcp_remove_serviced_keep
  - serviced_delete
  - serviced_perturb_qname
  - serviced_query_udp_size
  - serviced_encode
  - serviced_udp_send
  - serviced_check_qname
  - serviced_tcp_callback
  - serviced_tcp_initiate
  - serviced_tcp_send
  - packet_edns_malformed
  - serviced_udp_callback
  - outnet_serviced_query
  - callback_list_remove
  - outnet_serviced_query_stop
  - fd_for_dest
  - outnet_comm_point_for_udp
  - setup_comm_ssl
  - outnet_comm_point_for_tcp
  - setup_http_user_agent
  - setup_http_request
  - outnet_comm_point_for_http
  - waiting_tcp_get_mem
  - if_get_mem
  - waiting_udp_get_mem
  - outnet_get_mem
  - RBTREE_FOR
  - serviced_get_mem
  - shared_ports_setup_if
  - shared_ports_alloc_ifs
  - shared_ports_create
  - shared_ports_if_delete
  - shared_ports_delete
  - shared_ports_find_if
  - shared_ports_fetch_random
  - shared_ports_return_port
  source_file: /src/unbound/services/outside_network.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_ID_RETRY
      pos:
        line_end: 77
        line_start: 76
        source_file: /src/unbound/services/outside_network.c
      type_or_value: '1000'
    - item_type: preproc_def
      name: MAX_PORT_RETRY
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/unbound/services/outside_network.c
      type_or_value: '10000'
    - item_type: preproc_def
      name: OUTBOUND_UDP_RETRY
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/unbound/services/outside_network.c
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - count_modules
  - modstack_init
  - modstack_free
  - modstack_config
  - module_list_avail
  - module_funcs_avail
  - module_factory
  - modstack_call_startup
  - modstack_call_init
  - modstack_call_deinit
  - modstack_call_destartup
  - modstack_find
  - mod_get_mem
  source_file: /src/unbound/services/modstack.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs:
    - item_type: typedef
      name: '* (*fbgetfunctype)(void)'
      pos:
        line_end: 181
        line_start: 181
        source_file: /src/unbound/services/modstack.c
      type: module_func_block
    union: []
- function_names: []
  source_file: /src/unbound/services/outbound_list.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* first'
        type: struct outbound_entry
      item_type: struct
      name: outbound_list
      pos:
        line_end: 54
        line_start: 51
        source_file: /src/unbound/services/outbound_list.h
    - fields:
      - name: '* next'
        type: struct outbound_entry
      - name: '* prev'
        type: struct outbound_entry
      - name: '* qsent'
        type: struct serviced_query
      - name: '* qstate'
        type: struct module_qstate
      item_type: struct
      name: outbound_entry
      pos:
        line_end: 69
        line_start: 60
        source_file: /src/unbound/services/outbound_list.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/services/authzone.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ZONEMD_SCHEME_SIMPLE
      pos:
        line_end: 755
        line_start: 754
        source_file: /src/unbound/services/authzone.h
      type_or_value: '1'
    - item_type: preproc_def
      name: ZONEMD_ALGO_SHA384
      pos:
        line_end: 758
        line_start: 757
        source_file: /src/unbound/services/authzone.h
      type_or_value: '1'
    - item_type: preproc_def
      name: ZONEMD_ALGO_SHA512
      pos:
        line_end: 760
        line_start: 759
        source_file: /src/unbound/services/authzone.h
      type_or_value: '2'
    structs:
    - fields:
      - name: lock
        type: lock_rw_type
      - name: ztree
        type: rbtree_type
      - name: xtree
        type: rbtree_type
      - name: have_downstream
        type: int
      - name: '* rpz_first'
        type: struct auth_zone
      - name: rpz_lock
        type: lock_rw_type
      item_type: struct
      name: auth_zones
      pos:
        line_end: 86
        line_start: 71
        source_file: /src/unbound/services/authzone.h
    - fields:
      - name: node
        type: rbnode_type
      - name: '* name'
        type: uint8_t
      - name: namelen
        type: size_t
      - name: namelabs
        type: int
      - name: dclass
        type: uint16_t
      - name: lock
        type: lock_rw_type
      - name: data
        type: rbtree_type
      - name: '* zonefile'
        type: char
      - name: fallback_enabled
        type: int
      - name: soa_zone_acquired
        type: time_t
      - name: zone_expired
        type: int
      - name: zone_is_slave
        type: int
      - name: for_downstream
        type: int
      - name: for_upstream
        type: int
      - name: zonemd_check
        type: int
      - name: zonemd_reject_absence
        type: int
      - name: '* rpz'
        type: struct rpz
      - name: '* zonemd_callback_env'
        type: struct module_env
      - name: zonemd_callback_qtype
        type: uint16_t
      - name: '* zonemd_callback_unique_info'
        type: void
      - name: zone_deleted
        type: int
      - name: '* delete_next'
        type: struct auth_zone
      - name: '* rpz_az_next'
        type: struct auth_zone
      - name: '* rpz_az_prev'
        type: struct auth_zone
      - name: max_transfer_size
        type: size_t
      - name: max_transfer_time
        type: int
      item_type: struct
      name: auth_zone
      pos:
        line_end: 161
        line_start: 92
        source_file: /src/unbound/services/authzone.h
    - fields:
      - name: node
        type: rbnode_type
      - name: '* name'
        type: uint8_t
      - name: namelen
        type: size_t
      - name: namelabs
        type: int
      - name: '* rrsets'
        type: struct auth_rrset
      item_type: struct
      name: auth_data
      pos:
        line_end: 181
        line_start: 166
        source_file: /src/unbound/services/authzone.h
    - fields:
      - name: '* next'
        type: struct auth_rrset
      - name: type
        type: uint16_t
      - name: '* data'
        type: struct packed_rrset_data
      item_type: struct
      name: auth_rrset
      pos:
        line_end: 193
        line_start: 186
        source_file: /src/unbound/services/authzone.h
    - fields:
      - name: node
        type: rbnode_type
      - name: lock
        type: lock_basic_type
      - name: '* name'
        type: uint8_t
      - name: namelen
        type: size_t
      - name: namelabs
        type: int
      - name: dclass
        type: uint16_t
      - name: '* task_nextprobe'
        type: struct auth_nextprobe
      - name: '* task_probe'
        type: struct auth_probe
      - name: '* task_transfer'
        type: struct auth_transfer
      - name: notify_received
        type: int
      - name: notify_has_serial
        type: int
      - name: notify_serial
        type: uint32_t
      - name: '* allow_notify_list'
        type: struct auth_master
      - name: zone_expired
        type: int
      - name: have_zone
        type: int
      - name: soa_zone_acquired
        type: time_t
      - name: serial
        type: uint32_t
      - name: retry
        type: time_t
      - name: refresh
        type: time_t
      - name: expiry
        type: time_t
      - name: lease_time
        type: time_t
      - name: max_transfer_size
        type: size_t
      - name: max_transfer_time
        type: int
      - name: is_rpz
        type: int
      - name: num_ixfrs
        type: int
      item_type: struct
      name: auth_xfer
      pos:
        line_end: 300
        line_start: 208
        source_file: /src/unbound/services/authzone.h
    - fields:
      - name: '* worker'
        type: struct worker
      - name: '* env'
        type: struct module_env
      - name: backoff
        type: time_t
      - name: next_probe
        type: time_t
      - name: '* timer'
        type: struct comm_timer
      item_type: struct
      name: auth_nextprobe
      pos:
        line_end: 324
        line_start: 311
        source_file: /src/unbound/services/authzone.h
    - fields:
      - name: '* worker'
        type: struct worker
      - name: '* env'
        type: struct module_env
      - name: '* masters'
        type: struct auth_master
      - name: '* lookup_target'
        type: struct auth_master
      - name: '* lookup_unique_info'
        type: void
      - name: lookup_aaaa
        type: int
      - name: only_lookup
        type: int
      - name: have_new_lease
        type: int
      - name: '* scan_specific'
        type: struct auth_master
      - name: '* scan_target'
        type: struct auth_master
      - name: '* scan_addr'
        type: struct auth_addr
      - name: id
        type: uint16_t
      - name: '* cp'
        type: struct comm_point
      - name: cp_is_ip6
        type: int
      - name: '* timer'
        type: struct comm_timer
      - name: timeout
        type: int
      item_type: struct
      name: auth_probe
      pos:
        line_end: 380
        line_start: 337
        source_file: /src/unbound/services/authzone.h
    - fields:
      - name: '* worker'
        type: struct worker
      - name: '* env'
        type: struct module_env
      - name: '* chunks_first'
        type: struct auth_chunk
      - name: '* chunks_last'
        type: struct auth_chunk
      - name: chunks_total
        type: size_t
      - name: start_time
        type: struct timeval
      - name: '* masters'
        type: struct auth_master
      - name: '* lookup_target'
        type: struct auth_master
      - name: '* lookup_unique_info'
        type: void
      - name: lookup_aaaa
        type: int
      - name: '* scan_specific'
        type: struct auth_master
      - name: '* scan_target'
        type: struct auth_master
      - name: '* scan_addr'
        type: struct auth_addr
      - name: '* master'
        type: struct auth_master
      - name: ixfr_fail
        type: int
      - name: ixfr_possible_timeout_count
        type: int
      - name: on_ixfr
        type: int
      - name: got_xfr_serial
        type: int
      - name: rr_scan_num
        type: size_t
      - name: on_ixfr_is_axfr
        type: int
      - name: incoming_xfr_serial
        type: uint32_t
      - name: id
        type: uint16_t
      - name: '* cp'
        type: struct comm_point
      - name: '* timer'
        type: struct comm_timer
      item_type: struct
      name: auth_transfer
      pos:
        line_end: 455
        line_start: 387
        source_file: /src/unbound/services/authzone.h
    - fields:
      - name: '* next'
        type: struct auth_addr
      - name: addr
        type: struct sockaddr_storage
      - name: addrlen
        type: socklen_t
      item_type: struct
      name: auth_addr
      pos:
        line_end: 465
        line_start: 458
        source_file: /src/unbound/services/authzone.h
    - fields:
      - name: '* next'
        type: struct auth_master
      - name: '* host'
        type: char
      - name: '* file'
        type: char
      - name: http
        type: int
      - name: ixfr
        type: int
      - name: allow_notify
        type: int
      - name: ssl
        type: int
      - name: port
        type: int
      - name: '* list'
        type: struct auth_addr
      item_type: struct
      name: auth_master
      pos:
        line_end: 488
        line_start: 468
        source_file: /src/unbound/services/authzone.h
    - fields:
      - name: '* next'
        type: struct auth_chunk
      - name: '* data'
        type: uint8_t
      - name: len
        type: size_t
      item_type: struct
      name: auth_chunk
      pos:
        line_end: 500
        line_start: 491
        source_file: /src/unbound/services/authzone.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/services/mesh.h
  types:
    enum:
    - enumerators:
      - name: mesh_no_list
      - name: mesh_forever_list
      - name: mesh_jostle_list
      item_type: enum
      name: mesh_list_select
      pos:
        line_end: 223
        line_start: 222
        source_file: /src/unbound/services/mesh.h
    preproc_defs:
    - item_type: preproc_def
      name: MESH_MAX_ACTIVATION
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/unbound/services/mesh.h
      type_or_value: '10000'
    - item_type: preproc_def
      name: MESH_MAX_RUN_ITER
      pos:
        line_end: 77
        line_start: 76
        source_file: /src/unbound/services/mesh.h
      type_or_value: '10000'
    - item_type: preproc_def
      name: MESH_MAX_SUBSUB
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/unbound/services/mesh.h
      type_or_value: '1024'
    structs:
    - fields:
      - name: mods
        type: struct module_stack
      - name: '* env'
        type: struct module_env
      - name: run
        type: rbtree_type
      - name: all
        type: rbtree_type
      - name: num_query_authzone_up
        type: size_t
      - name: num_query_authzone_down
        type: size_t
      - name: num_reply_addrs
        type: size_t
      - name: num_reply_states
        type: size_t
      - name: num_detached_states
        type: size_t
      - name: num_forever_states
        type: size_t
      - name: max_reply_states
        type: size_t
      - name: max_forever_states
        type: size_t
      - name: stats_jostled
        type: size_t
      - name: stats_dropped
        type: size_t
      - name: ans_expired
        type: size_t
      - name: ans_cachedb
        type: size_t
      - name: replies_sent
        type: size_t
      - name: replies_sum_wait
        type: struct timeval
      - name: '* histogram'
        type: struct timehist
      - name: ans_secure
        type: size_t
      - name: ans_bogus
        type: size_t
      - name: val_ops
        type: size_t
      - name: ans_rcode[UB_STATS_RCODE_NUM]
        type: size_t
      - name: ans_nodata
        type: size_t
      - name: rpz_action[UB_STATS_RPZ_ACTION_NUM]
        type: size_t
      - name: num_queries_discard_timeout
        type: size_t
      - name: num_queries_replyaddr_limit
        type: size_t
      - name: num_queries_wait_limit
        type: size_t
      - name: num_dns_error_reports
        type: size_t
      - name: '* qbuf_bak'
        type: struct sldns_buffer
      - name: '* forever_first'
        type: struct mesh_state
      - name: '* forever_last'
        type: struct mesh_state
      - name: '* jostle_first'
        type: struct mesh_state
      - name: '* jostle_last'
        type: struct mesh_state
      - name: jostle_max
        type: struct timeval
      - name: use_response_ip
        type: int
      - name: use_rpz
        type: int
      item_type: struct
      name: mesh_area
      pos:
        line_end: 179
        line_start: 88
        source_file: /src/unbound/services/mesh.h
    - fields:
      - name: node
        type: rbnode_type
      - name: run_node
        type: rbnode_type
      - name: s
        type: struct module_qstate
      - name: '* reply_list'
        type: struct mesh_reply
      - name: has_first_reply_time
        type: int
      - name: first_reply_time
        type: struct timeval
      - name: '* cb_list'
        type: struct mesh_cb
      - name: super_set
        type: rbtree_type
      - name: sub_set
        type: rbtree_type
      - name: num_activated
        type: size_t
      - name: '* prev'
        type: struct mesh_state
      - name: '* next'
        type: struct mesh_state
      - name: list_select
        type: "enum mesh_list_select { mesh_no_list, mesh_forever_list, \n\t\tmesh_jostle_list
          }"
      - name: '* unique'
        type: struct mesh_state
      - name: replies_sent
        type: uint8_t
      item_type: struct
      name: mesh_state
      pos:
        line_end: 229
        line_start: 190
        source_file: /src/unbound/services/mesh.h
    - fields:
      - name: node
        type: rbnode_type
      - name: '* s'
        type: struct mesh_state
      item_type: struct
      name: mesh_state_ref
      pos:
        line_end: 240
        line_start: 235
        source_file: /src/unbound/services/mesh.h
    - fields:
      - name: '* next'
        type: struct mesh_reply
      - name: query_reply
        type: struct comm_reply
      - name: edns
        type: struct edns_data
      - name: start_time
        type: struct timeval
      - name: qid
        type: uint16_t
      - name: qflags
        type: uint16_t
      - name: '* qname'
        type: uint8_t
      - name: '* local_alias'
        type: struct local_rrset
      - name: '* h2_stream'
        type: struct http2_stream
      item_type: struct
      name: mesh_reply
      pos:
        line_end: 264
        line_start: 245
        source_file: /src/unbound/services/mesh.h
    - fields:
      - name: '* next'
        type: struct mesh_cb
      - name: edns
        type: struct edns_data
      - name: qid
        type: uint16_t
      - name: qflags
        type: uint16_t
      - name: '* buf'
        type: struct sldns_buffer
      - name: cb
        type: mesh_cb_func_type
      - name: '* cb_arg'
        type: void
      item_type: struct
      name: mesh_cb
      pos:
        line_end: 294
        line_start: 277
        source_file: /src/unbound/services/mesh.h
    typedefs:
    - item_type: typedef
      name: "(*mesh_cb_func_type)(void* cb_arg, int rcode, struct sldns_buffer*,\n\tenum
        sec_status, char* why_bogus, int was_ratelimited)"
      pos:
        line_end: 272
        line_start: 271
        source_file: /src/unbound/services/mesh.h
      type: void
    union: []
- function_names:
  - view_name_compare
  - client_info_compare
  - mesh_state_compare
  - mesh_state_ref_compare
  - mesh_create
  - mesh_delete_helper
  - mesh_delete
  - mesh_delete_all
  - mesh_make_new_space
  - mesh_serve_expired_lookup
  - mesh_serve_expired_init
  - mesh_remove_reply_without_accounting
  - mesh_remove_callback_without_accounting
  - mesh_new_prefetch
  - mesh_report_reply
  - mesh_copy_client_info
  - mesh_state_create
  - mesh_state_make_unique
  - mesh_state_cleanup
  - mesh_state_delete
  - RBTREE_FOR
  - find_in_subsub
  - RBTREE_FOR
  - mesh_detect_cycle_found
  - mesh_detach_subs
  - RBTREE_FOR
  - mesh_attach_sub
  - mesh_state_attachment
  - mesh_do_callback
  - mesh_is_rpz_respip_tcponly_action
  - mesh_is_udp
  - mesh_find_and_attach_ede_and_reason
  - mesh_send_reply
  - dns_error_reporting
  - mesh_query_done
  - mesh_walk_supers
  - RBTREE_FOR
  - mesh_area_find
  - mesh_area_find_unique
  - mesh_state_del_cb
  - mesh_state_add_cb
  - mesh_state_add_reply
  - mesh_copy_qinfo
  - mesh_continue
  - mesh_run
  - mesh_log_list
  - RBTREE_FOR
  - mesh_stats
  - mesh_stats_clear
  - mesh_get_mem
  - RBTREE_FOR
  - mesh_detect_cycle
  - mesh_list_insert
  - mesh_list_remove
  - mesh_state_remove_reply
  - apply_respip_action
  - mesh_serve_expired_callback
  - mesh_respond_serve_expired
  - mesh_jostle_exceeded
  - mesh_remove_callback
  - RBTREE_FOR
  source_file: /src/unbound/services/mesh.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/services/outside_network.h
  types:
    enum:
    - enumerators:
      - name: serviced_initial
      - name: serviced_query_UDP
      - name: serviced_query_UDP_EDNS
      - name: serviced_query_TCP
      - name: serviced_query_TCP_EDNS
      - name: serviced_query_UDP_EDNS_fallback
      - name: serviced_query_TCP_EDNS_fallback
      - name: serviced_query_UDP_EDNS_FRAG
      item_type: enum
      name: serviced_query_status
      pos:
        line_end: 542
        line_start: 525
        source_file: /src/unbound/services/outside_network.h
    preproc_defs:
    - item_type: preproc_def
      name: EDNS_FRAG_SIZE_IP4
      pos:
        line_end: 485
        line_start: 484
        source_file: /src/unbound/services/outside_network.h
      type_or_value: '1472'
    - item_type: preproc_def
      name: EDNS_FRAG_SIZE_IP6
      pos:
        line_end: 487
        line_start: 486
        source_file: /src/unbound/services/outside_network.h
      type_or_value: '1232'
    structs:
    - fields:
      - name: '* base'
        type: struct comm_base
      - name: '* now_secs'
        type: time_t
      - name: '* now_tv'
        type: struct timeval
      - name: '* udp_buff'
        type: struct sldns_buffer
      - name: svcd_overhead
        type: size_t
      - name: use_caps_for_id
        type: int
      - name: want_to_quit
        type: int
      - name: unwanted_replies
        type: size_t
      - name: unwanted_total
        type: size_t
      - name: unwanted_threshold
        type: size_t
      - name: (*unwanted_action)(void*)
        type: void
      - name: '* unwanted_param'
        type: void
      - name: '* unused_fds'
        type: struct port_comm
      - name: do_udp
        type: int
      - name: delayclose
        type: int
      - name: delay_tv
        type: struct timeval
      - name: udp_connect
        type: int
      - name: num_udp_outgoing
        type: size_t
      - name: '* shared_ports'
        type: struct shared_ports
      - name: '* ip4_ifs'
        type: struct port_if
      - name: num_ip4
        type: int
      - name: '* ip6_ifs'
        type: struct port_if
      - name: num_ip6
        type: int
      - name: '* udp_wait_first'
        type: struct pending
      - name: '* udp_wait_last'
        type: struct pending
      - name: '* pending'
        type: rbtree_type
      - name: '* serviced'
        type: rbtree_type
      - name: '* infra'
        type: struct infra_cache
      - name: '* rnd'
        type: struct ub_randstate
      - name: '* sslctx'
        type: void
      - name: tls_use_sni
        type: int
      - name: tcp_mss
        type: int
      - name: ip_dscp
        type: int
      - name: '**tcp_conns'
        type: struct pending_tcp
      - name: num_tcp
        type: size_t
      - name: num_tcp_outgoing
        type: size_t
      - name: max_reuse_tcp_queries
        type: size_t
      - name: tcp_reuse_timeout
        type: int
      - name: tcp_auth_query_timeout
        type: int
      - name: tcp_reuse
        type: rbtree_type
      - name: tcp_reuse_max
        type: size_t
      - name: '* tcp_reuse_first'
        type: struct reuse_tcp
      - name: '* tcp_free'
        type: struct pending_tcp
      - name: '* tcp_wait_first'
        type: struct waiting_tcp
      - name: '* tcp_wait_last'
        type: struct waiting_tcp
      item_type: struct
      name: outside_network
      pos:
        line_end: 201
        line_start: 79
        source_file: /src/unbound/services/outside_network.h
    - fields:
      - name: addr
        type: struct sockaddr_storage
      - name: addrlen
        type: socklen_t
      - name: pfxlen
        type: int
      - name: '** out'
        type: struct port_comm
      - name: maxout
        type: int
      - name: inuse
        type: int
      item_type: struct
      name: port_if
      pos:
        line_end: 229
        line_start: 207
        source_file: /src/unbound/services/outside_network.h
    - fields:
      - name: '* next'
        type: struct port_comm
      - name: number
        type: int
      - name: '* pif'
        type: struct port_if
      - name: index
        type: int
      - name: num_outstanding
        type: int
      - name: '* cp'
        type: struct comm_point
      item_type: struct
      name: port_comm
      pos:
        line_end: 247
        line_start: 234
        source_file: /src/unbound/services/outside_network.h
    - fields:
      - name: lock
        type: lock_basic_type
      - name: '* ip4_ifs'
        type: struct shared_ports_if
      - name: num_ip4
        type: int
      - name: '* ip6_ifs'
        type: struct shared_ports_if
      - name: num_ip6
        type: int
      item_type: struct
      name: shared_ports
      pos:
        line_end: 263
        line_start: 252
        source_file: /src/unbound/services/outside_network.h
    - fields:
      - name: addr
        type: struct sockaddr_storage
      - name: addrlen
        type: socklen_t
      - name: pfxlen
        type: int
      - name: '* avail_ports'
        type: int
      - name: avail_total
        type: int
      - name: inuse
        type: int
      item_type: struct
      name: shared_ports_if
      pos:
        line_end: 283
        line_start: 268
        source_file: /src/unbound/services/outside_network.h
    - fields:
      - name: node
        type: rbnode_type
      - name: addr
        type: struct sockaddr_storage
      - name: addrlen
        type: socklen_t
      - name: is_ssl
        type: int
      - name: '* tls_auth_name'
        type: char
      - name: '* lru_next'
        type: struct reuse_tcp
      - name: item_on_lru_list
        type: int
      - name: '* pending'
        type: struct pending_tcp
      - name: cp_more_read_again
        type: int
      - name: cp_more_write_again
        type: int
      - name: tree_by_id
        type: rbtree_type
      - name: '* write_wait_first'
        type: struct waiting_tcp
      - name: '* outnet'
        type: struct outside_network
      item_type: struct
      name: reuse_tcp
      pos:
        line_end: 351
        line_start: 288
        source_file: /src/unbound/services/outside_network.h
    - fields:
      - name: node
        type: rbnode_type
      - name: id
        type: unsigned int
      - name: addr
        type: struct sockaddr_storage
      - name: addrlen
        type: socklen_t
      - name: '* pc'
        type: struct port_comm
      - name: '* timer'
        type: struct comm_timer
      - name: '* cb'
        type: comm_point_callback_type
      - name: '* cb_arg'
        type: void
      - name: '* outnet'
        type: struct outside_network
      - name: '* sq'
        type: struct serviced_query
      - name: '* next_waiting'
        type: struct pending
      - name: timeout
        type: int
      - name: '* pkt'
        type: uint8_t
      - name: pkt_len
        type: size_t
      item_type: struct
      name: pending
      pos:
        line_end: 389
        line_start: 356
        source_file: /src/unbound/services/outside_network.h
    - fields:
      - name: '* next_free'
        type: struct pending_tcp
      - name: '* pi'
        type: struct port_if
      - name: '* c'
        type: struct comm_point
      - name: '* query'
        type: struct waiting_tcp
      - name: reuse
        type: struct reuse_tcp
      item_type: struct
      name: pending_tcp
      pos:
        line_end: 408
        line_start: 394
        source_file: /src/unbound/services/outside_network.h
    - fields:
      - name: '* next_waiting'
        type: struct waiting_tcp
      - name: on_tcp_waiting_list
        type: int
      - name: '* write_wait_prev'
        type: struct waiting_tcp
      - name: write_wait_queued
        type: int
      - name: id_node
        type: rbnode_type
      - name: id
        type: uint16_t
      - name: '* timer'
        type: struct comm_timer
      - name: timeout
        type: int
      - name: '* outnet'
        type: struct outside_network
      - name: addr
        type: struct sockaddr_storage
      - name: addrlen
        type: socklen_t
      - name: '* pkt'
        type: uint8_t
      - name: pkt_len
        type: size_t
      - name: '* cb'
        type: comm_point_callback_type
      - name: '* cb_arg'
        type: void
      - name: ssl_upstream
        type: int
      - name: '* tls_auth_name'
        type: char
      - name: error_count
        type: int
      - name: in_cb_and_decommission
        type: int
      item_type: struct
      name: waiting_tcp
      pos:
        line_end: 469
        line_start: 413
        source_file: /src/unbound/services/outside_network.h
    - fields:
      - name: '* next'
        type: struct service_callback
      - name: '* cb'
        type: comm_point_callback_type
      - name: '* cb_arg'
        type: void
      item_type: struct
      name: service_callback
      pos:
        line_end: 481
        line_start: 474
        source_file: /src/unbound/services/outside_network.h
    - fields:
      - name: node
        type: rbnode_type
      - name: '* qbuf'
        type: uint8_t
      - name: qbuflen
        type: size_t
      - name: dnssec
        type: int
      - name: want_dnssec
        type: int
      - name: nocaps
        type: int
      - name: tcp_upstream
        type: int
      - name: '* tls_auth_name'
        type: char
      - name: addr
        type: struct sockaddr_storage
      - name: addrlen
        type: socklen_t
      - name: '* zone'
        type: uint8_t
      - name: zonelen
        type: size_t
      - name: qtype
        type: int
      - name: status
        type: "enum serviced_query_status {\n\t\t/** initial status */\n\t\tserviced_initial,\n\t\t/**
          UDP with EDNS sent */\n\t\tserviced_query_UDP_EDNS,\n\t\t/** UDP without
          EDNS sent */\n\t\tserviced_query_UDP,\n\t\t/** TCP with EDNS sent */\n\t\tserviced_query_TCP_EDNS,\n\t\t/**
          TCP without EDNS sent */\n\t\tserviced_query_TCP,\n\t\t/** probe to test
          noEDNS0 (EDNS gives FORMERRorNOTIMP) */\n\t\tserviced_query_UDP_EDNS_fallback,\n\t\t/**
          probe to test TCP noEDNS0 (EDNS gives FORMERRorNOTIMP) */\n\t\tserviced_query_TCP_EDNS_fallback,\n\t\t/**
          send UDP query with EDNS1472 (or 1232) */\n\t\tserviced_query_UDP_EDNS_FRAG\n\t}"
      - name: to_be_deleted
        type: int
      - name: retry
        type: int
      - name: last_sent_time
        type: struct timeval
      - name: last_rtt
        type: int
      - name: edns_lame_known
        type: int
      - name: '* opt_list'
        type: struct edns_option
      - name: '* outnet'
        type: struct outside_network
      - name: '* cblist'
        type: struct service_callback
      - name: '* pending'
        type: void
      - name: padding_block_size
        type: size_t
      - name: '* region'
        type: struct regional
      - name: '* alloc'
        type: struct alloc_cache
      - name: '* timer'
        type: struct comm_timer
      - name: busy
        type: int
      item_type: struct
      name: serviced_query
      pos:
        line_end: 574
        line_start: 494
        source_file: /src/unbound/services/outside_network.h
    typedefs: []
    union: []
- function_names:
  - local_zone_out
  - RBTREE_FOR
  - local_zone_print
  - local_zones_print
  - RBTREE_FOR
  - local_zones_create
  - lzdel
  - local_zones_delete
  - local_zone_delete
  - local_zone_cmp
  - local_data_cmp
  - parse_dname
  - local_zone_create
  - lz_enter_zone_dname
  - lz_enter_zone
  - rrstr_get_rr_content
  - get_rr_nameclass
  - local_data_find_type
  - rr_is_duplicate
  - new_local_rrset
  - rrset_insert_rr
  - local_rrset_remove_rr
  - local_zone_find_data
  - lz_find_create_node
  - lz_mark_soa_for_zone
  - local_zone_enter_rr
  - lz_enter_rr_into_zone
  - lz_enter_rr_str
  - lz_enter_zone_tag
  - lz_enter_override
  - lz_enter_zones
  - lz_exists
  - lz_nodefault
  - add_reverse_default
  - add_empty_default
  - local_zone_enter_defaults
  - lz_enter_overrides
  - find_closest_parent
  - lz_init_parents
  - RBTREE_FOR
  - lz_setup_implicit
  - lz_enter_zone_tags
  - lz_enter_data
  - lz_freeup_cfg
  - local_zones_apply_cfg
  - local_zones_lookup
  - local_zones_tags_lookup
  - local_zones_find
  - local_zones_find_le
  - local_encode
  - local_error_encode
  - local_data_find_tag_datas
  - find_tag_datas
  - local_data_answer
  - local_zone_does_not_cover
  - local_zone_is_udp_query
  - local_zones_zone_answer
  - lz_inform_print
  - lz_type
  - local_data_find_tag_action
  - local_zones_answer
  - local_zone_type2str
  - local_zone_str2type
  - set_kiddo_parents
  - local_zones_add_zone
  - local_zones_del_zone
  - local_zones_add_RR
  - is_terminal
  - del_empty_term
  - del_local_rrset
  - local_zones_del_data
  - local_zone_get_mem
  - local_zones_get_mem
  - RBTREE_FOR
  - local_zones_swap_tree
  source_file: /src/unbound/services/localzone.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LOCALZONE_RRSET_COUNT_MAX
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/unbound/services/localzone.c
      type_or_value: '4096'
    structs: []
    typedefs: []
    union: []
- function_names:
  - msg_create
  - msg_grow_array
  - get_rrset_ttl
  - auth_packed_rrset_copy_region
  - msg_ttl
  - msg_rrset_duplicate
  - msg_add_rrset_an
  - msg_add_rrset_ns
  - msg_add_rrset_ar
  - auth_zones_create
  - auth_zone_cmp
  - auth_data_cmp
  - auth_xfer_cmp
  - auth_rrset_delete
  - auth_data_delete
  - auth_data_del
  - auth_zone_delete
  - auth_zone_create
  - auth_zone_find
  - auth_xfer_find
  - auth_zone_find_less_equal
  - auth_zones_find_zone
  - auth_zones_find_or_add_zone
  - auth_zones_find_or_add_xfer
  - auth_zone_set_zonefile
  - auth_zone_set_fallback
  - az_domain_create
  - az_find_name
  - az_find_domain
  - az_domain_find_or_create
  - az_domain_rrset
  - domain_remove_rrset
  - az_rrset_find_rrsig
  - rdata_duplicate
  - rrsig_rdata_get_type_covered
  - rrset_remove_rr
  - rrset_add_rr
  - rrset_create
  - rrsig_num_that_cover
  - rrset_moveover_rrsigs
  - rrsigs_copy_from_rrset_to_rrsigset
  - az_domain_add_rr
  - az_insert_rr
  - az_domain_remove_rr
  - az_remove_rr
  - decompress_rr_into_buffer
  - az_insert_rr_decompress
  - az_remove_rr_decompress
  - az_parse_file
  - auth_zone_clear_data
  - auth_zone_read_zonefile
  - write_out
  - auth_rr_to_string
  - auth_zone_write_rrset
  - auth_zone_write_domain
  - auth_zone_write_file
  - RBTREE_FOR
  - zonemd_offline_verify
  - auth_zones_read_zones
  - RBTREE_FOR
  - zonemd_fetch_parameters
  - zonemd_is_duplicate_scheme_hash
  - auth_zone_zonemd_check_hash
  - auth_zone_get_soa_rrset
  - auth_zone_get_serial
  - xfr_find_soa
  - auth_xfer_setup
  - auth_zones_setup_zones
  - RBTREE_FOR
  - auth_zones_cfg
  - az_setall_deleted
  - RBTREE_FOR
  - az_delete_deleted_zones
  - RBTREE_FOR
  - auth_zones_apply_cfg
  - auth_chunks_delete
  - auth_free_master_addrs
  - auth_free_masters
  - auth_xfer_delete
  - auth_zone_del
  - auth_xfer_del
  - auth_zones_delete
  - domain_has_only_nsec3
  - az_find_wildcard_domain
  - az_find_wildcard
  - az_find_candidate_ce
  - az_domain_go_up
  - az_find_ce
  - az_add_additionals_from
  - az_add_negative_soa
  - az_empty_nonterminal
  - synth_cname_buf
  - create_synth_cname
  - add_synth_cname
  - az_change_dnames
  - az_find_nsec_cover
  - az_nsec_wildcard_denial
  - az_nsec3_param
  - az_nsec3_hash
  - az_nsec3_hashname
  - az_nsec3_findnode
  - az_nsec3_find_cover
  - az_nsec3_find_exact
  - az_nsec3_get_nextcloser
  - az_nsec3_find_ce
  - az_nsec3_insert
  - az_add_nsec3_proof
  - az_generate_positive_answer
  - az_generate_any_answer
  - follow_cname_chain
  - az_generate_cname_answer
  - az_generate_notype_answer
  - az_generate_referral_answer
  - az_generate_dname_answer
  - az_generate_wildcard_answer
  - az_generate_nxdomain_answer
  - az_generate_answer_with_node
  - az_generate_answer_nonexistnode
  - auth_zone_generate_answer
  - auth_zones_lookup
  - auth_answer_encode
  - auth_error_encode
  - auth_zones_downstream_answer
  - auth_zones_can_fallback
  - auth_zone_parse_notify_serial
  - addr_port_to_str
  - addr_in_list
  - addr_matches_master
  - az_xfr_allowed_notify
  - xfr_serial_means_update
  - xfr_note_notify_serial
  - xfr_process_notify
  - auth_zones_notify
  - auth_zones_startprobesequence
  - auth_xfer_set_expired
  - find_master_by_host
  - xfr_masterlist_free_addrs
  - auth_addr_list_copy
  - auth_master_copy
  - auth_master_copy_and_append
  - probe_copy_masters_for_allow_notify
  - xfr_transfer_start_lookups
  - xfr_transfer_move_to_next_lookup
  - xfr_probe_start_lookups
  - xfr_probe_move_to_next_lookup
  - xfr_transfer_start_list
  - xfr_probe_start_list
  - xfr_transfer_current_master
  - xfr_probe_current_master
  - xfr_transfer_end_of_list
  - xfr_probe_end_of_list
  - xfr_transfer_nextmaster
  - xfr_probe_nextmaster
  - xfr_create_soa_probe_packet
  - xfr_create_ixfr_packet
  - check_packet_ok
  - chunkline_get_line
  - chunkline_count_parens
  - chunkline_remove_trailcomment
  - chunkline_is_comment_line_or_empty
  - chunkline_get_line_collated
  - http_parse_origin
  - http_parse_ttl
  - chunkline_newline_removal
  - chunkline_non_comment_RR
  - http_zonefile_syntax_check
  - chunklist_sum
  - http_parse_add_rr
  - chunk_rrlist_start
  - chunk_rrlist_end
  - chunk_rrlist_gonext
  - chunk_rrlist_get_current
  - log_rrlist_position
  - ixfr_start_serial
  - apply_ixfr
  - apply_axfr
  - apply_http
  - auth_zone_write_chunks
  - xfr_write_after_update
  - xfr_process_reacquire_locks
  - xfr_process_chunk_list
  - xfr_stop_lookup
  - xfr_transfer_disown
  - xfr_transfer_lookup_host
  - xfr_transfer_init_fetch
  - xfr_transfer_nexttarget_or_end
  - xfr_master_add_addrs
  - xfer_target_equals_answer_name
  - auth_xfer_transfer_lookup_callback
  - check_xfer_packet
  - xfer_link_data
  - process_list_end_transfer
  - auth_xfer_transfer_timer_callback
  - auth_xfer_transfer_time_taken
  - auth_xfer_transfer_tcp_callback
  - auth_xfer_transfer_http_callback
  - xfr_start_transfer
  - xfr_probe_disown
  - xfr_probe_send_probe
  - auth_xfer_probe_timer_callback
  - auth_xfer_probe_udp_callback
  - xfr_probe_lookup_host
  - have_probe_targets
  - xfr_probe_send_or_end
  - auth_xfer_probe_lookup_callback
  - xfr_nextprobe_disown
  - auth_xfer_timer
  - xfr_start_probe
  - xfr_set_timeout
  - auth_zone_pickup_initial_zone
  - auth_xfer_pickup_initial_zone
  - auth_xfer_pickup_initial
  - RBTREE_FOR
  - RBTREE_FOR
  - auth_zones_cleanup
  - RBTREE_FOR
  - auth_xfer_new
  - auth_xfer_create
  - auth_master_new
  - dup_prefix
  - dup_all
  - str_find_first_of_chars
  - parse_url
  - xfer_set_masters
  - compare_serial
  - zonemd_hashalgo_supported
  - zonemd_scheme_supported
  - zonemd_digest_init
  - zonemd_digest_update
  - zonemd_digest_finish
  - authdata_rrsets_to_list
  - rrlist_compare
  - addrrsigtype_if_needed
  - zonemd_simple_rrset
  - zonemd_simple_count_rrsig
  - zonemd_simple_rrsig_allocs
  - add_rrlist_rrsigs_into_data
  - add_rrset_into_data
  - zonemd_simple_rrsig
  - zonemd_simple_domain
  - zonemd_simple_collate
  - RBTREE_FOR
  - auth_zone_generate_zonemd_hash
  - auth_zone_generate_zonemd_check
  - auth_zone_log
  - zonemd_dnssec_verify_rrset
  - nsec3_of_param_has_type
  - zonemd_check_dnssec_absence
  - zonemd_check_dnssec_soazonemd
  - auth_zone_zonemd_fail
  - auth_zone_verify_zonemd_with_key
  - zonemd_get_dnskey_from_anchor
  - auth_zone_verify_zonemd_key_with_ds
  - auth_zonemd_dnskey_lookup_callback
  - zonemd_lookup_dnskey
  - auth_zone_verify_zonemd
  - auth_zones_pickup_zonemd_verify
  - RBTREE_FOR
  - auth_rrset_get_mem
  - auth_data_get_mem
  - auth_zone_get_mem
  - RBTREE_FOR
  - auth_addrs_get_mem
  - auth_primaries_get_mem
  - auth_chunks_get_mem
  - auth_xfer_get_mem
  - az_ztree_get_mem
  - RBTREE_FOR
  - az_xtree_get_mem
  - RBTREE_FOR
  - auth_zones_get_mem
  - xfr_disown_tasks
  source_file: /src/unbound/services/authzone.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: N3HASHBUFLEN
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/unbound/services/authzone.c
      type_or_value: '32'
    - item_type: preproc_def
      name: MAX_CNAME_CHAIN
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/unbound/services/authzone.c
      type_or_value: '8'
    - item_type: preproc_def
      name: AUTH_PROBE_TIMEOUT
      pos:
        line_end: 83
        line_start: 82
        source_file: /src/unbound/services/authzone.c
      type_or_value: '100 '
    - item_type: preproc_def
      name: AUTH_PROBE_TIMEOUT_STOP
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/unbound/services/authzone.c
      type_or_value: '1000 '
    - item_type: preproc_def
      name: AUTH_TRANSFER_TIMEOUT
      pos:
        line_end: 87
        line_start: 86
        source_file: /src/unbound/services/authzone.c
      type_or_value: '10000 '
    - item_type: preproc_def
      name: AUTH_TRANSFER_MAX_BACKOFF
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/unbound/services/authzone.c
      type_or_value: '86400 '
    - item_type: preproc_def
      name: AUTH_HTTP_PORT
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/unbound/services/authzone.c
      type_or_value: '80'
    - item_type: preproc_def
      name: AUTH_HTTPS_PORT
      pos:
        line_end: 93
        line_start: 92
        source_file: /src/unbound/services/authzone.c
      type_or_value: '443'
    - item_type: preproc_def
      name: MAX_INCLUDE_DEPTH
      pos:
        line_end: 95
        line_start: 94
        source_file: /src/unbound/services/authzone.c
      type_or_value: '10'
    - item_type: preproc_def
      name: NUM_TIMEOUTS_FALLBACK_IXFR
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/unbound/services/authzone.c
      type_or_value: '3'
    - item_type: preproc_def
      name: NUM_IXFR_BEFORE_AXFR
      pos:
        line_end: 100
        line_start: 99
        source_file: /src/unbound/services/authzone.c
      type_or_value: '5'
    - item_type: preproc_def
      name: SERIAL_BITS
      pos:
        line_end: 7653
        line_start: 7652
        source_file: /src/unbound/services/authzone.c
      type_or_value: '32'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/services/view.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: lock
        type: lock_rw_type
      - name: vtree
        type: rbtree_type
      item_type: struct
      name: views
      pos:
        line_end: 61
        line_start: 55
        source_file: /src/unbound/services/view.h
    - fields:
      - name: node
        type: rbnode_type
      - name: '* name'
        type: char
      - name: '* local_zones'
        type: struct local_zones
      - name: '* respip_set'
        type: struct respip_set
      - name: isfirst
        type: int
      - name: lock
        type: lock_rw_type
      item_type: struct
      name: view
      pos:
        line_end: 84
        line_start: 66
        source_file: /src/unbound/services/view.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/services/modstack.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: num
        type: int
      - name: '** mod'
        type: struct module_func_block
      item_type: struct
      name: module_stack
      pos:
        line_end: 54
        line_start: 49
        source_file: /src/unbound/services/modstack.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/services/localzone.h
  types:
    enum:
    - enumerators:
      - name: local_zone_noview
      - name: local_zone_unset
        value: '0'
      - name: local_zone_refuse
      - name: local_zone_transparent
      - name: local_zone_redirect
      - name: local_zone_inform
      - name: local_zone_block_a_wdata
      - name: local_zone_always_nodata
      - name: local_zone_always_refuse
      - name: local_zone_block_a
      - name: local_zone_inform_redirect
      - name: local_zone_always_null
      - name: local_zone_truncate
      - name: local_zone_invalid
      - name: local_zone_static
      - name: local_zone_deny
      - name: local_zone_typetransparent
      - name: local_zone_nodefault
      - name: local_zone_inform_deny
      - name: local_zone_block_aaaa_wdata
      - name: local_zone_block_aaaa
      - name: local_zone_always_nxdomain
      - name: local_zone_always_transparent
      - name: local_zone_always_deny
      item_type: enum
      name: localzone_type
      pos:
        line_end: 118
        line_start: 67
        source_file: /src/unbound/services/localzone.h
    - enumerators:
      - name: respip_none
        value: local_zone_unset
      - name: respip_deny
        value: local_zone_deny
      - name: respip_redirect
        value: local_zone_redirect
      - name: respip_inform_deny
        value: local_zone_inform_deny
      - name: respip_inform
        value: local_zone_inform
      - name: respip_inform_redirect
        value: local_zone_inform_redirect
      - name: respip_always_transparent
        value: local_zone_always_transparent
      - name: respip_always_refuse
        value: local_zone_always_refuse
      - name: respip_always_nxdomain
        value: local_zone_always_nxdomain
      - name: respip_always_nodata
        value: local_zone_always_nodata
      - name: respip_always_deny
        value: local_zone_always_deny
      - name: respip_refuse
        value: local_zone_refuse
      - name: respip_invalid
        value: local_zone_invalid
      - name: respip_truncate
        value: local_zone_truncate
      - name: respip_transparent
        value: local_zone_transparent
      - name: respip_typetransparent
        value: local_zone_typetransparent
      - name: respip_static
        value: local_zone_static
      item_type: enum
      name: respip_action
      pos:
        line_end: 599
        line_start: 560
        source_file: /src/unbound/services/localzone.h
    preproc_defs: []
    structs:
    - fields:
      - name: lock
        type: lock_rw_type
      - name: ztree
        type: rbtree_type
      item_type: struct
      name: local_zones
      pos:
        line_end: 128
        line_start: 123
        source_file: /src/unbound/services/localzone.h
    - fields:
      - name: node
        type: rbnode_type
      - name: '* parent'
        type: struct local_zone
      - name: '* name'
        type: uint8_t
      - name: namelen
        type: size_t
      - name: namelabs
        type: int
      - name: dclass
        type: uint16_t
      - name: lock
        type: lock_rw_type
      - name: type
        type: enum localzone_type
      - name: '* taglist'
        type: uint8_t
      - name: taglen
        type: size_t
      - name: '* override_tree'
        type: struct rbtree_type
      - name: '* region'
        type: struct regional
      - name: data
        type: rbtree_type
      - name: '* soa'
        type: struct ub_packed_rrset_key
      - name: '* soa_negative'
        type: struct ub_packed_rrset_key
      item_type: struct
      name: local_zone
      pos:
        line_end: 177
        line_start: 133
        source_file: /src/unbound/services/localzone.h
    - fields:
      - name: node
        type: rbnode_type
      - name: '* name'
        type: uint8_t
      - name: namelen
        type: size_t
      - name: namelabs
        type: int
      - name: '* rrsets'
        type: struct local_rrset
      item_type: struct
      name: local_data
      pos:
        line_end: 194
        line_start: 182
        source_file: /src/unbound/services/localzone.h
    - fields:
      - name: '* next'
        type: struct local_rrset
      - name: '* rrset'
        type: struct ub_packed_rrset_key
      item_type: struct
      name: local_rrset
      pos:
        line_end: 204
        line_start: 199
        source_file: /src/unbound/services/localzone.h
    - fields:
      - name: node
        type: struct addr_tree_node
      - name: type
        type: enum localzone_type
      item_type: struct
      name: local_zone_override
      pos:
        line_end: 214
        line_start: 209
        source_file: /src/unbound/services/localzone.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/services/cache/rrset.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: table
        type: struct slabhash
      item_type: struct
      name: rrset_cache
      pos:
        line_end: 58
        line_start: 55
        source_file: /src/unbound/services/cache/rrset.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/services/cache/infra.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TIMEOUT_COUNT_MAX
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/unbound/services/cache/infra.h
      type_or_value: '3'
    - item_type: preproc_def
      name: RATE_WINDOW
      pos:
        line_end: 189
        line_start: 188
        source_file: /src/unbound/services/cache/infra.h
      type_or_value: '2'
    - item_type: preproc_def
      name: ip_rate_data
      pos:
        line_end: 208
        line_start: 207
        source_file: /src/unbound/services/cache/infra.h
      type_or_value: rate_data
    - item_type: preproc_def
      name: INFRA_HOST_STARTSIZE
      pos:
        line_end: 221
        line_start: 220
        source_file: /src/unbound/services/cache/infra.h
      type_or_value: '32'
    - item_type: preproc_def
      name: INFRA_BYTES_NAME
      pos:
        line_end: 223
        line_start: 222
        source_file: /src/unbound/services/cache/infra.h
      type_or_value: '14'
    - item_type: preproc_def
      name: ip_rate_deldatafunc
      pos:
        line_end: 504
        line_start: 503
        source_file: /src/unbound/services/cache/infra.h
      type_or_value: rate_deldatafunc
    structs:
    - fields:
      - name: addr
        type: struct sockaddr_storage
      - name: addrlen
        type: socklen_t
      - name: '* zonename'
        type: uint8_t
      - name: namelen
        type: size_t
      - name: entry
        type: struct lruhash_entry
      item_type: struct
      name: infra_key
      pos:
        line_end: 81
        line_start: 70
        source_file: /src/unbound/services/cache/infra.h
    - fields:
      - name: ttl
        type: time_t
      - name: probedelay
        type: time_t
      - name: rtt
        type: struct rtt_info
      - name: edns_version
        type: int
      - name: edns_lame_known
        type: uint8_t
      - name: isdnsseclame
        type: uint8_t
      - name: rec_lame
        type: uint8_t
      - name: lame_type_A
        type: uint8_t
      - name: lame_other
        type: uint8_t
      - name: timeout_A
        type: uint8_t
      - name: timeout_AAAA
        type: uint8_t
      - name: timeout_other
        type: uint8_t
      item_type: struct
      name: infra_data
      pos:
        line_end: 119
        line_start: 87
        source_file: /src/unbound/services/cache/infra.h
    - fields:
      - name: '* hosts'
        type: struct slabhash
      - name: host_ttl
        type: int
      - name: infra_keep_probing
        type: int
      - name: '* domain_rates'
        type: struct slabhash
      - name: domain_limits
        type: rbtree_type
      - name: '* client_ip_rates'
        type: struct slabhash
      - name: wait_limits_netblock
        type: rbtree_type
      - name: wait_limits_cookie_netblock
        type: rbtree_type
      item_type: struct
      name: infra_cache
      pos:
        line_end: 141
        line_start: 124
        source_file: /src/unbound/services/cache/infra.h
    - fields:
      - name: node
        type: struct name_tree_node
      - name: lim
        type: int
      - name: below
        type: int
      item_type: struct
      name: domain_limit_data
      pos:
        line_end: 156
        line_start: 149
        source_file: /src/unbound/services/cache/infra.h
    - fields:
      - name: entry
        type: struct lruhash_entry
      - name: '* name'
        type: uint8_t
      - name: namelen
        type: size_t
      item_type: struct
      name: rate_key
      pos:
        line_end: 168
        line_start: 161
        source_file: /src/unbound/services/cache/infra.h
    - fields:
      - name: entry
        type: struct lruhash_entry
      - name: addr
        type: struct sockaddr_storage
      - name: addrlen
        type: socklen_t
      item_type: struct
      name: ip_rate_key
      pos:
        line_end: 185
        line_start: 178
        source_file: /src/unbound/services/cache/infra.h
    - fields:
      - name: qps[RATE_WINDOW]
        type: int
      - name: timestamp[RATE_WINDOW]
        type: time_t
      - name: mesh_wait
        type: int
      item_type: struct
      name: rate_data
      pos:
        line_end: 205
        line_start: 197
        source_file: /src/unbound/services/cache/infra.h
    - fields:
      - name: node
        type: struct addr_tree_node
      - name: limit
        type: int
      item_type: struct
      name: wait_limit_netblock_info
      pos:
        line_end: 217
        line_start: 212
        source_file: /src/unbound/services/cache/infra.h
    typedefs: []
    union: []
- function_names:
  - still_useful_timeout
  - infra_sizefunc
  - infra_compfunc
  - infra_delkeyfunc
  - infra_deldatafunc
  - rate_sizefunc
  - rate_compfunc
  - rate_delkeyfunc
  - rate_deldatafunc
  - domain_limit_findcreate
  - infra_ratelimit_cfg_insert
  - setup_domain_limits
  - wait_limit_netblock_findcreate
  - infra_wait_limit_netblock_insert
  - wait_limit_netblock_default
  - setup_wait_limits
  - infra_create
  - domain_limit_free
  - domain_limits_free
  - wait_limit_netblock_del
  - wait_limits_free
  - infra_delete
  - infra_adjust
  - hash_addr
  - hash_infra
  - infra_lookup_nottl
  - data_entry_init
  - new_entry
  - infra_host
  - infra_set_lame
  - infra_update_tcp_works
  - infra_rtt_update
  - infra_get_host_rto
  - infra_edns_update
  - infra_get_lame_rtt
  - infra_find_ratelimit
  - ip_rate_sizefunc
  - ip_rate_compfunc
  - ip_rate_delkeyfunc
  - infra_find_ratedata
  - infra_find_ip_ratedata
  - infra_create_ratedata
  - infra_ip_create_ratedata
  - infra_rate_find_second_or_none
  - infra_rate_give_second
  - infra_rate_get_second
  - infra_rate_max
  - infra_ratelimit_inc
  - infra_ratelimit_dec
  - infra_ratelimit_exceeded
  - infra_get_mem
  - check_ip_ratelimit
  - infra_ip_ratelimit_inc
  - infra_wait_limit_allowed
  - infra_wait_limit_inc
  - infra_wait_limit_dec
  source_file: /src/unbound/services/cache/infra.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/services/cache/dns.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DNSCACHE_STORE_EXPIRED_MSG_CACHEDB
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/unbound/services/cache/dns.h
      type_or_value: '0x100000'
    structs:
    - fields:
      - name: qinfo
        type: struct query_info
      - name: '*rep'
        type: struct reply_info
      item_type: struct
      name: dns_msg
      pos:
        line_end: 65
        line_start: 60
        source_file: /src/unbound/services/cache/dns.h
    typedefs: []
    union: []
- function_names:
  - store_rrsets
  - msg_cache_remove
  - dns_cache_store_msg
  - find_closest_of_type
  - addr_to_additional
  - msg_cache_lookup
  - find_add_addrs
  - cache_fill_missing
  - find_add_ds
  - dns_msg_create
  - dns_msg_authadd
  - dns_msg_ansadd
  - dns_cache_find_delegation
  - gen_dns_msg
  - tomsg
  - dns_msg_deepcopy_region
  - rrset_msg
  - synth_dname_msg
  - fill_any
  - dns_cache_lookup
  - dns_cache_store
  - dns_cache_prefetch_adjust
  source_file: /src/unbound/services/cache/dns.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - rrset_markdel
  - rrset_cache_create
  - rrset_cache_delete
  - rrset_cache_adjust
  - rrset_cache_touch
  - need_to_update_rrset
  - rrset_update_id
  - rrset_cache_update
  - dname_subdomain_rrsig_signers
  - rrset_cache_update_wildcard
  - rrset_cache_lookup
  - rrset_array_lock
  - rrset_array_unlock
  - rrset_array_unlock_touch
  - rrset_update_sec_status
  - rrset_check_sec_status
  - rrset_cache_remove_above
  - rrset_cache_expired_above
  - rrset_cache_remove
  source_file: /src/unbound/services/cache/rrset.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DNAME_TTL0_GRACE_SECONDS
      pos:
        line_end: 342
        line_start: 341
        source_file: /src/unbound/services/cache/rrset.c
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/unbound/testdata/speed_cache.tdir/makeqs.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/pythonmod/pythonmod.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - clean_python_function_objects
  - log_py_err
  - pythonmod_atexit
  - pythonmod_init
  - pythonmod_deinit
  - pythonmod_inform_super
  - pythonmod_operate
  - pythonmod_clear
  - pythonmod_get_mem
  - pythonmod_get_funcblock
  source_file: /src/unbound/pythonmod/pythonmod.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* fname'
        type: char
      - name: '* module'
        type: PyObject
      - name: '* func_init'
        type: PyObject
      - name: '* func_deinit'
        type: PyObject
      - name: '* func_operate'
        type: PyObject
      - name: '* func_inform'
        type: PyObject
      - name: '* dict'
        type: PyObject
      - name: '* data'
        type: PyObject
      - name: '* qstate'
        type: struct module_qstate
      item_type: struct
      name: pythonmod_env
      pos:
        line_end: 103
        line_start: 78
        source_file: /src/unbound/pythonmod/pythonmod.c
    - fields:
      - name: '* data'
        type: PyObject
      item_type: struct
      name: pythonmod_qstate
      pos:
        line_end: 112
        line_start: 108
        source_file: /src/unbound/pythonmod/pythonmod.c
    typedefs:
    - item_type: typedef
      name: PyObject
      pos:
        line_end: 61
        line_start: 61
        source_file: /src/unbound/pythonmod/pythonmod.c
      type: PyObject
    - item_type: typedef
      name: PyThreadState
      pos:
        line_end: 62
        line_start: 62
        source_file: /src/unbound/pythonmod/pythonmod.c
      type: PyThreadState
    - item_type: typedef
      name: '* PyGILState_STATE'
      pos:
        line_end: 63
        line_start: 63
        source_file: /src/unbound/pythonmod/pythonmod.c
      type: void
    union: []
- function_names:
  - storeQueryInCache
  - invalidateQueryInCache
  - createResponse
  - reply_addr2str
  - delegpt_addr_addr2str
  source_file: /src/unbound/pythonmod/pythonmod_utils.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/pythonmod/pythonmod_utils.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - libworker_delete_env
  - libworker_delete
  - libworker_delete_event
  - libworker_setup
  - libworker_create_event
  - handle_cancel
  - libworker_do_cmd
  - libworker_handle_control_cmd
  - libworker_dobg
  - libworker_bg
  - fill_canon
  - fill_res
  - libworker_enter_result
  - libworker_fillup_fg
  - libworker_fg_done_cb
  - setup_qinfo_edns
  - libworker_fg
  - libworker_event_done_cb
  - libworker_attach_mesh
  - add_bg_result
  - libworker_bg_done_cb
  - handle_newq
  - libworker_alloc_cleanup
  - libworker_send_query
  - libworker_handle_service_reply
  - worker_handle_control_cmd
  - worker_handle_request
  - worker_handle_service_reply
  - remote_accept_callback
  - remote_control_callback
  - worker_sighandler
  - worker_send_query
  - worker_alloc_cleanup
  - worker_stat_timer_cb
  - worker_probe_timer_cb
  - worker_start_accept
  - worker_stop_accept
  - order_lock_cmp
  - codeline_cmp
  - replay_var_compare
  - remote_get_opt_ssl
  - worker_win_stop_cb
  - wsvc_cron_cb
  - dtio_tap_callback
  - dtio_mainfdcallback
  - fast_reload_service_cb
  - fast_reload_client_callback
  - doq_client_event_cb
  - doq_client_timer_cb
  source_file: /src/unbound/libunbound/libworker.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/libunbound/unbound-event.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: UB_EV_TIMEOUT
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/unbound/libunbound/unbound-event.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: UB_EV_READ
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/unbound/libunbound/unbound-event.h
      type_or_value: '0x02'
    - item_type: preproc_def
      name: UB_EV_WRITE
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/unbound/libunbound/unbound-event.h
      type_or_value: '0x04'
    - item_type: preproc_def
      name: UB_EV_SIGNAL
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/unbound/libunbound/unbound-event.h
      type_or_value: '0x08'
    - item_type: preproc_def
      name: UB_EV_PERSIST
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/unbound/libunbound/unbound-event.h
      type_or_value: '0x10'
    - item_type: preproc_def
      name: UB_EVENT_MAGIC
      pos:
        line_end: 78
        line_start: 77
        source_file: /src/unbound/libunbound/unbound-event.h
      type_or_value: '0x44d74d78'
    structs:
    - fields:
      - name: (*free)(struct ub_event_base*)
        type: void
      - name: (*dispatch)(struct ub_event_base*)
        type: int
      - name: (*loopexit)(struct ub_event_base*, struct timeval*)
        type: int
      - name: "* (*new_event)(struct ub_event_base*,\n\t\tint fd, short bits, void
          (*cb)(int, short, void*), void* arg)"
        type: struct ub_event
      - name: "* (*new_signal)(struct ub_event_base*, int fd,\n\t\tvoid (*cb)(int,
          short, void*), void* arg)"
        type: struct ub_event
      - name: "* (*winsock_register_wsaevent)(struct ub_event_base*,\n\t\tvoid* wsaevent,
          void (*cb)(int, short, void*), void* arg)"
        type: struct ub_event
      item_type: struct
      name: ub_event_base_vmt
      pos:
        line_end: 106
        line_start: 86
        source_file: /src/unbound/libunbound/unbound-event.h
    - fields:
      - name: magic
        type: unsigned long
      - name: '* vmt'
        type: struct ub_event_base_vmt
      item_type: struct
      name: ub_event_base
      pos:
        line_end: 119
        line_start: 114
        source_file: /src/unbound/libunbound/unbound-event.h
    - fields:
      - name: (*add_bits)(struct ub_event*, short)
        type: void
      - name: (*del_bits)(struct ub_event*, short)
        type: void
      - name: (*set_fd)(struct ub_event*, int)
        type: void
      - name: (*free)(struct ub_event*)
        type: void
      - name: (*add)(struct ub_event*, struct timeval*)
        type: int
      - name: (*del)(struct ub_event*)
        type: int
      - name: "(*add_timer)(struct ub_event*, struct ub_event_base*,\n\t\tvoid (*cb)(int,
          short, void*), void* arg, struct timeval*)"
        type: int
      - name: (*del_timer)(struct ub_event*)
        type: int
      - name: (*add_signal)(struct ub_event*, struct timeval*)
        type: int
      - name: (*del_signal)(struct ub_event*)
        type: int
      - name: (*winsock_unregister_wsaevent)(struct ub_event* ev)
        type: void
      - name: (*winsock_tcp_wouldblock)(struct ub_event*, int eventbit)
        type: void
      item_type: struct
      name: ub_event_vmt
      pos:
        line_end: 158
        line_start: 124
        source_file: /src/unbound/libunbound/unbound-event.h
    - fields:
      - name: magic
        type: unsigned long
      - name: '* vmt'
        type: struct ub_event_vmt
      item_type: struct
      name: ub_event
      pos:
        line_end: 170
        line_start: 165
        source_file: /src/unbound/libunbound/unbound-event.h
    typedefs:
    - item_type: typedef
      name: (*ub_event_callback_type)(void*, int, void*, int, int, char*, int)
      pos:
        line_end: 172
        line_start: 172
        source_file: /src/unbound/libunbound/unbound-event.h
      type: void
    union: []
- function_names:
  - context_finalize
  - context_query_cmp
  - context_query_delete
  - find_id
  - context_new
  - context_obtain_alloc
  - context_release_alloc
  - context_serialize_new_query
  - context_deserialize_new_query
  - context_lookup_new_query
  - context_serialize_answer
  - context_deserialize_answer
  - context_serialize_cancel
  - context_deserialize_cancel
  - context_serialize_quit
  - context_serial_getcmd
  source_file: /src/unbound/libunbound/context.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NUM_ID_TRIES
      pos:
        line_end: 140
        line_start: 139
        source_file: /src/unbound/libunbound/context.c
      type_or_value: '100000'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/libunbound/worker.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/libunbound/unbound.h
  types:
    enum:
    - enumerators:
      - name: UB_NOERROR
        value: '0'
      - name: UB_NOMEM
        value: '-2'
      - name: UB_SOCKET
        value: '-1'
      - name: UB_SERVFAIL
        value: '-4'
      - name: UB_SYNTAX
        value: '-3'
      - name: UB_FORKFAIL
        value: '-5'
      - name: UB_AFTERFINAL
        value: '-6'
      - name: UB_INITFAIL
        value: '-7'
      - name: UB_PIPE
        value: '-8'
      - name: UB_READFILE
        value: '-9'
      - name: UB_NOID
        value: '-10'
      item_type: enum
      name: ub_ctx_err
      pos:
        line_end: 261
        line_start: 237
        source_file: /src/unbound/libunbound/unbound.h
    preproc_defs:
    - item_type: preproc_def
      name: UNBOUND_VERSION_MAJOR
      pos:
        line_end: 105
        line_start: 104
        source_file: /src/unbound/libunbound/unbound.h
      type_or_value: '@UNBOUND_VERSION_MAJOR@'
    - item_type: preproc_def
      name: UNBOUND_VERSION_MINOR
      pos:
        line_end: 106
        line_start: 105
        source_file: /src/unbound/libunbound/unbound.h
      type_or_value: '@UNBOUND_VERSION_MINOR@'
    - item_type: preproc_def
      name: UNBOUND_VERSION_MICRO
      pos:
        line_end: 107
        line_start: 106
        source_file: /src/unbound/libunbound/unbound.h
      type_or_value: '@UNBOUND_VERSION_MICRO@'
    - item_type: preproc_def
      name: UB_STATS_QTYPE_NUM
      pos:
        line_end: 680
        line_start: 679
        source_file: /src/unbound/libunbound/unbound.h
      type_or_value: '256'
    - item_type: preproc_def
      name: UB_STATS_QCLASS_NUM
      pos:
        line_end: 682
        line_start: 681
        source_file: /src/unbound/libunbound/unbound.h
      type_or_value: '256'
    - item_type: preproc_def
      name: UB_STATS_RCODE_NUM
      pos:
        line_end: 684
        line_start: 683
        source_file: /src/unbound/libunbound/unbound.h
      type_or_value: '16'
    - item_type: preproc_def
      name: UB_STATS_OPCODE_NUM
      pos:
        line_end: 686
        line_start: 685
        source_file: /src/unbound/libunbound/unbound.h
      type_or_value: '16'
    - item_type: preproc_def
      name: UB_STATS_BUCKET_NUM
      pos:
        line_end: 688
        line_start: 687
        source_file: /src/unbound/libunbound/unbound.h
      type_or_value: '40'
    - item_type: preproc_def
      name: UB_STATS_RPZ_ACTION_NUM
      pos:
        line_end: 690
        line_start: 689
        source_file: /src/unbound/libunbound/unbound.h
      type_or_value: '10'
    structs:
    - fields:
      - name: '* qname'
        type: char
      - name: qtype
        type: int
      - name: qclass
        type: int
      - name: '** data'
        type: char
      - name: '* len'
        type: int
      - name: '* canonname'
        type: char
      - name: rcode
        type: int
      - name: '* answer_packet'
        type: void
      - name: answer_len
        type: int
      - name: havedata
        type: int
      - name: nxdomain
        type: int
      - name: secure
        type: int
      - name: bogus
        type: int
      - name: '* why_bogus'
        type: char
      - name: was_ratelimited
        type: int
      - name: ttl
        type: int
      item_type: struct
      name: ub_result
      pos:
        line_end: 217
        line_start: 122
        source_file: /src/unbound/libunbound/unbound.h
    - fields:
      - name: num_threads
        type: int
      - name: time
        type: "struct {\n\t\tlong long now_sec, now_usec;\n\t\tlong long up_sec, up_usec;\n\t\tlong
          long elapsed_sec, elapsed_usec;\n\t}"
      - name: mem
        type: "struct {\n\t\tlong long msg;\n\t\tlong long rrset;\n\t\tlong long val;\n\t\tlong
          long iter;\n\t\tlong long subnet;\n\t\tlong long ipsecmod;\n\t\tlong long
          respip;\n\t\tlong long dnscrypt_shared_secret;\n\t\tlong long dnscrypt_nonce;\n\t\tlong
          long dynlib;\n\t}"
      item_type: struct
      name: ub_shm_stat_info
      pos:
        line_end: 676
        line_start: 655
        source_file: /src/unbound/libunbound/unbound.h
    - fields:
      - name: num_queries
        type: long long
      - name: num_queries_ip_ratelimited
        type: long long
      - name: num_queries_cookie_valid
        type: long long
      - name: num_queries_cookie_client
        type: long long
      - name: num_queries_cookie_invalid
        type: long long
      - name: num_queries_missed_cache
        type: long long
      - name: num_queries_prefetch
        type: long long
      - name: num_queries_timed_out
        type: long long
      - name: max_query_time_us
        type: long long
      - name: sum_query_list_size
        type: long long
      - name: max_query_list_size
        type: long long
      - name: extended
        type: int
      - name: qtype[UB_STATS_QTYPE_NUM]
        type: long long
      - name: qtype_big
        type: long long
      - name: qclass[UB_STATS_QCLASS_NUM]
        type: long long
      - name: qclass_big
        type: long long
      - name: qopcode[UB_STATS_OPCODE_NUM]
        type: long long
      - name: qtcp
        type: long long
      - name: qtcp_outgoing
        type: long long
      - name: qudp_outgoing
        type: long long
      - name: qtls
        type: long long
      - name: qhttps
        type: long long
      - name: qipv6
        type: long long
      - name: qbit_QR
        type: long long
      - name: qbit_AA
        type: long long
      - name: qbit_TC
        type: long long
      - name: qbit_RD
        type: long long
      - name: qbit_RA
        type: long long
      - name: qbit_Z
        type: long long
      - name: qbit_AD
        type: long long
      - name: qbit_CD
        type: long long
      - name: qEDNS
        type: long long
      - name: qEDNS_DO
        type: long long
      - name: ans_rcode[UB_STATS_RCODE_NUM]
        type: long long
      - name: ans_rcode_nodata
        type: long long
      - name: ans_secure
        type: long long
      - name: ans_bogus
        type: long long
      - name: rrset_bogus
        type: long long
      - name: val_ops
        type: long long
      - name: queries_ratelimited
        type: long long
      - name: unwanted_replies
        type: long long
      - name: unwanted_queries
        type: long long
      - name: tcp_accept_usage
        type: long long
      - name: ans_expired
        type: long long
      - name: hist[UB_STATS_BUCKET_NUM]
        type: long long
      - name: msg_cache_count
        type: long long
      - name: rrset_cache_count
        type: long long
      - name: infra_cache_count
        type: long long
      - name: key_cache_count
        type: long long
      - name: msg_cache_max_collisions
        type: long long
      - name: rrset_cache_max_collisions
        type: long long
      - name: num_query_dnscrypt_crypted
        type: long long
      - name: num_query_dnscrypt_cert
        type: long long
      - name: num_query_dnscrypt_cleartext
        type: long long
      - name: num_query_dnscrypt_crypted_malformed
        type: long long
      - name: num_query_dnscrypt_secret_missed_cache
        type: long long
      - name: shared_secret_cache_count
        type: long long
      - name: num_query_dnscrypt_replay
        type: long long
      - name: nonce_cache_count
        type: long long
      - name: num_query_authzone_up
        type: long long
      - name: num_query_authzone_down
        type: long long
      - name: num_neg_cache_noerror
        type: long long
      - name: num_neg_cache_nxdomain
        type: long long
      - name: num_query_subnet
        type: long long
      - name: num_query_subnet_cache
        type: long long
      - name: num_query_cachedb
        type: long long
      - name: mem_stream_wait
        type: long long
      - name: mem_http2_query_buffer
        type: long long
      - name: mem_http2_response_buffer
        type: long long
      - name: qtls_resume
        type: long long
      - name: rpz_action[UB_STATS_RPZ_ACTION_NUM]
        type: long long
      - name: mem_quic
        type: long long
      - name: qquic
        type: long long
      - name: num_queries_discard_timeout
        type: long long
      - name: num_queries_replyaddr_limit
        type: long long
      - name: num_queries_wait_limit
        type: long long
      - name: num_dns_error_reports
        type: long long
      item_type: struct
      name: ub_server_stats
      pos:
        line_end: 861
        line_start: 692
        source_file: /src/unbound/libunbound/unbound.h
    - fields:
      - name: svr
        type: struct ub_server_stats
      - name: mesh_num_states
        type: long long
      - name: mesh_num_reply_states
        type: long long
      - name: mesh_num_reply_addrs
        type: long long
      - name: mesh_jostled
        type: long long
      - name: mesh_dropped
        type: long long
      - name: mesh_replies_sent
        type: long long
      - name: mesh_replies_sum_wait_sec
        type: long long
      - name: mesh_time_median
        type: double
      item_type: struct
      name: ub_stats_info
      pos:
        line_end: 888
        line_start: 868
        source_file: /src/unbound/libunbound/unbound.h
    typedefs:
    - item_type: typedef
      name: (*ub_callback_type)(void*, int, struct ub_result*)
      pos:
        line_end: 232
        line_start: 232
        source_file: /src/unbound/libunbound/unbound.h
      type: void
    union: []
- function_names:
  - ub_ctx_create_nopipe
  - ub_ctx_create
  - ub_ctx_create_ub_event
  - ub_ctx_create_event
  - delq
  - ub_stop_bg
  - ub_ctx_delete
  - ub_ctx_set_option
  - ub_ctx_get_option
  - ub_ctx_config
  - ub_ctx_add_ta
  - ub_ctx_add_ta_file
  - ub_ctx_add_ta_autr
  - ub_ctx_trustedkeys
  - ub_ctx_debuglevel
  - ub_ctx_debugout
  - ub_ctx_async
  - ub_poll
  - ub_fd
  - process_answer_detail
  - process_answer
  - ub_process
  - ub_wait
  - ub_resolve
  - ub_resolve_event
  - ub_resolve_async
  - ub_cancel
  - ub_resolve_free
  - ub_strerror
  - ub_ctx_set_fwd
  - ub_ctx_set_tls
  - ub_ctx_set_stub
  - ub_ctx_resolvconf
  - ub_ctx_hosts
  - ub_ctx_finalize
  - ub_ctx_print_local_zones
  - ub_ctx_zone_add
  - ub_ctx_zone_remove
  - ub_ctx_data_add
  - ub_ctx_data_remove
  - ub_version
  - ub_ctx_set_event
  source_file: /src/unbound/libunbound/libunbound.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/libunbound/libworker.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: thread_num
        type: int
      - name: '* ctx'
        type: struct ub_ctx
      - name: is_bg
        type: int
      - name: is_bg_thread
        type: int
      - name: want_quit
        type: int
      - name: '* env'
        type: struct module_env
      - name: '* base'
        type: struct comm_base
      - name: '* back'
        type: struct outside_network
      - name: '* shared_ports'
        type: struct shared_ports
      - name: '* rndstate'
        type: struct ub_randstate
      - name: '* sslctx'
        type: void
      item_type: struct
      name: libworker
      pos:
        line_end: 93
        line_start: 68
        source_file: /src/unbound/libunbound/libworker.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/libunbound/remote.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/libunbound/context.h
  types:
    enum:
    - enumerators:
      - name: UB_LIBCMD_QUIT
        value: '0'
      - name: UB_LIBCMD_ANSWER
      - name: UB_LIBCMD_CANCEL
      - name: UB_LIBCMD_NEWQUERY
      item_type: enum
      name: ub_ctx_cmd
      pos:
        line_end: 203
        line_start: 194
        source_file: /src/unbound/libunbound/context.h
    preproc_defs: []
    structs:
    - fields:
      - name: qqpipe_lock
        type: lock_basic_type
      - name: '* qq_pipe'
        type: struct tube
      - name: rrpipe_lock
        type: lock_basic_type
      - name: '* rr_pipe'
        type: struct tube
      - name: cfglock
        type: lock_basic_type
      - name: finalized
        type: int
      - name: created_bg
        type: int
      - name: bg_pid
        type: pid_t
      - name: bg_tid
        type: ub_thread_type
      - name: pipe_pid
        type: pid_t
      - name: '* thread_worker'
        type: struct libworker
      - name: dothread
        type: int
      - name: thr_next_num
        type: int
      - name: logfile_override
        type: int
      - name: '* log_out'
        type: FILE
      - name: '* alloc_list'
        type: struct alloc_cache
      - name: superalloc
        type: struct alloc_cache
      - name: '* env'
        type: struct module_env
      - name: mods
        type: struct module_stack
      - name: '* local_zones'
        type: struct local_zones
      - name: '* seed_rnd'
        type: struct ub_randstate
      - name: '* event_base'
        type: struct ub_event_base
      - name: event_base_malloced
        type: int
      - name: '* event_worker'
        type: struct libworker
      - name: next_querynum
        type: int
      - name: num_async
        type: size_t
      - name: queries
        type: rbtree_type
      item_type: struct
      name: ub_ctx
      pos:
        line_end: 145
        line_start: 64
        source_file: /src/unbound/libunbound/context.h
    - fields:
      - name: node
        type: struct rbnode_type
      - name: querynum
        type: int
      - name: async
        type: int
      - name: cancelled
        type: int
      - name: cb
        type: ub_callback_type
      - name: cb_event
        type: ub_event_callback_type
      - name: '* cb_arg'
        type: void
      - name: '* unique_info'
        type: void
      - name: '* msg'
        type: uint8_t
      - name: msg_len
        type: size_t
      - name: msg_security
        type: enum sec_status
      - name: '* w'
        type: struct libworker
      - name: '* res'
        type: struct ub_result
      item_type: struct
      name: ctx_query
      pos:
        line_end: 184
        line_start: 153
        source_file: /src/unbound/libunbound/context.h
    typedefs: []
    union: []
- function_names:
  - htobe64
  - be64toh
  - be64toh
  - htobe64
  - be64toh
  - htobe64
  - testframe_init
  - testframe_deinit
  - testframe_lookup
  - testframe_store
  - cachedb_find_backend
  - cachedb_apply_cfg
  - cachedb_init
  - cachedb_deinit
  - cachedb_new
  - error_response
  - calc_hash
  - prep_data
  - good_expiry_and_qinfo
  - packed_rrset_ttl_subtract
  - adjust_msg_ttl
  - packed_rrset_ttl_set
  - set_msg_ttl
  - parse_data
  - cachedb_extcache_lookup
  - cachedb_extcache_store
  - cachedb_intcache_lookup
  - cachedb_intcache_store
  - cachedb_handle_query
  - cachedb_handle_response
  - cachedb_operate
  - cachedb_inform_super
  - cachedb_clear
  - cachedb_get_mem
  - cachedb_get_funcblock
  - cachedb_is_enabled
  - cachedb_msg_remove
  - cachedb_msg_remove_qinfo
  source_file: /src/unbound/cachedb/cachedb.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: lock
        type: lock_basic_type
      - name: '* stored_key'
        type: char
      - name: '* stored_data'
        type: uint8_t
      - name: stored_datalen
        type: size_t
      item_type: struct
      name: testframe_moddata
      pos:
        line_end: 101
        line_start: 92
        source_file: /src/unbound/cachedb/cachedb.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/cachedb/cachedb.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CACHEDB_HASHSIZE
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/unbound/cachedb/cachedb.h
      type_or_value: '256 '
    structs:
    - fields:
      - name: enabled
        type: int
      - name: '* backend'
        type: struct cachedb_backend
      - name: '* backend_data'
        type: void
      item_type: struct
      name: cachedb_env
      pos:
        line_end: 59
        line_start: 50
        source_file: /src/unbound/cachedb/cachedb.h
    - fields:
      - name: todo
        type: int
      item_type: struct
      name: cachedb_qstate
      pos:
        line_end: 66
        line_start: 64
        source_file: /src/unbound/cachedb/cachedb.h
    - fields:
      - name: '* name'
        type: char
      - name: (*init)(struct module_env*, struct cachedb_env*)
        type: int
      - name: (*deinit)(struct module_env*, struct cachedb_env*)
        type: void
      - name: "(*lookup)(struct module_env*, struct cachedb_env*, char*,\n\t\tstruct
          sldns_buffer*)"
        type: int
      - name: "(*store)(struct module_env*, struct cachedb_env*, char*,\n\t\tuint8_t*,
          size_t, time_t)"
        type: void
      item_type: struct
      name: cachedb_backend
      pos:
        line_end: 88
        line_start: 71
        source_file: /src/unbound/cachedb/cachedb.h
    typedefs: []
    union: []
- function_names:
  - moddata_clean
  - redis_connect
  - set_timeout
  - redis_init
  - redis_deinit
  - redis_command
  - redis_lookup
  - redis_store
  source_file: /src/unbound/cachedb/redis.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: REDIS_RECONNECT_ATTEMPT_LIMIT
      pos:
        line_end: 101
        line_start: 100
        source_file: /src/unbound/cachedb/redis.c
      type_or_value: '3'
    - item_type: preproc_def
      name: REDIS_LOOKUP_MAX_BUF_LEN
      pos:
        line_end: 520
        line_start: 519
        source_file: /src/unbound/cachedb/redis.c
      type_or_value: "4\t\t\t\t"
    - item_type: preproc_def
      name: REDIS_STORE_MAX_BUF_LEN
      pos:
        line_end: 584
        line_start: 583
        source_file: /src/unbound/cachedb/redis.c
      type_or_value: "7\t\t\t"
    structs:
    - fields:
      - name: '** ctxs'
        type: redisContext
      - name: '** replica_ctxs'
        type: redisContext
      - name: numctxs
        type: int
      - name: '* server_host'
        type: char
      - name: '* replica_server_host'
        type: char
      - name: server_port
        type: int
      - name: replica_server_port
        type: int
      - name: '* server_path'
        type: char
      - name: '* replica_server_path'
        type: char
      - name: '* server_password'
        type: char
      - name: '* replica_server_password'
        type: char
      - name: command_timeout
        type: struct timeval
      - name: replica_command_timeout
        type: struct timeval
      - name: connect_timeout
        type: struct timeval
      - name: replica_connect_timeout
        type: struct timeval
      - name: reconnect_interval
        type: struct timeval
      - name: replica_reconnect_interval
        type: struct timeval
      - name: reconnect_attempts
        type: int
      - name: replica_reconnect_attempts
        type: int
      - name: wait_lock
        type: lock_basic_type
      - name: replica_wait_lock
        type: lock_basic_type
      - name: reconnect_wait
        type: struct timeval
      - name: replica_reconnect_wait
        type: struct timeval
      - name: logical_db
        type: int
      - name: replica_logical_db
        type: int
      - name: set_with_ex_available
        type: int
      item_type: struct
      name: redis_moddata
      pos:
        line_end: 96
        line_start: 55
        source_file: /src/unbound/cachedb/redis.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/cachedb/redis.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/dynlibmod/dynlibmod.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '*cb'
        type: void
      - name: '*cb_arg'
        type: void
      item_type: struct
      name: cb_pair
      pos:
        line_end: 97
        line_start: 94
        source_file: /src/unbound/dynlibmod/dynlibmod.h
    - fields:
      - name: '* fname'
        type: char
      - name: '* dynamic_library'
        type: void
      - name: func_init
        type: func_init_t
      - name: func_deinit
        type: func_deinit_t
      - name: func_operate
        type: func_operate_t
      - name: func_inform
        type: func_inform_t
      - name: func_clear
        type: func_clear_t
      - name: func_get_mem
        type: func_get_mem_t
      - name: inplace_cb_delete_wrapped
        type: inplace_cb_delete_wrapped_t
      - name: inplace_cb_register_wrapped
        type: inplace_cb_register_wrapped_t
      - name: '*dyn_env'
        type: void
      item_type: struct
      name: dynlibmod_env
      pos:
        line_end: 135
        line_start: 113
        source_file: /src/unbound/dynlibmod/dynlibmod.h
    typedefs:
    - item_type: typedef
      name: (*func_init_t)(struct module_env*, int)
      pos:
        line_end: 103
        line_start: 103
        source_file: /src/unbound/dynlibmod/dynlibmod.h
      type: int
    - item_type: typedef
      name: (*func_deinit_t)(struct module_env*, int)
      pos:
        line_end: 104
        line_start: 104
        source_file: /src/unbound/dynlibmod/dynlibmod.h
      type: void
    - item_type: typedef
      name: (*func_operate_t)(struct module_qstate*, enum module_ev, int, struct outbound_entry*)
      pos:
        line_end: 105
        line_start: 105
        source_file: /src/unbound/dynlibmod/dynlibmod.h
      type: void
    - item_type: typedef
      name: (*func_inform_t)(struct module_qstate*, int, struct module_qstate*)
      pos:
        line_end: 106
        line_start: 106
        source_file: /src/unbound/dynlibmod/dynlibmod.h
      type: void
    - item_type: typedef
      name: (*func_clear_t)(struct module_qstate*, int)
      pos:
        line_end: 107
        line_start: 107
        source_file: /src/unbound/dynlibmod/dynlibmod.h
      type: void
    - item_type: typedef
      name: (*func_get_mem_t)(struct module_env*, int)
      pos:
        line_end: 108
        line_start: 108
        source_file: /src/unbound/dynlibmod/dynlibmod.h
      type: size_t
    - item_type: typedef
      name: (*inplace_cb_delete_wrapped_t)(struct module_env*, enum inplace_cb_list_type,
        int)
      pos:
        line_end: 109
        line_start: 109
        source_file: /src/unbound/dynlibmod/dynlibmod.h
      type: void
    - item_type: typedef
      name: (*inplace_cb_register_wrapped_t)(void*, enum inplace_cb_list_type, void*,
        struct module_env*, int)
      pos:
        line_end: 110
        line_start: 110
        source_file: /src/unbound/dynlibmod/dynlibmod.h
      type: int
    union: []
- function_names:
  - log_dlerror
  - open_library
  - close_library
  - log_dlerror
  - open_library
  - close_library
  - dynlibmod_init
  - dynlibmod_deinit
  - dynlibmod_operate
  - dynlibmod_inform_super
  - dynlibmod_clear
  - dynlibmod_get_mem
  - dynlib_inplace_cb_reply_generic
  - dynlib_inplace_cb_query_generic
  - dynlib_inplace_cb_edns_back_parsed
  - dynlib_inplace_cb_query_response
  - inplace_cb_register_wrapped
  - inplace_cb_delete_wrapped
  - dynlibmod_get_funcblock
  source_file: /src/unbound/dynlibmod/dynlibmod.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: __DYNMOD
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/unbound/dynlibmod/dynlibmod.c
      type_or_value: HMODULE
    - item_type: preproc_def
      name: __DYNSYM
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/unbound/dynlibmod/dynlibmod.c
      type_or_value: FARPROC
    - item_type: preproc_def
      name: __LOADSYM
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/unbound/dynlibmod/dynlibmod.c
      type_or_value: GetProcAddress
    - item_type: preproc_def
      name: __DYNMOD
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/unbound/dynlibmod/dynlibmod.c
      type_or_value: void*
    - item_type: preproc_def
      name: __DYNSYM
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/unbound/dynlibmod/dynlibmod.c
      type_or_value: void*
    - item_type: preproc_def
      name: __LOADSYM
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/unbound/dynlibmod/dynlibmod.c
      type_or_value: dlsym
    structs: []
    typedefs: []
    union: []
- function_names:
  - init
  - deinit
  - operate
  - inform_super
  - clear
  - get_mem
  - reply_callback
  source_file: /src/unbound/dynlibmod/examples/helloworld.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EXPORT
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/unbound/dynlibmod/examples/helloworld.c
      type_or_value: __declspec(dllexport)
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/unbound/winrc/unbound-service-install.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/winrc/w_inst.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - main
  source_file: /src/unbound/winrc/unbound-service-remove.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/winrc/win_svc.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SERVICE_NAME
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/unbound/winrc/win_svc.h
      type_or_value: '"unbound"'
    - item_type: preproc_def
      name: MSG_GENERIC_SUCCESS
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/unbound/winrc/win_svc.h
      type_or_value: ((DWORD)0x20010001L)
    - item_type: preproc_def
      name: MSG_GENERIC_INFO
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/unbound/winrc/win_svc.h
      type_or_value: ((DWORD)0x60010002L)
    - item_type: preproc_def
      name: MSG_GENERIC_WARN
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/unbound/winrc/win_svc.h
      type_or_value: ((DWORD)0xA0010003L)
    - item_type: preproc_def
      name: MSG_GENERIC_ERR
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/unbound/winrc/win_svc.h
      type_or_value: ((DWORD)0xE0010004L)
    structs: []
    typedefs: []
    union: []
- function_names:
  - report_status
  - hdlr
  - reportev
  - lookup_reg_str
  - lookup_reg_int
  - waitforubanchor
  - call_root_update
  - service_init
  - service_deinit
  - ATTR_UNUSED
  - service_main
  - service_start
  - wsvc_command_option
  - worker_win_stop_cb
  - waitforit
  - win_do_cron
  - set_cron_timer
  - wsvc_cron_cb
  - wsvc_setup_worker
  - wsvc_desetup_worker
  source_file: /src/unbound/winrc/win_svc.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - wsvc_err2str
  - fatal_win
  - event_reg_install
  - event_reg_remove
  - quote_it
  - change
  - wsvc_install
  - wsvc_remove
  - wsvc_rc_start
  - wsvc_rc_stop
  source_file: /src/unbound/winrc/w_inst.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - usage
  - fatal
  - do_lookup
  - do_print
  - do_update
  - main
  source_file: /src/unbound/winrc/anchor-update.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - ipsecmod_apply_cfg
  - ipsecmod_init
  - ipsecmod_deinit
  - ipsecmod_new
  - ipsecmod_error
  - generate_request
  - domainname_has_safe_characters
  - ipseckey_has_safe_characters
  - call_hook
  - ipsecmod_handle_query
  - ipsecmod_handle_response
  - ipsecmod_operate
  - ipsecmod_inform_super
  - ipsecmod_clear
  - ipsecmod_get_mem
  - ipsecmod_get_funcblock
  source_file: /src/unbound/ipsecmod/ipsecmod.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/ipsecmod/ipsecmod-whitelist.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - whitelist_str_cfg
  - read_whitelist
  - ipsecmod_whitelist_apply_cfg
  - whitelist_free
  - whitelist_get_mem
  - ipsecmod_whitelist_delete
  - ipsecmod_domain_is_whitelisted
  - ipsecmod_whitelist_get_mem
  source_file: /src/unbound/ipsecmod/ipsecmod-whitelist.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/ipsecmod/ipsecmod.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* whitelist'
        type: rbtree_type
      item_type: struct
      name: ipsecmod_env
      pos:
        line_end: 55
        line_start: 52
        source_file: /src/unbound/ipsecmod/ipsecmod.h
    - fields:
      - name: enabled
        type: int
      - name: is_whitelisted
        type: int
      - name: '* ipseckey_rrset'
        type: struct ub_packed_rrset_key
      - name: ipseckey_done
        type: int
      item_type: struct
      name: ipsecmod_qstate
      pos:
        line_end: 73
        line_start: 60
        source_file: /src/unbound/ipsecmod/ipsecmod.h
    typedefs: []
    union: []
- function_names:
  - priv_create
  - priv_delete
  - read_addrs
  - read_names
  - priv_apply_cfg
  - priv_lookup_addr
  - priv_lookup_name
  - priv_get_mem
  - svcb_ipv4hint_contains_priv_addr
  - svcb_ipv6hint_contains_priv_addr
  - svcb_rr_contains_priv_addr
  - priv_svcb_rrset_bad
  - priv_rrset_bad
  source_file: /src/unbound/iterator/iter_priv.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fwd_cmp
  - forwards_create
  - fwd_zone_free
  - delfwdnode
  - fwd_del_tree
  - forwards_delete
  - forwards_insert_data
  - fwd_zone_find
  - forwards_insert
  - fwd_init_parents
  - RBTREE_FOR
  - read_fwds_name
  - read_fwds_host
  - read_fwds_addr
  - read_forwards
  - fwd_add_stub_hole
  - make_stub_holes
  - make_auth_holes
  - forwards_apply_cfg
  - forwards_find
  - forwards_lookup
  - forwards_lookup_root
  - next_root_locked
  - forwards_next_root
  - forwards_get_mem
  - RBTREE_FOR
  - forwards_add_zone
  - forwards_delete_zone
  - forwards_add_stub_hole
  - forwards_delete_stub_hole
  - forwards_swap_tree
  source_file: /src/unbound/iterator/iter_fwd.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - response_type_from_cache
  - response_type_from_server
  source_file: /src/unbound/iterator/iter_resptype.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - iter_init
  - iter_deinit
  - iter_new
  - next_state
  - final_state
  - error_supers
  - error_response
  - error_response_cache
  - prepend_is_duplicate
  - iter_prepend
  - iter_find_rrset_in_prepend_answer
  - iter_add_prepend_answer
  - iter_add_prepend_auth
  - handle_cname_response
  - fill_fail_addr
  - print_fail_addr
  - errinf_reply
  - can_have_last_resort
  - is_caps_whitelisted
  - target_count_create
  - target_count_store
  - target_count_increase
  - target_count_increase_nx
  - target_count_increase_global_quota
  - generate_sub_request
  - prime_root
  - prime_stub
  - auth_zone_delegpt
  - generate_a_aaaa_check
  - generate_ns_check
  - generate_dnskey_prefetch
  - forward_request
  - processInitRequest
  - processInitRequest2
  - processInitRequest3
  - generate_parentside_target_query
  - generate_target_query
  - query_for_targets
  - processLastResort
  - processDSNSFind
  - check_waiting_queries
  - processQueryTargets
  - find_NS
  - processQueryResponse
  - prime_supers
  - processPrimeResponse
  - processTargetResponse
  - processDSNSResponse
  - processClassResponse
  - processCollectClass
  - processFinished
  - iter_inform_super
  - iter_handle
  - process_request
  - process_response
  - iter_operate
  - iter_clear
  - iter_get_mem
  - iter_get_funcblock
  - iter_state_to_string
  - iter_state_is_responsestate
  source_file: /src/unbound/iterator/iterator.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fetch_fill
  - read_fetch_policy
  - caps_white_create
  - caps_free
  - caps_white_delete
  - caps_white_apply_cfg
  - nat64_apply_cfg
  - iter_apply_cfg
  - iter_filter_unsuitable
  - iter_fill_rtt
  - rtt_compare
  - nth_rtt
  - iter_filter_order
  - iter_server_selection
  - dns_alloc_msg
  - dns_copy_msg
  - iter_dns_store
  - iter_ns_probability
  - causes_cycle
  - iter_mark_cycle_targets
  - iter_mark_pside_cycle_targets
  - iter_dp_is_useless
  - iter_qname_indicates_dnssec
  - iter_indicates_dnssec
  - iter_msg_has_dnssec
  - iter_msg_from_zone
  - rrset_equal
  - rrset_canonical_sort_cmp
  - reply_equal
  - caps_strip_reply
  - caps_failed_rcode
  - iter_store_parentside_rrset
  - reply_get_NS_rrset
  - iter_store_parentside_NS
  - iter_store_parentside_neg
  - iter_lookup_parent_NS_from_cache
  - iter_lookup_parent_glue_from_cache
  - iter_get_next_root
  - iter_scrub_ds
  - iter_scrub_nxdomain
  - iter_dec_attempts
  - iter_merge_retry_counts
  - iter_ds_toolow
  - iter_dp_cangodown
  - iter_stub_fwd_no_cache
  - iterator_set_ip46_support
  - limit_nsec_ttl
  - iter_make_minimal
  - deleg_port_number
  - shorten_answer_cname
  source_file: /src/unbound/iterator/iter_utils.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SUSPICION_RECENT_EXPIRY
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/unbound/iterator/iter_utils.c
      type_or_value: '86400'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/iterator/iter_hints.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: lock
        type: lock_rw_type
      - name: tree
        type: rbtree_type
      item_type: struct
      name: iter_hints
      pos:
        line_end: 67
        line_start: 53
        source_file: /src/unbound/iterator/iter_hints.h
    - fields:
      - name: node
        type: struct name_tree_node
      - name: '* dp'
        type: struct delegpt
      - name: noprime
        type: uint8_t
      item_type: struct
      name: iter_hints_stub
      pos:
        line_end: 79
        line_start: 72
        source_file: /src/unbound/iterator/iter_hints.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/iterator/iter_fwd.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: lock
        type: lock_rw_type
      - name: '* tree'
        type: rbtree_type
      item_type: struct
      name: iter_forwards
      pos:
        line_end: 66
        line_start: 52
        source_file: /src/unbound/iterator/iter_fwd.h
    - fields:
      - name: node
        type: rbnode_type
      - name: '* name'
        type: uint8_t
      - name: namelen
        type: size_t
      - name: namelabs
        type: int
      - name: '* dp'
        type: struct delegpt
      - name: '* parent'
        type: struct iter_forward_zone
      - name: dclass
        type: uint16_t
      item_type: struct
      name: iter_forward_zone
      pos:
        line_end: 90
        line_start: 71
        source_file: /src/unbound/iterator/iter_fwd.h
    typedefs: []
    union: []
- function_names:
  - hints_create
  - hints_stub_free
  - delhintnode
  - hints_del_tree
  - hints_delete
  - ah
  - compile_time_root_prime
  - hints_insert
  - read_stubs_name
  - read_stubs_host
  - read_stubs_addr
  - read_stubs
  - read_root_hints
  - read_root_hints_list
  - hints_apply_cfg
  - hints_find
  - hints_find_root
  - hints_lookup_stub
  - hints_next_root
  - hints_get_mem
  - RBTREE_FOR
  - hints_add_stub
  - hints_delete_stub
  - hints_swap_tree
  source_file: /src/unbound/iterator/iter_hints.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - donotq_create
  - donotq_delete
  - donotq_insert
  - donotq_str_cfg
  - read_donotq
  - donotq_apply_cfg
  - donotq_lookup
  - donotq_get_mem
  source_file: /src/unbound/iterator/iter_donotq.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/iterator/iter_utils.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ITERATOR_NAME_CACHELOOKUP_MAX
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/unbound/iterator/iter_utils.h
      type_or_value: '3'
    - item_type: preproc_def
      name: ITERATOR_NAME_CACHELOOKUP_MAX_PSIDE
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/unbound/iterator/iter_utils.h
      type_or_value: '5'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/iterator/iter_donotq.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* region'
        type: struct regional
      - name: tree
        type: rbtree_type
      item_type: struct
      name: iter_donotq
      pos:
        line_end: 61
        line_start: 52
        source_file: /src/unbound/iterator/iter_donotq.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/iterator/iter_resptype.h
  types:
    enum:
    - enumerators:
      - name: RESPONSE_TYPE_UNTYPED
        value: '0'
      - name: RESPONSE_TYPE_REFERRAL
      - name: RESPONSE_TYPE_CNAME
      - name: RESPONSE_TYPE_ANSWER
      - name: RESPONSE_TYPE_THROWAWAY
      - name: RESPONSE_TYPE_LAME
      - name: RESPONSE_TYPE_REC_LAME
      item_type: enum
      name: response_type
      pos:
        line_end: 92
        line_start: 52
        source_file: /src/unbound/iterator/iter_resptype.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - delegpt_create
  - delegpt_copy
  - delegpt_set_name
  - delegpt_add_ns
  - delegpt_find_ns
  - delegpt_find_addr
  - delegpt_add_target
  - delegpt_add_addr
  - delegpt_count_ns
  - delegpt_count_addr
  - delegpt_log
  - delegpt_addr_on_result_list
  - delegpt_usable_list_remove_addr
  - delegpt_add_to_result_list
  - delegpt_add_unused_targets
  - delegpt_count_targets
  - delegpt_count_missing_targets
  - find_NS
  - delegpt_from_message
  - delegpt_rrset_add_ns
  - delegpt_add_rrset_A
  - delegpt_add_rrset_AAAA
  - delegpt_add_rrset
  - delegpt_mark_neg
  - delegpt_add_neg_msg
  - delegpt_no_ipv6
  - delegpt_no_ipv4
  - delegpt_create_mlc
  - delegpt_free_mlc
  - delegpt_set_name_mlc
  - delegpt_add_ns_mlc
  - delegpt_add_addr_mlc
  - delegpt_add_target_mlc
  - delegpt_get_mem
  source_file: /src/unbound/iterator/iter_delegpt.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/iterator/iter_priv.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* region'
        type: struct regional
      - name: a
        type: rbtree_type
      - name: n
        type: rbtree_type
      item_type: struct
      name: iter_priv
      pos:
        line_end: 70
        line_start: 54
        source_file: /src/unbound/iterator/iter_priv.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/iterator/iter_scrub.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/iterator/iterator.h
  types:
    enum:
    - enumerators:
      - name: INIT_MINIMISE_STATE
        value: '0'
      - name: MINIMISE_STATE
      - name: SKIP_MINIMISE_STATE
      - name: DONOT_MINIMISE_STATE
      item_type: enum
      name: minimisation_state
      pos:
        line_end: 200
        line_start: 182
        source_file: /src/unbound/iterator/iterator.h
    - enumerators:
      - name: INIT_REQUEST_STATE
        value: '0'
      - name: INIT_REQUEST_3_STATE
      - name: QUERYTARGETS_STATE
      - name: QUERY_RESP_STATE
      - name: INIT_REQUEST_2_STATE
      - name: PRIME_RESP_STATE
      - name: COLLECT_CLASS_STATE
      - name: DSNS_FIND_STATE
      - name: FINISHED_STATE
      item_type: enum
      name: iter_state
      pos:
        line_end: 252
        line_start: 205
        source_file: /src/unbound/iterator/iterator.h
    - enumerators:
      - name: TARGET_COUNT_REF
        value: '0'
      - name: TARGET_COUNT_MAX
      - name: TARGET_COUNT_QUERIES
      - name: TARGET_COUNT_NX
      - name: TARGET_COUNT_GLOBAL_QUOTA
      item_type: enum
      name: target_count_variables
      pos:
        line_end: 270
        line_start: 257
        source_file: /src/unbound/iterator/iterator.h
    preproc_defs:
    - item_type: preproc_def
      name: MAX_TARGET_COUNT
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/unbound/iterator/iterator.h
      type_or_value: '64'
    - item_type: preproc_def
      name: MAX_DP_TARGET_COUNT
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/unbound/iterator/iterator.h
      type_or_value: '16'
    - item_type: preproc_def
      name: MAX_TARGET_NX
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/unbound/iterator/iterator.h
      type_or_value: '5'
    - item_type: preproc_def
      name: MAX_TARGET_NX_FALLBACK
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/unbound/iterator/iterator.h
      type_or_value: (MAX_TARGET_NX*2)
    - item_type: preproc_def
      name: MAX_REFERRAL_COUNT
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/unbound/iterator/iterator.h
      type_or_value: '130'
    - item_type: preproc_def
      name: DNSSEC_LAME_DETECT_COUNT
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/unbound/iterator/iterator.h
      type_or_value: '4'
    - item_type: preproc_def
      name: MAX_MINIMISE_COUNT
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/unbound/iterator/iterator.h
      type_or_value: '10'
    - item_type: preproc_def
      name: MAX_MINIMISE_TIMEOUT_COUNT
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/unbound/iterator/iterator.h
      type_or_value: '3'
    - item_type: preproc_def
      name: MINIMISE_ONE_LAB
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/unbound/iterator/iterator.h
      type_or_value: '4'
    - item_type: preproc_def
      name: MINIMISE_MULTIPLE_LABS
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/unbound/iterator/iterator.h
      type_or_value: (MAX_MINIMISE_COUNT - MINIMISE_ONE_LAB)
    - item_type: preproc_def
      name: TARGET_FETCH_STOP
      pos:
        line_end: 87
        line_start: 86
        source_file: /src/unbound/iterator/iterator.h
      type_or_value: '3'
    - item_type: preproc_def
      name: RTT_BAND
      pos:
        line_end: 104
        line_start: 103
        source_file: /src/unbound/iterator/iterator.h
      type_or_value: '400'
    - item_type: preproc_def
      name: EMPTY_NODATA_RETRY_COUNT
      pos:
        line_end: 106
        line_start: 105
        source_file: /src/unbound/iterator/iterator.h
      type_or_value: '2'
    - item_type: preproc_def
      name: MAX_DSNS_FIND_COUNT
      pos:
        line_end: 111
        line_start: 110
        source_file: /src/unbound/iterator/iterator.h
      type_or_value: '20'
    structs:
    - fields:
      - name: use_nat64
        type: int
      - name: nat64_prefix_addr
        type: struct sockaddr_storage
      - name: nat64_prefix_addrlen
        type: socklen_t
      - name: nat64_prefix_net
        type: int
      item_type: struct
      name: iter_nat64
      pos:
        line_end: 127
        line_start: 115
        source_file: /src/unbound/iterator/iterator.h
    - fields:
      - name: supports_ipv6
        type: int
      - name: supports_ipv4
        type: int
      - name: nat64
        type: struct iter_nat64
      - name: '* donotq'
        type: struct iter_donotq
      - name: '* priv'
        type: struct iter_priv
      - name: '* caps_white'
        type: struct rbtree_type
      - name: max_dependency_depth
        type: int
      - name: '* target_fetch_policy'
        type: int
      - name: queries_ratelimit_lock
        type: lock_basic_type
      - name: num_queries_ratelimited
        type: size_t
      - name: outbound_msg_retry
        type: int
      - name: max_sent_count
        type: int
      - name: max_query_restarts
        type: int
      item_type: struct
      name: iter_env
      pos:
        line_end: 177
        line_start: 132
        source_file: /src/unbound/iterator/iterator.h
    - fields:
      - name: state
        type: enum iter_state
      - name: final_state
        type: enum iter_state
      - name: depth
        type: int
      - name: '* response'
        type: struct dns_msg
      - name: '* an_prepend_list'
        type: struct iter_prep_list
      - name: '* an_prepend_last'
        type: struct iter_prep_list
      - name: '* ns_prepend_list'
        type: struct iter_prep_list
      - name: '* ns_prepend_last'
        type: struct iter_prep_list
      - name: qchase
        type: struct query_info
      - name: chase_flags
        type: uint16_t
      - name: chase_to_rd
        type: int
      - name: '* dp'
        type: struct delegpt
      - name: caps_fallback
        type: int
      - name: caps_server
        type: size_t
      - name: '* caps_reply'
        type: struct reply_info
      - name: '* caps_response'
        type: struct dns_msg
      - name: '* deleg_msg'
        type: struct dns_msg
      - name: num_target_queries
        type: int
      - name: num_current_queries
        type: int
      - name: query_restart_count
        type: int
      - name: referral_count
        type: int
      - name: sent_count
        type: int
      - name: '* target_count'
        type: int
      - name: dp_target_count
        type: int
      - name: '** nxns_dp'
        type: uint8_t
      - name: ratelimit_ok
        type: int
      - name: ratelimit_incremented
        type: int
      - name: '* store_parent_NS'
        type: struct delegpt
      - name: query_for_pside_glue
        type: int
      - name: '* pside_glue'
        type: struct ub_packed_rrset_key
      - name: '* dsns_point'
        type: uint8_t
      - name: dsns_point_len
        type: size_t
      - name: dsns_count
        type: int
      - name: dnssec_expected
        type: int
      - name: dnssec_lame_query
        type: int
      - name: wait_priming_stub
        type: int
      - name: refetch_glue
        type: int
      - name: empty_nodata_found
        type: int
      - name: msg_lame_empty
        type: int
      - name: msg_lame_referral
        type: int
      - name: outlist
        type: struct outbound_list
      - name: minimisation_state
        type: enum minimisation_state
      - name: caps_minimisation_state
        type: enum minimisation_state
      - name: qinfo_out
        type: struct query_info
      - name: minimise_count
        type: int
      - name: timeout_count
        type: int
      - name: auth_zone_response
        type: int
      - name: auth_zone_avoid
        type: int
      - name: scrub_failures
        type: int
      - name: parse_failures
        type: int
      - name: fail_addr
        type: "union {\n\t\tstruct in_addr in;\n#ifdef AF_INET6\n\t\tstruct in6_addr
          in6;\n#endif\n\t}"
      - name: fail_addr_type
        type: int
      item_type: struct
      name: iter_qstate
      pos:
        line_end: 498
        line_start: 275
        source_file: /src/unbound/iterator/iterator.h
    - fields:
      - name: '* next'
        type: struct iter_prep_list
      - name: '* rrset'
        type: struct ub_packed_rrset_key
      item_type: struct
      name: iter_prep_list
      pos:
        line_end: 508
        line_start: 503
        source_file: /src/unbound/iterator/iterator.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/iterator/iter_delegpt.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* name'
        type: uint8_t
      - name: namelen
        type: size_t
      - name: namelabs
        type: int
      - name: '* nslist'
        type: struct delegpt_ns
      - name: '* target_list'
        type: struct delegpt_addr
      - name: '* usable_list'
        type: struct delegpt_addr
      - name: '* result_list'
        type: struct delegpt_addr
      - name: bogus
        type: int
      - name: has_parent_side_NS
        type: uint8_t
      - name: fallback_to_parent_side_NS
        type: uint8_t
      - name: dp_type_mlc
        type: uint8_t
      - name: ssl_upstream
        type: uint8_t
      - name: tcp_upstream
        type: uint8_t
      - name: auth_dp
        type: uint8_t
      - name: no_cache
        type: int
      item_type: struct
      name: delegpt
      pos:
        line_end: 101
        line_start: 56
        source_file: /src/unbound/iterator/iter_delegpt.h
    - fields:
      - name: '* next'
        type: struct delegpt_ns
      - name: '* name'
        type: uint8_t
      - name: namelen
        type: size_t
      - name: cache_lookup_count
        type: int
      - name: resolved
        type: int
      - name: got4
        type: uint8_t
      - name: got6
        type: uint8_t
      - name: lame
        type: uint8_t
      - name: done_pside4
        type: uint8_t
      - name: done_pside6
        type: uint8_t
      - name: '* tls_auth_name'
        type: char
      - name: port
        type: int
      item_type: struct
      name: delegpt_ns
      pos:
        line_end: 145
        line_start: 106
        source_file: /src/unbound/iterator/iter_delegpt.h
    - fields:
      - name: '* next_result'
        type: struct delegpt_addr
      - name: '* next_usable'
        type: struct delegpt_addr
      - name: '* next_target'
        type: struct delegpt_addr
      - name: addr
        type: struct sockaddr_storage
      - name: addrlen
        type: socklen_t
      - name: attempts
        type: int
      - name: sel_rtt
        type: int
      - name: bogus
        type: uint8_t
      - name: lame
        type: uint8_t
      - name: dnsseclame
        type: uint8_t
      - name: '* tls_auth_name'
        type: char
      item_type: struct
      name: delegpt_addr
      pos:
        line_end: 177
        line_start: 150
        source_file: /src/unbound/iterator/iter_delegpt.h
    typedefs: []
    union: []
- function_names:
  - remove_rrset
  - has_additional
  - get_additional_name
  - mark_additional_rrset
  - parse_get_cname_target
  - synth_cname
  - synth_cname_rrset
  - pkt_contains_ns
  - pkt_strict_sub
  - pkt_sub
  - sub_of_pkt
  - soa_in_auth
  - type_allowed_in_authority_section
  - type_allowed_in_additional_section
  - shorten_rrset
  - shorten_rrsig
  - scrub_normalize
  - store_rrset
  - sanitize_nsec_is_overreach
  - scrub_sanitize_rr_length
  - scrub_sanitize
  - scrub_message
  source_file: /src/unbound/iterator/iter_scrub.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: RRSET_SCRUB_OK
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/unbound/iterator/iter_scrub.c
      type_or_value: '0x80'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/edns-subnet/subnet-whitelist.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* region'
        type: struct regional
      - name: upstream
        type: rbtree_type
      - name: dname
        type: rbtree_type
      item_type: struct
      name: ecs_whitelist
      pos:
        line_end: 66
        line_start: 52
        source_file: /src/unbound/edns-subnet/subnet-whitelist.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/edns-subnet/addrtree.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: KEYWIDTH
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/unbound/edns-subnet/addrtree.h
      type_or_value: '8'
    structs:
    - fields:
      - name: '*root'
        type: struct addrnode
      - name: node_count
        type: uint32_t
      - name: max_node_count
        type: uint32_t
      - name: size_bytes
        type: size_t
      - name: max_depth
        type: addrlen_t
      - name: (*delfunc)(void *, void *)
        type: void
      - name: '*env'
        type: void
      - name: (*sizefunc)(void *)
        type: size_t
      - name: '* first'
        type: struct addrnode
      - name: '*last'
        type: struct addrnode
      item_type: struct
      name: addrtree
      pos:
        line_end: 88
        line_start: 64
        source_file: /src/unbound/edns-subnet/addrtree.h
    - fields:
      - name: '*elem'
        type: void
      - name: ttl
        type: time_t
      - name: scope
        type: addrlen_t
      - name: only_match_scope_zero
        type: int
      - name: '*edge[2]'
        type: struct addredge
      - name: '*parent_edge'
        type: struct addredge
      - name: '*prev'
        type: struct addrnode
      - name: '*next'
        type: struct addrnode
      item_type: struct
      name: addrnode
      pos:
        line_end: 109
        line_start: 90
        source_file: /src/unbound/edns-subnet/addrtree.h
    - fields:
      - name: '*str'
        type: addrkey_t
      - name: len
        type: addrlen_t
      - name: '*node'
        type: struct addrnode
      - name: '*parent_node'
        type: struct addrnode
      - name: parent_index
        type: int
      item_type: struct
      name: addredge
      pos:
        line_end: 122
        line_start: 111
        source_file: /src/unbound/edns-subnet/addrtree.h
    typedefs:
    - item_type: typedef
      name: addrlen_t
      pos:
        line_end: 60
        line_start: 60
        source_file: /src/unbound/edns-subnet/addrtree.h
      type: uint8_t
    - item_type: typedef
      name: addrkey_t
      pos:
        line_end: 61
        line_start: 61
        source_file: /src/unbound/edns-subnet/addrtree.h
      type: uint8_t
    union: []
- function_names:
  - ecs_whitelist_create
  - ecs_whitelist_delete
  - upstream_insert
  - upstream_str_cfg
  - read_upstream
  - read_names
  - ecs_whitelist_apply_cfg
  - ecs_is_whitelisted
  - ecs_whitelist_get_mem
  source_file: /src/unbound/edns-subnet/subnet-whitelist.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/edns-subnet/edns-subnet.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EDNSSUBNET_ADDRFAM_IP4
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/unbound/edns-subnet/edns-subnet.h
      type_or_value: '1'
    - item_type: preproc_def
      name: EDNSSUBNET_ADDRFAM_IP6
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/unbound/edns-subnet/edns-subnet.h
      type_or_value: '2'
    structs:
    - fields:
      - name: subnet_addr_fam
        type: uint16_t
      - name: subnet_source_mask
        type: uint8_t
      - name: subnet_scope_mask
        type: uint8_t
      - name: subnet_addr[INET6_SIZE]
        type: uint8_t
      - name: subnet_validdata
        type: int
      item_type: struct
      name: ecs_data
      pos:
        line_end: 57
        line_start: 51
        source_file: /src/unbound/edns-subnet/edns-subnet.h
    typedefs: []
    union: []
- function_names:
  - edge_create
  - node_create
  - node_size
  - addrtree_create
  - clean_node
  - lru_pop
  - lru_push
  - lru_update
  - purge_node
  - lru_cleanup
  - addrtree_size
  - addrtree_delete
  - getbit
  - cmpbit
  - bits_common
  - issub
  - addrtree_insert
  - addrtree_find
  - unittest_wrapper_addrtree_cmpbit
  - unittest_wrapper_addrtree_bits_common
  - unittest_wrapper_addrtree_getbit
  - unittest_wrapper_addrtree_issub
  source_file: /src/unbound/edns-subnet/addrtree.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - subnet_data_delete
  - msg_cache_sizefunc
  - subnet_new_qstate
  - subnet_ecs_opt_list_append
  - ecs_whitelist_check
  - subnet_markdel
  - subnetmod_init
  - subnetmod_deinit
  - cp_edns_bad_response
  - delfunc
  - sizefunc
  - get_tree
  - update_cache
  - lookup_check_servfail
  - lookup_and_reply
  - common_prefix
  - generate_sub_request
  - generate_lookup_without_subnet
  - eval_response
  - parse_subnet_option
  - subnet_option_from_ss
  - ecs_query_response
  - subnet_log_print
  - ecs_edns_back_parsed
  - subnetmod_operate
  - subnetmod_clear
  - subnetmod_inform_super
  - subnetmod_get_mem
  - subnetmod_get_funcblock
  - unittest_wrapper_subnetmod_sizefunc
  source_file: /src/unbound/edns-subnet/subnetmod.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/edns-subnet/subnetmod.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* subnet_msg_cache'
        type: struct slabhash
      - name: '* whitelist'
        type: struct ecs_whitelist
      - name: alloc
        type: struct alloc_cache
      - name: biglock
        type: lock_rw_type
      - name: num_msg_cache
        type: size_t
      - name: num_msg_nocache
        type: size_t
      item_type: struct
      name: subnet_env
      pos:
        line_end: 68
        line_start: 54
        source_file: /src/unbound/edns-subnet/subnetmod.h
    - fields:
      - name: '* tree4'
        type: struct addrtree
      - name: '* tree6'
        type: struct addrtree
      - name: ttl_servfail
        type: time_t
      - name: ede_fail
        type: sldns_ede_code
      - name: '* reason_fail'
        type: char
      item_type: struct
      name: subnet_msg_cache_data
      pos:
        line_end: 83
        line_start: 70
        source_file: /src/unbound/edns-subnet/subnetmod.h
    - fields:
      - name: qinfo_hash
        type: hashvalue_type
      - name: qinfo_hash_calculated
        type: int
      - name: ecs_client_in
        type: struct ecs_data
      - name: ecs_client_out
        type: struct ecs_data
      - name: ecs_server_in
        type: struct ecs_data
      - name: ecs_server_out
        type: struct ecs_data
      - name: subnet_downstream
        type: int
      - name: subnet_sent
        type: int
      - name: subnet_sent_no_subnet
        type: int
      - name: track_max_scope
        type: int
      - name: max_scope
        type: uint8_t
      - name: started_no_cache_store
        type: int
      - name: started_no_cache_lookup
        type: int
      - name: wait_subquery
        type: int
      - name: wait_subquery_done
        type: int
      - name: is_subquery_nonsubnet
        type: int
      - name: is_subquery_scopezero
        type: int
      item_type: struct
      name: subnet_qstate
      pos:
        line_end: 122
        line_start: 85
        source_file: /src/unbound/edns-subnet/subnetmod.h
    typedefs: []
    union: []
- function_names:
  - copy_clear
  source_file: /src/unbound/edns-subnet/edns-subnet.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/respip/respip.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* region'
        type: struct regional
      - name: ip_tree
        type: struct rbtree_type
      - name: lock
        type: lock_rw_type
      - name: '* const* tagname'
        type: char
      - name: num_tags
        type: int
      item_type: struct
      name: respip_set
      pos:
        line_end: 29
        line_start: 22
        source_file: /src/unbound/respip/respip.h
    - fields:
      - name: node
        type: struct addr_tree_node
      - name: lock
        type: lock_rw_type
      - name: '* taglist'
        type: uint8_t
      - name: taglen
        type: size_t
      - name: action
        type: enum respip_action
      - name: '* data'
        type: struct ub_packed_rrset_key
      item_type: struct
      name: resp_addr
      pos:
        line_end: 46
        line_start: 33
        source_file: /src/unbound/respip/respip.h
    - fields:
      - name: '* taglist'
        type: uint8_t
      - name: taglen
        type: size_t
      - name: '* tag_actions'
        type: uint8_t
      - name: tag_actions_size
        type: size_t
      - name: '** tag_datas'
        type: struct config_strlist
      - name: tag_datas_size
        type: size_t
      - name: '* view'
        type: struct view
      - name: '* view_name'
        type: char
      item_type: struct
      name: respip_client_info
      pos:
        line_end: 76
        line_start: 63
        source_file: /src/unbound/respip/respip.h
    - fields:
      - name: action
        type: enum respip_action
      - name: rpz_used
        type: int
      - name: rpz_log
        type: int
      - name: rpz_disabled
        type: int
      - name: '* log_name'
        type: char
      - name: rpz_cname_override
        type: int
      - name: '* addrinfo'
        type: struct respip_addr_info
      item_type: struct
      name: respip_action_info
      pos:
        line_end: 91
        line_start: 83
        source_file: /src/unbound/respip/respip.h
    typedefs: []
    union: []
- function_names:
  - respip_set_create
  - resp_addr_del
  - respip_set_delete
  - respip_set_get_tree
  - respip_sockaddr_find_or_create
  - respip_sockaddr_delete
  - respip_find_or_create
  - respip_tag_cfg
  - respip_action_cfg
  - new_rrset
  - respip_enter_rr
  - respip_enter_rrstr
  - respip_data_cfg
  - respip_set_apply_cfg
  - respip_global_apply_cfg
  - respip_views_apply_cfg
  - respip_copy_rrset
  - respip_init
  - respip_deinit
  - rdata2sockaddr
  - respip_addr_lookup
  - respip_data_answer
  - respip_nodata_answer
  - populate_action_info
  - respip_use_rpz
  - respip_rewrite_reply
  - generate_cname_request
  - respip_operate
  - respip_merge_cname
  - respip_inform_super
  - respip_clear
  - respip_get_mem
  - respip_get_funcblock
  - resp_addr_get_action
  - resp_addr_get_rrset
  - respip_set_is_empty
  - respip_inform_print
  - respip_set_get_mem
  - respip_set_swap_tree
  source_file: /src/unbound/respip/respip.c
  types:
    enum:
    - enumerators:
      - name: RESPIP_INIT
        value: '0'
      - name: RESPIP_SUBQUERY_FINISHED
      item_type: enum
      name: respip_state
      pos:
        line_end: 49
        line_start: 38
        source_file: /src/unbound/respip/respip.c
    preproc_defs: []
    structs:
    - fields:
      - name: addr
        type: struct sockaddr_storage
      - name: addrlen
        type: socklen_t
      - name: net
        type: int
      item_type: struct
      name: respip_addr_info
      pos:
        line_end: 35
        line_start: 31
        source_file: /src/unbound/respip/respip.c
    - fields:
      - name: state
        type: enum respip_state
      item_type: struct
      name: respip_qstate
      pos:
        line_end: 54
        line_start: 52
        source_file: /src/unbound/respip/respip.c
    typedefs: []
    union: []
- function_names:
  - parse_keyword
  - replay_moment_delete
  - replay_range_delete
  - strip_end_white
  - replay_range_read
  - read_file_content
  - read_assign_step
  - replay_moment_read
  - make_scenario
  - replay_scenario_read
  - replay_scenario_delete
  - first_timer
  - replay_get_oldest_timer
  - replay_var_compare
  - macro_store_create
  - del_macro
  - macro_store_delete
  - macro_length
  - do_buf_insert
  - do_macro_recursion
  - macro_getvar
  - do_macro_variable
  - do_macro_ctime
  - perform_arith
  - do_macro_arith
  - do_macro_range
  - macro_expand
  - macro_process
  - macro_lookup
  - macro_print_debug
  - RBTREE_FOR
  - macro_assign
  - tb_assert
  - testbound_selftest
  source_file: /src/unbound/testcode/replay.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_LINE_LEN
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/unbound/testcode/replay.c
      type_or_value: '10240'
    structs: []
    typedefs: []
    union: []
- function_names:
  - addrtree_inconsistent_subtree
  - addrtree_inconsistent
  - randomkey
  - elemfree
  - consistency_test
  - issub_test
  - getbit_test
  - bits_common_test
  - cmpbit_test
  - ecs_test
  source_file: /src/unbound/testcode/unitecs.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - tcpid_addmore
  - tcpid_fillup
  - tcpid_test
  - check_tree_and_list
  - create_pending_tcp
  - empty_tree
  - check_removal
  - check_snip
  - tcp_reuse_tree_list_test
  - check_waiting_tcp_list
  - waiting_tcp_list_clear
  - check_waiting_tcp_removal
  - waiting_tcp_list_test
  - check_reuse_write_wait
  - reuse_write_wait_clear
  - check_reuse_write_wait_removal
  - reuse_write_wait_test
  - shared_port_test_ifs
  - pif_list_contains
  - pif_list_contains_items
  - shared_port_test_port
  - tcpreuse_test
  source_file: /src/unbound/testcode/unittcpreuse.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_TCP_WAITING_NODES
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/unbound/testcode/unittcpreuse.c
      type_or_value: '5'
    structs: []
    typedefs: []
    union: []
- function_names:
  - print_neg_cache
  - RBTREE_FOR
  - RBTREE_FOR
  - RBTREE_FOR
  - get_random_zone
  - get_random_data
  - add_item
  - remove_item
  - sumtrees_all
  - RBTREE_FOR
  - sumtrees_inuse
  - RBTREE_FOR
  - check_lru
  - sum_subtree_inuse
  - RBTREE_FOR
  - sum_zone_subtree_inuse
  - RBTREE_FOR
  - check_data
  - checkzonetree
  - RBTREE_FOR
  - check_zone_invariants
  - check_neg_invariants
  - RBTREE_FOR
  - stress_test
  - neg_test
  source_file: /src/unbound/testcode/unitneg.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - delkey
  - deldata
  - myhash
  - newkey
  - newdata
  - test_bin_find_entry
  - test_lru
  - test_short_table
  - testadd
  - testremove
  - testlookup
  - check_table
  - testadd_unlim
  - testremove_unlim
  - testlookup_unlim
  - test_long_table
  - test_thr_main
  - test_threaded_table
  - lruhash_test
  source_file: /src/unbound/testcode/unitlruhash.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: HASHTESTMAX
      pos:
        line_end: 231
        line_start: 230
        source_file: /src/unbound/testcode/unitlruhash.c
      type_or_value: '25'
    structs:
    - fields:
      - name: num
        type: int
      - name: id
        type: ub_thread_type
      - name: '* table'
        type: struct lruhash
      item_type: struct
      name: test_thr
      pos:
        line_end: 427
        line_start: 420
        source_file: /src/unbound/testcode/unitlruhash.c
    typedefs:
    - item_type: typedef
      name: testkey_type
      pos:
        line_end: 47
        line_start: 47
        source_file: /src/unbound/testcode/unitlruhash.c
      type: slabhash_testkey
    - item_type: typedef
      name: testdata_type
      pos:
        line_end: 49
        line_start: 49
        source_file: /src/unbound/testcode/unitlruhash.c
      type: slabhash_testdata
    union: []
- function_names:
  - infra_lookup_host
  - test_keep_probing
  - infra_test
  source_file: /src/unbound/testcode/unitinfra.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - lock_error
  - acquire_locklock
  - lock_protect_place
  - lock_unprotect
  - prot_check
  - prot_store
  - lock_get_mem
  - ordercheck_locklock
  - ordercheck_lockcreate
  - checklock_init
  - prot_clear
  - checktype
  - checklock_destroy
  - finish_acquire_lock
  - checklock_lockit
  - try_rd
  - timed_rd
  - checklock_rdlock
  - try_wr
  - timed_wr
  - checklock_wrlock
  - try_mutex
  - timed_mutex
  - try_spinlock
  - timed_spinlock
  - checklock_lock
  - checklock_unlock
  - checklock_set_output_name
  - open_lockorder
  - checklock_main
  - checklock_start
  - checklock_stop
  - checklock_thrcreate
  - count_thread_infos
  - lock_debug_info
  - held_debug_info
  - thread_debug_info
  - total_debug_info
  - joinalarm
  - checklock_thrjoin
  source_file: /src/unbound/testcode/checklocks.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CHECK_LOCK_TIMEOUT
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/unbound/testcode/checklocks.c
      type_or_value: '120 '
    - item_type: preproc_def
      name: CHECK_JOIN_TIMEOUT
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/unbound/testcode/checklocks.c
      type_or_value: '120 '
    structs: []
    typedefs: []
    union: []
- function_names:
  - unit_assert
  - unit_assert
  source_file: /src/unbound/testcode/unitmain.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - delkey
  - myhash
  - newkey
  - newdata
  - test_short_table
  - testadd
  - testremove
  - testlookup
  - check_lru_table
  - check_table
  - testadd_unlim
  - testremove_unlim
  - testlookup_unlim
  - test_long_table
  - test_thr_main
  - test_threaded_table
  - slabhash_test
  source_file: /src/unbound/testcode/unitslabhash.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: HASHTESTMAX
      pos:
        line_end: 105
        line_start: 104
        source_file: /src/unbound/testcode/unitslabhash.c
      type_or_value: '32'
    structs:
    - fields:
      - name: num
        type: int
      - name: id
        type: ub_thread_type
      - name: '* table'
        type: struct slabhash
      item_type: struct
      name: slab_test_thr
      pos:
        line_end: 306
        line_start: 299
        source_file: /src/unbound/testcode/unitslabhash.c
    typedefs:
    - item_type: typedef
      name: testkey_type
      pos:
        line_end: 46
        line_start: 46
        source_file: /src/unbound/testcode/unitslabhash.c
      type: slabhash_testkey
    - item_type: typedef
      name: testdata_type
      pos:
        line_end: 48
        line_start: 48
        source_file: /src/unbound/testcode/unitslabhash.c
      type: slabhash_testdata
    union: []
- function_names:
  - dname_to_buf
  - dname_test_qdl
  - dname_test_qdtl
  - dname_test_query_dname_compare
  - dname_test_count_labels
  - dname_test_count_size_labels
  - dname_test_pkt_dname_len
  - dname_test_dname_lab_cmp
  - dname_test_subdomain
  - dname_test_strict_subdomain
  - dname_test_isroot
  - dname_test_removelabel
  - dname_test_removelabellimitlen
  - dname_test_sigcount
  - dname_test_iswild
  - dname_test_canoncmp
  - dname_test_topdomain
  - dname_test_valid
  - dname_test_has_label
  - dname_test_pdtl
  - dname_setup_bufs
  - test_long_names
  - dname_test_str
  - dname_test
  source_file: /src/unbound/testcode/unitdname.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/testcode/fake_event.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - usage
  - dl_tv_smaller
  - dl_tv_add
  - dl_tv_subtract
  - ring_create
  - ring_delete
  - ring_add
  - ring_empty
  - ring_peek_time
  - ring_pop
  - delayer_sigh
  - service_send
  - do_proxy
  - service_proxy
  - find_create_proxy
  - service_recv
  - tcp_proxy_delete
  - service_tcp_listen
  - tcp_relay_read
  - tcp_relay_write
  - service_tcp_relay
  - service_findwait
  - proxy_list_clear
  - tcp_proxy_list_clear
  - service_loop
  - service
  - main
  source_file: /src/unbound/testcode/delayer.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: TRIES_PER_SELECT
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/unbound/testcode/delayer.c
      type_or_value: '100'
    structs:
    - fields:
      - name: '* buf'
        type: uint8_t
      - name: size
        type: size_t
      - name: low
        type: size_t
      - name: high
        type: size_t
      item_type: struct
      name: ringbuf
      pos:
        line_end: 70
        line_start: 61
        source_file: /src/unbound/testcode/delayer.c
    - fields:
      - name: s
        type: int
      - name: lastuse
        type: struct timeval
      - name: addr
        type: struct sockaddr_storage
      - name: addr_len
        type: socklen_t
      - name: numwait
        type: size_t
      - name: numsent
        type: size_t
      - name: numreturn
        type: size_t
      - name: numreuse
        type: size_t
      - name: '* next'
        type: struct proxy
      item_type: struct
      name: proxy
      pos:
        line_end: 94
        line_start: 75
        source_file: /src/unbound/testcode/delayer.c
    - fields:
      - name: '* item'
        type: uint8_t
      - name: len
        type: size_t
      - name: wait
        type: struct timeval
      - name: done
        type: size_t
      - name: '* next'
        type: struct tcp_send_list
      item_type: struct
      name: tcp_send_list
      pos:
        line_end: 110
        line_start: 99
        source_file: /src/unbound/testcode/delayer.c
    - fields:
      - name: client_s
        type: int
      - name: server_s
        type: int
      - name: addr
        type: struct sockaddr_storage
      - name: addr_len
        type: socklen_t
      - name: timeout
        type: struct timeval
      - name: '* querylist'
        type: struct tcp_send_list
      - name: '* querylast'
        type: struct tcp_send_list
      - name: '* answerlist'
        type: struct tcp_send_list
      - name: '* answerlast'
        type: struct tcp_send_list
      - name: '* next'
        type: struct tcp_proxy
      item_type: struct
      name: tcp_proxy
      pos:
        line_end: 139
        line_start: 115
        source_file: /src/unbound/testcode/delayer.c
    typedefs: []
    union: []
- function_names:
  - usage
  - read_input
  - analyze_dname
  - analyze_rdata
  - analyze_rr
  - analyze
  - main
  source_file: /src/unbound/testcode/pktview.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - error
  - isendline
  - str_keyword
  - entry_add_reply
  - matchline
  - replyline
  - adjustline
  - new_entry
  - hexstr2bin
  - hex_buffer2wire
  - get_origin
  - add_rr
  - add_edns
  - read_entry
  - read_datafile
  - get_qtype
  - get_qname_len
  - get_qname
  - get_opcode
  - get_rcode
  - get_serial
  - pkt_find_edns_opt
  - get_has_edns
  - get_do_flag
  - get_co_flag
  - pkt_snip_edns_option
  - extract_ede
  - extract_cookie
  - zerottls
  - get_line
  - match_noloc_section
  - match_noloc
  - lowercase_dname
  - lowercase_rdata
  - lowercase_pkt
  - match_question
  - match_answer
  - ignore_edns_lines
  - match_all
  - equal_dname
  - subdomain_dname
  - match_ednsdata
  - find_match
  - adjust_packet
  - handle_query
  - delete_replylist
  - delete_entry
  source_file: /src/unbound/testcode/testpkts.c
  types:
    enum:
    - enumerators:
      - name: NO_VERBOSE
        value: '0'
      item_type: enum
      name: verbosity_value
      pos:
        line_end: 43
        line_start: 43
        source_file: /src/unbound/testcode/testpkts.c
    preproc_defs:
    - item_type: preproc_def
      name: MAX_PACKETLEN
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/unbound/testcode/testpkts.c
      type_or_value: '65536'
    - item_type: preproc_def
      name: MAX_LINE
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/unbound/testcode/testpkts.c
      type_or_value: "10240\t"
    structs: []
    typedefs: []
    union: []
- function_names:
  - doq_size_conn_check
  - doq_test
  source_file: /src/unbound/testcode/unitdoq.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/testcode/testpkts.h
  types:
    enum:
    - enumerators:
      - name: transport_any
        value: '0'
      - name: transport_udp
      - name: transport_tcp
      item_type: enum
      name: transport_type
      pos:
        line_end: 169
        line_start: 169
        source_file: /src/unbound/testcode/testpkts.h
    preproc_defs: []
    structs:
    - fields:
      - name: '* next'
        type: struct reply_packet
      - name: '* reply_pkt'
        type: uint8_t
      - name: reply_len
        type: size_t
      - name: '* raw_ednsdata'
        type: struct sldns_buffer
      - name: '* reply_from_hex'
        type: struct sldns_buffer
      - name: packet_sleep
        type: unsigned int
      item_type: struct
      name: reply_packet
      pos:
        line_end: 185
        line_start: 172
        source_file: /src/unbound/testcode/testpkts.h
    - fields:
      - name: match_opcode
        type: uint8_t
      - name: match_qtype
        type: uint8_t
      - name: match_qname
        type: uint8_t
      - name: match_rcode
        type: uint8_t
      - name: match_question
        type: uint8_t
      - name: match_answer
        type: uint8_t
      - name: match_subdomain
        type: uint8_t
      - name: match_serial
        type: uint8_t
      - name: match_ede
        type: uint8_t
      - name: match_ede_any
        type: uint8_t
      - name: match_all
        type: uint8_t
      - name: match_all_noedns
        type: uint8_t
      - name: match_ttl
        type: uint8_t
      - name: match_do
        type: uint8_t
      - name: match_co
        type: uint8_t
      - name: match_noedns
        type: uint8_t
      - name: match_ednsdata_raw
        type: uint8_t
      - name: match_client_cookie
        type: uint8_t
      - name: match_server_cookie
        type: uint8_t
      - name: ixfr_soa_serial
        type: uint32_t
      - name: match_transport
        type: enum transport_type
      - name: ede_info_code
        type: uint16_t
      - name: '*reply_list'
        type: struct reply_packet
      - name: copy_id
        type: uint8_t
      - name: copy_query
        type: uint8_t
      - name: copy_ednsdata_assume_clientsubnet
        type: uint8_t
      - name: increment_ecs_scope
        type: uint8_t
      - name: sleeptime
        type: unsigned int
      - name: lineno
        type: int
      - name: '* next'
        type: struct entry
      item_type: struct
      name: entry
      pos:
        line_end: 258
        line_start: 189
        source_file: /src/unbound/testcode/testpkts.h
    typedefs: []
    union: []
- function_names:
  - test_anchor_empty
  - test_anchor_one
  - test_anchors
  - anchors_test
  source_file: /src/unbound/testcode/unitanchor.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - skip_whites
  - hex_to_buf
  source_file: /src/unbound/testcode/readhex.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - conn_ref_get_conn
  - set_app_data
  - get_app_data
  - usage
  - get_dest_addr
  - open_svr_udp
  - get_local_addr
  - make_query
  - client_stream_create
  - client_stream_free
  - client_stream_start_setup
  - client_stream_string
  - stream_list_create
  - stream_list_free
  - stream_list_append
  - stream_list_delete
  - stream_list_move
  - client_stream_datalen_complete
  - print_answer_rrs
  - client_stream_print_short
  - client_stream_print_long
  - client_stream_data_complete
  - client_stream_answer_error
  - client_stream_recv_data
  - client_stream_recv_fin
  - fill_rand
  - generate_static_secret
  - cid_randfill
  - client_bidi_stream
  - query_streams_start
  - rand_cb
  - get_new_connection_id_cb
  - early_data_is_rejected
  - handshake_completed
  - extend_max_local_streams_bidi
  - recv_stream_data
  - stream_reset
  - copy_ngaddr
  - log_printf_for_doq
  - conn_client_setup
  - transport_file_write
  - early_data_write_transport
  - application_rx_key_cb
  - set_encryption_secrets
  - add_handshake_data
  - flush_flight
  - send_alert
  - new_session_cb
  - ctx_client_setup
  - ssl_client_setup
  - msghdr_get_ecn
  - set_ecn
  - doq_client_send_pkt
  - event_change_write
  - disconnect
  - doq_client_timer_cb
  - update_timer
  - on_read
  - query_write_is_done
  - write_streams
  - send_blocked_pkt
  - on_write
  - doq_client_event_cb
  - early_data_setup_session
  - transport_parse_line
  - early_data_setup_transport
  - early_data_setup
  - early_data_start
  - create_doq_client_data
  - delete_doq_client_data
  - create_event_base
  - client_enter_query_buf
  - client_enter_queries
  - run
  - main
  - main
  - worker_handle_control_cmd
  - worker_handle_request
  - worker_handle_service_reply
  - remote_accept_callback
  - remote_control_callback
  - worker_sighandler
  - worker_send_query
  - worker_win_stop_cb
  - wsvc_cron_cb
  - worker_alloc_cleanup
  - libworker_send_query
  - libworker_handle_service_reply
  - libworker_handle_control_cmd
  - libworker_fg_done_cb
  - libworker_bg_done_cb
  - libworker_event_done_cb
  - libworker_alloc_cleanup
  - context_query_cmp
  - worker_stat_timer_cb
  - worker_probe_timer_cb
  - worker_start_accept
  - worker_stop_accept
  - order_lock_cmp
  - codeline_cmp
  - replay_var_compare
  - remote_get_opt_ssl
  - dtio_tap_callback
  - dtio_mainfdcallback
  - fast_reload_service_cb
  - fast_reload_client_callback
  source_file: /src/unbound/testcode/doqclient.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAKE_QUIC_METHOD
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/unbound/testcode/doqclient.c
      type_or_value: '1'
    structs:
    - fields:
      - name: fd
        type: int
      - name: '* base'
        type: struct ub_event_base
      - name: '* ev'
        type: struct ub_event
      - name: '* expire_timer'
        type: struct ub_event
      - name: expire_timer_added
        type: int
      - name: '* conn'
        type: struct ngtcp2_conn
      - name: '* rnd'
        type: struct ub_randstate
      - name: '* svr'
        type: char
      - name: '* static_secret_data'
        type: uint8_t
      - name: static_secret_size
        type: size_t
      - name: dest_addr
        type: struct sockaddr_storage
      - name: dest_addr_len
        type: socklen_t
      - name: local_addr
        type: struct sockaddr_storage
      - name: local_addr_len
        type: socklen_t
      - name: '* ctx'
        type: SSL_CTX
      - name: '* ssl'
        type: SSL
      - name: quic_version
        type: uint32_t
      - name: tls_alert
        type: uint8_t
      - name: '* pkt_buf'
        type: struct sldns_buffer
      - name: '* query_list_start'
        type: struct doq_client_stream_list
      - name: '* query_list_send'
        type: struct doq_client_stream_list
      - name: '* query_list_receive'
        type: struct doq_client_stream_list
      - name: '* query_list_stop'
        type: struct doq_client_stream_list
      - name: have_blocked_pkt
        type: int
      - name: '* blocked_pkt'
        type: struct sldns_buffer
      - name: blocked_pkt_pi
        type: struct ngtcp2_pkt_info
      - name: cc_algo
        type: ngtcp2_cc_algo
      - name: '* transport_file'
        type: char
      - name: '* session_file'
        type: char
      - name: early_data_enabled
        type: int
      - name: quiet
        type: int
      - name: port
        type: int
      item_type: struct
      name: doq_client_data
      pos:
        line_end: 164
        line_start: 79
        source_file: /src/unbound/testcode/doqclient.c
    - fields:
      - name: '* first'
        type: struct doq_client_stream
      item_type: struct
      name: doq_client_stream_list
      pos:
        line_end: 170
        line_start: 167
        source_file: /src/unbound/testcode/doqclient.c
    - fields:
      - name: '* next'
        type: struct doq_client_stream
      - name: '* data'
        type: uint8_t
      - name: data_len
        type: size_t
      - name: has_stream
        type: int
      - name: stream_id
        type: int64_t
      - name: nwrite
        type: size_t
      - name: data_tcplen
        type: uint16_t
      - name: write_is_done
        type: int
      - name: nread
        type: size_t
      - name: answer_len
        type: uint16_t
      - name: '* answer'
        type: struct sldns_buffer
      - name: answer_is_complete
        type: int
      - name: query_has_error
        type: int
      - name: query_is_done
        type: int
      item_type: struct
      name: doq_client_stream
      pos:
        line_end: 204
        line_start: 173
        source_file: /src/unbound/testcode/doqclient.c
    - fields:
      - name: thr
        type: int
      - name: instance
        type: int
      item_type: struct
      name: order_id
      pos:
        line_end: 2715
        line_start: 2710
        source_file: /src/unbound/testcode/doqclient.c
    typedefs: []
    union:
    - fields:
      - name: hdr
        type: struct cmsghdr
      - name: buf[256]
        type: char
      item_type: union
      name: ancil
      pos:
        line_end: 1689
        line_start: 1686
        source_file: /src/unbound/testcode/doqclient.c
- function_names:
  - usage
  - perf_sigh
  - perf_tv_smaller
  - perf_tv_add
  - perf_tv_subtract
  - perfsetup
  - perffree
  - perfsend
  - perfreply
  - perftimeout
  - stat_printout
  - perfselect
  - perfendstats
  - perfmain
  - qlist_parse_line
  - qlist_grow_capacity
  - qlist_add_line
  - qlist_read_file
  - main
  source_file: /src/unbound/testcode/perf.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: START_IO_INTERVAL
      pos:
        line_end: 143
        line_start: 142
        source_file: /src/unbound/testcode/perf.c
      type_or_value: '10'
    - item_type: preproc_def
      name: IO_TIMEOUT
      pos:
        line_end: 145
        line_start: 144
        source_file: /src/unbound/testcode/perf.c
      type_or_value: '10'
    structs:
    - fields:
      - name: exit
        type: int
      - name: '* buf'
        type: sldns_buffer
      - name: dest
        type: struct sockaddr_storage
      - name: destlen
        type: socklen_t
      - name: since
        type: struct timeval
      - name: numrecv
        type: size_t
      - name: numsent
        type: size_t
      - name: duration
        type: int
      - name: quiet
        type: int
      - name: start
        type: struct timeval
      - name: total_recv
        type: size_t
      - name: total_sent
        type: size_t
      - name: by_rcode[32]
        type: size_t
      - name: io_num
        type: size_t
      - name: '* io'
        type: struct perfio
      - name: maxfd
        type: int
      - name: rset
        type: fd_set
      - name: qlist_size
        type: size_t
      - name: qlist_capacity
        type: size_t
      - name: '** qlist_data'
        type: uint8_t
      - name: '* qlist_len'
        type: size_t
      - name: qlist_idx
        type: size_t
      item_type: struct
      name: perfinfo
      pos:
        line_end: 127
        line_start: 76
        source_file: /src/unbound/testcode/perf.c
    - fields:
      - name: id
        type: size_t
      - name: fd
        type: int
      - name: timeout
        type: struct timeval
      - name: '* info'
        type: struct perfinfo
      item_type: struct
      name: perfio
      pos:
        line_end: 139
        line_start: 130
        source_file: /src/unbound/testcode/perf.c
    typedefs: []
    union: []
- function_names:
  - testbound_usage
  - add_opts
  - echo_cmdline
  - spool_temp_file_name
  - spool_temp_file
  - spool_auto_file
  - setup_config
  - setup_playback
  - remove_configfile
  - perform_playback
  - main
  - delete_file
  - buf_to_file
  - LLVMFuzzerTestOneInput
  - daemon_remote_open_ports
  - daemon_remote_create
  - daemon_remote_delete
  - daemon_remote_clear
  - daemon_remote_open_accept
  - remote_accept_callback
  - remote_control_callback
  - remote_get_opt_ssl
  - wsvc_command_option
  - wsvc_setup_worker
  - wsvc_desetup_worker
  - worker_win_stop_cb
  - wsvc_cron_cb
  - tcp_connect_errno_needs_log
  - squelch_err_ssl_handshake
  - listen_setup_locks
  - listen_desetup_locks
  - fast_reload_printq_list_delete
  - fast_reload_worker_pickup_changes
  - quic_sslctx_create
  - comm_point_doq_callback
  - doq_conn_cmp
  - doq_conid_cmp
  - doq_timer_cmp
  - doq_stream_cmp
  - doq_table_create
  - doq_table_delete
  - doq_timer_cb
  - doq_table_quic_size_get
  source_file: /src/unbound/testcode/testbound.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: unbound_testbound
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/unbound/testcode/testbound.c
      type_or_value: '1'
    - item_type: preproc_def
      name: main
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/unbound/testcode/testbound.c
      type_or_value: daemon_main
    - item_type: preproc_def
      name: MAX_LINE_LEN
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/unbound/testcode/testbound.c
      type_or_value: '1024'
    - item_type: preproc_def
      name: MAXARG
      pos:
        line_end: 97
        line_start: 96
        source_file: /src/unbound/testcode/testbound.c
      type_or_value: '100'
    - item_type: preproc_def
      name: main
      pos:
        line_end: 373
        line_start: 372
        source_file: /src/unbound/testcode/testbound.c
      type_or_value: dummy_main
    structs: []
    typedefs: []
    union: []
- function_names:
  - usage
  - print_exit
  - log_errno
  - parse_ip_addr
  - fd_close
  - read_ssl_line
  - process_one_header
  - read_http_headers
  - setup_ctx
  - setup_fd
  - setup_ssl
  - file_name_is_safe
  - adjust_host
  - adjust_file
  - host_name_is_safe
  - provide_file_10
  - provide_file_chunked
  - service_ssl
  - do_service
  - main
  source_file: /src/unbound/testcode/petal.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - alloc_test
  - net_test
  - config_memsize_test
  - config_tag_test
  - rtt_test
  - edns_cookie_invalid_version
  - edns_cookie_invalid_hash
  - edns_cookie_rfc9018_a3_better
  - edns_cookie_rfc9018_a3
  - edns_cookie_rfc9018_a2
  - edns_cookie_rfc9018_a1
  - edns_cookie_test
  - rnd_test
  - verify_respip_set_actions
  - respip_conf_actions_test
  - respip_view_conf_actions_test
  - verify_rrset
  - cfg_insert_respip_data
  - respip_conf_data_test
  - respip_view_conf_data_test
  - respip_test
  - edns_ede_encode_setup
  - edns_ede_encode_encodedecode
  - edns_ede_encode_check
  - edns_ede_encode_fit_test
  - edns_ede_encode_notxt_fit_test
  - edns_ede_encode_no_fit_test
  - edns_ede_answer_encode_test
  - compare_localzone_trees
  - localzone_parents_test
  - localzone_test
  - mesh_test
  - packed_rrset_test
  - unit_show_func
  - unit_show_feature
  - main
  source_file: /src/unbound/testcode/unitmain.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* ip'
        type: char
      - name: '* sact'
        type: char
      - name: act
        type: enum respip_action
      item_type: struct
      name: addr_action
      pos:
        line_end: 693
        line_start: 693
        source_file: /src/unbound/testcode/unitmain.c
    - fields:
      - name: '* ip'
        type: char
      - name: '* data'
        type: char
      item_type: struct
      name: addr_data
      pos:
        line_end: 833
        line_start: 833
        source_file: /src/unbound/testcode/unitmain.c
    typedefs: []
    union: []
- function_names:
  - buf_to_hex
  - rr_transform
  - rr_checks
  - rr_test_file
  - xstr
  - str
  - rr_tests
  - b64_test
  - svcb_ech_test
  - ldns_test
  source_file: /src/unbound/testcode/unitldns.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SRCDIRSTR
      pos:
        line_end: 211
        line_start: 210
        source_file: /src/unbound/testcode/unitldns.c
      type_or_value: xstr(SRCDIR)
    - item_type: preproc_def
      name: SRCDIRSTR
      pos:
        line_end: 213
        line_start: 212
        source_file: /src/unbound/testcode/unitldns.c
      type_or_value: '"."'
    structs: []
    typedefs: []
    union: []
- function_names:
  - lock_protect
  - lock_rw_init
  - lock_rw_destroy
  - lock_rw_rdlock
  - lock_rw_wrlock
  - lock_rw_unlock
  - lock_basic_init
  - lock_basic_destroy
  - lock_basic_lock
  - lock_basic_unlock
  - lock_quick_init
  - lock_quick_destroy
  - lock_quick_lock
  - lock_quick_unlock
  - ub_thread_create
  - ub_thread_self
  - ub_thread_join
  - ub_thread_key_create
  - ub_thread_key_set
  - ub_thread_key_get
  source_file: /src/unbound/testcode/checklocks.h
  types:
    enum:
    - enumerators:
      - name: check_lock_mutex
      - name: check_lock_spinlock
      - name: check_lock_rwlock
      item_type: enum
      name: check_lock_type
      pos:
        line_end: 172
        line_start: 165
        source_file: /src/unbound/testcode/checklocks.h
    preproc_defs:
    - item_type: preproc_def
      name: THRDEBUG_MAX_THREADS
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/unbound/testcode/checklocks.h
      type_or_value: '32 '
    structs:
    - fields:
      - name: '* region'
        type: void
      - name: size
        type: size_t
      - name: '* hold'
        type: void
      - name: '* next'
        type: struct protected_area
      - name: '* def_func'
        type: char
      - name: '* def_file'
        type: char
      - name: def_line
        type: int
      - name: '* def_area'
        type: char
      item_type: struct
      name: protected_area
      pos:
        line_end: 100
        line_start: 83
        source_file: /src/unbound/testcode/checklocks.h
    - fields:
      - name: id
        type: pthread_t
      - name: '* (*func)(void*)'
        type: void
      - name: '* arg'
        type: void
      - name: num
        type: int
      - name: locks_created
        type: int
      - name: '* order_info'
        type: FILE
      - name: '*holding_first'
        type: struct checked_lock
      - name: '* waiting'
        type: struct checked_lock
      item_type: struct
      name: thr_check
      pos:
        line_end: 126
        line_start: 105
        source_file: /src/unbound/testcode/checklocks.h
    - fields:
      - name: lock
        type: pthread_mutex_t
      - name: '* prot'
        type: struct protected_area
      - name: '* create_func'
        type: char
      - name: create_line
        type: int
      - name: create_thread
        type: int
      - name: contention_count
        type: size_t
      - name: history_count
        type: size_t
      - name: hold_count
        type: int
      - name: wait_count
        type: int
      - name: '* holder_func'
        type: char
      - name: holder_line
        type: int
      - name: '* holder'
        type: struct thr_check
      - name: '* writeholder'
        type: struct thr_check
      - name: '* next_held_lock[THRDEBUG_MAX_THREADS]'
        type: struct checked_lock
      - name: '* prev_held_lock[THRDEBUG_MAX_THREADS]'
        type: struct checked_lock
      - name: type
        type: "enum check_lock_type {\n\t\t/** basic mutex */\n\t\tcheck_lock_mutex,\n\t\t/**
          fast spinlock */\n\t\tcheck_lock_spinlock,\n\t\t/** rwlock */\n\t\tcheck_lock_rwlock\n\t}"
      - name: u
        type: "union {\n\t\t/** mutex */\n\t\tpthread_mutex_t mutex;\n\t\t/** spinlock
          */\n\t\tpthread_spinlock_t spinlock;\n\t\t/** rwlock */\n\t\tpthread_rwlock_t
          rwlock;\n\t}"
      item_type: struct
      name: checked_lock
      pos:
        line_end: 182
        line_start: 131
        source_file: /src/unbound/testcode/checklocks.h
    - fields:
      - name: '* c_rw'
        type: struct checked_lock
      item_type: struct
      name: checked_lock_rw
      pos:
        line_end: 324
        line_start: 324
        source_file: /src/unbound/testcode/checklocks.h
    - fields:
      - name: '* c_m'
        type: struct checked_lock
      item_type: struct
      name: checked_lock_mutex
      pos:
        line_end: 326
        line_start: 326
        source_file: /src/unbound/testcode/checklocks.h
    - fields:
      - name: '* c_spl'
        type: struct checked_lock
      item_type: struct
      name: checked_lock_spl
      pos:
        line_end: 328
        line_start: 328
        source_file: /src/unbound/testcode/checklocks.h
    typedefs:
    - item_type: typedef
      name: lock_rw_type
      pos:
        line_end: 331
        line_start: 331
        source_file: /src/unbound/testcode/checklocks.h
      type: checked_lock_rw
    - item_type: typedef
      name: lock_basic_type
      pos:
        line_end: 339
        line_start: 339
        source_file: /src/unbound/testcode/checklocks.h
      type: checked_lock_mutex
    - item_type: typedef
      name: lock_quick_type
      pos:
        line_end: 346
        line_start: 346
        source_file: /src/unbound/testcode/checklocks.h
      type: checked_lock_spl
    - item_type: typedef
      name: ub_thread_type
      pos:
        line_end: 353
        line_start: 353
        source_file: /src/unbound/testcode/checklocks.h
      type: pthread_t
    - item_type: typedef
      name: ub_thread_key_type
      pos:
        line_end: 358
        line_start: 358
        source_file: /src/unbound/testcode/checklocks.h
      type: pthread_key_t
    union: []
- function_names:
  - usage
  - open_svr
  - write_soa_serial_to_buf
  - write_q
  - recv_one
  - print_any_answers
  - get_random
  - parse_pp2_client
  - send_em
  - sigh
  - main
  source_file: /src/unbound/testcode/streamtcp.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PF_INET6
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/unbound/testcode/streamtcp.c
      type_or_value: '10'
    structs: []
    typedefs: []
    union: []
- function_names:
  - usage
  - open_svr
  - http2_submit_request_read_cb
  - submit_query
  - make_query
  - http2_recv_cb
  - http2_send_cb
  - http2_stream_close_cb
  - http2_data_chunk_recv_cb
  - http2_frame_recv_cb
  - http2_header_cb
  - http2_session_create
  - http2_session_delete
  - http2_submit_setting
  - http2_write
  - http2_read
  - run
  - main
  - main
  source_file: /src/unbound/testcode/dohclient.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* session'
        type: nghttp2_session
      - name: '* ssl'
        type: SSL
      - name: fd
        type: int
      - name: query_count
        type: int
      - name: post
        type: int
      - name: block_select
        type: int
      - name: '* authority'
        type: char
      - name: '* endpoint'
        type: char
      - name: '* content_type'
        type: char
      item_type: struct
      name: http2_session
      pos:
        line_end: 70
        line_start: 59
        source_file: /src/unbound/testcode/dohclient.c
    - fields:
      - name: stream_id
        type: int32_t
      - name: res_status
        type: int
      - name: '* buf'
        type: struct sldns_buffer
      - name: '* path'
        type: char
      item_type: struct
      name: http2_stream
      pos:
        line_end: 77
        line_start: 72
        source_file: /src/unbound/testcode/dohclient.c
    typedefs: []
    union: []
- function_names:
  - test_buffers
  - checkformerr
  - perf_encode
  - perftestpkt
  - print_rrset
  - print_packet_rrsets
  - no_data_for_rrsig
  - check_the_rrsigs
  - testpkt
  - simpletest
  - testfromfile
  - testfromdrillfile
  - xstr
  - str
  - msgparse_test
  source_file: /src/unbound/testcode/unitmsgparse.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SRCDIRSTR
      pos:
        line_end: 502
        line_start: 501
        source_file: /src/unbound/testcode/unitmsgparse.c
      type_or_value: xstr(SRCDIR)
    - item_type: preproc_def
      name: SRCDIRSTR
      pos:
        line_end: 504
        line_start: 503
        source_file: /src/unbound/testcode/unitmsgparse.c
      type_or_value: '"."'
    structs: []
    typedefs: []
    union: []
- function_names:
  - entry_to_buf
  - entry_to_repinfo
  - extract_keys
  - should_be_bogus
  - rrset_get_count
  - setup_sigalg
  - verifytest_rrset
  - verifytest_entry
  - find_rrset_type
  - dstest_entry
  - verifytest_file
  - dstest_file
  - unitest_nsec_has_type_rdata
  - nsectest
  - nsec3_hash_test_entry
  - nsec3_hash_test
  - xstr
  - str
  - rh_allow_sha1_signatures_disabled
  - verify_test
  source_file: /src/unbound/testcode/unitverify.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SRCDIRSTR
      pos:
        line_end: 517
        line_start: 516
        source_file: /src/unbound/testcode/unitverify.c
      type_or_value: xstr(SRCDIR)
    - item_type: preproc_def
      name: SRCDIRSTR
      pos:
        line_end: 519
        line_start: 518
        source_file: /src/unbound/testcode/unitverify.c
      type_or_value: '"."'
    structs: []
    typedefs: []
    union: []
- function_names:
  - tmpfilecleanup
  - create_tmp_file
  - del_tmp_file
  - authtest_addzone
  - checkfile
  - check_read_exact
  - q_ans_parse
  - pr_flags
  - pr_rrs
  - msgtostr
  - line_diff
  - q_ans_query
  - check_az_q_ans
  - check_queries
  - authzone_compare_serial
  - authzone_read_test
  - authzone_query_test
  - authzone_chunkline_count_parens_test
  - authzone_test
  source_file: /src/unbound/testcode/unitauth.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* zone'
        type: char
      - name: '* query'
        type: char
      - name: '* flags'
        type: char
      - name: '* answer'
        type: char
      item_type: struct
      name: q_ans
      pos:
        line_end: 64
        line_start: 55
        source_file: /src/unbound/testcode/unitauth.c
    typedefs: []
    union: []
- function_names:
  - xstr
  - str
  - zonemd_generate_test
  - zonemd_generate_tests
  - zonemd_check_test
  - zonemd_verify_test
  - zonemd_verify_tests
  - zonemd_test
  source_file: /src/unbound/testcode/unitzonemd.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: SRCDIRSTR
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/unbound/testcode/unitzonemd.c
      type_or_value: xstr(SRCDIR)
    - item_type: preproc_def
      name: SRCDIRSTR
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/unbound/testcode/unitzonemd.c
      type_or_value: '"."'
    structs: []
    typedefs: []
    union: []
- function_names:
  - usage
  - print_result
  - lookup_is_done
  - checkerr
  - ext_check_result
  - ext_callback
  - ext_thread
  - ext_test
  - main
  source_file: /src/unbound/testcode/asynclook.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NUMTHR
      pos:
        line_end: 165
        line_start: 164
        source_file: /src/unbound/testcode/asynclook.c
      type_or_value: '1'
    - item_type: preproc_def
      name: NUMTHR
      pos:
        line_end: 168
        line_start: 167
        source_file: /src/unbound/testcode/asynclook.c
      type_or_value: '10'
    structs:
    - fields:
      - name: id
        type: int
      - name: cancel
        type: int
      - name: lock
        type: lock_basic_type
      item_type: struct
      name: track_id
      pos:
        line_end: 76
        line_start: 69
        source_file: /src/unbound/testcode/asynclook.c
    - fields:
      - name: '* name'
        type: char
      - name: async_id
        type: int
      - name: err
        type: int
      - name: '* result'
        type: struct ub_result
      item_type: struct
      name: lookinfo
      pos:
        line_end: 90
        line_start: 81
        source_file: /src/unbound/testcode/asynclook.c
    - fields:
      - name: thread_num
        type: int
      - name: tid
        type: ub_thread_type
      - name: '* ctx'
        type: struct ub_ctx
      - name: argc
        type: int
      - name: '** argv'
        type: char
      - name: numq
        type: int
      - name: '* id_list'
        type: struct track_id
      item_type: struct
      name: ext_thr_info
      pos:
        line_end: 186
        line_start: 171
        source_file: /src/unbound/testcode/asynclook.c
    typedefs: []
    union: []
- function_names:
  - usage
  - convert_timeval
  - fatal_exit
  - parse_cmdline
  - read_keys
  - read_rrs
  - signit
  - process_keys
  - process_nsec3
  - main
  source_file: /src/unbound/testcode/signit.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DNSKEY_BIT_ZSK
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/unbound/testcode/signit.c
      type_or_value: '0x0100'
    structs:
    - fields:
      - name: incep
        type: uint32_t
      - name: expi
        type: uint32_t
      - name: '* owner'
        type: char
      - name: keytag
        type: uint16_t
      - name: flags
        type: uint16_t
      item_type: struct
      name: keysets
      pos:
        line_end: 61
        line_start: 50
        source_file: /src/unbound/testcode/signit.c
    typedefs: []
    union: []
- function_names:
  - print_usage
  - main
  source_file: /src/unbound/testcode/readzone.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - usage
  - read_header
  - readup_str
  - read_create
  - insert_lock
  - read_lock
  - readinput
  - found_cycle
  - detect_cycle
  - search_cycle
  - RBTREE_FOR
  - check_order_lock
  - check_order
  - RBTREE_FOR
  - dellockref
  - delnode
  - locks_free
  - main
  source_file: /src/unbound/testcode/lock_verify.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: STRMAX
      pos:
        line_end: 162
        line_start: 161
        source_file: /src/unbound/testcode/lock_verify.c
      type_or_value: '1024'
    structs:
    - fields:
      - name: thr
        type: int
      - name: instance
        type: int
      item_type: struct
      name: order_id
      pos:
        line_end: 65
        line_start: 60
        source_file: /src/unbound/testcode/lock_verify.c
    - fields:
      - name: node
        type: rbnode_type
      - name: id
        type: struct order_id
      - name: '* create_file'
        type: char
      - name: create_line
        type: int
      - name: '* smaller'
        type: rbtree_type
      - name: '* dfs_next'
        type: struct lock_ref
      - name: visited
        type: int
      item_type: struct
      name: order_lock
      pos:
        line_end: 86
        line_start: 68
        source_file: /src/unbound/testcode/lock_verify.c
    - fields:
      - name: node
        type: rbnode_type
      - name: '* lock'
        type: struct order_lock
      - name: '* file'
        type: char
      - name: line
        type: int
      item_type: struct
      name: lock_ref
      pos:
        line_end: 98
        line_start: 89
        source_file: /src/unbound/testcode/lock_verify.c
    typedefs: []
    union: []
- function_names:
  - corner_cases
  - specific_cases
  - burden_test
  - random_burden
  - regional_test
  source_file: /src/unbound/testcode/unitregional.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/testcode/readhex.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - usage
  - match
  - get_codeline
  - read_malloc_stat
  - read_calloc_stat
  - get_file_size
  - readfile
  - printstats
  - RBTREE_FOR
  - main
  source_file: /src/unbound/testcode/memstats.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: node
        type: rbnode_type
      - name: '* codeline'
        type: char
      - name: '* func'
        type: char
      - name: alloc
        type: uint64_t
      - name: free
        type: uint64_t
      - name: calls
        type: uint64_t
      item_type: struct
      name: codeline
      pos:
        line_end: 64
        line_start: 51
        source_file: /src/unbound/testcode/memstats.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/testcode/replay.h
  types:
    enum:
    - enumerators:
      - name: repevt_nothing
      - name: repevt_time_passes
      - name: repevt_timeout
      - name: repevt_front_reply
      - name: repevt_front_query
      - name: repevt_back_reply
      - name: repevt_back_query
      - name: repevt_autotrust_check
      - name: repevt_tempfile_check
      - name: repevt_error
      - name: repevt_infra_rtt
      - name: repevt_flush_message
      - name: repevt_expire_message
      - name: repevt_traffic
      - name: repevt_assign
      item_type: enum
      name: replay_event_type
      pos:
        line_end: 227
        line_start: 196
        source_file: /src/unbound/testcode/replay.h
    preproc_defs: []
    structs:
    - fields:
      - name: '* title'
        type: char
      - name: '* mom_first'
        type: struct replay_moment
      - name: '* mom_last'
        type: struct replay_moment
      - name: '* range_list'
        type: struct replay_range
      item_type: struct
      name: replay_scenario
      pos:
        line_end: 178
        line_start: 161
        source_file: /src/unbound/testcode/replay.h
    - fields:
      - name: time_step
        type: int
      - name: '* mom_next'
        type: struct replay_moment
      - name: evt_type
        type: "enum replay_event_type {\n\t\t/** nothing happens, as if this event
          is not there. */\n\t\trepevt_nothing,\n\t\t/** incoming query */\n\t\trepevt_front_query,\n\t\t/**
          test fails if reply to query does not match */\n\t\trepevt_front_reply,\n\t\t/**
          timeout */\n\t\trepevt_timeout,\n\t\t/** time passes */\n\t\trepevt_time_passes,\n\t\t/**
          reply arrives from the network */\n\t\trepevt_back_reply,\n\t\t/** test
          fails if query to the network does not match */\n\t\trepevt_back_query,\n\t\t/**
          check autotrust key file */\n\t\trepevt_autotrust_check,\n\t\t/** check
          a temp file */\n\t\trepevt_tempfile_check,\n\t\t/** an error happens to
          outbound query */\n\t\trepevt_error,\n\t\t/** assignment to a variable */\n\t\trepevt_assign,\n\t\t/**
          store infra rtt cache entry: addr and string (int) */\n\t\trepevt_infra_rtt,\n\t\t/**
          flush message cache entry */\n\t\trepevt_flush_message,\n\t\t/** expire
          message cache entry */\n\t\trepevt_expire_message,\n\t\t/** cause traffic
          to flow */\n\t\trepevt_traffic\n\t}"
      - name: '* match'
        type: struct entry
      - name: elapse
        type: struct timeval
      - name: addr
        type: struct sockaddr_storage
      - name: addrlen
        type: socklen_t
      - name: '* variable'
        type: char
      - name: '* string'
        type: char
      - name: '* autotrust_id'
        type: char
      - name: '* file_content'
        type: struct config_strlist
      item_type: struct
      name: replay_moment
      pos:
        line_end: 251
        line_start: 186
        source_file: /src/unbound/testcode/replay.h
    - fields:
      - name: start_step
        type: int
      - name: end_step
        type: int
      - name: addr
        type: struct sockaddr_storage
      - name: addrlen
        type: socklen_t
      - name: '* match'
        type: struct entry
      - name: '* next_range'
        type: struct replay_range
      item_type: struct
      name: replay_range
      pos:
        line_end: 271
        line_start: 256
        source_file: /src/unbound/testcode/replay.h
    - fields:
      - name: '* scenario'
        type: struct replay_scenario
      - name: '* now'
        type: struct replay_moment
      - name: '* pending_list'
        type: struct fake_pending
      - name: '* answer_list'
        type: struct replay_answer
      - name: '* answer_last'
        type: struct replay_answer
      - name: '* timer_list'
        type: struct fake_timer
      - name: '* callback_query'
        type: comm_point_callback_type
      - name: '*cb_arg'
        type: void
      - name: '* infra'
        type: struct infra_cache
      - name: '* daemon'
        type: struct daemon
      - name: now_secs
        type: time_t
      - name: now_tv
        type: struct timeval
      - name: tcp_seen_keepalive
        type: int
      - name: (*sig_cb)(int, void*)
        type: void
      - name: '*sig_cb_arg'
        type: void
      - name: exit_cleanly
        type: int
      - name: bufsize
        type: size_t
      - name: '* vars'
        type: rbtree_type
      item_type: struct
      name: replay_runtime
      pos:
        line_end: 335
        line_start: 276
        source_file: /src/unbound/testcode/replay.h
    - fields:
      - name: '* buffer'
        type: struct sldns_buffer
      - name: addr
        type: struct sockaddr_storage
      - name: addrlen
        type: socklen_t
      - name: '* zone'
        type: uint8_t
      - name: zonelen
        type: size_t
      - name: qtype
        type: int
      - name: '* callback'
        type: comm_point_callback_type
      - name: '* cb_arg'
        type: void
      - name: timeout
        type: int
      - name: '* next'
        type: struct fake_pending
      - name: '* pkt'
        type: uint8_t
      - name: pkt_len
        type: size_t
      - name: transport
        type: enum transport_type
      - name: serviced
        type: int
      - name: tcp_pkt_counter
        type: int
      - name: '* runtime'
        type: struct replay_runtime
      item_type: struct
      name: fake_pending
      pos:
        line_end: 373
        line_start: 340
        source_file: /src/unbound/testcode/replay.h
    - fields:
      - name: '* next'
        type: struct replay_answer
      - name: repinfo
        type: struct comm_reply
      - name: '* pkt'
        type: uint8_t
      - name: pkt_len
        type: size_t
      item_type: struct
      name: replay_answer
      pos:
        line_end: 386
        line_start: 378
        source_file: /src/unbound/testcode/replay.h
    - fields:
      - name: '* next'
        type: struct fake_timer
      - name: '* runtime'
        type: struct replay_runtime
      - name: (*cb)(void*)
        type: void
      - name: '* cb_arg'
        type: void
      - name: enabled
        type: int
      - name: tv
        type: struct timeval
      item_type: struct
      name: fake_timer
      pos:
        line_end: 404
        line_start: 391
        source_file: /src/unbound/testcode/replay.h
    - fields:
      - name: node
        type: rbnode_type
      - name: '* name'
        type: char
      - name: '* value'
        type: char
      item_type: struct
      name: replay_var
      pos:
        line_end: 416
        line_start: 409
        source_file: /src/unbound/testcode/replay.h
    typedefs: []
    union: []
- function_names:
  - fake_temp_file
  - fake_event_init
  - fake_event_cleanup
  - log_pkt
  - repevt_string
  - delete_fake_pending
  - delete_replay_answer
  - log_testpkt_reply_pkt
  - pending_matches_current
  - pending_find_match
  - pending_matches_range
  - pending_list_delete
  - count_reply_packets
  - fill_buffer_with_reply
  - answer_callback_from_entry
  - answer_check_it
  - fake_front_query
  - fake_pending_callback
  - moment_assign
  - time_passes
  - autotrust_check
  - tempfile_check
  - do_infra_rtt
  - do_flush_message
  - do_expire_message
  - expon_timeout_backoff
  - advance_moment
  - do_moment_and_advance
  - run_scenario
  - listen_create
  - listen_delete
  - comm_base_create
  - comm_base_delete
  - comm_base_timept
  - comm_base_dispatch
  - comm_base_exit
  - comm_signal_create
  - comm_signal_bind
  - comm_signal_delete
  - comm_point_send_reply
  - comm_point_drop_reply
  - outside_network_create
  - outside_network_delete
  - outside_network_quit_prepare
  - pending_udp_query
  - pending_tcp_query
  - outnet_serviced_query
  - outnet_serviced_query_stop
  - resolve_interface_names
  - listening_ports_open
  - listening_ports_free
  - comm_point_create_local
  - comm_point_create_raw
  - comm_point_start_listening
  - comm_point_stop_listening
  - comm_point_delete
  - listen_get_mem
  - outnet_get_mem
  - comm_point_get_mem
  - comm_timer_get_mem
  - serviced_get_mem
  - outnet_udp_cb
  - outnet_tcp_cb
  - pending_udp_timer_cb
  - serviced_timer_cb
  - pending_udp_timer_delay_cb
  - outnet_tcptimer
  - comm_point_udp_callback
  - comm_point_udp_ancil_callback
  - comm_point_tcp_accept_callback
  - comm_point_tcp_handle_callback
  - comm_timer_callback
  - comm_signal_callback
  - comm_point_http_handle_callback
  - comm_point_local_handle_callback
  - comm_point_raw_handle_callback
  - comm_base_handle_slow_accept
  - serviced_udp_callback
  - serviced_tcp_callback
  - pending_cmp
  - serviced_cmp
  - reuse_cmp
  - reuse_id_cmp
  - comm_timer_create
  - comm_timer_disable
  - comm_timer_set
  - comm_timer_is_set
  - comm_timer_delete
  - comm_base_set_slow_accept_handlers
  - comm_base_internal
  - daemon_remote_exec
  - listen_start_accept
  - listen_stop_accept
  - daemon_remote_start_accept
  - daemon_remote_stop_accept
  - create_udp_sock
  - comm_point_create_udp
  - comm_point_create_tcp_out
  - outnet_comm_point_for_udp
  - outnet_comm_point_for_tcp
  - outnet_comm_point_for_http
  - comm_point_send_udp_msg
  - outnet_get_tcp_fd
  - outnet_tcp_connect
  - shared_ports_create
  - shared_ports_delete
  - tcp_req_info_add_meshstate
  - tcp_req_info_remove_mesh_state
  - tcp_req_info_get_stream_buffer_size
  - http2_get_query_buffer_size
  - http2_get_response_buffer_size
  - http2_stream_add_meshstate
  - http2_stream_remove_mesh_state
  - doq_stream_add_meshstate
  - doq_stream_remove_mesh_state
  - fast_reload_service_cb
  - fast_reload_thread_stop
  - fast_reload_client_callback
  source_file: /src/unbound/testcode/fake_event.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: FAKE_COMMPOINT_TYPECODE
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/unbound/testcode/fake_event.c
      type_or_value: '97347923'
    structs:
    - fields:
      - name: typecode
        type: int
      - name: type_udp_out
        type: int
      - name: type_tcp_out
        type: int
      - name: type_http_out
        type: int
      - name: '* cb'
        type: comm_point_callback_type
      - name: '* cb_arg'
        type: void
      - name: '* runtime'
        type: struct replay_runtime
      - name: '* pending'
        type: struct fake_pending
      item_type: struct
      name: fake_commpoint
      pos:
        line_end: 95
        line_start: 77
        source_file: /src/unbound/testcode/fake_event.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/timehist.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: NUM_BUCKETS_HIST
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/unbound/util/timehist.h
      type_or_value: '40'
    structs:
    - fields:
      - name: lower
        type: struct timeval
      - name: upper
        type: struct timeval
      - name: count
        type: size_t
      item_type: struct
      name: th_buck
      pos:
        line_end: 61
        line_start: 54
        source_file: /src/unbound/util/timehist.h
    - fields:
      - name: num
        type: size_t
      - name: '* buckets'
        type: struct th_buck
      item_type: struct
      name: timehist
      pos:
        line_end: 71
        line_start: 66
        source_file: /src/unbound/util/timehist.h
    typedefs: []
    union: []
- function_names:
  - timeval_isset
  - timeval_clear
  source_file: /src/unbound/util/timeval_func.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - rbtree_create
  - rbtree_init
  - rbtree_rotate_left
  - rbtree_rotate_right
  - rbtree_insert_fixup
  - rbtree_insert
  - rbtree_search
  - swap_int8
  - swap_np
  - change_parent_ptr
  - change_child_ptr
  - rbtree_delete
  - rbtree_delete_fixup
  - rbtree_find_less_equal
  - rbtree_first
  - rbtree_last
  - rbtree_next
  - rbtree_previous
  - traverse_post
  - traverse_postorder
  source_file: /src/unbound/util/rbtree.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BLACK
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/unbound/util/rbtree.c
      type_or_value: '0'
    - item_type: preproc_def
      name: RED
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/unbound/util/rbtree.c
      type_or_value: '1'
    structs: []
    typedefs: []
    union: []
- function_names:
  - tcl_list_create
  - tcl_list_free_node
  - tcl_list_delete
  - tcl_list_insert
  - tcl_list_str_cfg
  - read_tcl_list
  - tcl_list_apply_cfg
  - tcl_new_connection
  - tcl_close_connection
  - tcl_addr_lookup
  - tcl_list_get_mem
  - tcl_list_swap_tree
  source_file: /src/unbound/util/tcp_conn_limit.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/as112.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - config_create
  - config_create_forlib
  - S_NUMBER_OR_ZERO
  - S_NUMBER_NONZERO
  - S_UNSIGNED_OR_ZERO
  - S_SIZET_OR_ZERO
  - S_SIZET_NONZERO
  - S_YNO
  - S_MEMSIZE
  - S_POW2
  - S_STR
  - S_STRLIST
  - S_STRLIST_UNIQ
  - S_STRLIST_APPEND
  - probe_maxrto
  - config_apply_max_rtt
  - config_set_option
  - config_print_func
  - config_collate_func
  - config_get_option_list
  - config_get_option_collate
  - config_collate_cat
  - O_DEC
  - O_UNS
  - O_YNO
  - O_STR
  - O_IFC
  - O_MEM
  - O_LST
  - O_LS2
  - O_LS3
  - O_LTG
  - config_get_option
  - create_cfg_parser
  - config_auto_slab_values
  - SET_AUTO_SLAB
  - config_read
  - cfg_stub_find
  - config_delstrlist
  - config_deldblstrlist
  - config_deltrplstrlist
  - config_delauth
  - config_delauths
  - config_delstub
  - config_delstubs
  - config_delview
  - config_delviews
  - config_del_strarray
  - config_del_strbytelist
  - config_delete
  - init_cookie_secret
  - init_outgoing_availports
  - extract_port_from_str
  - cfg_mark_ports
  - cfg_scan_ports
  - cfg_condense_ports
  - cfg_apply_local_port_policy
  - ub_c_error_va_list
  - ub_c_error_msg
  - ub_c_error
  - ub_c_wrap
  - cfg_strlist_append
  - cfg_region_strlist_insert
  - cfg_strlist_find
  - cfg_strlist_insert
  - cfg_strlist_append_ex
  - cfg_str2list_insert
  - cfg_str3list_insert
  - cfg_strbytelist_insert
  - cfg_convert_timeval
  - cfg_count_numbers
  - isalldigit
  - cfg_parse_memsize
  - find_tag_id
  - config_add_tag
  - cfg_set_bit
  - config_parse_taglist
  - cfg_parse_nsid
  - config_taglist2str
  - taglist_intersect
  - config_apply
  - config_lookup_uid
  - strlen_after_chroot
  - fname_after_chroot
  - next_space_pos
  - last_space_pos
  - cfg_parse_local_zone
  - cfg_ptr_reverse
  - w_lookup_reg_str
  - w_config_adjust_directory
  - options_remote_is_address
  - if_listens_on
  - if_is_ssl
  - if_is_pp2
  - if_is_https
  - if_is_dnscrypt
  - getmem_str
  - if_is_quic
  - cfg_ports_list_contains
  - cfg_has_https
  - cfg_has_quic
  - cfg_tls_protocols_is_valid
  - cfg_tls_protocols_allowed
  - file_get_mtime
  - cfg_local_zone_type_value_check
  - cfg_local_zone_type_list
  source_file: /src/unbound/util/config_file.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: IS_NUMBER_OR_ZERO
      pos:
        line_end: 475
        line_start: 473
        source_file: /src/unbound/util/config_file.c
      type_or_value: if(atoi(val) == 0 && strcmp(val, "0") != 0) return 0
    - item_type: preproc_def
      name: IS_NONZERO_NUMBER
      pos:
        line_end: 478
        line_start: 476
        source_file: /src/unbound/util/config_file.c
      type_or_value: if(atoi(val) == 0) return 0
    - item_type: preproc_def
      name: IS_POW2_NUMBER
      pos:
        line_end: 481
        line_start: 479
        source_file: /src/unbound/util/config_file.c
      type_or_value: if(atoi(val) == 0 || !is_pow2((size_t)atoi(val))) return 0
    - item_type: preproc_def
      name: IS_YES_OR_NO
      pos:
        line_end: 484
        line_start: 482
        source_file: /src/unbound/util/config_file.c
      type_or_value: if(strcmp(val, "yes") != 0 && strcmp(val, "no") != 0) return
        0
    structs:
    - fields:
      - name: list
        type: struct config_strlist_head
      - name: status
        type: int
      item_type: struct
      name: config_collate_arg
      pos:
        line_end: 969
        line_start: 964
        source_file: /src/unbound/util/config_file.c
    typedefs: []
    union: []
- function_names:
  - log_assert
  - log_assert
  source_file: /src/unbound/util/log.h
  types:
    enum:
    - enumerators:
      - name: NO_VERBOSE
        value: '0'
      - name: VERB_QUERY
      - name: VERB_DETAIL
      - name: VERB_ALGO
      - name: VERB_OPS
      - name: VERB_CLIENT
      item_type: enum
      name: verbosity_value
      pos:
        line_end: 61
        line_start: 48
        source_file: /src/unbound/util/log.h
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/proxy_protocol.h
  types:
    enum:
    - enumerators:
      - name: PP2_CMD_LOCAL
        value: '0x0'
      - name: PP2_CMD_PROXY
        value: '0x1'
      item_type: enum
      name: pp2_command
      pos:
        line_end: 71
        line_start: 68
        source_file: /src/unbound/util/proxy_protocol.h
    - enumerators:
      - name: PP2_AF_UNSPEC
        value: '0x0'
      - name: PP2_AF_INET
        value: '0x1'
      - name: PP2_AF_INET6
        value: '0x2'
      - name: PP2_AF_UNIX
        value: '0x3'
      item_type: enum
      name: pp2_af
      pos:
        line_end: 81
        line_start: 76
        source_file: /src/unbound/util/proxy_protocol.h
    - enumerators:
      - name: PP2_PROT_UNSPEC
        value: '0x0'
      - name: PP2_PROT_DGRAM
        value: '0x2'
      - name: PP2_PROT_STREAM
        value: '0x1'
      item_type: enum
      name: pp2_protocol
      pos:
        line_end: 90
        line_start: 86
        source_file: /src/unbound/util/proxy_protocol.h
    - enumerators:
      - name: PP2_UNSPEC_UNSPEC
        value: (PP2_AF_UNSPEC<<4)|PP2_PROT_UNSPEC
      - name: PP2_INET6_STREAM
        value: (PP2_AF_INET6<<4)|PP2_PROT_STREAM
      - name: PP2_INET_DGRAM
        value: (PP2_AF_INET<<4)|PP2_PROT_DGRAM
      - name: PP2_INET6_DGRAM
        value: (PP2_AF_INET6<<4)|PP2_PROT_DGRAM
      - name: PP2_INET_STREAM
        value: (PP2_AF_INET<<4)|PP2_PROT_STREAM
      - name: PP2_UNIX_STREAM
        value: (PP2_AF_UNIX<<4)|PP2_PROT_STREAM
      - name: PP2_UNIX_DGRAM
        value: (PP2_AF_UNIX<<4)|PP2_PROT_DGRAM
      item_type: enum
      name: pp2_af_protocol_combination
      pos:
        line_end: 103
        line_start: 95
        source_file: /src/unbound/util/proxy_protocol.h
    - enumerators:
      - name: PP_PARSE_NOERROR
        value: '0'
      - name: PP_PARSE_UNKNOWN_FAM_PROT
      - name: PP_PARSE_UNKNOWN_CMD
      - name: PP_PARSE_SIZE
      - name: PP_PARSE_WRONG_HEADERv2
      item_type: enum
      name: pp_parse_errors
      pos:
        line_end: 142
        line_start: 136
        source_file: /src/unbound/util/proxy_protocol.h
    preproc_defs:
    - item_type: preproc_def
      name: PP2_HEADER_SIZE
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/unbound/util/proxy_protocol.h
      type_or_value: '16'
    - item_type: preproc_def
      name: PP2_SIG
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/unbound/util/proxy_protocol.h
      type_or_value: '"\x0D\x0A\x0D\x0A\x00\x0D\x0A\x51\x55\x49\x54\x0A"'
    - item_type: preproc_def
      name: PP2_SIG_LEN
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/unbound/util/proxy_protocol.h
      type_or_value: '12'
    - item_type: preproc_def
      name: PP2_VERSION
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/unbound/util/proxy_protocol.h
      type_or_value: '0x2'
    - item_type: preproc_def
      name: PP2_HEADER_LEN_INET
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/unbound/util/proxy_protocol.h
      type_or_value: '12'
    - item_type: preproc_def
      name: PP2_HEADER_LEN_INET6
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/unbound/util/proxy_protocol.h
      type_or_value: '36'
    - item_type: preproc_def
      name: PP2_HEADER_LEN_UNIX
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/unbound/util/proxy_protocol.h
      type_or_value: '216'
    structs:
    - fields:
      - name: sig[PP2_SIG_LEN]
        type: uint8_t
      - name: ver_cmd
        type: uint8_t
      - name: fam_prot
        type: uint8_t
      - name: len
        type: uint16_t
      - name: addr
        type: "union {\n\t\tstruct {  /* for TCP/UDP over IPv4, len = 12 */\n\t\t\tuint32_t
          src_addr;\n\t\t\tuint32_t dst_addr;\n\t\t\tuint16_t src_port;\n\t\t\tuint16_t
          dst_port;\n\t\t} addr4;\n\t\tstruct {  /* for TCP/UDP over IPv6, len = 36
          */\n\t\t\tuint8_t  src_addr[16];\n\t\t\tuint8_t  dst_addr[16];\n\t\t\tuint16_t
          src_port;\n\t\t\tuint16_t dst_port;\n\t\t} addr6;\n\t\tstruct {  /* for
          AF_UNIX sockets, len = 216 */\n\t\t\tuint8_t src_addr[108];\n\t\t\tuint8_t
          dst_addr[108];\n\t\t} addru;\n\t}"
      item_type: struct
      name: pp2_header
      pos:
        line_end: 131
        line_start: 108
        source_file: /src/unbound/util/proxy_protocol.h
    typedefs: []
    union: []
- function_names:
  - alloc_special_clean
  - alloc_special_next
  - alloc_set_special_next
  - malloc
  - calloc
  - free
  - realloc
  - strdup
  - sldns_rr2str
  - sldns_rdf2str
  - sldns_rr_type2str
  - sldns_rr_class2str
  - sldns_rr_list2str
  - sldns_pkt2str
  - sldns_pkt_rcode2str
  - sldns_pkt2wire
  - i2d_DSA_SIG
  source_file: /src/unbound/util/alloc.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ALLOC_SPECIAL_MAX
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/unbound/util/alloc.h
      type_or_value: '10'
    structs:
    - fields:
      - name: lock
        type: lock_quick_type
      - name: '* super'
        type: struct alloc_cache
      - name: '* quar'
        type: alloc_special_type
      - name: num_quar
        type: size_t
      - name: thread_num
        type: int
      - name: next_id
        type: uint64_t
      - name: last_id
        type: uint64_t
      - name: (*cleanup)(void*)
        type: void
      - name: '* cleanup_arg'
        type: void
      - name: max_reg_blocks
        type: size_t
      - name: num_reg_blocks
        type: size_t
      - name: '* reg_list'
        type: struct regional
      item_type: struct
      name: alloc_cache
      pos:
        line_end: 97
        line_start: 71
        source_file: /src/unbound/util/alloc.h
    typedefs:
    - item_type: typedef
      name: alloc_special_type
      pos:
        line_end: 55
        line_start: 55
        source_file: /src/unbound/util/alloc.h
      type: ub_packed_rrset_key
    union: []
- function_names:
  - ALIGN_UP
  - regional_create
  - regional_init
  - regional_create_custom_large_object
  - regional_create_custom
  - regional_create_nochunk
  - regional_free_all
  - regional_destroy
  - regional_alloc_init
  - regional_alloc_zero
  - regional_strdup
  - count_chunks
  - count_large
  - regional_log_stats
  - regional_get_mem
  source_file: /src/unbound/util/regional.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ALIGNMENT
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/unbound/util/regional.c
      type_or_value: (sizeof(uint64_t))
    - item_type: preproc_def
      name: REGIONAL_CHUNK_SIZE
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/unbound/util/regional.c
      type_or_value: '8192'
    - item_type: preproc_def
      name: REGIONAL_LARGE_OBJECT_SIZE
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/unbound/util/regional.c
      type_or_value: '0'
    - item_type: preproc_def
      name: REGIONAL_LARGE_OBJECT_SIZE
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/unbound/util/regional.c
      type_or_value: '2048'
    structs: []
    typedefs: []
    union: []
- function_names:
  - timestwo
  - dosetup
  - timehist_setup
  - timehist_delete
  - timehist_clear
  - timehist_insert
  - timehist_print
  - timehist_log
  - timehist_count
  - timehist_quartile
  - timehist_export
  - timehist_import
  source_file: /src/unbound/util/timehist.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - compare_1982
  - subtract_1982
  source_file: /src/unbound/util/rfc_1982.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/netevent.h
  types:
    enum:
    - enumerators:
      - name: comm_udp
      - name: comm_tcp
      - name: comm_http
      - name: comm_doq
      - name: comm_tcp_accept
      - name: comm_local
      - name: comm_raw
      item_type: enum
      name: comm_point_type
      pos:
        line_end: 323
        line_start: 308
        source_file: /src/unbound/util/netevent.h
    - enumerators:
      - name: HTTP_STATUS_OK
        value: '200'
      - name: HTTP_STATUS_PAYLOAD_TOO_LARGE
        value: '413'
      - name: HTTP_STATUS_NOT_FOUND
        value: '404'
      - name: HTTP_STATUS_BAD_REQUEST
        value: '400'
      - name: HTTP_STATUS_URI_TOO_LONG
        value: '414'
      - name: HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE
        value: '415'
      - name: HTTP_STATUS_NOT_IMPLEMENTED
        value: '501'
      item_type: enum
      name: http_status
      pos:
        line_end: 963
        line_start: 955
        source_file: /src/unbound/util/netevent.h
    preproc_defs:
    - item_type: preproc_def
      name: NETEVENT_NOERROR
      pos:
        line_end: 99
        line_start: 98
        source_file: /src/unbound/util/netevent.h
      type_or_value: '0'
    - item_type: preproc_def
      name: NETEVENT_CLOSED
      pos:
        line_end: 101
        line_start: 100
        source_file: /src/unbound/util/netevent.h
      type_or_value: '-1'
    - item_type: preproc_def
      name: NETEVENT_TIMEOUT
      pos:
        line_end: 103
        line_start: 102
        source_file: /src/unbound/util/netevent.h
      type_or_value: '-2'
    - item_type: preproc_def
      name: NETEVENT_CAPSFAIL
      pos:
        line_end: 105
        line_start: 104
        source_file: /src/unbound/util/netevent.h
      type_or_value: '-3'
    - item_type: preproc_def
      name: NETEVENT_DONE
      pos:
        line_end: 107
        line_start: 106
        source_file: /src/unbound/util/netevent.h
      type_or_value: '-4'
    - item_type: preproc_def
      name: NETEVENT_PKT_WRITTEN
      pos:
        line_end: 110
        line_start: 109
        source_file: /src/unbound/util/netevent.h
      type_or_value: '-5'
    - item_type: preproc_def
      name: NETEVENT_SLOW_ACCEPT_TIME
      pos:
        line_end: 113
        line_start: 112
        source_file: /src/unbound/util/netevent.h
      type_or_value: '2000'
    - item_type: preproc_def
      name: NETEVENT_SLOW_ACCEPT_QUEUE_TIME
      pos:
        line_end: 115
        line_start: 114
        source_file: /src/unbound/util/netevent.h
      type_or_value: '50'
    - item_type: preproc_def
      name: SLOW_LOG_TIME
      pos:
        line_end: 117
        line_start: 116
        source_file: /src/unbound/util/netevent.h
      type_or_value: '10'
    - item_type: preproc_def
      name: DOQ_MAX_CIDLEN
      pos:
        line_end: 119
        line_start: 118
        source_file: /src/unbound/util/netevent.h
      type_or_value: '24'
    structs:
    - fields:
      - name: '* eb'
        type: struct internal_base
      - name: (*stop_accept)(void*)
        type: void
      - name: (*start_accept)(void*)
        type: void
      - name: '* cb_arg'
        type: void
      item_type: struct
      name: comm_base
      pos:
        line_end: 134
        line_start: 123
        source_file: /src/unbound/util/netevent.h
    - fields:
      - name: '* c'
        type: struct comm_point
      - name: remote_addr
        type: struct sockaddr_storage
      - name: remote_addrlen
        type: socklen_t
      - name: srctype
        type: int
      - name: pktinfo
        type: "union {\n#ifdef IPV6_PKTINFO\n\t\tstruct in6_pktinfo v6info;\n#endif\n#ifdef
          IP_PKTINFO\n\t\tstruct in_pktinfo v4info;\n#elif defined(IP_RECVDSTADDR)\n\t\tstruct
          in_addr v4addr;\n#endif\n\t}"
      - name: max_udp_size
        type: size_t
      - name: is_proxied
        type: int
      - name: client_addr
        type: struct sockaddr_storage
      - name: client_addrlen
        type: socklen_t
      - name: '* doq_stream'
        type: struct doq_stream
      item_type: struct
      name: comm_reply
      pos:
        line_end: 193
        line_start: 139
        source_file: /src/unbound/util/netevent.h
    - fields:
      - name: '* ev'
        type: struct internal_event
      - name: event_added
        type: int
      - name: '* socket'
        type: struct unbound_socket
      - name: fd
        type: int
      - name: '* timeout'
        type: struct timeval
      - name: '* buffer'
        type: struct sldns_buffer
      - name: tcp_is_reading
        type: int
      - name: tcp_byte_count
        type: size_t
      - name: '* tcp_parent'
        type: struct comm_point
      - name: repinfo
        type: struct comm_reply
      - name: max_tcp_count
        type: int
      - name: cur_tcp_count
        type: int
      - name: '** tcp_handlers'
        type: struct comm_point
      - name: '* tcp_free'
        type: struct comm_point
      - name: is_in_tcp_free
        type: int
      - name: '* ssl'
        type: void
      - name: ssl_shake_state
        type: "enum {\n\t\t/** no handshake, it has been done */\n\t\tcomm_ssl_shake_none
          = 0,\n\t\t/** ssl initial handshake wants to read */\n\t\tcomm_ssl_shake_read,\n\t\t/**
          ssl initial handshake wants to write */\n\t\tcomm_ssl_shake_write,\n\t\t/**
          ssl_write wants to read */\n\t\tcomm_ssl_shake_hs_read,\n\t\t/** ssl_read
          wants to write */\n\t\tcomm_ssl_shake_hs_write\n\t}"
      - name: http_min_version
        type: "enum {\n\t\thttp_version_none = 0,\n\t\thttp_version_2 = 2\n\t}"
      - name: '* http_endpoint'
        type: char
      - name: http_in_headers
        type: int
      - name: http_in_chunk_headers
        type: int
      - name: http_is_chunked
        type: int
      - name: '* http_temp'
        type: struct sldns_buffer
      - name: http_stored
        type: size_t
      - name: '* h2_session'
        type: struct http2_session
      - name: use_h2
        type: int
      - name: '* h2_stream'
        type: struct http2_stream
      - name: http2_stream_max_qbuffer_size
        type: size_t
      - name: http2_max_streams
        type: uint32_t
      - name: '* dtenv'
        type: struct dt_env
      - name: type
        type: "enum comm_point_type {\n\t\t/** UDP socket - handle datagrams. */\n\t\tcomm_udp,\n\t\t/**
          TCP accept socket - only creates handlers if readable. */\n\t\tcomm_tcp_accept,\n\t\t/**
          TCP handler socket - handle byteperbyte readwrite. */\n\t\tcomm_tcp,\n\t\t/**
          HTTP handler socket */\n\t\tcomm_http,\n\t\t/** DOQ handler socket */\n\t\tcomm_doq,\n\t\t/**
          AF_UNIX socket - for internal commands. */\n\t\tcomm_local,\n\t\t/** raw
          - not DNS format - for pipe readers and writers */\n\t\tcomm_raw\n\t}"
      - name: pp2_enabled
        type: int
      - name: pp2_header_state
        type: "enum {\n\t\t/** no header encounter yet */\n\t\tpp2_header_none = 0,\n\t\t/**
          read the static part of the header */\n\t\tpp2_header_init,\n\t\t/** read
          the full header */\n\t\tpp2_header_done\n\t}"
      - name: do_not_close
        type: int
      - name: tcp_do_close
        type: int
      - name: tcp_write_and_read
        type: int
      - name: tcp_write_byte_count
        type: size_t
      - name: '* tcp_write_pkt'
        type: uint8_t
      - name: tcp_write_pkt_len
        type: size_t
      - name: '* tcp_more_read_again'
        type: int
      - name: '* tcp_more_write_again'
        type: int
      - name: tcp_do_toggle_rw
        type: int
      - name: tcp_timeout_msec
        type: int
      - name: tcp_keepalive
        type: int
      - name: tcp_check_nb_connect
        type: int
      - name: '* tcp_conn_limit'
        type: struct tcl_list
      - name: '* tcl_addr'
        type: struct tcl_addr
      - name: '* tcp_req_info'
        type: struct tcp_req_info
      - name: inuse
        type: int
      - name: recv_tv
        type: struct timeval
      - name: '* callback'
        type: comm_point_callback_type
      - name: '*cb_arg'
        type: void
      item_type: struct
      name: comm_point
      pos:
        line_end: 453
        line_start: 204
        source_file: /src/unbound/util/netevent.h
    - fields:
      - name: '* ev_timer'
        type: struct internal_timer
      - name: (*callback)(void*)
        type: void
      - name: '* cb_arg'
        type: void
      item_type: struct
      name: comm_timer
      pos:
        line_end: 467
        line_start: 458
        source_file: /src/unbound/util/netevent.h
    - fields:
      - name: '* base'
        type: struct comm_base
      - name: '* ev_signal'
        type: struct internal_signal
      - name: (*callback)(int, void*)
        type: void
      - name: '* cb_arg'
        type: void
      item_type: struct
      name: comm_signal
      pos:
        line_end: 484
        line_start: 472
        source_file: /src/unbound/util/netevent.h
    - fields:
      - name: '* first_stream'
        type: struct http2_stream
      - name: '* c'
        type: struct comm_point
      - name: reads_count
        type: uint32_t
      - name: is_drop
        type: int
      - name: postpone_drop
        type: int
      item_type: struct
      name: http2_session
      pos:
        line_end: 952
        line_start: 933
        source_file: /src/unbound/util/netevent.h
    - fields:
      - name: '* next'
        type: struct http2_stream
      - name: '* prev'
        type: struct http2_stream
      - name: stream_id
        type: int32_t
      - name: http_method
        type: "enum {\n\t\tHTTP_METHOD_POST = 1,\n\t\tHTTP_METHOD_GET,\n\t\tHTTP_METHOD_UNSUPPORTED\n\t}"
      - name: invalid_content_type
        type: int
      - name: content_length
        type: size_t
      - name: status
        type: enum http_status
      - name: invalid_endpoint
        type: int
      - name: query_too_large
        type: int
      - name: '* qbuffer'
        type: struct sldns_buffer
      - name: '* rbuffer'
        type: struct sldns_buffer
      - name: '* mesh'
        type: struct mesh_area
      - name: '* mesh_state'
        type: struct mesh_state
      item_type: struct
      name: http2_stream
      pos:
        line_end: 1002
        line_start: 968
        source_file: /src/unbound/util/netevent.h
    - fields:
      - name: sockaddr
        type: "union {\n\t\tstruct sockaddr_in in;\n#ifdef AF_INET6\n\t\tstruct sockaddr_in6
          in6;\n#endif\n\t}"
      item_type: struct
      name: doq_addr_storage
      pos:
        line_end: 1050
        line_start: 1043
        source_file: /src/unbound/util/netevent.h
    - fields:
      - name: '* table'
        type: struct doq_table
      - name: '* rnd'
        type: struct ub_randstate
      - name: validate_addr
        type: uint8_t
      - name: sv_scidlen
        type: int
      - name: idle_timeout
        type: uint64_t
      - name: '* static_secret'
        type: uint8_t
      - name: static_secret_len
        type: size_t
      - name: '* ctx'
        type: void
      - name: '* cp'
        type: struct comm_point
      - name: '* pkt_buf'
        type: struct sldns_buffer
      - name: '* current_conn'
        type: struct doq_conn
      - name: event_has_write
        type: uint8_t
      - name: have_blocked_pkt
        type: int
      - name: '* blocked_pkt'
        type: struct sldns_buffer
      - name: '* blocked_paddr'
        type: struct doq_pkt_addr
      - name: '* timer'
        type: struct comm_timer
      - name: '* now_tt'
        type: time_t
      - name: '* now_tv'
        type: struct timeval
      - name: '* cfg'
        type: struct config_file
      item_type: struct
      name: doq_server_socket
      pos:
        line_end: 1109
        line_start: 1055
        source_file: /src/unbound/util/netevent.h
    - fields:
      - name: addr
        type: struct doq_addr_storage
      - name: addrlen
        type: socklen_t
      - name: ifindex
        type: int
      item_type: struct
      name: doq_pkt_addr
      pos:
        line_end: 1122
        line_start: 1115
        source_file: /src/unbound/util/netevent.h
    typedefs:
    - item_type: typedef
      name: "comm_point_callback_type(struct comm_point*, void*, int,\n\tstruct comm_reply*)"
      pos:
        line_end: 95
        line_start: 94
        source_file: /src/unbound/util/netevent.h
      type: int
    union: []
- function_names:
  - FLAGS_GET_RCODE
  - FLAGS_SET_RCODE
  - GET_RANDOM_ID
  source_file: /src/unbound/util/net_help.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: BIT_CD
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/unbound/util/net_help.h
      type_or_value: '0x0010'
    - item_type: preproc_def
      name: BIT_AD
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/unbound/util/net_help.h
      type_or_value: '0x0020'
    - item_type: preproc_def
      name: BIT_Z
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/unbound/util/net_help.h
      type_or_value: '0x0040'
    - item_type: preproc_def
      name: BIT_RA
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/unbound/util/net_help.h
      type_or_value: '0x0080'
    - item_type: preproc_def
      name: BIT_RD
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/unbound/util/net_help.h
      type_or_value: '0x0100'
    - item_type: preproc_def
      name: BIT_TC
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/unbound/util/net_help.h
      type_or_value: '0x0200'
    - item_type: preproc_def
      name: BIT_AA
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/unbound/util/net_help.h
      type_or_value: '0x0400'
    - item_type: preproc_def
      name: BIT_QR
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/unbound/util/net_help.h
      type_or_value: '0x8000'
    - item_type: preproc_def
      name: UDP_AUTH_QUERY_TIMEOUT
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/unbound/util/net_help.h
      type_or_value: '3000'
    - item_type: preproc_def
      name: EDNS_ADVERTISED_VERSION
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/unbound/util/net_help.h
      type_or_value: '0'
    - item_type: preproc_def
      name: EDNS_DO
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/unbound/util/net_help.h
      type_or_value: '0x8000 '
    - item_type: preproc_def
      name: INET_SIZE
      pos:
        line_end: 87
        line_start: 86
        source_file: /src/unbound/util/net_help.h
      type_or_value: '4'
    - item_type: preproc_def
      name: INET6_SIZE
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/unbound/util/net_help.h
      type_or_value: '16'
    - item_type: preproc_def
      name: DNSKEY_BIT_ZSK
      pos:
        line_end: 92
        line_start: 91
        source_file: /src/unbound/util/net_help.h
      type_or_value: '0x0100'
    - item_type: preproc_def
      name: DNSKEY_BIT_SEP
      pos:
        line_end: 94
        line_start: 93
        source_file: /src/unbound/util/net_help.h
      type_or_value: '0x0001'
    - item_type: preproc_def
      name: MSG_DONTWAIT
      pos:
        line_end: 101
        line_start: 100
        source_file: /src/unbound/util/net_help.h
      type_or_value: '0'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/edns.h
  types:
    enum:
    - enumerators:
      - name: COOKIE_STATUS_CLIENT_ONLY
        value: '-3'
      - name: COOKIE_STATUS_EXPIRED
        value: '-1'
      - name: COOKIE_STATUS_INVALID
        value: '0'
      - name: COOKIE_STATUS_FUTURE
        value: '-2'
      - name: COOKIE_STATUS_VALID
        value: '1'
      - name: COOKIE_STATUS_VALID_RENEW
        value: '2'
      item_type: enum
      name: edns_cookie_val_status
      pos:
        line_end: 110
        line_start: 103
        source_file: /src/unbound/util/edns.h
    preproc_defs:
    - item_type: preproc_def
      name: UNBOUND_COOKIE_HISTORY_SIZE
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/unbound/util/edns.h
      type_or_value: '2'
    - item_type: preproc_def
      name: UNBOUND_COOKIE_SECRET_SIZE
      pos:
        line_end: 80
        line_start: 79
        source_file: /src/unbound/util/edns.h
      type_or_value: '16'
    structs:
    - fields:
      - name: client_strings
        type: rbtree_type
      - name: client_string_opcode
        type: uint16_t
      - name: '* region'
        type: struct regional
      item_type: struct
      name: edns_strings
      pos:
        line_end: 63
        line_start: 55
        source_file: /src/unbound/util/edns.h
    - fields:
      - name: node
        type: struct addr_tree_node
      - name: '* string'
        type: uint8_t
      - name: string_len
        type: size_t
      item_type: struct
      name: edns_string_addr
      pos:
        line_end: 76
        line_start: 68
        source_file: /src/unbound/util/edns.h
    - fields:
      - name: cookie_secret[UNBOUND_COOKIE_SECRET_SIZE]
        type: uint8_t
      item_type: struct
      name: cookie_secret
      pos:
        line_end: 85
        line_start: 82
        source_file: /src/unbound/util/edns.h
    - fields:
      - name: lock
        type: lock_basic_type
      - name: cookie_count
        type: size_t
      - name: cookie_secrets[UNBOUND_COOKIE_HISTORY_SIZE]
        type: cookie_secret_type
      item_type: struct
      name: cookie_secrets
      pos:
        line_end: 101
        line_start: 90
        source_file: /src/unbound/util/edns.h
    typedefs:
    - item_type: typedef
      name: cookie_secret_type
      pos:
        line_end: 81
        line_start: 81
        source_file: /src/unbound/util/edns.h
      type: cookie_secret
    union: []
- function_names: []
  source_file: /src/unbound/util/rtt.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: srtt
        type: int
      - name: rttvar
        type: int
      - name: rto
        type: int
      item_type: struct
      name: rtt_info
      pos:
        line_end: 55
        line_start: 48
        source_file: /src/unbound/util/rtt.h
    typedefs: []
    union: []
- function_names:
  - ub_initstate
  - ub_random
  - ub_random_max
  - ub_initstate
  - ub_random
  - ub_random_max
  - ub_initstate
  - ub_random
  - ub_initstate
  - ub_random
  - ub_random_max
  - ub_randfree
  source_file: /src/unbound/util/random.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_VALUE
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/unbound/util/random.c
      type_or_value: '0x7fffffff'
    structs:
    - fields:
      - name: dummy
        type: unsigned int
      item_type: struct
      name: ub_randstate
      pos:
        line_end: 85
        line_start: 83
        source_file: /src/unbound/util/random.c
    - fields:
      - name: ready
        type: int
      item_type: struct
      name: ub_randstate
      pos:
        line_end: 143
        line_start: 141
        source_file: /src/unbound/util/random.c
    - fields:
      - name: ctx
        type: struct yarrow256_ctx
      - name: seeded
        type: int
      item_type: struct
      name: ub_randstate
      pos:
        line_end: 178
        line_start: 175
        source_file: /src/unbound/util/random.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/module.h
  types:
    enum:
    - enumerators:
      - name: inplace_cb_reply
        value: '0'
      - name: inplace_cb_reply_servfail
      - name: inplace_cb_query
      - name: inplace_cb_reply_cache
      - name: inplace_cb_reply_local
      - name: inplace_cb_query_response
      - name: inplace_cb_edns_back_parsed
      - name: inplace_cb_types_total
      item_type: enum
      name: inplace_cb_list_type
      pos:
        line_end: 221
        line_start: 200
        source_file: /src/unbound/util/module.h
    - enumerators:
      - name: module_state_initial
        value: '0'
      - name: module_wait_module
      - name: module_restart_next
      - name: module_wait_subquery
      - name: module_wait_reply
      - name: module_error
      - name: module_finished
      item_type: enum
      name: module_ext_state
      pos:
        line_end: 585
        line_start: 570
        source_file: /src/unbound/util/module.h
    - enumerators:
      - name: module_event_new
        value: '0'
      - name: module_event_reply
      - name: module_event_noreply
      - name: module_event_capsfail
      - name: module_event_pass
      - name: module_event_moddone
      - name: module_event_error
      item_type: enum
      name: module_ev
      pos:
        line_end: 605
        line_start: 590
        source_file: /src/unbound/util/module.h
    preproc_defs:
    - item_type: preproc_def
      name: MAX_MODULE
      pos:
        line_end: 187
        line_start: 186
        source_file: /src/unbound/util/module.h
      type_or_value: '16'
    - item_type: preproc_def
      name: MAX_KNOWN_EDNS_OPTS
      pos:
        line_end: 190
        line_start: 189
        source_file: /src/unbound/util/module.h
      type_or_value: '256'
    structs:
    - fields:
      - name: '* next'
        type: struct errinf_strlist
      - name: '* str'
        type: char
      - name: reason_bogus
        type: int
      item_type: struct
      name: errinf_strlist
      pos:
        line_end: 198
        line_start: 191
        source_file: /src/unbound/util/module.h
    - fields:
      - name: opt_code
        type: uint16_t
      - name: bypass_cache_stage
        type: int
      - name: no_aggregation
        type: int
      item_type: struct
      name: edns_known_option
      pos:
        line_end: 232
        line_start: 225
        source_file: /src/unbound/util/module.h
    - fields:
      - name: '* next'
        type: struct inplace_cb
      - name: '* cb'
        type: void
      - name: '* cb_arg'
        type: void
      - name: id
        type: int
      item_type: struct
      name: inplace_cb
      pos:
        line_end: 245
        line_start: 237
        source_file: /src/unbound/util/module.h
    - fields:
      - name: '* cfg'
        type: struct config_file
      - name: '* msg_cache'
        type: struct slabhash
      - name: '* rrset_cache'
        type: struct rrset_cache
      - name: '* infra_cache'
        type: struct infra_cache
      - name: '* key_cache'
        type: struct key_cache
      - name: "* (*send_query)(struct query_info* qinfo,\n\t\tuint16_t flags, int
          dnssec, int want_dnssec, int nocaps,\n\t\tint check_ratelimit,\n\t\tstruct
          sockaddr_storage* addr, socklen_t addrlen,\n\t\tuint8_t* zone, size_t zonelen,
          int tcp_upstream, int ssl_upstream,\n\t\tchar* tls_auth_name, struct module_qstate*
          q, int* was_ratelimited,\n\t\tint* ratelimit_incremented)"
        type: struct outbound_entry
      - name: (*detach_subs)(struct module_qstate* qstate)
        type: void
      - name: "(*attach_sub)(struct module_qstate* qstate, \n\t\tstruct query_info*
          qinfo, struct respip_client_info* cinfo,\n\t\tuint16_t qflags, int prime,
          int valrec,\n\t\tstruct module_qstate** newq)"
        type: int
      - name: "(*add_sub)(struct module_qstate* qstate, \n\t\tstruct query_info* qinfo,
          struct respip_client_info* cinfo,\n\t\tuint16_t qflags, int prime, int valrec,\n\t\tstruct
          module_qstate** newq, struct mesh_state** sub)"
        type: int
      - name: (*kill_sub)(struct module_qstate* newq)
        type: void
      - name: "(*detect_cycle)(struct module_qstate* qstate, \n\t\tstruct query_info*
          qinfo, uint16_t flags, int prime,\n\t\tint valrec)"
        type: int
      - name: '* scratch'
        type: struct regional
      - name: '* scratch_buffer'
        type: struct sldns_buffer
      - name: '* worker'
        type: struct worker
      - name: '* worker_base'
        type: struct comm_base
      - name: '* outnet'
        type: struct outside_network
      - name: '* mesh'
        type: struct mesh_area
      - name: '* alloc'
        type: struct alloc_cache
      - name: '* rnd'
        type: struct ub_randstate
      - name: '* now'
        type: time_t
      - name: '* now_tv'
        type: struct timeval
      - name: need_to_validate
        type: int
      - name: '* anchors'
        type: struct val_anchors
      - name: '* neg_cache'
        type: struct val_neg_cache
      - name: '* probe_timer'
        type: struct comm_timer
      - name: '* auth_zones'
        type: struct auth_zones
      - name: '* fwds'
        type: struct iter_forwards
      - name: '* hints'
        type: struct iter_hints
      - name: '* views'
        type: struct views
      - name: '* respip_set'
        type: struct respip_set
      - name: '* modinfo[MAX_MODULE]'
        type: void
      - name: '* inplace_cb_lists[inplace_cb_types_total]'
        type: struct inplace_cb
      - name: '* edns_known_options'
        type: struct edns_known_option
      - name: edns_known_options_num
        type: size_t
      - name: '* edns_strings'
        type: struct edns_strings
      - name: '* modstack'
        type: struct module_stack
      - name: unique_mesh
        type: int
      item_type: struct
      name: module_env
      pos:
        line_end: 563
        line_start: 336
        source_file: /src/unbound/util/module.h
    - fields:
      - name: '* next'
        type: struct sock_list
      - name: len
        type: socklen_t
      - name: addr
        type: struct sockaddr_storage
      item_type: struct
      name: sock_list
      pos:
        line_end: 618
        line_start: 611
        source_file: /src/unbound/util/module.h
    - fields:
      - name: '* timer'
        type: struct comm_timer
      - name: '* get_cached_answer'
        type: serve_expired_lookup_func_type
      item_type: struct
      name: serve_expired_data
      pos:
        line_end: 628
        line_start: 625
        source_file: /src/unbound/util/module.h
    - fields:
      - name: qinfo
        type: struct query_info
      - name: query_flags
        type: uint16_t
      - name: is_priming
        type: int
      - name: is_valrec
        type: int
      - name: '* reply'
        type: struct comm_reply
      - name: '* return_msg'
        type: struct dns_msg
      - name: return_rcode
        type: int
      - name: '* reply_origin'
        type: struct sock_list
      - name: '* blacklist'
        type: struct sock_list
      - name: '* region'
        type: struct regional
      - name: '* errinf'
        type: struct errinf_strlist
      - name: curmod
        type: int
      - name: ext_state[MAX_MODULE]
        type: enum module_ext_state
      - name: '* minfo[MAX_MODULE]'
        type: void
      - name: '* env'
        type: struct module_env
      - name: '* mesh_info'
        type: struct mesh_state
      - name: prefetch_leeway
        type: time_t
      - name: '* serve_expired_data'
        type: struct serve_expired_data
      - name: '* edns_opts_front_in'
        type: struct edns_option
      - name: '* edns_opts_back_out'
        type: struct edns_option
      - name: '* edns_opts_back_in'
        type: struct edns_option
      - name: '* edns_opts_front_out'
        type: struct edns_option
      - name: no_cache_lookup
        type: int
      - name: no_cache_store
        type: int
      - name: need_refetch
        type: int
      - name: was_ratelimited
        type: int
      - name: qstarttime
        type: time_t
      - name: is_cachedb_answer
        type: int
      - name: is_subnet_answer
        type: int
      - name: error_response_cache
        type: int
      - name: fwd_stub_no_cache
        type: int
      - name: '* client_info'
        type: struct respip_client_info
      - name: '* respip_action_info'
        type: struct respip_action_info
      - name: rpz_applied
        type: int
      - name: rpz_passthru
        type: int
      - name: tcp_required
        type: int
      - name: is_drop
        type: int
      - name: global_quota_reached
        type: int
      - name: global_quota_started
        type: int
      item_type: struct
      name: module_qstate
      pos:
        line_end: 738
        line_start: 633
        source_file: /src/unbound/util/module.h
    - fields:
      - name: '* name'
        type: char
      - name: (*startup)(struct module_env* env, int id)
        type: int
      - name: (*destartup)(struct module_env* env, int id)
        type: void
      - name: (*init)(struct module_env* env, int id)
        type: int
      - name: (*deinit)(struct module_env* env, int id)
        type: void
      - name: "(*operate)(struct module_qstate* qstate, enum module_ev event, \n\t\tint
          id, struct outbound_entry* outbound)"
        type: void
      - name: "(*inform_super)(struct module_qstate* qstate, int id,\n\t\tstruct module_qstate*
          super)"
        type: void
      - name: (*clear)(struct module_qstate* qstate, int id)
        type: void
      - name: (*get_mem)(struct module_env* env, int id)
        type: size_t
      item_type: struct
      name: module_func_block
      pos:
        line_end: 833
        line_start: 743
        source_file: /src/unbound/util/module.h
    typedefs:
    - item_type: typedef
      name: "inplace_cb_reply_func_type(struct query_info* qinfo,\n\tstruct module_qstate*
        qstate, struct reply_info* rep, int rcode,\n\tstruct edns_data* edns, struct
        edns_option** opt_list_out,\n\tstruct comm_reply* repinfo, struct regional*
        region,\n\tstruct timeval* start_time, int id, void* callback)"
      pos:
        line_end: 271
        line_start: 267
        source_file: /src/unbound/util/module.h
      type: int
    - item_type: typedef
      name: "inplace_cb_query_func_type(struct query_info* qinfo, uint16_t flags,\n\tstruct
        module_qstate* qstate, struct sockaddr_storage* addr,\n\tsocklen_t addrlen,
        uint8_t* zone, size_t zonelen, struct regional* region,\n\tint id, void* callback)"
      pos:
        line_end: 294
        line_start: 291
        source_file: /src/unbound/util/module.h
      type: int
    - item_type: typedef
      name: "inplace_cb_edns_back_parsed_func_type(struct module_qstate* qstate, \n\tint
        id, void* cb_args)"
      pos:
        line_end: 305
        line_start: 304
        source_file: /src/unbound/util/module.h
      type: int
    - item_type: typedef
      name: "inplace_cb_query_response_func_type(struct module_qstate* qstate,\n\tstruct
        dns_msg* response, int id, void* cb_args)"
      pos:
        line_end: 317
        line_start: 316
        source_file: /src/unbound/util/module.h
      type: int
    - item_type: typedef
      name: "* serve_expired_lookup_func_type(\n\tstruct module_qstate* qstate, struct
        query_info* lookup_qinfo,\n\tint* is_expired)"
      pos:
        line_end: 330
        line_start: 328
        source_file: /src/unbound/util/module.h
      type: dns_msg
    union: []
- function_names:
  - evtimer_add
  - evtimer_del
  - signal_set
  source_file: /src/unbound/util/winsock_event.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: event_init
      pos:
        line_end: 95
        line_start: 94
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: winsockevent_init
    - item_type: preproc_def
      name: event_get_version
      pos:
        line_end: 96
        line_start: 95
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: winsockevent_get_version
    - item_type: preproc_def
      name: event_get_method
      pos:
        line_end: 97
        line_start: 96
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: winsockevent_get_method
    - item_type: preproc_def
      name: event_base_dispatch
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: winsockevent_base_dispatch
    - item_type: preproc_def
      name: event_base_loopexit
      pos:
        line_end: 99
        line_start: 98
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: winsockevent_base_loopexit
    - item_type: preproc_def
      name: event_base_free
      pos:
        line_end: 100
        line_start: 99
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: winsockevent_base_free
    - item_type: preproc_def
      name: event_set
      pos:
        line_end: 101
        line_start: 100
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: winsockevent_set
    - item_type: preproc_def
      name: event_base_set
      pos:
        line_end: 102
        line_start: 101
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: winsockevent_base_set
    - item_type: preproc_def
      name: event_add
      pos:
        line_end: 103
        line_start: 102
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: winsockevent_add
    - item_type: preproc_def
      name: event_del
      pos:
        line_end: 104
        line_start: 103
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: winsockevent_del
    - item_type: preproc_def
      name: signal_add
      pos:
        line_end: 105
        line_start: 104
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: winsocksignal_add
    - item_type: preproc_def
      name: signal_del
      pos:
        line_end: 106
        line_start: 105
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: winsocksignal_del
    - item_type: preproc_def
      name: EV_TIMEOUT
      pos:
        line_end: 109
        line_start: 108
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: EV_READ
      pos:
        line_end: 111
        line_start: 110
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: '0x02'
    - item_type: preproc_def
      name: EV_WRITE
      pos:
        line_end: 113
        line_start: 112
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: '0x04'
    - item_type: preproc_def
      name: EV_SIGNAL
      pos:
        line_end: 115
        line_start: 114
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: '0x08'
    - item_type: preproc_def
      name: EV_PERSIST
      pos:
        line_end: 117
        line_start: 116
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: '0x10'
    - item_type: preproc_def
      name: MAX_SIG
      pos:
        line_end: 123
        line_start: 122
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: '32'
    - item_type: preproc_def
      name: WSK_MAX_ITEMS
      pos:
        line_end: 127
        line_start: 126
        source_file: /src/unbound/util/winsock_event.h
      type_or_value: '64'
    structs:
    - fields:
      - name: '* times'
        type: rbtree_type
      - name: '** items'
        type: struct event
      - name: max
        type: int
      - name: cap
        type: int
      - name: '** signals'
        type: struct event
      - name: need_to_exit
        type: int
      - name: '* time_secs'
        type: time_t
      - name: '* time_tv'
        type: struct timeval
      - name: tcp_stickies
        type: int
      - name: tcp_reinvigorated
        type: int
      - name: waitfor[WSK_MAX_ITEMS]
        type: WSAEVENT
      item_type: struct
      name: event_base
      pos:
        line_end: 164
        line_start: 131
        source_file: /src/unbound/util/winsock_event.h
    - fields:
      - name: node
        type: rbnode_type
      - name: added
        type: int
      - name: '*ev_base'
        type: struct event_base
      - name: ev_fd
        type: int
      - name: ev_events
        type: short
      - name: ev_timeout
        type: struct timeval
      - name: (*ev_callback)(int, short, void *)
        type: void
      - name: '*ev_arg'
        type: void
      - name: idx
        type: int
      - name: hEvent
        type: WSAEVENT
      - name: is_tcp
        type: int
      - name: old_events
        type: short
      - name: stick_events
        type: int
      - name: is_signal
        type: int
      - name: just_checked
        type: int
      item_type: struct
      name: event
      pos:
        line_end: 208
        line_start: 169
        source_file: /src/unbound/util/winsock_event.h
    typedefs: []
    union: []
- function_names:
  - pp_init
  - pp_lookup_error
  - pp2_write_to_buf
  - pp2_read_header
  source_file: /src/unbound/util/proxy_protocol.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: (*write_uint16)(void* buf, uint16_t data)
        type: void
      - name: (*write_uint32)(void* buf, uint32_t data)
        type: void
      item_type: struct
      name: proxy_protocol_data
      pos:
        line_end: 49
        line_start: 46
        source_file: /src/unbound/util/proxy_protocol.c
    - fields:
      - name: id
        type: int
      - name: '*text'
        type: char
      item_type: struct
      name: proxy_protocol_lookup_table
      pos:
        line_end: 59
        line_start: 56
        source_file: /src/unbound/util/proxy_protocol.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/random.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - edns_strings_create
  - edns_strings_delete
  - edns_strings_client_insert
  - edns_strings_apply_cfg
  - edns_string_addr_lookup
  - edns_strings_get_mem
  - edns_strings_swap_tree
  - edns_cookie_server_hash
  - edns_cookie_server_write
  - edns_cookie_server_validate
  - cookie_secrets_create
  - cookie_secrets_delete
  - cookie_secret_file_read
  - cookie_secrets_apply_cfg
  - cookie_secrets_server_validate
  - add_cookie_secret
  - activate_cookie_secret
  - drop_cookie_secret
  source_file: /src/unbound/util/edns.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - RBTREE_FOR
  source_file: /src/unbound/util/rbtree.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: RBTREE_NULL
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/unbound/util/rbtree.h
      type_or_value: '&rbtree_null_node'
    structs:
    - fields:
      - name: '*parent'
        type: rbnode_type
      - name: '*left'
        type: rbnode_type
      - name: '*right'
        type: rbnode_type
      - name: '*key'
        type: void
      - name: color
        type: uint8_t
      item_type: struct
      name: rbnode_type
      pos:
        line_end: 65
        line_start: 54
        source_file: /src/unbound/util/rbtree.h
    - fields:
      - name: '*root'
        type: rbnode_type
      - name: count
        type: size_t
      - name: (*cmp) (const void *, const void *)
        type: int
      item_type: struct
      name: rbtree_type
      pos:
        line_end: 87
        line_start: 75
        source_file: /src/unbound/util/rbtree.h
    typedefs:
    - item_type: typedef
      name: rbnode_type
      pos:
        line_end: 50
        line_start: 50
        source_file: /src/unbound/util/rbtree.h
      type: rbnode_type
    - item_type: typedef
      name: rbtree_type
      pos:
        line_end: 73
        line_start: 73
        source_file: /src/unbound/util/rbtree.h
      type: rbtree_type
    union: []
- function_names:
  - ROTL
  - U32TO8_LE
  - U64TO8_LE
  - U8TO64_LE
  - siphash
  source_file: /src/unbound/util/siphash.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: cROUNDS
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/unbound/util/siphash.c
      type_or_value: '2'
    - item_type: preproc_def
      name: dROUNDS
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/unbound/util/siphash.c
      type_or_value: '4'
    - item_type: preproc_def
      name: SIPROUND
      pos:
        line_end: 72
        line_start: 55
        source_file: /src/unbound/util/siphash.c
      type_or_value: "do {                                                                       \\\n
        \       v0 += v1;                                                              \\\n
        \       v1 = ROTL(v1, 13);                                                     \\\n
        \       v1 ^= v0;                                                              \\\n
        \       v0 = ROTL(v0, 32);                                                     \\\n
        \       v2 += v3;                                                              \\\n
        \       v3 = ROTL(v3, 16);                                                     \\\n
        \       v3 ^= v2;                                                              \\\n
        \       v0 += v3;                                                              \\\n
        \       v3 = ROTL(v3, 21);                                                     \\\n
        \       v3 ^= v0;                                                              \\\n
        \       v2 += v1;                                                              \\\n
        \       v1 = ROTL(v1, 17);                                                     \\\n
        \       v1 ^= v2;                                                              \\\n
        \       v2 = ROTL(v2, 32);                                                     \\\n
        \   } while (0)"
    - item_type: preproc_def
      name: TRACE
      pos:
        line_end: 85
        line_start: 74
        source_file: /src/unbound/util/siphash.c
      type_or_value: "do {                                                                       \\\n
        \       printf(\"(%3d) v0 %08x %08x\\n\", (int)inlen, (uint32_t)(v0 >> 32),
        \      \\\n               (uint32_t)v0);                                                  \\\n
        \       printf(\"(%3d) v1 %08x %08x\\n\", (int)inlen, (uint32_t)(v1 >> 32),
        \      \\\n               (uint32_t)v1);                                                  \\\n
        \       printf(\"(%3d) v2 %08x %08x\\n\", (int)inlen, (uint32_t)(v2 >> 32),
        \      \\\n               (uint32_t)v2);                                                  \\\n
        \       printf(\"(%3d) v3 %08x %08x\\n\", (int)inlen, (uint32_t)(v3 >> 32),
        \      \\\n               (uint32_t)v3);                                                  \\\n
        \   } while (0)"
    structs: []
    typedefs: []
    union: []
- function_names:
  - ub_thread_blocksigs
  - ub_thread_sig_unblock
  - ub_thr_fork_create
  - ub_thr_fork_wait
  - ub_thread_key_get
  - log_win_err
  - lock_basic_init
  - lock_basic_destroy
  - lock_basic_lock
  - lock_basic_unlock
  - ub_thread_key_create
  - ub_thread_key_set
  - ub_thread_key_get
  - ub_thread_create
  - ub_thread_self
  - ub_thread_join
  source_file: /src/unbound/util/locks.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - mini_ev_cmp
  - settime
  - event_init
  - event_get_version
  - event_get_method
  - handle_timeouts
  - handle_select
  - event_base_dispatch
  - event_base_loopexit
  - event_base_free
  - event_set
  - event_base_set
  - event_add
  - event_del
  - sigh
  - signal_add
  - signal_del
  - mini_ev_cmp
  source_file: /src/unbound/util/mini_event.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - strextstate
  - strmodulevent
  - errinf
  - errinf_ede
  - errinf_origin
  - errinf_to_str_bogus
  - errinf_to_reason_bogus
  - errinf_to_str_servfail
  - errinf_to_str_misc
  - errinf_rrset
  - errinf_dname
  - edns_known_options_init
  - edns_known_options_delete
  - edns_register_option
  - inplace_cb_register
  - inplace_cb_delete
  - edns_option_is_known
  - edns_bypass_cache_stage
  - unique_mesh_state
  - log_edns_known_options
  - copy_state_to_super
  source_file: /src/unbound/util/module.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - evtimer_add
  - evtimer_del
  - signal_set
  source_file: /src/unbound/util/mini_event.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: event_init
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/unbound/util/mini_event.h
      type_or_value: minievent_init
    - item_type: preproc_def
      name: event_get_version
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/unbound/util/mini_event.h
      type_or_value: minievent_get_version
    - item_type: preproc_def
      name: event_get_method
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/unbound/util/mini_event.h
      type_or_value: minievent_get_method
    - item_type: preproc_def
      name: event_base_dispatch
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/unbound/util/mini_event.h
      type_or_value: minievent_base_dispatch
    - item_type: preproc_def
      name: event_base_loopexit
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/unbound/util/mini_event.h
      type_or_value: minievent_base_loopexit
    - item_type: preproc_def
      name: event_base_free
      pos:
        line_end: 74
        line_start: 73
        source_file: /src/unbound/util/mini_event.h
      type_or_value: minievent_base_free
    - item_type: preproc_def
      name: event_set
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/unbound/util/mini_event.h
      type_or_value: minievent_set
    - item_type: preproc_def
      name: event_base_set
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/unbound/util/mini_event.h
      type_or_value: minievent_base_set
    - item_type: preproc_def
      name: event_add
      pos:
        line_end: 77
        line_start: 76
        source_file: /src/unbound/util/mini_event.h
      type_or_value: minievent_add
    - item_type: preproc_def
      name: event_del
      pos:
        line_end: 78
        line_start: 77
        source_file: /src/unbound/util/mini_event.h
      type_or_value: minievent_del
    - item_type: preproc_def
      name: signal_add
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/unbound/util/mini_event.h
      type_or_value: minisignal_add
    - item_type: preproc_def
      name: signal_del
      pos:
        line_end: 80
        line_start: 79
        source_file: /src/unbound/util/mini_event.h
      type_or_value: minisignal_del
    - item_type: preproc_def
      name: EV_TIMEOUT
      pos:
        line_end: 83
        line_start: 82
        source_file: /src/unbound/util/mini_event.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: EV_READ
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/unbound/util/mini_event.h
      type_or_value: '0x02'
    - item_type: preproc_def
      name: EV_WRITE
      pos:
        line_end: 87
        line_start: 86
        source_file: /src/unbound/util/mini_event.h
      type_or_value: '0x04'
    - item_type: preproc_def
      name: EV_SIGNAL
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/unbound/util/mini_event.h
      type_or_value: '0x08'
    - item_type: preproc_def
      name: EV_PERSIST
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/unbound/util/mini_event.h
      type_or_value: '0x10'
    - item_type: preproc_def
      name: MAX_FDS
      pos:
        line_end: 97
        line_start: 96
        source_file: /src/unbound/util/mini_event.h
      type_or_value: '1024'
    - item_type: preproc_def
      name: MAX_SIG
      pos:
        line_end: 99
        line_start: 98
        source_file: /src/unbound/util/mini_event.h
      type_or_value: '32'
    structs:
    - fields:
      - name: '* times'
        type: rbtree_type
      - name: '** fds'
        type: struct event
      - name: maxfd
        type: int
      - name: capfd
        type: int
      - name: reads
        type: fd_set
      - name: '** signals'
        type: struct event
      - name: need_to_exit
        type: int
      - name: '* time_secs'
        type: time_t
      - name: '* time_tv'
        type: struct timeval
      item_type: struct
      name: event_base
      pos:
        line_end: 129
        line_start: 101
        source_file: /src/unbound/util/mini_event.h
    - fields:
      - name: node
        type: rbnode_type
      - name: added
        type: int
      - name: '*ev_base'
        type: struct event_base
      - name: ev_fd
        type: int
      - name: ev_events
        type: short
      - name: ev_timeout
        type: struct timeval
      - name: (*ev_callback)(int, short, void *arg)
        type: void
      - name: '*ev_arg'
        type: void
      item_type: struct
      name: event
      pos:
        line_end: 153
        line_start: 134
        source_file: /src/unbound/util/mini_event.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/configyyrename.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: yymaxdepth
      pos:
        line_end: 14
        line_start: 13
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_maxdepth
    - item_type: preproc_def
      name: yyparse
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_parse
    - item_type: preproc_def
      name: yylex
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_lex
    - item_type: preproc_def
      name: yyerror
      pos:
        line_end: 17
        line_start: 16
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_error
    - item_type: preproc_def
      name: yylval
      pos:
        line_end: 18
        line_start: 17
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_lval
    - item_type: preproc_def
      name: yychar
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_char
    - item_type: preproc_def
      name: yydebug
      pos:
        line_end: 20
        line_start: 19
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_debug
    - item_type: preproc_def
      name: yypact
      pos:
        line_end: 21
        line_start: 20
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_pact
    - item_type: preproc_def
      name: yyr1
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_r1
    - item_type: preproc_def
      name: yyr2
      pos:
        line_end: 23
        line_start: 22
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_r2
    - item_type: preproc_def
      name: yydef
      pos:
        line_end: 24
        line_start: 23
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_def
    - item_type: preproc_def
      name: yychk
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_chk
    - item_type: preproc_def
      name: yypgo
      pos:
        line_end: 26
        line_start: 25
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_pgo
    - item_type: preproc_def
      name: yyact
      pos:
        line_end: 27
        line_start: 26
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_act
    - item_type: preproc_def
      name: yyexca
      pos:
        line_end: 28
        line_start: 27
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_exca
    - item_type: preproc_def
      name: yyerrflag
      pos:
        line_end: 29
        line_start: 28
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_errflag
    - item_type: preproc_def
      name: yynerrs
      pos:
        line_end: 30
        line_start: 29
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_nerrs
    - item_type: preproc_def
      name: yyps
      pos:
        line_end: 31
        line_start: 30
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_ps
    - item_type: preproc_def
      name: yypv
      pos:
        line_end: 32
        line_start: 31
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_pv
    - item_type: preproc_def
      name: yys
      pos:
        line_end: 33
        line_start: 32
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_s
    - item_type: preproc_def
      name: yy_yys
      pos:
        line_end: 34
        line_start: 33
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_yys
    - item_type: preproc_def
      name: yystate
      pos:
        line_end: 35
        line_start: 34
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_state
    - item_type: preproc_def
      name: yytmp
      pos:
        line_end: 36
        line_start: 35
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_tmp
    - item_type: preproc_def
      name: yyv
      pos:
        line_end: 37
        line_start: 36
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_v
    - item_type: preproc_def
      name: yy_yyv
      pos:
        line_end: 38
        line_start: 37
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_yyv
    - item_type: preproc_def
      name: yyval
      pos:
        line_end: 39
        line_start: 38
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_val
    - item_type: preproc_def
      name: yylloc
      pos:
        line_end: 40
        line_start: 39
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_lloc
    - item_type: preproc_def
      name: yyreds
      pos:
        line_end: 41
        line_start: 40
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_reds
    - item_type: preproc_def
      name: yytoks
      pos:
        line_end: 42
        line_start: 41
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_toks
    - item_type: preproc_def
      name: yylhs
      pos:
        line_end: 43
        line_start: 42
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_yylhs
    - item_type: preproc_def
      name: yylen
      pos:
        line_end: 44
        line_start: 43
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_yylen
    - item_type: preproc_def
      name: yydefred
      pos:
        line_end: 45
        line_start: 44
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_yydefred
    - item_type: preproc_def
      name: yydgoto
      pos:
        line_end: 46
        line_start: 45
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_yydgoto
    - item_type: preproc_def
      name: yysindex
      pos:
        line_end: 47
        line_start: 46
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_yysindex
    - item_type: preproc_def
      name: yyrindex
      pos:
        line_end: 48
        line_start: 47
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_yyrindex
    - item_type: preproc_def
      name: yygindex
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_yygindex
    - item_type: preproc_def
      name: yytable
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_yytable
    - item_type: preproc_def
      name: yycheck
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_yycheck
    - item_type: preproc_def
      name: yyname
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_yyname
    - item_type: preproc_def
      name: yyrule
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_yyrule
    - item_type: preproc_def
      name: yyin
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_in
    - item_type: preproc_def
      name: yyout
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_out
    - item_type: preproc_def
      name: yywrap
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_wrap
    - item_type: preproc_def
      name: yy_load_buffer_state
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_load_buffer_state
    - item_type: preproc_def
      name: yy_switch_to_buffer
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_switch_to_buffer
    - item_type: preproc_def
      name: yy_flush_buffer
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_flush_buffer
    - item_type: preproc_def
      name: yy_init_buffer
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_init_buffer
    - item_type: preproc_def
      name: yy_scan_buffer
      pos:
        line_end: 61
        line_start: 60
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_scan_buffer
    - item_type: preproc_def
      name: yy_scan_bytes
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_scan_bytes
    - item_type: preproc_def
      name: yy_scan_string
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_scan_string
    - item_type: preproc_def
      name: yy_create_buffer
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_create_buffer
    - item_type: preproc_def
      name: yyrestart
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_restart
    - item_type: preproc_def
      name: yy_delete_buffer
      pos:
        line_end: 66
        line_start: 65
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_delete_buffer
    - item_type: preproc_def
      name: yypop_buffer_state
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_pop_buffer_state
    - item_type: preproc_def
      name: yypush_buffer_state
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_push_buffer_state
    - item_type: preproc_def
      name: yyunput
      pos:
        line_end: 69
        line_start: 68
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_unput
    - item_type: preproc_def
      name: yyset_in
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_set_in
    - item_type: preproc_def
      name: yyget_in
      pos:
        line_end: 71
        line_start: 70
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_get_in
    - item_type: preproc_def
      name: yyset_out
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_set_out
    - item_type: preproc_def
      name: yyget_out
      pos:
        line_end: 73
        line_start: 72
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_get_out
    - item_type: preproc_def
      name: yyget_lineno
      pos:
        line_end: 74
        line_start: 73
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_get_lineno
    - item_type: preproc_def
      name: yyset_lineno
      pos:
        line_end: 75
        line_start: 74
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_set_lineno
    - item_type: preproc_def
      name: yyset_debug
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_set_debug
    - item_type: preproc_def
      name: yyget_debug
      pos:
        line_end: 77
        line_start: 76
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_get_debug
    - item_type: preproc_def
      name: yy_flex_debug
      pos:
        line_end: 78
        line_start: 77
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_flex_debug
    - item_type: preproc_def
      name: yylex_destroy
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_lex_destroy
    - item_type: preproc_def
      name: yyfree
      pos:
        line_end: 80
        line_start: 79
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_free
    - item_type: preproc_def
      name: yyrealloc
      pos:
        line_end: 81
        line_start: 80
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_realloc
    - item_type: preproc_def
      name: yyalloc
      pos:
        line_end: 82
        line_start: 81
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_alloc
    - item_type: preproc_def
      name: yymalloc
      pos:
        line_end: 83
        line_start: 82
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_malloc
    - item_type: preproc_def
      name: yyget_leng
      pos:
        line_end: 84
        line_start: 83
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_get_leng
    - item_type: preproc_def
      name: yylineno
      pos:
        line_end: 85
        line_start: 84
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_lineno
    - item_type: preproc_def
      name: yyget_text
      pos:
        line_end: 86
        line_start: 85
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_get_text
    - item_type: preproc_def
      name: yyss
      pos:
        line_end: 87
        line_start: 86
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_ss
    - item_type: preproc_def
      name: yysslim
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_sslim
    - item_type: preproc_def
      name: yyssp
      pos:
        line_end: 89
        line_start: 88
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_ssp
    - item_type: preproc_def
      name: yystacksize
      pos:
        line_end: 90
        line_start: 89
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_stacksize
    - item_type: preproc_def
      name: yyvs
      pos:
        line_end: 91
        line_start: 90
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_vs
    - item_type: preproc_def
      name: yyvsp
      pos:
        line_end: 92
        line_start: 91
        source_file: /src/unbound/util/configyyrename.h
      type_or_value: ub_c_vsp
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/tube.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields: []
      item_type: struct
      name: tube
      pos:
        line_end: 109
        line_start: 62
        source_file: /src/unbound/util/tube.h
    - fields:
      - name: '* next'
        type: struct tube_res_list
      - name: '* buf'
        type: uint8_t
      - name: len
        type: uint32_t
      item_type: struct
      name: tube_res_list
      pos:
        line_end: 121
        line_start: 114
        source_file: /src/unbound/util/tube.h
    typedefs:
    - item_type: typedef
      name: tube_callback_type(struct tube*, uint8_t*, size_t, int, void*)
      pos:
        line_end: 57
        line_start: 57
        source_file: /src/unbound/util/tube.h
      type: void
    union: []
- function_names: []
  source_file: /src/unbound/util/config_file.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PROBE_MAXRTO_DEFAULT
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/unbound/util/config_file.h
      type_or_value: '12000'
    - item_type: preproc_def
      name: LINUX_IP_LOCAL_PORT_RANGE_PATH
      pos:
        line_end: 1490
        line_start: 1489
        source_file: /src/unbound/util/config_file.h
      type_or_value: '"/proc/sys/net/ipv4/ip_local_port_range"'
    structs:
    - fields:
      - name: '* first'
        type: struct config_strlist
      - name: '* last'
        type: struct config_strlist
      item_type: struct
      name: config_strlist_head
      pos:
        line_end: 65
        line_start: 60
        source_file: /src/unbound/util/config_file.h
    - fields:
      - name: verbosity
        type: int
      - name: stat_interval
        type: int
      - name: stat_cumulative
        type: int
      - name: stat_extended
        type: int
      - name: stat_inhibit_zero
        type: int
      - name: num_threads
        type: int
      - name: port
        type: int
      - name: do_ip4
        type: int
      - name: do_ip6
        type: int
      - name: do_nat64
        type: int
      - name: prefer_ip4
        type: int
      - name: prefer_ip6
        type: int
      - name: do_udp
        type: int
      - name: do_tcp
        type: int
      - name: max_reuse_tcp_queries
        type: size_t
      - name: tcp_reuse_timeout
        type: int
      - name: tcp_auth_query_timeout
        type: int
      - name: tcp_upstream
        type: int
      - name: udp_upstream_without_downstream
        type: int
      - name: tcp_mss
        type: int
      - name: outgoing_tcp_mss
        type: int
      - name: tcp_idle_timeout
        type: int
      - name: do_tcp_keepalive
        type: int
      - name: tcp_keepalive_timeout
        type: int
      - name: sock_queue_timeout
        type: int
      - name: '* proxy_protocol_port'
        type: struct config_strlist
      - name: '* ssl_service_key'
        type: char
      - name: '* ssl_service_pem'
        type: char
      - name: ssl_port
        type: int
      - name: ssl_upstream
        type: int
      - name: '* tls_cert_bundle'
        type: char
      - name: tls_win_cert
        type: int
      - name: '* tls_additional_port'
        type: struct config_strlist
      - name: tls_session_ticket_keys
        type: struct config_strlist_head
      - name: '* tls_ciphers'
        type: char
      - name: '* tls_ciphersuites'
        type: char
      - name: tls_use_sni
        type: int
      - name: '* tls_protocols'
        type: char
      - name: https_port
        type: int
      - name: '* http_endpoint'
        type: char
      - name: http_max_streams
        type: uint32_t
      - name: http_query_buffer_size
        type: size_t
      - name: http_response_buffer_size
        type: size_t
      - name: http_nodelay
        type: int
      - name: http_notls_downstream
        type: int
      - name: quic_port
        type: int
      - name: quic_size
        type: size_t
      - name: outgoing_num_ports
        type: int
      - name: outgoing_num_tcp
        type: size_t
      - name: incoming_num_tcp
        type: size_t
      - name: '* outgoing_avail_ports'
        type: int
      - name: edns_buffer_size
        type: size_t
      - name: stream_wait_size
        type: size_t
      - name: msg_buffer_size
        type: size_t
      - name: msg_cache_size
        type: size_t
      - name: msg_cache_slabs
        type: size_t
      - name: num_queries_per_thread
        type: size_t
      - name: jostle_time
        type: size_t
      - name: rrset_cache_size
        type: size_t
      - name: rrset_cache_slabs
        type: size_t
      - name: host_ttl
        type: int
      - name: infra_cache_slabs
        type: size_t
      - name: infra_cache_numhosts
        type: size_t
      - name: infra_cache_min_rtt
        type: int
      - name: infra_cache_max_rtt
        type: int
      - name: infra_keep_probing
        type: int
      - name: delay_close
        type: int
      - name: udp_connect
        type: int
      - name: '* target_fetch_policy'
        type: char
      - name: fast_server_permil
        type: int
      - name: fast_server_num
        type: size_t
      - name: if_automatic
        type: int
      - name: '* if_automatic_ports'
        type: char
      - name: so_rcvbuf
        type: size_t
      - name: so_sndbuf
        type: size_t
      - name: so_reuseport
        type: int
      - name: ip_transparent
        type: int
      - name: ip_freebind
        type: int
      - name: ip_dscp
        type: int
      - name: num_ifs
        type: int
      - name: '**ifs'
        type: char
      - name: num_out_ifs
        type: int
      - name: '**out_ifs'
        type: char
      - name: '* root_hints'
        type: struct config_strlist
      - name: '* stubs'
        type: struct config_stub
      - name: '* forwards'
        type: struct config_stub
      - name: '* auths'
        type: struct config_auth
      - name: '* views'
        type: struct config_view
      - name: '* donotqueryaddrs'
        type: struct config_strlist
      - name: '* acls'
        type: struct config_str2list
      - name: donotquery_localhost
        type: int
      - name: '* tcp_connection_limits'
        type: struct config_str2list
      - name: harden_short_bufsize
        type: int
      - name: harden_large_queries
        type: int
      - name: harden_glue
        type: int
      - name: harden_unverified_glue
        type: int
      - name: harden_dnssec_stripped
        type: int
      - name: harden_below_nxdomain
        type: int
      - name: harden_referral_path
        type: int
      - name: harden_algo_downgrade
        type: int
      - name: harden_unknown_additional
        type: int
      - name: harden_cname_follow
        type: int
      - name: use_caps_bits_for_id
        type: int
      - name: '* caps_whitelist'
        type: struct config_strlist
      - name: '* private_address'
        type: struct config_strlist
      - name: '* private_domain'
        type: struct config_strlist
      - name: unwanted_threshold
        type: size_t
      - name: max_ttl
        type: int
      - name: min_ttl
        type: int
      - name: max_negative_ttl
        type: int
      - name: min_negative_ttl
        type: int
      - name: prefetch
        type: int
      - name: prefetch_key
        type: int
      - name: deny_any
        type: int
      - name: '* chrootdir'
        type: char
      - name: '* username'
        type: char
      - name: '* directory'
        type: char
      - name: '* logfile'
        type: char
      - name: '* pidfile'
        type: char
      - name: use_syslog
        type: int
      - name: log_time_ascii
        type: int
      - name: log_time_iso
        type: int
      - name: log_queries
        type: int
      - name: log_replies
        type: int
      - name: log_tag_queryreply
        type: int
      - name: log_local_actions
        type: int
      - name: log_servfail
        type: int
      - name: '* log_identity'
        type: char
      - name: log_destaddr
        type: int
      - name: log_thread_id
        type: int
      - name: hide_identity
        type: int
      - name: hide_version
        type: int
      - name: hide_trustanchor
        type: int
      - name: hide_http_user_agent
        type: int
      - name: '* identity'
        type: char
      - name: '* version'
        type: char
      - name: '* http_user_agent'
        type: char
      - name: '*nsid_cfg_str'
        type: char
      - name: '*nsid'
        type: uint8_t
      - name: nsid_len
        type: uint16_t
      - name: '* module_conf'
        type: char
      - name: '* trust_anchor_file_list'
        type: struct config_strlist
      - name: '* trust_anchor_list'
        type: struct config_strlist
      - name: '* auto_trust_anchor_file_list'
        type: struct config_strlist
      - name: '* trusted_keys_file_list'
        type: struct config_strlist
      - name: '* domain_insecure'
        type: struct config_strlist
      - name: trust_anchor_signaling
        type: int
      - name: root_key_sentinel
        type: int
      - name: val_date_override
        type: int32_t
      - name: val_sig_skew_min
        type: int32_t
      - name: val_sig_skew_max
        type: int32_t
      - name: val_max_restart
        type: int32_t
      - name: bogus_ttl
        type: int
      - name: val_clean_additional
        type: int
      - name: val_log_level
        type: int
      - name: val_log_squelch
        type: int
      - name: val_permissive_mode
        type: int
      - name: aggressive_nsec
        type: int
      - name: ignore_cd
        type: int
      - name: disable_edns_do
        type: int
      - name: serve_expired
        type: int
      - name: serve_expired_ttl
        type: int
      - name: serve_expired_ttl_reset
        type: int
      - name: serve_expired_reply_ttl
        type: int
      - name: serve_expired_client_timeout
        type: int
      - name: serve_original_ttl
        type: int
      - name: '* val_nsec3_key_iterations'
        type: char
      - name: zonemd_permissive_mode
        type: int
      - name: add_holddown
        type: unsigned int
      - name: del_holddown
        type: unsigned int
      - name: keep_missing
        type: unsigned int
      - name: permit_small_holddown
        type: int
      - name: key_cache_size
        type: size_t
      - name: key_cache_slabs
        type: size_t
      - name: neg_cache_size
        type: size_t
      - name: '* local_zones'
        type: struct config_str2list
      - name: '* local_zones_nodefault'
        type: struct config_strlist
      - name: local_zones_disable_default
        type: int
      - name: '* local_data'
        type: struct config_strlist
      - name: '* local_zone_overrides'
        type: struct config_str3list
      - name: unblock_lan_zones
        type: int
      - name: insecure_lan_zones
        type: int
      - name: '* local_zone_tags'
        type: struct config_strbytelist
      - name: '* acl_tags'
        type: struct config_strbytelist
      - name: '* acl_tag_actions'
        type: struct config_str3list
      - name: '* acl_tag_datas'
        type: struct config_str3list
      - name: '* acl_view'
        type: struct config_str2list
      - name: '* interface_actions'
        type: struct config_str2list
      - name: '* interface_tags'
        type: struct config_strbytelist
      - name: '* interface_tag_actions'
        type: struct config_str3list
      - name: '* interface_tag_datas'
        type: struct config_str3list
      - name: '* interface_view'
        type: struct config_str2list
      - name: '* respip_tags'
        type: struct config_strbytelist
      - name: '* respip_actions'
        type: struct config_str2list
      - name: '* respip_data'
        type: struct config_str2list
      - name: '** tagname'
        type: char
      - name: num_tags
        type: int
      - name: remote_control_enable
        type: int
      - name: control_ifs
        type: struct config_strlist_head
      - name: control_use_cert
        type: int
      - name: control_port
        type: int
      - name: '* server_key_file'
        type: char
      - name: '* server_cert_file'
        type: char
      - name: '* control_key_file'
        type: char
      - name: '* control_cert_file'
        type: char
      - name: '* python_script'
        type: struct config_strlist
      - name: '* dynlib_file'
        type: struct config_strlist
      - name: use_systemd
        type: int
      - name: do_daemonize
        type: int
      - name: minimal_responses
        type: int
      - name: rrset_roundrobin
        type: int
      - name: unknown_server_time_limit
        type: int
      - name: discard_timeout
        type: int
      - name: wait_limit
        type: int
      - name: wait_limit_cookie
        type: int
      - name: '* wait_limit_netblock'
        type: struct config_str2list
      - name: '* wait_limit_cookie_netblock'
        type: struct config_str2list
      - name: max_udp_size
        type: size_t
      - name: '* dns64_prefix'
        type: char
      - name: dns64_synthall
        type: int
      - name: '* dns64_ignore_aaaa'
        type: struct config_strlist
      - name: '* nat64_prefix'
        type: char
      - name: dnstap
        type: int
      - name: dnstap_bidirectional
        type: int
      - name: '* dnstap_socket_path'
        type: char
      - name: '* dnstap_ip'
        type: char
      - name: dnstap_tls
        type: int
      - name: '* dnstap_tls_server_name'
        type: char
      - name: '* dnstap_tls_cert_bundle'
        type: char
      - name: '* dnstap_tls_client_key_file'
        type: char
      - name: '* dnstap_tls_client_cert_file'
        type: char
      - name: dnstap_send_identity
        type: int
      - name: dnstap_send_version
        type: int
      - name: '* dnstap_identity'
        type: char
      - name: '* dnstap_version'
        type: char
      - name: dnstap_sample_rate
        type: int
      - name: dnstap_log_resolver_query_messages
        type: int
      - name: dnstap_log_resolver_response_messages
        type: int
      - name: dnstap_log_client_query_messages
        type: int
      - name: dnstap_log_client_response_messages
        type: int
      - name: dnstap_log_forwarder_query_messages
        type: int
      - name: dnstap_log_forwarder_response_messages
        type: int
      - name: disable_dnssec_lame_check
        type: int
      - name: ip_ratelimit
        type: int
      - name: ip_ratelimit_cookie
        type: int
      - name: ip_ratelimit_slabs
        type: size_t
      - name: ip_ratelimit_size
        type: size_t
      - name: ip_ratelimit_factor
        type: int
      - name: ip_ratelimit_backoff
        type: int
      - name: ratelimit
        type: int
      - name: ratelimit_slabs
        type: size_t
      - name: ratelimit_size
        type: size_t
      - name: '* ratelimit_for_domain'
        type: struct config_str2list
      - name: '* ratelimit_below_domain'
        type: struct config_str2list
      - name: ratelimit_factor
        type: int
      - name: ratelimit_backoff
        type: int
      - name: outbound_msg_retry
        type: int
      - name: max_sent_count
        type: int
      - name: max_query_restarts
        type: int
      - name: qname_minimisation
        type: int
      - name: qname_minimisation_strict
        type: int
      - name: shm_enable
        type: int
      - name: shm_key
        type: int
      - name: '* edns_client_strings'
        type: struct config_str2list
      - name: edns_client_string_opcode
        type: uint16_t
      - name: dnscrypt
        type: int
      - name: dnscrypt_port
        type: int
      - name: '* dnscrypt_provider'
        type: char
      - name: '* dnscrypt_secret_key'
        type: struct config_strlist
      - name: '* dnscrypt_provider_cert'
        type: struct config_strlist
      - name: '* dnscrypt_provider_cert_rotated'
        type: struct config_strlist
      - name: dnscrypt_shared_secret_cache_size
        type: size_t
      - name: dnscrypt_shared_secret_cache_slabs
        type: size_t
      - name: dnscrypt_nonce_cache_size
        type: size_t
      - name: dnscrypt_nonce_cache_slabs
        type: size_t
      - name: pad_responses
        type: int
      - name: pad_responses_block_size
        type: size_t
      - name: pad_queries
        type: int
      - name: pad_queries_block_size
        type: size_t
      - name: do_answer_cookie
        type: int
      - name: cookie_secret[40]
        type: uint8_t
      - name: cookie_secret_len
        type: size_t
      - name: '* cookie_secret_file'
        type: char
      - name: ede
        type: int
      - name: ede_serve_expired
        type: int
      - name: dns_error_reporting
        type: int
      - name: iter_scrub_ns
        type: size_t
      - name: iter_scrub_cname
        type: int
      - name: iter_scrub_rrsig
        type: int
      - name: max_global_quota
        type: int
      - name: iter_scrub_promiscuous
        type: int
      item_type: struct
      name: config_file
      pos:
        line_end: 805
        line_start: 71
        source_file: /src/unbound/util/config_file.h
    - fields:
      - name: '* next'
        type: struct config_stub
      - name: '* name'
        type: char
      - name: '* hosts'
        type: struct config_strlist
      - name: '* addrs'
        type: struct config_strlist
      - name: isprime
        type: int
      - name: isfirst
        type: int
      - name: tcp_upstream
        type: int
      - name: ssl_upstream
        type: int
      - name: no_cache
        type: int
      item_type: struct
      name: config_stub
      pos:
        line_end: 842
        line_start: 823
        source_file: /src/unbound/util/config_file.h
    - fields:
      - name: '* next'
        type: struct config_auth
      - name: '* name'
        type: char
      - name: '* masters'
        type: struct config_strlist
      - name: '* urls'
        type: struct config_strlist
      - name: '* allow_notify'
        type: struct config_strlist
      - name: '* zonefile'
        type: char
      - name: for_downstream
        type: int
      - name: for_upstream
        type: int
      - name: fallback_enabled
        type: int
      - name: isrpz
        type: int
      - name: '* rpz_taglist'
        type: uint8_t
      - name: rpz_taglistlen
        type: size_t
      - name: '* rpz_action_override'
        type: char
      - name: rpz_log
        type: int
      - name: '* rpz_log_name'
        type: char
      - name: '* rpz_cname'
        type: char
      - name: rpz_signal_nxdomain_ra
        type: int
      - name: zonemd_check
        type: int
      - name: zonemd_reject_absence
        type: int
      - name: max_transfer_size
        type: size_t
      - name: max_transfer_time
        type: int
      item_type: struct
      name: config_auth
      pos:
        line_end: 892
        line_start: 847
        source_file: /src/unbound/util/config_file.h
    - fields:
      - name: '* next'
        type: struct config_view
      - name: '* name'
        type: char
      - name: '* local_zones'
        type: struct config_str2list
      - name: '* local_data'
        type: struct config_strlist
      - name: '* local_zones_nodefault'
        type: struct config_strlist
      - name: isfirst
        type: int
      - name: '* respip_actions'
        type: struct config_str2list
      - name: '* respip_data'
        type: struct config_str2list
      item_type: struct
      name: config_view
      pos:
        line_end: 919
        line_start: 897
        source_file: /src/unbound/util/config_file.h
    - fields:
      - name: '* next'
        type: struct config_strlist
      - name: '* str'
        type: char
      item_type: struct
      name: config_strlist
      pos:
        line_end: 929
        line_start: 924
        source_file: /src/unbound/util/config_file.h
    - fields:
      - name: '* next'
        type: struct config_str2list
      - name: '* str'
        type: char
      - name: '* str2'
        type: char
      item_type: struct
      name: config_str2list
      pos:
        line_end: 941
        line_start: 934
        source_file: /src/unbound/util/config_file.h
    - fields:
      - name: '* next'
        type: struct config_str3list
      - name: '* str'
        type: char
      - name: '* str2'
        type: char
      - name: '* str3'
        type: char
      item_type: struct
      name: config_str3list
      pos:
        line_end: 955
        line_start: 946
        source_file: /src/unbound/util/config_file.h
    - fields:
      - name: '* next'
        type: struct config_strbytelist
      - name: '* str'
        type: char
      - name: '* str2'
        type: uint8_t
      - name: str2len
        type: size_t
      item_type: struct
      name: config_strbytelist
      pos:
        line_end: 969
        line_start: 961
        source_file: /src/unbound/util/config_file.h
    - fields:
      - name: '* filename'
        type: char
      - name: line
        type: int
      - name: errors
        type: int
      - name: '* cfg'
        type: struct config_file
      - name: '* chroot'
        type: char
      - name: started_toplevel
        type: int
      item_type: struct
      name: config_parser_state
      pos:
        line_end: 1402
        line_start: 1389
        source_file: /src/unbound/util/config_file.h
    typedefs: []
    union: []
- function_names:
  - calc_rto
  - rtt_init
  - rtt_timeout
  - rtt_unclamped
  - rtt_update
  - rtt_lost
  - rtt_notimeout
  source_file: /src/unbound/util/rtt.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/siphash.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/regional.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* next'
        type: char
      - name: '* large_list'
        type: char
      - name: total_large
        type: size_t
      - name: first_size
        type: size_t
      - name: available
        type: size_t
      - name: '* data'
        type: char
      - name: large_object_size
        type: size_t
      - name: padding
        type: size_t
      item_type: struct
      name: regional
      pos:
        line_end: 81
        line_start: 58
        source_file: /src/unbound/util/regional.h
    typedefs: []
    union: []
- function_names:
  - str_is_ip6
  - fd_set_nonblock
  - fd_set_block
  - is_pow2
  - memdup
  - log_addr
  - extstrtoaddr
  - ipstrtoaddr
  - netblockstrtoaddr
  - ipdnametoaddr
  - netblockdnametoaddr
  - authextstrtoaddr
  - authextstrtodname
  - sockaddr_store_port
  - log_nametypeclass
  - log_query_in
  - log_name_addr
  - log_err_addr
  - sockaddr_cmp
  - sockaddr_cmp_addr
  - sockaddr_cmp_scopeid
  - addr_is_ip6
  - addr_mask
  - addr_in_common
  - addr_to_str
  - prefixnet_is_nat64
  - addr_to_nat64
  - addr_is_ip4mapped
  - addr_is_ip6linklocal
  - addr_is_broadcast
  - addr_is_any
  - sock_list_insert
  - sock_list_prepend
  - sock_list_find
  - sock_list_merge
  - log_crypto_err
  - log_crypto_err_code
  - log_crypto_err_io_code_arg
  - log_crypto_err_io
  - log_crypto_err_io_code
  - log_cert
  - dot_alpn_select_cb
  - doh_alpn_select_cb
  - setup_ticket_keys_cb
  - listen_sslctx_setup
  - listen_sslctx_setup_2
  - listen_sslctx_create
  - add_WIN_cacerts_to_openssl_store
  - connect_sslctx_create
  - incoming_ssl_fd
  - outgoing_ssl_fd
  - check_auth_name_for_ssl
  - set_auth_name_on_ssl
  - ub_crypto_id_cb
  - ub_crypto_id_cb
  - ub_crypto_lock_cb
  - ub_openssl_lock_init
  - ub_openssl_lock_delete
  - listen_sslctx_setup_ticket_keys
  - tls_session_ticket_key_cb
  - listen_sslctx_delete_ticket_keys
  - sock_strerror
  - sock_close
  - sock_strerror
  - sock_close
  - hex_ntop
  - hex_pton
  source_file: /src/unbound/util/net_help.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_ADDR_STRLEN
      pos:
        line_end: 80
        line_start: 79
        source_file: /src/unbound/util/net_help.c
      type_or_value: '128 '
    - item_type: preproc_def
      name: MAX_HOST_STRLEN
      pos:
        line_end: 82
        line_start: 81
        source_file: /src/unbound/util/net_help.c
      type_or_value: '(LDNS_MAX_DOMAINLEN * 3) '
    structs:
    - fields:
      - name: '*key_name'
        type: unsigned char
      - name: '*aes_key'
        type: unsigned char
      - name: '*hmac_key'
        type: unsigned char
      item_type: struct
      name: tls_session_ticket_key
      pos:
        line_end: 99
        line_start: 95
        source_file: /src/unbound/util/net_help.c
    typedefs: []
    union: []
- function_names:
  - log_lock_init_once
  - log_init
  - log_file
  - log_thread_set
  - log_thread_get
  - log_ident_set
  - log_ident_set_default
  - log_ident_revert_to_default
  - log_ident_set_or_default
  - log_set_time_asc
  - log_set_time_iso
  - log_get_lock
  - log_vmsg
  - log_info
  - log_err
  - log_warn
  - fatal_exit
  - verbose
  - log_hex_f
  - log_hex
  - log_query
  - log_reply
  - log_buf
  - wsa_strerror
  source_file: /src/unbound/util/log.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: LOG_CRIT
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/unbound/util/log.c
      type_or_value: '2'
    - item_type: preproc_def
      name: LOG_ERR
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/unbound/util/log.c
      type_or_value: '3'
    - item_type: preproc_def
      name: LOG_WARNING
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/unbound/util/log.c
      type_or_value: '4'
    - item_type: preproc_def
      name: LOG_NOTICE
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/unbound/util/log.c
      type_or_value: '5'
    - item_type: preproc_def
      name: LOG_INFO
      pos:
        line_end: 57
        line_start: 56
        source_file: /src/unbound/util/log.c
      type_or_value: '6'
    - item_type: preproc_def
      name: LOG_DEBUG
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/unbound/util/log.c
      type_or_value: '7'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/ub_event.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: UB_EV_TIMEOUT
      pos:
        line_end: 52
        line_start: 51
        source_file: /src/unbound/util/ub_event.h
      type_or_value: '0x01'
    - item_type: preproc_def
      name: UB_EV_READ
      pos:
        line_end: 54
        line_start: 53
        source_file: /src/unbound/util/ub_event.h
      type_or_value: '0x02'
    - item_type: preproc_def
      name: UB_EV_WRITE
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/unbound/util/ub_event.h
      type_or_value: '0x04'
    - item_type: preproc_def
      name: UB_EV_SIGNAL
      pos:
        line_end: 58
        line_start: 57
        source_file: /src/unbound/util/ub_event.h
      type_or_value: '0x08'
    - item_type: preproc_def
      name: UB_EV_PERSIST
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/unbound/util/ub_event.h
      type_or_value: '0x10'
    structs: []
    typedefs: []
    union: []
- function_names:
  - LOCKRET
  - lock_get_mem
  - lock_basic_init
  - lock_basic_destroy
  - lock_basic_lock
  - lock_basic_unlock
  - lock_rw_init
  - lock_rw_destroy
  - lock_rw_rdlock
  - lock_rw_wrlock
  - lock_rw_unlock
  - lock_rw_init
  - lock_rw_destroy
  - lock_rw_rdlock
  - lock_rw_wrlock
  - lock_rw_unlock
  - lock_quick_init
  - lock_quick_destroy
  - lock_quick_lock
  - lock_quick_unlock
  - lock_quick_init
  - lock_quick_destroy
  - lock_quick_lock
  - lock_quick_unlock
  - PTHREADCREATE
  - ub_thread_create
  - ub_thread_self
  - ub_thread_join
  - ub_thread_key_create
  - ub_thread_key_set
  - ub_thread_key_get
  - ub_thread_setname
  - ub_thread_setname
  - ub_thread_setname
  - ub_thread_setname
  - lock_rw_init
  - lock_rw_destroy
  - lock_rw_rdlock
  - lock_rw_wrlock
  - lock_rw_unlock
  - lock_basic_init
  - lock_basic_destroy
  - lock_basic_lock
  - lock_basic_unlock
  - lock_quick_init
  - lock_quick_destroy
  - lock_quick_lock
  - lock_quick_unlock
  - ub_thread_create
  - ub_thread_self
  - ub_thread_join
  - ub_thread_key_create
  - ub_thread_key_set
  - lock_rw_init
  - lock_rw_destroy
  - lock_rw_rdlock
  - lock_rw_wrlock
  - lock_rw_unlock
  - lock_quick_init
  - lock_quick_destroy
  - lock_quick_lock
  - lock_quick_unlock
  - ub_thread_create
  - ub_thread_self
  - ub_thread_join
  - ub_thread_key_create
  - ub_thread_key_set
  - ub_thread_key_get
  source_file: /src/unbound/util/locks.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PTHREADSTACKSIZE
      pos:
        line_end: 157
        line_start: 156
        source_file: /src/unbound/util/locks.h
      type_or_value: 2*1024*1024
    - item_type: preproc_def
      name: THREADS_DISABLED
      pos:
        line_end: 286
        line_start: 285
        source_file: /src/unbound/util/locks.h
      type_or_value: '1'
    structs: []
    typedefs:
    - item_type: typedef
      name: lock_basic_type
      pos:
        line_end: 98
        line_start: 98
        source_file: /src/unbound/util/locks.h
      type: pthread_mutex_t
    - item_type: typedef
      name: lock_rw_type
      pos:
        line_end: 107
        line_start: 107
        source_file: /src/unbound/util/locks.h
      type: pthread_mutex_t
    - item_type: typedef
      name: lock_rw_type
      pos:
        line_end: 115
        line_start: 115
        source_file: /src/unbound/util/locks.h
      type: pthread_rwlock_t
    - item_type: typedef
      name: lock_quick_type
      pos:
        line_end: 126
        line_start: 126
        source_file: /src/unbound/util/locks.h
      type: pthread_mutex_t
    - item_type: typedef
      name: lock_quick_type
      pos:
        line_end: 135
        line_start: 135
        source_file: /src/unbound/util/locks.h
      type: pthread_spinlock_t
    - item_type: typedef
      name: ub_thread_type
      pos:
        line_end: 151
        line_start: 151
        source_file: /src/unbound/util/locks.h
      type: pthread_t
    - item_type: typedef
      name: ub_thread_key_type
      pos:
        line_end: 175
        line_start: 175
        source_file: /src/unbound/util/locks.h
      type: pthread_key_t
    - item_type: typedef
      name: lock_rw_type
      pos:
        line_end: 211
        line_start: 211
        source_file: /src/unbound/util/locks.h
      type: rwlock_t
    - item_type: typedef
      name: lock_basic_type
      pos:
        line_end: 219
        line_start: 219
        source_file: /src/unbound/util/locks.h
      type: mutex_t
    - item_type: typedef
      name: lock_quick_type
      pos:
        line_end: 226
        line_start: 226
        source_file: /src/unbound/util/locks.h
      type: mutex_t
    - item_type: typedef
      name: ub_thread_type
      pos:
        line_end: 233
        line_start: 233
        source_file: /src/unbound/util/locks.h
      type: thread_t
    - item_type: typedef
      name: ub_thread_key_type
      pos:
        line_end: 237
        line_start: 237
        source_file: /src/unbound/util/locks.h
      type: thread_key_t
    - item_type: typedef
      name: lock_rw_type
      pos:
        line_end: 250
        line_start: 250
        source_file: /src/unbound/util/locks.h
      type: LONG
    - item_type: typedef
      name: lock_basic_type
      pos:
        line_end: 258
        line_start: 258
        source_file: /src/unbound/util/locks.h
      type: LONG
    - item_type: typedef
      name: lock_quick_type
      pos:
        line_end: 265
        line_start: 265
        source_file: /src/unbound/util/locks.h
      type: LONG
    - item_type: typedef
      name: ub_thread_type
      pos:
        line_end: 272
        line_start: 272
        source_file: /src/unbound/util/locks.h
      type: HANDLE
    - item_type: typedef
      name: ub_thread_key_type
      pos:
        line_end: 276
        line_start: 276
        source_file: /src/unbound/util/locks.h
      type: DWORD
    - item_type: typedef
      name: lock_rw_type
      pos:
        line_end: 287
        line_start: 287
        source_file: /src/unbound/util/locks.h
      type: int
    - item_type: typedef
      name: lock_basic_type
      pos:
        line_end: 295
        line_start: 295
        source_file: /src/unbound/util/locks.h
      type: int
    - item_type: typedef
      name: lock_quick_type
      pos:
        line_end: 302
        line_start: 302
        source_file: /src/unbound/util/locks.h
      type: int
    - item_type: typedef
      name: ub_thread_type
      pos:
        line_end: 309
        line_start: 309
        source_file: /src/unbound/util/locks.h
      type: pid_t
    - item_type: typedef
      name: '* ub_thread_key_type'
      pos:
        line_end: 318
        line_start: 318
        source_file: /src/unbound/util/locks.h
      type: void
    union: []
- function_names:
  - mini_ev_cmp
  - settime
  - find_fd
  - zero_waitfor
  - event_init
  - event_get_version
  - event_get_method
  - handle_timeouts
  - handle_signal
  - handle_select
  - event_base_dispatch
  - event_base_loopexit
  - event_base_free
  - event_set
  - event_base_set
  - event_add
  - event_del
  - sigh
  - signal_add
  - signal_del
  - winsock_tcp_wouldblock
  - winsock_register_wsaevent
  - winsock_unregister_wsaevent
  source_file: /src/unbound/util/winsock_event.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fptr_whitelist_comm_point
  - fptr_whitelist_comm_point_raw
  - fptr_whitelist_comm_timer
  - fptr_whitelist_comm_signal
  - fptr_whitelist_start_accept
  - fptr_whitelist_stop_accept
  - fptr_whitelist_event
  - fptr_whitelist_pending_udp
  - fptr_whitelist_pending_tcp
  - fptr_whitelist_serviced_query
  - fptr_whitelist_rbtree_cmp
  - fptr_whitelist_hash_sizefunc
  - fptr_whitelist_hash_compfunc
  - fptr_whitelist_hash_delkeyfunc
  - fptr_whitelist_hash_deldatafunc
  - fptr_whitelist_hash_markdelfunc
  - fptr_whitelist_modenv_send_query
  - fptr_whitelist_modenv_detach_subs
  - fptr_whitelist_modenv_attach_sub
  - fptr_whitelist_modenv_add_sub
  - fptr_whitelist_modenv_kill_sub
  - fptr_whitelist_modenv_detect_cycle
  - fptr_whitelist_mod_init
  - fptr_whitelist_mod_deinit
  - fptr_whitelist_mod_startup
  - fptr_whitelist_mod_destartup
  - fptr_whitelist_mod_operate
  - fptr_whitelist_mod_inform_super
  - fptr_whitelist_mod_clear
  - fptr_whitelist_mod_get_mem
  - fptr_whitelist_alloc_cleanup
  - fptr_whitelist_tube_listen
  - fptr_whitelist_mesh_cb
  - fptr_whitelist_print_func
  - fptr_whitelist_inplace_cb_reply_generic
  - fptr_whitelist_inplace_cb_query
  - fptr_whitelist_inplace_cb_edns_back_parsed
  - fptr_whitelist_inplace_cb_query_response
  - fptr_whitelist_serve_expired_lookup
  source_file: /src/unbound/util/fptr_wlist.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - NATIVE_BITS
  - UB_EV_BITS
  - UB_EV_BITS_CB
  - (*NATIVE_BITS_CB(void (*cb)(int, short, void*)))(int, short, void*)
  - NATIVE_BITS
  - NATIVE_BITS_CB
  - AS_EVENT_BASE
  - AS_UB_EVENT_BASE
  - AS_EVENT
  - AS_UB_EVENT
  - ub_event_get_version
  - ub_ev_backend2str
  - ub_get_event_sys
  - ub_default_event_base
  - ub_libevent_event_base
  - ub_libevent_get_event_base
  - ub_event_base_free
  - ub_event_base_dispatch
  - ub_event_base_loopexit
  - ub_event_new
  - ub_signal_new
  - ub_winsock_register_wsaevent
  - ub_event_add_bits
  - ub_event_del_bits
  - ub_event_set_fd
  - ub_event_free
  - ub_event_add
  - ub_event_del
  - ub_timer_add
  - ub_timer_del
  - ub_signal_add
  - ub_signal_del
  - ub_winsock_unregister_wsaevent
  - ub_winsock_tcp_wouldblock
  - ub_comm_base_now
  source_file: /src/unbound/util/ub_event.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EVFLAG_AUTO
      pos:
        line_end: 197
        line_start: 196
        source_file: /src/unbound/util/ub_event.c
      type_or_value: '0'
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/rfc_1982.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - fptr_ok
  source_file: /src/unbound/util/fptr_wlist.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - NATIVE_BITS
  - UB_EV_BITS
  - UB_EV_BITS_CB
  - (*NATIVE_BITS_CB(void (*cb)(int, short, void*)))(int, short, void*)
  - NATIVE_BITS
  - NATIVE_BITS_CB
  - AS_MY_EVENT_BASE
  - AS_MY_EVENT
  - ub_event_get_version
  - my_event_add_bits
  - my_event_del_bits
  - my_event_set_fd
  - my_event_free
  - my_event_add
  - my_event_del
  - my_timer_add
  - my_timer_del
  - my_signal_add
  - my_signal_del
  - my_winsock_unregister_wsaevent
  - my_winsock_tcp_wouldblock
  - my_event_base_free
  - my_event_base_dispatch
  - my_event_base_loopexit
  - my_event_new
  - my_signal_new
  - my_winsock_register_wsaevent
  - ub_default_event_base
  - ub_libevent_event_base
  - ub_libevent_get_event_base
  - ub_ev_backend2str_pluggable
  - ub_get_event_sys
  - ub_event_base_free
  - ub_event_base_dispatch
  - ub_event_base_loopexit
  - ub_event_new
  - ub_signal_new
  - ub_winsock_register_wsaevent
  - ub_event_add_bits
  - ub_event_del_bits
  - ub_event_set_fd
  - ub_event_free
  - ub_event_add
  - ub_event_del
  - ub_timer_add
  - ub_timer_del
  - ub_signal_add
  - ub_signal_del
  - ub_winsock_unregister_wsaevent
  - ub_winsock_tcp_wouldblock
  - ub_comm_base_now
  source_file: /src/unbound/util/ub_event_pluggable.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: EVFLAG_AUTO
      pos:
        line_end: 134
        line_start: 133
        source_file: /src/unbound/util/ub_event_pluggable.c
      type_or_value: '0'
    structs:
    - fields:
      - name: super
        type: struct ub_event_base
      - name: '* base'
        type: struct event_base
      item_type: struct
      name: my_event_base
      pos:
        line_end: 139
        line_start: 136
        source_file: /src/unbound/util/ub_event_pluggable.c
    - fields:
      - name: super
        type: struct ub_event
      - name: ev
        type: struct event
      item_type: struct
      name: my_event
      pos:
        line_end: 144
        line_start: 141
        source_file: /src/unbound/util/ub_event_pluggable.c
    typedefs: []
    union: []
- function_names:
  - socketpair
  - tube_create
  - tube_delete
  - tube_close_read
  - tube_close_write
  - tube_remove_bg_listen
  - tube_remove_bg_write
  - fd_drain
  - tube_handle_listen
  - tube_handle_write
  - tube_write_msg
  - tube_read_msg
  - pollit
  - tube_poll
  - tube_wait
  - tube_wait_timeout
  - tube_read_fd
  - tube_setup_bg_listen
  - tube_setup_bg_write
  - tube_queue_item
  - tube_handle_signal
  - tube_create
  - tube_delete
  - tube_close_read
  - tube_close_write
  - tube_remove_bg_listen
  - tube_remove_bg_write
  - tube_write_msg
  - tube_read_msg
  - tube_poll
  - tube_wait
  - tube_wait_timeout
  - tube_read_fd
  - tube_handle_listen
  - tube_handle_write
  - tube_setup_bg_listen
  - tube_setup_bg_write
  - tube_queue_item
  - tube_handle_signal
  source_file: /src/unbound/util/tube.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - alloc_setup_special
  - prealloc_setup
  - prealloc_blocks
  - alloc_init
  - alloc_clear_special_list
  - alloc_clear_special
  - alloc_clear
  - alloc_get_id
  - alloc_special_obtain
  - pushintosuper
  - alloc_special_release
  - alloc_stats
  - alloc_get_mem
  - alloc_reg_obtain
  - alloc_reg_release
  - alloc_set_id_cleanup
  - unbound_stat_malloc
  - unbound_stat_calloc
  - unbound_stat_free
  - unbound_stat_realloc
  - unbound_stat_strdup
  - unbound_stat_malloc_log
  - unbound_stat_calloc_log
  - unbound_stat_free_log
  - unbound_stat_realloc_log
  - unbound_stat_reallocarray_log
  - unbound_stat_strdup_log
  - unbound_stat_malloc_lite
  - unbound_stat_calloc_lite
  - unbound_stat_free_lite
  - unbound_stat_realloc_lite
  - unbound_strdup_lite
  - unbound_lite_wrapstr
  - unbound_lite_pkt2wire
  - unbound_lite_i2d_DSA_SIG
  source_file: /src/unbound/util/alloc.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ALLOC_REG_SIZE
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/unbound/util/alloc.c
      type_or_value: '16384'
    - item_type: preproc_def
      name: THRNUM_SHIFT
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/unbound/util/alloc.c
      type_or_value: "48\t"
    - item_type: preproc_def
      name: INT_MAX
      pos:
        line_end: 392
        line_start: 391
        source_file: /src/unbound/util/alloc.c
      type_or_value: (((int)-1)>>1)
    structs: []
    typedefs: []
    union: []
- function_names:
  - timeval_subtract
  - timeval_add
  - timeval_divide
  - timeval_smaller
  source_file: /src/unbound/util/timeval_func.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/tcp_conn_limit.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* region'
        type: struct regional
      - name: tree
        type: rbtree_type
      item_type: struct
      name: tcl_list
      pos:
        line_end: 60
        line_start: 52
        source_file: /src/unbound/util/tcp_conn_limit.h
    - fields:
      - name: node
        type: struct addr_tree_node
      - name: lock
        type: lock_quick_type
      - name: limit
        type: uint32_t
      - name: count
        type: uint32_t
      item_type: struct
      name: tcl_addr
      pos:
        line_end: 75
        line_start: 66
        source_file: /src/unbound/util/tcp_conn_limit.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/as112.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - CMSG_ALIGN
  - CMSG_ALIGN
  - CMSG_LEN
  - CMSG_SPACE
  - CMSG_SPACE
  - comm_base_create
  - comm_base_create_event
  - comm_base_delete
  - comm_base_delete_no_base
  - comm_base_timept
  - comm_base_dispatch
  - comm_base_exit
  - comm_base_set_slow_accept_handlers
  - comm_base_internal
  - comm_point_internal
  - udp_send_errno_needs_log
  - tcp_connect_errno_needs_log
  - p_ancil
  - udp_recv_needs_log
  - consume_pp2_header
  - comm_point_udp_ancil_callback
  - comm_point_udp_callback
  - doq_pkt_addr_init
  - doq_set_ecn
  - doq_set_localaddr_cmsg
  - doq_print_addr_port
  - doq_store_blocked_pkt
  - doq_sockaddr_get_port
  - doq_get_localaddr_cmsg
  - msghdr_get_ecn
  - doq_recv
  - doq_send_version_negotiation
  - doq_conn_find
  - doq_conn_find_by_id
  - doq_conn_find_by_addr_or_cid
  - doq_decode_pkt_header_negotiate
  - doq_send_retry
  - doq_send_stateless_connection_close
  - doq_verify_retry_token
  - doq_verify_token
  - doq_delete_connection
  - doq_setup_new_conn
  - doq_address_validation
  - doq_accept
  - doq_pickup_timer
  - RBTREE_FOR
  - doq_done_setup_timer_and_write
  - doq_done_with_conn_cb
  - doq_write_list_length
  - doq_pop_write_conn
  - doq_done_with_write_cb
  - doq_socket_want_write
  - doq_socket_write_enable
  - doq_socket_write_disable
  - doq_write_blocked_pkt
  - doq_timer_timeout_conn
  - doq_timer_erase_marker
  - doq_timer_cb
  - comm_point_doq_callback
  - doq_server_socket_create
  - doq_server_socket_delete
  - doq_lookup_repinfo
  - doq_lookup_conn_stream
  - doq_socket_send_reply
  - doq_socket_drop_reply
  - adjusted_tcp_timeout
  - setup_tcp_handler
  - comm_base_handle_slow_accept
  - comm_point_slow_accept
  - comm_point_perform_accept
  - win_bio_cb
  - comm_point_tcp_win_bio_cb
  - http2_session_server_create
  - http2_submit_settings
  - http2_stream_delete
  - http2_session_server_delete
  - comm_point_tcp_accept_callback
  - reclaim_tcp_handler
  - tcp_callback_writer
  - tcp_callback_reader
  - squelch_err_ssl_handshake
  - ssl_handshake
  - ssl_handle_read
  - ssl_handle_write
  - ssl_handle_it
  - comm_point_tcp_handle_read
  - tcp_req_info_read_again
  - tcp_more_read_again
  - tcp_more_write_again
  - comm_point_tcp_handle_callback
  - reclaim_http_handler
  - ssl_http_read_more
  - http_read_more
  - http_header_done
  - http_header_line
  - http_moveover_buffer
  - http_process_initial_header
  - http_process_chunk_header
  - http_nonchunk_segment
  - http_chunked_segment
  - http2_session_create
  - http2_session_delete
  - http2_stream_create
  - http2_stream_add_meshstate
  - http2_stream_remove_mesh_state
  - http2_session_add_stream
  - http2_session_remove_stream
  - http2_stream_close_cb
  - http2_recv_cb
  - comm_point_http2_handle_read
  - comm_point_http_handle_read
  - ssl_http_write_more
  - http_write_more
  - http2_send_cb
  - comm_point_http2_handle_write
  - comm_point_http_handle_write
  - comm_point_http_handle_callback
  - comm_point_local_handle_callback
  - comm_point_raw_handle_callback
  - comm_point_create_udp
  - comm_point_create_udp_ancil
  - comm_point_create_doq
  - comm_point_create_tcp_handler
  - comm_point_create_http_handler
  - comm_point_create_tcp
  - comm_point_create_tcp_out
  - comm_point_create_http_out
  - comm_point_create_local
  - comm_point_create_raw
  - comm_point_close
  - comm_point_delete
  - send_reply_dnstap
  - comm_point_drop_reply
  - comm_point_stop_listening
  - comm_point_start_listening
  - comm_point_listen_for_rw
  - comm_point_get_mem
  - comm_timer_create
  - comm_timer_disable
  - comm_timer_set
  - comm_timer_delete
  - comm_timer_callback
  - comm_timer_is_set
  - comm_timer_get_mem
  - comm_signal_create
  - comm_signal_callback
  - comm_signal_bind
  - comm_signal_delete
  source_file: /src/unbound/util/netevent.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CMSG_ALIGN
      pos:
        line_end: 92
        line_start: 91
        source_file: /src/unbound/util/netevent.c
      type_or_value: _CMSG_DATA_ALIGN
    - item_type: preproc_def
      name: TCP_QUERY_TIMEOUT
      pos:
        line_end: 113
        line_start: 112
        source_file: /src/unbound/util/netevent.c
      type_or_value: '120000'
    - item_type: preproc_def
      name: TCP_QUERY_TIMEOUT_MINIMUM
      pos:
        line_end: 116
        line_start: 115
        source_file: /src/unbound/util/netevent.c
      type_or_value: '200'
    - item_type: preproc_def
      name: NUM_UDP_PER_SELECT
      pos:
        line_end: 120
        line_start: 119
        source_file: /src/unbound/util/netevent.c
      type_or_value: '100'
    - item_type: preproc_def
      name: NUM_UDP_PER_SELECT
      pos:
        line_end: 122
        line_start: 121
        source_file: /src/unbound/util/netevent.c
      type_or_value: '1'
    - item_type: preproc_def
      name: SEND_BLOCKED_WAIT_TIMEOUT
      pos:
        line_end: 126
        line_start: 125
        source_file: /src/unbound/util/netevent.c
      type_or_value: '200'
    - item_type: preproc_def
      name: SEND_BLOCKED_MAX_RETRY
      pos:
        line_end: 128
        line_start: 127
        source_file: /src/unbound/util/netevent.c
      type_or_value: '5'
    - item_type: preproc_def
      name: SO_TIMESTAMP
      pos:
        line_end: 132
        line_start: 131
        source_file: /src/unbound/util/netevent.c
      type_or_value: '29'
    - item_type: preproc_def
      name: SO_TIMESTAMPNS
      pos:
        line_end: 135
        line_start: 134
        source_file: /src/unbound/util/netevent.c
      type_or_value: '35'
    - item_type: preproc_def
      name: SO_TIMESTAMPING
      pos:
        line_end: 138
        line_start: 137
        source_file: /src/unbound/util/netevent.c
      type_or_value: '37'
    structs:
    - fields:
      - name: '* base'
        type: struct comm_base
      - name: '* ev'
        type: struct ub_event
      item_type: struct
      name: internal_event
      pos:
        line_end: 148
        line_start: 143
        source_file: /src/unbound/util/netevent.c
    - fields:
      - name: '* base'
        type: struct ub_event_base
      - name: secs
        type: time_t
      - name: now
        type: struct timeval
      - name: '* slow_accept'
        type: struct ub_event
      - name: slow_accept_enabled
        type: int
      - name: last_slow_log
        type: time_t
      - name: last_writewait_log
        type: time_t
      item_type: struct
      name: internal_base
      pos:
        line_end: 168
        line_start: 153
        source_file: /src/unbound/util/netevent.c
    - fields:
      - name: super
        type: struct comm_timer
      - name: '* base'
        type: struct comm_base
      - name: '* ev'
        type: struct ub_event
      - name: enabled
        type: uint8_t
      item_type: struct
      name: internal_timer
      pos:
        line_end: 182
        line_start: 173
        source_file: /src/unbound/util/netevent.c
    - fields:
      - name: '* ev'
        type: struct ub_event
      - name: '* next'
        type: struct internal_signal
      item_type: struct
      name: internal_signal
      pos:
        line_end: 192
        line_start: 187
        source_file: /src/unbound/util/netevent.c
    typedefs: []
    union:
    - fields:
      - name: hdr
        type: struct cmsghdr
      - name: buf[256]
        type: char
      item_type: union
      name: control
      pos:
        line_end: 634
        line_start: 631
        source_file: /src/unbound/util/netevent.c
    - fields:
      - name: hdr
        type: struct cmsghdr
      - name: buf[256]
        type: char
      item_type: union
      name: ancil
      pos:
        line_end: 1011
        line_start: 1008
        source_file: /src/unbound/util/netevent.c
    - fields:
      - name: hdr
        type: struct cmsghdr
      - name: buf[256]
        type: char
      item_type: union
      name: control
      pos:
        line_end: 1364
        line_start: 1361
        source_file: /src/unbound/util/netevent.c
    - fields:
      - name: hdr
        type: struct cmsghdr
      - name: buf[256]
        type: char
      item_type: union
      name: ancil
      pos:
        line_end: 1581
        line_start: 1578
        source_file: /src/unbound/util/netevent.c
- function_names: []
  source_file: /src/unbound/util/data/packed_rrset.h
  types:
    enum:
    - enumerators:
      - name: rrset_trust_none
        value: '0'
      - name: rrset_trust_add_noAA
      - name: rrset_trust_auth_noAA
      - name: rrset_trust_add_AA
      - name: rrset_trust_nonauth_ans_AA
      - name: rrset_trust_ans_noAA
      - name: rrset_trust_glue
      - name: rrset_trust_auth_AA
      - name: rrset_trust_ans_AA
      - name: rrset_trust_sec_noglue
      - name: rrset_trust_prim_noglue
      - name: rrset_trust_validated
      - name: rrset_trust_ultimate
      item_type: enum
      name: rrset_trust
      pos:
        line_end: 185
        line_start: 155
        source_file: /src/unbound/util/data/packed_rrset.h
    - enumerators:
      - name: sec_status_unchecked
        value: '0'
      - name: sec_status_insecure
      - name: sec_status_secure_sentinel_fail
      - name: sec_status_bogus
      - name: sec_status_indeterminate
      - name: sec_status_secure
      item_type: enum
      name: sec_status
      pos:
        line_end: 212
        line_start: 191
        source_file: /src/unbound/util/data/packed_rrset.h
    preproc_defs:
    - item_type: preproc_def
      name: PACKED_RRSET_NSEC_AT_APEX
      pos:
        line_end: 53
        line_start: 52
        source_file: /src/unbound/util/data/packed_rrset.h
      type_or_value: '0x1'
    - item_type: preproc_def
      name: PACKED_RRSET_PARENT_SIDE
      pos:
        line_end: 55
        line_start: 54
        source_file: /src/unbound/util/data/packed_rrset.h
      type_or_value: '0x2'
    - item_type: preproc_def
      name: PACKED_RRSET_SOA_NEG
      pos:
        line_end: 59
        line_start: 58
        source_file: /src/unbound/util/data/packed_rrset.h
      type_or_value: '0x4'
    - item_type: preproc_def
      name: PACKED_RRSET_FIXEDTTL
      pos:
        line_end: 63
        line_start: 62
        source_file: /src/unbound/util/data/packed_rrset.h
      type_or_value: '0x80000000'
    - item_type: preproc_def
      name: PACKED_RRSET_RPZ
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/unbound/util/data/packed_rrset.h
      type_or_value: '0x8'
    - item_type: preproc_def
      name: PACKED_RRSET_UNVERIFIED_GLUE
      pos:
        line_end: 72
        line_start: 71
        source_file: /src/unbound/util/data/packed_rrset.h
      type_or_value: '0x10'
    - item_type: preproc_def
      name: PACKED_RRSET_UPSTREAM_0TTL
      pos:
        line_end: 74
        line_start: 73
        source_file: /src/unbound/util/data/packed_rrset.h
      type_or_value: '0x20'
    - item_type: preproc_def
      name: PACKED_RRSET_0TTL_GRACE
      pos:
        line_end: 76
        line_start: 75
        source_file: /src/unbound/util/data/packed_rrset.h
      type_or_value: '0x40'
    - item_type: preproc_def
      name: RR_COUNT_MAX
      pos:
        line_end: 82
        line_start: 81
        source_file: /src/unbound/util/data/packed_rrset.h
      type_or_value: '0xffffff'
    structs:
    - fields:
      - name: '* dname'
        type: uint8_t
      - name: dname_len
        type: size_t
      - name: flags
        type: uint32_t
      - name: type
        type: uint16_t
      - name: rrset_class
        type: uint16_t
      item_type: struct
      name: packed_rrset_key
      pos:
        line_end: 112
        line_start: 86
        source_file: /src/unbound/util/data/packed_rrset.h
    - fields:
      - name: entry
        type: struct lruhash_entry
      - name: id
        type: rrset_id_type
      - name: rk
        type: struct packed_rrset_key
      item_type: struct
      name: ub_packed_rrset_key
      pos:
        line_end: 140
        line_start: 122
        source_file: /src/unbound/util/data/packed_rrset.h
    - fields:
      - name: ttl_add
        type: time_t
      - name: ttl
        type: time_t
      - name: count
        type: size_t
      - name: rrsig_count
        type: size_t
      - name: trust
        type: enum rrset_trust
      - name: security
        type: enum sec_status
      - name: '* rr_len'
        type: size_t
      - name: '*rr_ttl'
        type: time_t
      - name: '** rr_data'
        type: uint8_t
      item_type: struct
      name: packed_rrset_data
      pos:
        line_end: 277
        line_start: 250
        source_file: /src/unbound/util/data/packed_rrset.h
    - fields:
      - name: '* k'
        type: struct packed_rrset_key
      - name: '* d'
        type: struct packed_rrset_data
      item_type: struct
      name: packed_rrset
      pos:
        line_end: 289
        line_start: 284
        source_file: /src/unbound/util/data/packed_rrset.h
    - fields:
      - name: '* next'
        type: struct packed_rrset_list
      - name: rrset
        type: struct packed_rrset
      item_type: struct
      name: packed_rrset_list
      pos:
        line_end: 299
        line_start: 294
        source_file: /src/unbound/util/data/packed_rrset.h
    typedefs:
    - item_type: typedef
      name: rrset_id_type
      pos:
        line_end: 49
        line_start: 49
        source_file: /src/unbound/util/data/packed_rrset.h
      type: uint64_t
    union: []
- function_names:
  - PREFETCH_TTL_CALC
  - EXPIRED_REPLY_TTL_CALC
  - EXPIRED_REPLY_TTL_CALC
  - UPDATE_TTL_FROM_RRSET
  - TTL_IS_EXPIRED
  - LABEL_IS_PTR
  - PTR_OFFSET
  - PTR_CREATE
  source_file: /src/unbound/util/data/msgparse.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: PARSE_TABLE_SIZE
      pos:
        line_end: 79
        line_start: 78
        source_file: /src/unbound/util/data/msgparse.h
      type_or_value: '32'
    - item_type: preproc_def
      name: NORR_TTL
      pos:
        line_end: 97
        line_start: 96
        source_file: /src/unbound/util/data/msgparse.h
      type_or_value: '5 '
    - item_type: preproc_def
      name: EDNS_RCODE_BADVERS
      pos:
        line_end: 241
        line_start: 240
        source_file: /src/unbound/util/data/msgparse.h
      type_or_value: "16\t"
    - item_type: preproc_def
      name: PTR_MAX_OFFSET
      pos:
        line_end: 243
        line_start: 242
        source_file: /src/unbound/util/data/msgparse.h
      type_or_value: '0x3fff'
    structs:
    - fields:
      - name: id
        type: uint16_t
      - name: flags
        type: uint16_t
      - name: qdcount
        type: uint16_t
      - name: ancount
        type: uint16_t
      - name: nscount
        type: uint16_t
      - name: arcount
        type: uint16_t
      - name: an_rrsets
        type: size_t
      - name: ns_rrsets
        type: size_t
      - name: ar_rrsets
        type: size_t
      - name: rrset_count
        type: size_t
      - name: '* qname'
        type: uint8_t
      - name: qname_len
        type: size_t
      - name: qtype
        type: uint16_t
      - name: qclass
        type: uint16_t
      - name: '* hashtable[PARSE_TABLE_SIZE]'
        type: struct rrset_parse
      - name: '* rrset_first'
        type: struct rrset_parse
      - name: '* rrset_last'
        type: struct rrset_parse
      item_type: struct
      name: msg_parse
      pos:
        line_end: 170
        line_start: 129
        source_file: /src/unbound/util/data/msgparse.h
    - fields:
      - name: '* rrset_bucket_next'
        type: struct rrset_parse
      - name: '* rrset_all_next'
        type: struct rrset_parse
      - name: hash
        type: hashvalue_type
      - name: section
        type: sldns_pkt_section
      - name: '* dname'
        type: uint8_t
      - name: dname_len
        type: size_t
      - name: type
        type: uint16_t
      - name: rrset_class
        type: uint16_t
      - name: flags
        type: uint32_t
      - name: rr_count
        type: size_t
      - name: size
        type: size_t
      - name: '* rr_first'
        type: struct rr_parse
      - name: '* rr_last'
        type: struct rr_parse
      - name: rrsig_count
        type: size_t
      - name: '* rrsig_first'
        type: struct rr_parse
      - name: '* rrsig_last'
        type: struct rr_parse
      item_type: struct
      name: rrset_parse
      pos:
        line_end: 210
        line_start: 175
        source_file: /src/unbound/util/data/msgparse.h
    - fields:
      - name: '* ttl_data'
        type: uint8_t
      - name: outside_packet
        type: int
      - name: size
        type: size_t
      - name: '* next'
        type: struct rr_parse
      item_type: struct
      name: rr_parse
      pos:
        line_end: 229
        line_start: 215
        source_file: /src/unbound/util/data/msgparse.h
    - fields:
      - name: ext_rcode
        type: uint8_t
      - name: edns_version
        type: uint8_t
      - name: bits
        type: uint16_t
      - name: udp_size
        type: uint16_t
      - name: '* opt_list_in'
        type: struct edns_option
      - name: '* opt_list_out'
        type: struct edns_option
      - name: '* opt_list_inplace_cb_out'
        type: struct edns_option
      - name: padding_block_size
        type: uint16_t
      - name: edns_present
        type: unsigned int
      - name: cookie_present
        type: unsigned int
      - name: cookie_valid
        type: unsigned int
      - name: cookie_client
        type: unsigned int
      item_type: struct
      name: edns_data
      pos:
        line_end: 277
        line_start: 249
        source_file: /src/unbound/util/data/msgparse.h
    - fields:
      - name: '* next'
        type: struct edns_option
      - name: opt_code
        type: uint16_t
      - name: opt_len
        type: size_t
      - name: '* opt_data'
        type: uint8_t
      item_type: struct
      name: edns_option
      pos:
        line_end: 291
        line_start: 282
        source_file: /src/unbound/util/data/msgparse.h
    typedefs: []
    union: []
- function_names:
  - query_dname_len
  - dname_valid
  - query_dname_compare
  - query_dname_tolower
  - pkt_dname_tolower
  - pkt_dname_len
  - dname_pkt_compare
  - dname_query_hash
  - dname_pkt_hash
  - dname_pkt_copy
  - dname_print
  - dname_count_labels
  - dname_count_size_labels
  - memlowercmp
  - dname_lab_cmp
  - dname_lab_startswith
  - dname_has_label
  - dname_buffer_write
  - dname_str
  - dname_strict_subdomain
  - dname_strict_subdomain_c
  - dname_subdomain_c
  - dname_is_root
  - dname_remove_label
  - dname_remove_label_limit_len
  - dname_remove_labels
  - dname_signame_label_count
  - dname_is_wild
  - memcanoncmp
  - dname_canon_lab_cmp
  - dname_canonical_compare
  - dname_get_shared_topdomain
  source_file: /src/unbound/util/data/dname.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - smart_compare
  - new_rrset
  - nsec_at_apex
  - pkt_rrset_flags
  - pkt_hash_rrset
  - pkt_hash_rrset_first
  - pkt_hash_rrset_rest
  - rrset_parse_equals
  - msgparse_hashtable_lookup
  - pkt_rrsig_covered
  - pkt_rrsig_covered_equals
  - msgparse_bucket_remove
  - change_section
  - rrset_has_sigover
  - moveover_rrsigs
  - change_rrsig_rrset
  - find_rrset
  - parse_query_section
  - get_rdf_size
  - calc_size
  - skip_ttl_rdata
  - sig_is_double
  - add_rr_to_rrset
  - parse_section
  - parse_packet
  - parse_edns_options_from_query
  - parse_extract_edns_from_response_msg
  - skip_pkt_rr
  - skip_pkt_rrs
  - parse_edns_from_query_pkt
  - log_edns_opt_list
  - msgparse_rrset_remove_rr
  - debug_expired_reply_ttl_calc
  source_file: /src/unbound/util/data/msgparse.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_PARSED_EDNS_OPTIONS
      pos:
        line_end: 56
        line_start: 55
        source_file: /src/unbound/util/data/msgparse.c
      type_or_value: '100'
    structs: []
    typedefs: []
    union: []
- function_names:
  - ub_packed_rrset_parsedelete
  - ub_rrset_sizefunc
  - packed_rrset_sizeof
  - ub_rrset_compare
  - ub_rrset_key_delete
  - rrset_data_delete
  - rrsetdata_equal
  - rrset_key_hash
  - packed_rrset_ptr_fixup
  - get_cname_target
  - packed_rrset_ttl_add
  - rrset_trust_to_string
  - sec_status_to_string
  - log_rrset_key
  - packed_rr_to_string
  - log_packed_rrset
  - ub_packed_rrset_ttl
  - packed_rrset_copy_region
  - packed_rrset_copy_alloc
  - packed_rrset_find_rr
  source_file: /src/unbound/util/data/packed_rrset.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/data/dname.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: MAX_COMPRESS_PTRS
      pos:
        line_end: 51
        line_start: 50
        source_file: /src/unbound/util/data/dname.h
      type_or_value: '256'
    structs: []
    typedefs: []
    union: []
- function_names:
  - compress_tree_search
  - compress_tree_lookup
  - compress_tree_newnode
  - compress_tree_store
  - write_compressed_dname
  - compress_owner
  - compress_any_dname
  - type_rdata_compressible
  - compress_rdata
  - rrset_belongs_in_reply
  - packed_rrset_encode
  - insert_section
  - insert_query
  - positive_answer
  - negative_answer
  - reply_info_encode
  - calc_edns_field_size
  - calc_edns_option_size
  - calc_ede_option_size
  - ede_trim_text
  - attach_edns_record_max_msg_sz
  - attach_edns_record
  - reply_info_answer_encode
  - qinfo_query_encode
  - extended_error_encode
  - error_encode
  source_file: /src/unbound/util/data/msgencode.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: RETVAL_OUTMEM
      pos:
        line_end: 60
        line_start: 59
        source_file: /src/unbound/util/data/msgencode.c
      type_or_value: '-2'
    - item_type: preproc_def
      name: RETVAL_TRUNC
      pos:
        line_end: 62
        line_start: 61
        source_file: /src/unbound/util/data/msgencode.c
      type_or_value: '-4'
    - item_type: preproc_def
      name: RETVAL_OK
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/unbound/util/data/msgencode.c
      type_or_value: '0'
    - item_type: preproc_def
      name: MAX_COMPRESSION_PER_MESSAGE
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/unbound/util/data/msgencode.c
      type_or_value: '120'
    structs:
    - fields:
      - name: '* left'
        type: struct compress_tree_node
      - name: '* right'
        type: struct compress_tree_node
      - name: '* parent'
        type: struct compress_tree_node
      - name: '* dname'
        type: uint8_t
      - name: labs
        type: int
      - name: offset
        type: size_t
      item_type: struct
      name: compress_tree_node
      pos:
        line_end: 94
        line_start: 80
        source_file: /src/unbound/util/data/msgencode.c
    typedefs: []
    union: []
- function_names:
  - parse_create_qinfo
  - construct_reply_info_base
  - parse_create_repinfo
  - reply_info_alloc_rrset_keys
  - reply_info_can_answer_expired
  - reply_info_could_use_expired
  - make_new_reply_info
  - soa_find_minttl
  - rdata_copy
  - parse_rr_copy
  - parse_create_rrset
  - get_rrset_trust
  - parse_copy_decompress_rrset
  - parse_copy_decompress
  - parse_create_msg
  - reply_info_parse
  - reply_info_sortref_cmp
  - reply_info_sortref
  - reply_info_set_ttls
  - reply_info_absolute_ttls
  - reply_info_parsedelete
  - query_info_parse
  - COMPARE_IT
  - query_info_compare
  - query_info_clear
  - msgreply_sizefunc
  - query_entry_delete
  - reply_info_delete
  - query_info_hash
  - query_info_entrysetup
  - repinfo_copy_rrsets
  - reply_info_copy
  - reply_find_final_cname_target
  - reply_find_answer_rrset
  - reply_find_rrset_section_an
  - reply_find_rrset_section_ns
  - reply_find_rrset
  - log_dns_msg
  - log_reply_info
  - log_query_info
  - reply_check_cname_chain
  - reply_all_rrsets_secure
  - parse_reply_in_temp_region
  - edns_opt_list_append_ede
  - edns_opt_list_append_keepalive
  - edns_opt_list_append
  - edns_opt_list_remove
  - inplace_cb_reply_call_generic
  - inplace_cb_reply_call
  - inplace_cb_reply_cache_call
  - inplace_cb_reply_local_call
  - inplace_cb_reply_servfail_call
  - inplace_cb_query_call
  - inplace_cb_edns_back_parsed_call
  - inplace_cb_query_response_call
  - edns_opt_copy_region
  - edns_opt_copy_filter_region
  - edns_opt_compare
  - edns_opt_list_compare
  - edns_opt_list_free
  - edns_opt_copy_alloc
  - edns_opt_list_find
  - local_alias_shallow_copy_qname
  source_file: /src/unbound/util/data/msgreply.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/data/msgencode.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - EDNS_OPT_LIST_APPEND_EDE
  source_file: /src/unbound/util/data/msgreply.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* qname'
        type: uint8_t
      - name: qname_len
        type: size_t
      - name: qtype
        type: uint16_t
      - name: qclass
        type: uint16_t
      - name: '* local_alias'
        type: struct local_rrset
      item_type: struct
      name: query_info
      pos:
        line_end: 100
        line_start: 70
        source_file: /src/unbound/util/data/msgreply.h
    - fields:
      - name: '* key'
        type: struct ub_packed_rrset_key
      - name: id
        type: rrset_id_type
      item_type: struct
      name: rrset_ref
      pos:
        line_end: 110
        line_start: 105
        source_file: /src/unbound/util/data/msgreply.h
    - fields:
      - name: flags
        type: uint16_t
      - name: authoritative
        type: uint8_t
      - name: qdcount
        type: uint8_t
      - name: padding
        type: uint32_t
      - name: ttl
        type: time_t
      - name: prefetch_ttl
        type: time_t
      - name: serve_expired_ttl
        type: time_t
      - name: serve_expired_norec_ttl
        type: time_t
      - name: security
        type: enum sec_status
      - name: reason_bogus
        type: sldns_ede_code
      - name: '* reason_bogus_str'
        type: char
      - name: an_numrrsets
        type: size_t
      - name: ns_numrrsets
        type: size_t
      - name: ar_numrrsets
        type: size_t
      - name: rrset_count
        type: size_t
      - name: '** rrsets'
        type: struct ub_packed_rrset_key
      - name: ref[1]
        type: struct rrset_ref
      item_type: struct
      name: reply_info
      pos:
        line_end: 238
        line_start: 126
        source_file: /src/unbound/util/data/msgreply.h
    - fields:
      - name: key
        type: struct query_info
      - name: entry
        type: struct lruhash_entry
      item_type: struct
      name: msgreply_entry
      pos:
        line_end: 248
        line_start: 243
        source_file: /src/unbound/util/data/msgreply.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/storage/lruhash.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: HASH_DEFAULT_STARTARRAY
      pos:
        line_end: 114
        line_start: 113
        source_file: /src/unbound/util/storage/lruhash.h
      type_or_value: '1024 '
    - item_type: preproc_def
      name: HASH_DEFAULT_MAXMEM
      pos:
        line_end: 116
        line_start: 115
        source_file: /src/unbound/util/storage/lruhash.h
      type_or_value: '4*1024*1024 '
    structs:
    - fields:
      - name: lock
        type: lock_quick_type
      - name: sizefunc
        type: lruhash_sizefunc_type
      - name: compfunc
        type: lruhash_compfunc_type
      - name: delkeyfunc
        type: lruhash_delkeyfunc_type
      - name: deldatafunc
        type: lruhash_deldatafunc_type
      - name: markdelfunc
        type: lruhash_markdelfunc_type
      - name: '* cb_arg'
        type: void
      - name: size
        type: size_t
      - name: size_mask
        type: int
      - name: '* array'
        type: struct lruhash_bin
      - name: '* lru_start'
        type: struct lruhash_entry
      - name: '* lru_end'
        type: struct lruhash_entry
      - name: num
        type: size_t
      - name: space_used
        type: size_t
      - name: space_max
        type: size_t
      - name: max_collisions
        type: size_t
      item_type: struct
      name: lruhash
      pos:
        line_end: 182
        line_start: 146
        source_file: /src/unbound/util/storage/lruhash.h
    - fields:
      - name: lock
        type: lock_quick_type
      - name: '* overflow_list'
        type: struct lruhash_entry
      item_type: struct
      name: lruhash_bin
      pos:
        line_end: 195
        line_start: 187
        source_file: /src/unbound/util/storage/lruhash.h
    - fields:
      - name: lock
        type: lock_rw_type
      - name: '* overflow_next'
        type: struct lruhash_entry
      - name: '* lru_next'
        type: struct lruhash_entry
      - name: '* lru_prev'
        type: struct lruhash_entry
      - name: hash
        type: hashvalue_type
      - name: '* key'
        type: void
      - name: '* data'
        type: void
      item_type: struct
      name: lruhash_entry
      pos:
        line_end: 224
        line_start: 204
        source_file: /src/unbound/util/storage/lruhash.h
    typedefs:
    - item_type: typedef
      name: hashvalue_type
      pos:
        line_end: 118
        line_start: 118
        source_file: /src/unbound/util/storage/lruhash.h
      type: uint32_t
    - item_type: typedef
      name: (*lruhash_sizefunc_type)(void*, void*)
      pos:
        line_end: 126
        line_start: 126
        source_file: /src/unbound/util/storage/lruhash.h
      type: size_t
    - item_type: typedef
      name: (*lruhash_compfunc_type)(void*, void*)
      pos:
        line_end: 129
        line_start: 129
        source_file: /src/unbound/util/storage/lruhash.h
      type: int
    - item_type: typedef
      name: (*lruhash_delkeyfunc_type)(void*, void*)
      pos:
        line_end: 134
        line_start: 134
        source_file: /src/unbound/util/storage/lruhash.h
      type: void
    - item_type: typedef
      name: (*lruhash_deldatafunc_type)(void*, void*)
      pos:
        line_end: 137
        line_start: 137
        source_file: /src/unbound/util/storage/lruhash.h
      type: void
    - item_type: typedef
      name: (*lruhash_markdelfunc_type)(void*)
      pos:
        line_end: 141
        line_start: 141
        source_file: /src/unbound/util/storage/lruhash.h
      type: void
    union: []
- function_names:
  - name_tree_compare
  - addr_tree_compare
  - addr_tree_addrport_compare
  - name_tree_init
  - addr_tree_init
  - addr_tree_addrport_init
  - name_tree_insert
  - addr_tree_insert
  - addr_tree_init_parents_node
  - addr_tree_init_parents
  - name_tree_init_parents
  - RBTREE_FOR
  - name_tree_find
  - name_tree_lookup
  - addr_tree_lookup
  - addr_tree_find
  - name_tree_next_root
  source_file: /src/unbound/util/storage/dnstree.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - bin_init
  - lruhash_create
  - bin_delete
  - bin_split
  - lruhash_delete
  - bin_overflow_remove
  - reclaim_space
  - bin_find_entry
  - table_grow
  - lru_front
  - lru_remove
  - lru_touch
  - lruhash_insert
  - lruhash_lookup
  - lruhash_remove
  - bin_clear
  - lruhash_clear
  - lruhash_status
  - lruhash_get_mem
  - lruhash_setmarkdel
  - lruhash_update_space_used
  - lruhash_update_space_max
  - lruhash_traverse
  - lru_demote
  - lruhash_insert_or_retrieve
  source_file: /src/unbound/util/storage/lruhash.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - slabhash_create
  - slabhash_delete
  - slabhash_clear
  - slab_idx
  - slabhash_insert
  - slabhash_lookup
  - slabhash_remove
  - slabhash_status
  - slabhash_get_size
  - slabhash_is_size
  - slabhash_update_space_used
  - slabhash_get_mem
  - slabhash_gettable
  - delkey
  - deldata
  - test_slabhash_sizefunc
  - test_slabhash_compfunc
  - test_slabhash_delkey
  - test_slabhash_deldata
  - slabhash_setmarkdel
  - slabhash_traverse
  - count_slabhash_entries
  - get_slabhash_stats
  - slabhash_adjust_size
  source_file: /src/unbound/util/storage/slabhash.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/storage/slabhash.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: HASH_DEFAULT_SLABS
      pos:
        line_end: 49
        line_start: 48
        source_file: /src/unbound/util/storage/slabhash.h
      type_or_value: '4'
    structs:
    - fields:
      - name: size
        type: size_t
      - name: mask
        type: uint32_t
      - name: shift
        type: unsigned int
      - name: '** array'
        type: struct lruhash
      item_type: struct
      name: slabhash
      pos:
        line_end: 65
        line_start: 56
        source_file: /src/unbound/util/storage/slabhash.h
    - fields:
      - name: id
        type: int
      - name: entry
        type: struct lruhash_entry
      item_type: struct
      name: slabhash_testkey
      pos:
        line_end: 237
        line_start: 232
        source_file: /src/unbound/util/storage/slabhash.h
    - fields:
      - name: data
        type: int
      item_type: struct
      name: slabhash_testdata
      pos:
        line_end: 242
        line_start: 239
        source_file: /src/unbound/util/storage/slabhash.h
    typedefs: []
    union: []
- function_names:
  - hashsize
  - hashmask
  - rot
  - hash_set_raninit
  - mix
  - final
  - hashword
  - hashword2
  - hashlittle
  - hashlittle2
  - hashbig
  - driver1
  - driver2
  - driver3
  - driver4
  - main
  source_file: /src/unbound/util/storage/lookup3.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: ARRAY_CLEAN_ACCESS
      pos:
        line_end: 50
        line_start: 49
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '1'
    - item_type: preproc_def
      name: HASH_LITTLE_ENDIAN
      pos:
        line_end: 64
        line_start: 63
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '0'
    - item_type: preproc_def
      name: HASH_BIG_ENDIAN
      pos:
        line_end: 65
        line_start: 64
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '1'
    - item_type: preproc_def
      name: HASH_LITTLE_ENDIAN
      pos:
        line_end: 67
        line_start: 66
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '1'
    - item_type: preproc_def
      name: HASH_BIG_ENDIAN
      pos:
        line_end: 68
        line_start: 67
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '0'
    - item_type: preproc_def
      name: HASH_LITTLE_ENDIAN
      pos:
        line_end: 93
        line_start: 92
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '1'
    - item_type: preproc_def
      name: HASH_BIG_ENDIAN
      pos:
        line_end: 94
        line_start: 93
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '0'
    - item_type: preproc_def
      name: HASH_LITTLE_ENDIAN
      pos:
        line_end: 98
        line_start: 97
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '0'
    - item_type: preproc_def
      name: HASH_BIG_ENDIAN
      pos:
        line_end: 99
        line_start: 98
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '1'
    - item_type: preproc_def
      name: HASH_LITTLE_ENDIAN
      pos:
        line_end: 103
        line_start: 102
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '0'
    - item_type: preproc_def
      name: HASH_BIG_ENDIAN
      pos:
        line_end: 104
        line_start: 103
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '1'
    - item_type: preproc_def
      name: HASH_LITTLE_ENDIAN
      pos:
        line_end: 107
        line_start: 106
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '1'
    - item_type: preproc_def
      name: HASH_BIG_ENDIAN
      pos:
        line_end: 108
        line_start: 107
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '0'
    - item_type: preproc_def
      name: HASH_LITTLE_ENDIAN
      pos:
        line_end: 111
        line_start: 110
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '0'
    - item_type: preproc_def
      name: HASH_BIG_ENDIAN
      pos:
        line_end: 112
        line_start: 111
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '0'
    - item_type: preproc_def
      name: HASHSTATE
      pos:
        line_end: 1006
        line_start: 1005
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '1'
    - item_type: preproc_def
      name: HASHLEN
      pos:
        line_end: 1007
        line_start: 1006
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '1'
    - item_type: preproc_def
      name: MAXPAIR
      pos:
        line_end: 1008
        line_start: 1007
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '60'
    - item_type: preproc_def
      name: MAXLEN
      pos:
        line_end: 1009
        line_start: 1008
        source_file: /src/unbound/util/storage/lookup3.c
      type_or_value: '70'
    structs: []
    typedefs: []
    union:
    - fields:
      - name: '*ptr'
        type: void
      - name: i
        type: size_t
      item_type: union
      name: u
      pos:
        line_end: 358
        line_start: 358
        source_file: /src/unbound/util/storage/lookup3.c
    - fields:
      - name: '*ptr'
        type: void
      - name: i
        type: size_t
      item_type: union
      name: u
      pos:
        line_end: 593
        line_start: 593
        source_file: /src/unbound/util/storage/lookup3.c
    - fields:
      - name: '*ptr'
        type: void
      - name: i
        type: size_t
      item_type: union
      name: u
      pos:
        line_end: 823
        line_start: 823
        source_file: /src/unbound/util/storage/lookup3.c
- function_names: []
  source_file: /src/unbound/util/storage/lookup3.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/storage/dnstree.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: node
        type: rbnode_type
      - name: '* parent'
        type: struct name_tree_node
      - name: '* name'
        type: uint8_t
      - name: len
        type: size_t
      - name: labs
        type: int
      - name: dclass
        type: uint16_t
      item_type: struct
      name: name_tree_node
      pos:
        line_end: 67
        line_start: 54
        source_file: /src/unbound/util/storage/dnstree.h
    - fields:
      - name: node
        type: rbnode_type
      - name: '* parent'
        type: struct addr_tree_node
      - name: addr
        type: struct sockaddr_storage
      - name: addrlen
        type: socklen_t
      - name: net
        type: int
      item_type: struct
      name: addr_tree_node
      pos:
        line_end: 87
        line_start: 76
        source_file: /src/unbound/util/storage/dnstree.h
    typedefs: []
    union: []
- function_names:
  - stat_timeval_subtract
  - shm_main_init
  - shm_main_shutdown
  - shm_general_info
  - shm_thread_is_first
  - shm_thread_is_last
  - shm_main_run
  source_file: /src/unbound/util/shm_side/shm_main.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/util/shm_side/shm_main.h
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: '* ptr_arr'
        type: struct ub_stats_info
      - name: '* ptr_ctl'
        type: struct ub_shm_stat_info
      - name: key
        type: int
      - name: id_ctl
        type: int
      - name: id_arr
        type: int
      - name: lock
        type: lock_basic_type
      - name: volley_in_progress
        type: int
      - name: '* thread_volley'
        type: int
      - name: total_in_progress
        type: struct ub_stats_info
      item_type: struct
      name: shm_main_info
      pos:
        line_end: 76
        line_start: 54
        source_file: /src/unbound/util/shm_side/shm_main.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/dnscrypt/dnscrypt.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DNSCRYPT_MAGIC_HEADER_LEN
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/unbound/dnscrypt/dnscrypt.h
      type_or_value: 8U
    - item_type: preproc_def
      name: DNSCRYPT_MAGIC_RESPONSE
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/unbound/dnscrypt/dnscrypt.h
      type_or_value: '"r6fnvWj8"'
    - item_type: preproc_def
      name: DNSCRYPT_MAX_PADDING
      pos:
        line_end: 16
        line_start: 15
        source_file: /src/unbound/dnscrypt/dnscrypt.h
      type_or_value: 256U
    - item_type: preproc_def
      name: DNSCRYPT_BLOCK_SIZE
      pos:
        line_end: 19
        line_start: 18
        source_file: /src/unbound/dnscrypt/dnscrypt.h
      type_or_value: 64U
    - item_type: preproc_def
      name: DNSCRYPT_MIN_PAD_LEN
      pos:
        line_end: 22
        line_start: 21
        source_file: /src/unbound/dnscrypt/dnscrypt.h
      type_or_value: 8U
    - item_type: preproc_def
      name: crypto_box_HALF_NONCEBYTES
      pos:
        line_end: 25
        line_start: 24
        source_file: /src/unbound/dnscrypt/dnscrypt.h
      type_or_value: (crypto_box_NONCEBYTES / 2U)
    - item_type: preproc_def
      name: DNSCRYPT_QUERY_HEADER_SIZE
      pos:
        line_end: 32
        line_start: 30
        source_file: /src/unbound/dnscrypt/dnscrypt.h
      type_or_value: (DNSCRYPT_MAGIC_HEADER_LEN + crypto_box_PUBLICKEYBYTES + crypto_box_HALF_NONCEBYTES
        + crypto_box_MACBYTES)
    - item_type: preproc_def
      name: DNSCRYPT_RESPONSE_HEADER_SIZE
      pos:
        line_end: 34
        line_start: 32
        source_file: /src/unbound/dnscrypt/dnscrypt.h
      type_or_value: (DNSCRYPT_MAGIC_HEADER_LEN + crypto_box_NONCEBYTES + crypto_box_MACBYTES)
    - item_type: preproc_def
      name: DNSCRYPT_REPLY_HEADER_SIZE
      pos:
        line_end: 37
        line_start: 35
        source_file: /src/unbound/dnscrypt/dnscrypt.h
      type_or_value: (DNSCRYPT_MAGIC_HEADER_LEN + crypto_box_HALF_NONCEBYTES * 2 +
        crypto_box_MACBYTES)
    structs:
    - fields:
      - name: crypt_publickey[crypto_box_PUBLICKEYBYTES]
        type: uint8_t
      - name: crypt_secretkey[crypto_box_SECRETKEYBYTES]
        type: uint8_t
      item_type: struct
      name: KeyPair_
      pos:
        line_end: 46
        line_start: 43
        source_file: /src/unbound/dnscrypt/dnscrypt.h
    - fields:
      - name: magic_query[DNSCRYPT_MAGIC_HEADER_LEN]
        type: uint8_t
      - name: es_version[2]
        type: uint8_t
      - name: '*keypair'
        type: KeyPair
      item_type: struct
      name: cert_
      pos:
        line_end: 52
        line_start: 48
        source_file: /src/unbound/dnscrypt/dnscrypt.h
    - fields:
      - name: '*signed_certs'
        type: struct SignedCert
      - name: '**rotated_certs'
        type: struct SignedCert
      - name: '*certs'
        type: dnsccert
      - name: signed_certs_count
        type: size_t
      - name: rotated_certs_count
        type: size_t
      - name: provider_publickey[crypto_sign_ed25519_PUBLICKEYBYTES]
        type: uint8_t
      - name: provider_secretkey[crypto_sign_ed25519_SECRETKEYBYTES]
        type: uint8_t
      - name: '*keypairs'
        type: KeyPair
      - name: keypairs_count
        type: size_t
      - name: nonce_ts_last
        type: uint64_t
      - name: hash_key[crypto_shorthash_KEYBYTES]
        type: unsigned char
      - name: '* provider_name'
        type: char
      - name: '*shared_secrets_cache'
        type: struct slabhash
      - name: shared_secrets_cache_lock
        type: lock_basic_type
      - name: num_query_dnscrypt_secret_missed_cache
        type: size_t
      - name: '*nonces_cache'
        type: struct slabhash
      - name: nonces_cache_lock
        type: lock_basic_type
      - name: num_query_dnscrypt_replay
        type: size_t
      item_type: struct
      name: dnsc_env
      pos:
        line_end: 81
        line_start: 54
        source_file: /src/unbound/dnscrypt/dnscrypt.h
    - fields:
      - name: magic_query[DNSCRYPT_MAGIC_HEADER_LEN]
        type: uint8_t
      - name: publickey[crypto_box_PUBLICKEYBYTES]
        type: uint8_t
      - name: nonce[crypto_box_HALF_NONCEBYTES]
        type: uint8_t
      - name: mac[crypto_box_MACBYTES]
        type: uint8_t
      item_type: struct
      name: dnscrypt_query_header
      pos:
        line_end: 88
        line_start: 83
        source_file: /src/unbound/dnscrypt/dnscrypt.h
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/dnscrypt/cert.h
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: CERT_MAGIC_CERT
      pos:
        line_end: 10
        line_start: 9
        source_file: /src/unbound/dnscrypt/cert.h
      type_or_value: '"DNSC"'
    - item_type: preproc_def
      name: CERT_MAJOR_VERSION
      pos:
        line_end: 11
        line_start: 10
        source_file: /src/unbound/dnscrypt/cert.h
      type_or_value: '1'
    - item_type: preproc_def
      name: CERT_MINOR_VERSION
      pos:
        line_end: 12
        line_start: 11
        source_file: /src/unbound/dnscrypt/cert.h
      type_or_value: '0'
    - item_type: preproc_def
      name: CERT_OLD_MAGIC_HEADER
      pos:
        line_end: 13
        line_start: 12
        source_file: /src/unbound/dnscrypt/cert.h
      type_or_value: '"7PYqwfzt"'
    - item_type: preproc_def
      name: CERT_FILE_EXPIRE_DAYS
      pos:
        line_end: 15
        line_start: 14
        source_file: /src/unbound/dnscrypt/cert.h
      type_or_value: '365'
    structs:
    - fields:
      - name: magic_cert[4]
        type: uint8_t
      - name: version_major[2]
        type: uint8_t
      - name: version_minor[2]
        type: uint8_t
      - name: signed_content[64]
        type: uint8_t
      - name: server_publickey[crypto_box_PUBLICKEYBYTES]
        type: uint8_t
      - name: magic_query[8]
        type: uint8_t
      - name: serial[4]
        type: uint8_t
      - name: ts_begin[4]
        type: uint8_t
      - name: ts_end[4]
        type: uint8_t
      item_type: struct
      name: SignedCert
      pos:
        line_end: 28
        line_start: 16
        source_file: /src/unbound/dnscrypt/cert.h
    typedefs: []
    union: []
- function_names:
  - dnsc_shared_secrets_cache_key
  - dnsc_shared_secret_cache_insert
  - dnsc_shared_secrets_lookup
  - dnsc_nonce_cache_key_hash
  - dnsc_nonce_cache_insert
  - dnsc_nonces_lookup
  - dnscrypt_server_uncurve
  - dnscrypt_pad
  - dnscrypt_hrtime
  - add_server_nonce
  - dnscrypt_server_curve
  - dnsc_read_from_file
  - dnsc_chroot_path
  - dnsc_parse_certs
  - dnsc_key_to_fingerprint
  - dnsc_find_cert
  - dnsc_load_local_data
  - key_get_es_version
  - dnsc_parse_keys
  - sodium_misuse_handler
  - dnsc_handle_curved_request
  - dnsc_handle_uncurved_request
  - dnsc_create
  - dnsc_apply_cfg
  - dnsc_delete
  - dnsc_shared_secrets_sizefunc
  - dnsc_shared_secrets_compfunc
  - dnsc_shared_secrets_delkeyfunc
  - dnsc_shared_secrets_deldatafunc
  - dnsc_nonces_sizefunc
  - dnsc_nonces_compfunc
  - dnsc_nonces_delkeyfunc
  - dnsc_nonces_deldatafunc
  source_file: /src/unbound/dnscrypt/dnscrypt.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: DNSCRYPT_QUERY_BOX_OFFSET
      pos:
        line_end: 33
        line_start: 30
        source_file: /src/unbound/dnscrypt/dnscrypt.c
      type_or_value: "(DNSCRYPT_MAGIC_HEADER_LEN + crypto_box_PUBLICKEYBYTES + \\\n
        \   crypto_box_HALF_NONCEBYTES)"
    - item_type: preproc_def
      name: DNSCRYPT_REPLY_BOX_OFFSET
      pos:
        line_end: 42
        line_start: 39
        source_file: /src/unbound/dnscrypt/dnscrypt.c
      type_or_value: "(DNSCRYPT_MAGIC_HEADER_LEN + crypto_box_HALF_NONCEBYTES + \\\n
        \   crypto_box_HALF_NONCEBYTES)"
    - item_type: preproc_def
      name: DNSCRYPT_SHARED_SECRET_KEY_LENGTH
      pos:
        line_end: 53
        line_start: 51
        source_file: /src/unbound/dnscrypt/dnscrypt.c
      type_or_value: (1 + crypto_box_PUBLICKEYBYTES + crypto_box_SECRETKEYBYTES)
    structs:
    - fields:
      - name: key[DNSCRYPT_SHARED_SECRET_KEY_LENGTH]
        type: uint8_t
      - name: entry
        type: struct lruhash_entry
      item_type: struct
      name: shared_secret_cache_key
      pos:
        line_end: 60
        line_start: 55
        source_file: /src/unbound/dnscrypt/dnscrypt.c
    - fields:
      - name: nonce[crypto_box_HALF_NONCEBYTES]
        type: uint8_t
      - name: magic_query[DNSCRYPT_MAGIC_HEADER_LEN]
        type: uint8_t
      - name: client_publickey[crypto_box_PUBLICKEYBYTES]
        type: uint8_t
      - name: entry
        type: struct lruhash_entry
      item_type: struct
      name: nonce_cache_key
      pos:
        line_end: 72
        line_start: 63
        source_file: /src/unbound/dnscrypt/dnscrypt.c
    - fields:
      - name: es_version[2]
        type: uint8_t
      - name: '*name'
        type: char
      item_type: struct
      name: es_version
      pos:
        line_end: 775
        line_start: 772
        source_file: /src/unbound/dnscrypt/dnscrypt.c
    typedefs: []
    union: []
- function_names:
  - swap
  - reverse
  - uitoa
  - extract_ipv4
  - ipv4_to_ptr
  - ptr_to_ipv6
  - synthesize_aaaa
  - dns64_insert_ignore_aaaa
  - dns64_apply_cfg
  - dns64_init
  - free_ignore_aaaa_node
  - dns64_deinit
  - handle_ipv6_ptr
  - generate_type_A_query
  - dns64_always_synth_for_qname
  - handle_event_pass
  - handle_event_moddone
  - dns64_operate
  - dns64_synth_aaaa_data
  - dns64_adjust_a
  - dns64_adjust_ptr
  - dns64_inform_super
  - dns64_clear
  - dns64_get_mem
  - dns64_get_funcblock
  source_file: /src/unbound/dns64/dns64.c
  types:
    enum:
    - enumerators:
      - name: DNS64_INTERNAL_QUERY
      - name: DNS64_NEW_QUERY
      - name: DNS64_SUBQUERY_FINISHED
      item_type: enum
      name: dns64_state
      pos:
        line_end: 81
        line_start: 74
        source_file: /src/unbound/dns64/dns64.c
    preproc_defs:
    - item_type: preproc_def
      name: MAX_PTR_QNAME_IPV4
      pos:
        line_end: 70
        line_start: 69
        source_file: /src/unbound/dns64/dns64.c
      type_or_value: '30'
    structs:
    - fields:
      - name: state
        type: enum dns64_state
      - name: started_no_cache_store
        type: int
      item_type: struct
      name: dns64_qstate
      pos:
        line_end: 95
        line_start: 86
        source_file: /src/unbound/dns64/dns64.c
    - fields:
      - name: prefix_addr
        type: struct sockaddr_storage
      - name: prefix_addrlen
        type: socklen_t
      - name: prefix_net
        type: int
      - name: ignore_aaaa
        type: rbtree_type
      item_type: struct
      name: dns64_env
      pos:
        line_end: 131
        line_start: 108
        source_file: /src/unbound/dns64/dns64.c
    typedefs: []
    union: []
- function_names: []
  source_file: /src/unbound/dns64/dns64.h
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - usage
  - get_builtin_cert
  - get_builtin_ds
  - print_data
  - ub_ctx_error_exit
  - create_unbound_context
  - verb_cert
  - verb_certs
  - read_cert_bio
  - read_cert_file
  - read_builtin_cert
  - read_cert_or_builtin
  - do_list_builtin
  - verb_addr
  - ip_list_free
  - RR_to_ip
  - resolve_host_ip
  - parse_ip_addr
  - resolve_name
  - wipe_ip_usage
  - count_unused
  - pick_random_ip
  - fd_close
  - print_sock_err
  - connect_to_ip
  - setup_sslctx
  - TLS_initiate
  - TLS_shutdown
  - write_ssl_line
  - process_one_header
  - read_ssl_line
  - read_http_headers
  - read_data_chunk
  - parse_chunk_header
  - do_chunked_read
  - write_http_get
  - read_chunked_zero_terminate
  - read_http_result
  - https_to_ip
  - https
  - xml_selectbio
  - xml_charhandle
  - find_att
  - xml_convertdate
  - handle_keydigest
  - xml_is_zone_name
  - xml_startelem
  - xml_append_str
  - xml_append_bio
  - xml_append_ds
  - xml_endelem
  - xml_entitydeclhandler
  - xml_parse_setup
  - xml_parse
  - get_usage_of_ex
  - get_valid_signers
  - tempfile_open
  - tempfile_close
  - write_unsigned_root
  - write_root_anchor
  - verify_and_update_anchor
  - do_wsa_cleanup
  - do_certupdate
  - try_read_anchor
  - write_builtin_anchor
  - provide_builtin
  - add_5011_probe_root
  - prime_root_key
  - read_if_pending_keys
  - read_last_success_time
  - probe_date_allows_certupdate
  - fetch_root_key
  - do_root_update_work
  - main
  source_file: /src/unbound/smallapp/unbound-anchor.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: URLNAME
      pos:
        line_end: 143
        line_start: 142
        source_file: /src/unbound/smallapp/unbound-anchor.c
      type_or_value: '"data.iana.org"'
    - item_type: preproc_def
      name: XMLNAME
      pos:
        line_end: 145
        line_start: 144
        source_file: /src/unbound/smallapp/unbound-anchor.c
      type_or_value: '"root-anchors/root-anchors.xml"'
    - item_type: preproc_def
      name: P7SNAME
      pos:
        line_end: 147
        line_start: 146
        source_file: /src/unbound/smallapp/unbound-anchor.c
      type_or_value: '"root-anchors/root-anchors.p7s"'
    - item_type: preproc_def
      name: P7SIGNER
      pos:
        line_end: 149
        line_start: 148
        source_file: /src/unbound/smallapp/unbound-anchor.c
      type_or_value: '"dnssec@iana.org"'
    - item_type: preproc_def
      name: HTTPS_PORT
      pos:
        line_end: 151
        line_start: 150
        source_file: /src/unbound/smallapp/unbound-anchor.c
      type_or_value: '443'
    structs:
    - fields:
      - name: '* next'
        type: struct ip_list
      - name: len
        type: socklen_t
      - name: addr
        type: struct sockaddr_storage
      - name: used
        type: int
      item_type: struct
      name: ip_list
      pos:
        line_end: 236
        line_start: 227
        source_file: /src/unbound/smallapp/unbound-anchor.c
    - fields:
      - name: parser
        type: XML_Parser
      - name: '* tag'
        type: char
      - name: date
        type: time_t
      - name: num_keys
        type: int
      - name: '* ds'
        type: BIO
      - name: use_key
        type: int
      - name: '* czone'
        type: BIO
      - name: '* ctag'
        type: BIO
      - name: '* calgo'
        type: BIO
      - name: '* cdigtype'
        type: BIO
      - name: '* cdigest'
        type: BIO
      item_type: struct
      name: xml_data
      pos:
        line_end: 1265
        line_start: 1241
        source_file: /src/unbound/smallapp/unbound-anchor.c
    typedefs: []
    union:
    - fields:
      - name: a6
        type: struct sockaddr_in6
      - name: a
        type: struct sockaddr_in
      item_type: union
      name: addr
      pos:
        line_end: 633
        line_start: 630
        source_file: /src/unbound/smallapp/unbound-anchor.c
- function_names:
  - usage
  - PR_UL_NM
  - PR_UL
  - PR_UL_SUB
  - PR_TIMEVAL
  - PR_STATSTIME
  - PR_LL
  - pr_stats
  - print_uptime
  - print_mem
  - print_hist
  - print_extended
  - do_stats_shm
  - print_stats_shm
  - ssl_err
  - ssl_path_err
  - setup_ctx
  - checkconnecterr
  - contact_server
  - setup_ssl
  - remote_read
  - remote_write
  - check_args_for_listcmd
  - send_file
  - send_eof
  - go_cmd
  - go
  - main
  source_file: /src/unbound/smallapp/unbound-control.c
  types:
    enum: []
    preproc_defs:
    - item_type: preproc_def
      name: UNBOUND_CONTROL_CONNECT_TIMEOUT
      pos:
        line_end: 88
        line_start: 87
        source_file: /src/unbound/smallapp/unbound-control.c
      type_or_value: '5000'
    - item_type: preproc_def
      name: SQ
      pos:
        line_end: 213
        line_start: 212
        source_file: /src/unbound/smallapp/unbound-control.c
      type_or_value: '"="'
    structs: []
    typedefs: []
    union: []
- function_names:
  - usage
  - print_option
  - check_mod
  - str_addr_is_localhost
  - donotquerylocalhostcheck
  - nodefaultzonescheck
  - COMPARE_ZONE_NAME
  - localzonechecks
  - acl_view_tag_checks
  - view_and_respipchecks
  - warn_hosts
  - interfacechecks
  - ifautomaticportschecks
  - controlinterfacechecks
  - aclchecks
  - tcpconnlimitchecks
  - is_file
  - is_dir
  - basedir
  - check_chroot_string
  - check_chroot_filelist
  - check_chroot_filelist_wild
  - ecs_conf_checks
  - check_modules_exist
  - file_string_matches
  - file_list_contains
  - file_list_contains_wild
  - check_file_clobber
  - morechecks
  - check_fwd
  - check_hints
  - check_auth
  - checkconf
  - main
  source_file: /src/unbound/smallapp/unbound-checkconf.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - unbound_lite_wrapstr
  - usage
  - isip4
  - isip6
  - massage_qname
  - massage_type
  - massage_class
  - secure_str
  - pretty_type
  - pretty_class
  - pretty_rcode
  - print_rd
  - pretty_rdata
  - pretty_output
  - dnslook
  - lookup
  - check_ub_res
  - main
  source_file: /src/unbound/smallapp/unbound-host.c
  types:
    enum: []
    preproc_defs: []
    structs: []
    typedefs: []
    union: []
- function_names:
  - worker_handle_control_cmd
  - worker_handle_request
  - worker_handle_service_reply
  - remote_accept_callback
  - remote_control_callback
  - worker_sighandler
  - worker_send_query
  - worker_win_stop_cb
  - wsvc_cron_cb
  - worker_alloc_cleanup
  - libworker_alloc_cleanup
  - libworker_send_query
  - libworker_handle_service_reply
  - libworker_handle_control_cmd
  - libworker_fg_done_cb
  - libworker_bg_done_cb
  - libworker_event_done_cb
  - context_query_cmp
  - worker_stat_timer_cb
  - worker_probe_timer_cb
  - worker_start_accept
  - worker_stop_accept
  - order_lock_cmp
  - codeline_cmp
  - replay_var_compare
  - remote_get_opt_ssl
  - dtio_tap_callback
  - dtio_mainfdcallback
  - fast_reload_service_cb
  - fast_reload_client_callback
  - doq_client_event_cb
  - doq_client_timer_cb
  source_file: /src/unbound/smallapp/worker_cb.c
  types:
    enum: []
    preproc_defs: []
    structs:
    - fields:
      - name: thr
        type: int
      - name: instance
        type: int
      item_type: struct
      name: order_id
      pos:
        line_end: 219
        line_start: 214
        source_file: /src/unbound/smallapp/worker_cb.c
    typedefs: []
    union: []
